Forests on the islands surrounding Aerenal.
<$vars resultplus={{{[{!!result}trim[]split[ ]join[+]]}}} total={{{[{!!result}split[ ]sum[]add{!!add}]}}}>
<$vars half={{{[<total>divide[2]floor[]]}}}>
<h2 class="alert-h2">{{!!dicestring}}: </h2>
<$list filter="[{!!add}!is[blank]]" emptyMessage ="""<h1 class="alert-h1">''<<total>>'' (<<resultplus>>)</h1>""" variable="noop">
<h1 class="alert-h1">''<<total>>'' (<<resultplus>>+{{!!add}})</h1>
</$list>
<h3>(Half ''<<half>>'', Max ''{{!!max}}'', Average ''{{!!average}}'')</h3>
</$vars>
</$vars>
<h2 class="alert-h2">{{!!string}} chance:</h2>
<h3>(1d100 result: ''{{!!result}}''. Must Exceed: {{!!target}})</h3>
<$reveal type="gt" state="!!result" text={{!!target}}>
<h1 class="alert-h1">{{!!valiftrue}}</h1>
</$reveal>
<$reveal type="lteq" state="!!result" text={{!!target}}>
<h1 class="alert-h1">{{!!valiffalse}}</h1>
</$reveal>
1: 4
2: 4½
3: 4½
4: 4½
5: 4½
6: 4½
7: 5
8: 5
9: 5
10: 5
11: 5
12: 5
13: 5
14: 5
15: 5
16: 5
17: 5
18: 5
19: 5
20: 5
21: 5
22: 5
23: 5
24: 5
25: 5
26: 5
27: 5
28: 5
29: 5
30: 5
31: 5½
32: 5½
33: 5½
34: 5½
35: 5½
36: 6
1: red
2: orange
3: yellow
4: green
5: blue
6: violet
7: pink
8: brown
9: black
1:
2:
3:
4:
5:
6:
7:
8:
9:
10: metallic
1: extremely small
2: unusually small
3: unusually small
4: unusually small
5: unusually small
6: unusually small
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31: unusually large
32: unusually large
33: unusually large
34: unusually large
35: unusually large
36: extremely large
1: thick and short
2: thin and short
3: thick and long
4: thin and long
1: smooth
2: ridged like an earthworm
3: segmented like an insect
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20: double
1: circle
2: circle
3: circle
4: circle
5: crescent
6: hourglass
7: irregularly
8: keyhole
9: oval
10: oval
11: slit
12: slit
13: slit
14: slit
15: square
16: string-of-pearls
17: triangle
18: triangle
19: wave
1: narrow
2:
3:
4:
5:
6: wide
1: brown
2: brown-yellow
3: gray
4: green
5: pinkish
6: pinkish
7: pinkish
8: purple-blue
9: purple-blue
1:
2:
3:
4:
5:
6:
7:
8:
9:
10: mottled
11: mottled
12: shaded
1: pebbled
2: pebbled
3: pitted
4: plated
5: plated
6: scaled
7: smooth
8: smooth
9: warty
10: wrinkled
1: thick, pointed
2: thick, pointed
3: thick, pointed
4: thick, pointed
5: humanlike
6: humanlike
7: humanlike, fanged
8: thin, needle-like
9: thin, needle-like
10: vampire-bat-like
1:
2:
3:
4:
5:
6:
7:
8:
9:
10: double-rowed
Built from branch 'tiddlywiki-com' at commit 2b41661721ace534b5f51ded3a5812c9d028ecd8 of https://github.com/Jermolene/TiddlyWiki5 at 2021-01-29 15:44:11 UTC
[has[tier]!lessthan:tier{$:/config/Manager/CreatureTier!!tier}]
[all{$:/config/Manager/Show}!is{$:/config/Manager/System}!has[draft.of]subfilter{$:/config/Manager/CreatureTier}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/CreatureType}tag:strict{$:/config/Manager/CreatureTag}!tag{$:/config/Manager/ExcludeCreatureTag}category[creature]count[]]
[all{$:/config/Manager/Show}subfilter<loc-type>category[location]!is[system]regexp<capitalized>!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/LocationTag}tag:strict{$:/config/Manager/LocationTag2}!tag{$:/config/Manager/ExcludeLocationTag}count[]]
[all{$:/config/Manager/Show}subfilter{$:/config/Manager/MiscCat}!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/MiscTag}!tag{$:/config/Manager/ExcludeMiscTag}count[]]
[all{$:/config/Manager/Show}!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/ObjectTag}!tag{$:/config/Manager/ExcludeObjectTag}subfilter{$:/config/Manager/Rarity!!tags}field:category[object]count[]]
[all{$:/config/Manager/Show}subfilter<org-type>category[organization]regexp<capitalized>!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/OrgTag}tag:strict{$:/config/Manager/OrgTag2}!tag{$:/config/Manager/ExcludeOrgTag}count[]]
[all{$:/config/Manager/Show}subfilter<ppl-ent>!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/PplEntType}tag:strict{$:/config/Manager/PplEntTag}!tag{$:/config/Manager/ExcludePplEntTag}count[]]
[all{$:/config/Manager/Show}!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/SpellTag}subfilter{$:/config/Manager/SpellTier!!tags}field:category[spell]count[]]
Dice roller. Only use on text like "#d#±#"
[prefix[[]] [prefix[-]] [prefix[$:/]]
{
"tiddlers": {
"$:/Acknowledgements": {
"title": "$:/Acknowledgements",
"text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
},
"$:/core/copyright.txt": {
"title": "$:/core/copyright.txt",
"type": "text/plain",
"text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2020, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
},
"$:/core/icon": {
"title": "$:/core/icon",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
},
"$:/core/images/add-comment": {
"title": "$:/core/images/add-comment",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"
},
"$:/core/images/advanced-search-button": {
"title": "$:/core/images/advanced-search-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
},
"$:/core/images/auto-height": {
"title": "$:/core/images/auto-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/blank": {
"title": "$:/core/images/blank",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
},
"$:/core/images/bold": {
"title": "$:/core/images/bold",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"
},
"$:/core/images/cancel-button": {
"title": "$:/core/images/cancel-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"
},
"$:/core/images/chevron-down": {
"title": "$:/core/images/chevron-down",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"
},
"$:/core/images/chevron-left": {
"title": "$:/core/images/chevron-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"
},
"$:/core/images/chevron-right": {
"title": "$:/core/images/chevron-right",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"
},
"$:/core/images/chevron-up": {
"title": "$:/core/images/chevron-up",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"
},
"$:/core/images/clone-button": {
"title": "$:/core/images/clone-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"
},
"$:/core/images/close-all-button": {
"title": "$:/core/images/close-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"
},
"$:/core/images/close-button": {
"title": "$:/core/images/close-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"
},
"$:/core/images/close-others-button": {
"title": "$:/core/images/close-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"
},
"$:/core/images/copy-clipboard": {
"title": "$:/core/images/copy-clipboard",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"
},
"$:/core/images/delete-button": {
"title": "$:/core/images/delete-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
},
"$:/core/images/done-button": {
"title": "$:/core/images/done-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"
},
"$:/core/images/down-arrow": {
"title": "$:/core/images/down-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"
},
"$:/core/images/download-button": {
"title": "$:/core/images/download-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"
},
"$:/core/images/edit-button": {
"title": "$:/core/images/edit-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"
},
"$:/core/images/erase": {
"title": "$:/core/images/erase",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"
},
"$:/core/images/excise": {
"title": "$:/core/images/excise",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"
},
"$:/core/images/export-button": {
"title": "$:/core/images/export-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"
},
"$:/core/images/file": {
"title": "$:/core/images/file",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
},
"$:/core/images/fixed-height": {
"title": "$:/core/images/fixed-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/fold-all-button": {
"title": "$:/core/images/fold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"
},
"$:/core/images/fold-button": {
"title": "$:/core/images/fold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"
},
"$:/core/images/fold-others-button": {
"title": "$:/core/images/fold-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/folder": {
"title": "$:/core/images/folder",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"
},
"$:/core/images/full-screen-button": {
"title": "$:/core/images/full-screen-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"
},
"$:/core/images/github": {
"title": "$:/core/images/github",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"
},
"$:/core/images/gitter": {
"title": "$:/core/images/gitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
},
"$:/core/images/globe": {
"title": "$:/core/images/globe",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"
},
"$:/core/images/heading-1": {
"title": "$:/core/images/heading-1",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"
},
"$:/core/images/heading-2": {
"title": "$:/core/images/heading-2",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"
},
"$:/core/images/heading-3": {
"title": "$:/core/images/heading-3",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"
},
"$:/core/images/heading-4": {
"title": "$:/core/images/heading-4",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"
},
"$:/core/images/heading-5": {
"title": "$:/core/images/heading-5",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"
},
"$:/core/images/heading-6": {
"title": "$:/core/images/heading-6",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"
},
"$:/core/images/help": {
"title": "$:/core/images/help",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"
},
"$:/core/images/home-button": {
"title": "$:/core/images/home-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"
},
"$:/core/images/import-button": {
"title": "$:/core/images/import-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"
},
"$:/core/images/info-button": {
"title": "$:/core/images/info-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
},
"$:/core/images/italic": {
"title": "$:/core/images/italic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
},
"$:/core/images/left-arrow": {
"title": "$:/core/images/left-arrow",
"created": "20150315234410875",
"modified": "20150315235324760",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"
},
"$:/core/images/line-width": {
"title": "$:/core/images/line-width",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"
},
"$:/core/images/link": {
"title": "$:/core/images/link",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"
},
"$:/core/images/linkify": {
"title": "$:/core/images/linkify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"
},
"$:/core/images/list-bullet": {
"title": "$:/core/images/list-bullet",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"
},
"$:/core/images/list-number": {
"title": "$:/core/images/list-number",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"
},
"$:/core/images/list": {
"title": "$:/core/images/list",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"
},
"$:/core/images/locked-padlock": {
"title": "$:/core/images/locked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/mail": {
"title": "$:/core/images/mail",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"
},
"$:/core/images/menu-button": {
"title": "$:/core/images/menu-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
},
"$:/core/images/mono-block": {
"title": "$:/core/images/mono-block",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"
},
"$:/core/images/mono-line": {
"title": "$:/core/images/mono-line",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"
},
"$:/core/images/new-button": {
"title": "$:/core/images/new-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"
},
"$:/core/images/new-here-button": {
"title": "$:/core/images/new-here-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
},
"$:/core/images/new-image-button": {
"title": "$:/core/images/new-image-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"
},
"$:/core/images/new-journal-button": {
"title": "$:/core/images/new-journal-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
},
"$:/core/images/opacity": {
"title": "$:/core/images/opacity",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
},
"$:/core/images/open-window": {
"title": "$:/core/images/open-window",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"
},
"$:/core/images/options-button": {
"title": "$:/core/images/options-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"
},
"$:/core/images/paint": {
"title": "$:/core/images/paint",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"
},
"$:/core/images/palette": {
"title": "$:/core/images/palette",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"
},
"$:/core/images/permalink-button": {
"title": "$:/core/images/permalink-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"
},
"$:/core/images/permaview-button": {
"title": "$:/core/images/permaview-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"
},
"$:/core/images/picture": {
"title": "$:/core/images/picture",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></svg>"
},
"$:/core/images/plugin-generic-language": {
"title": "$:/core/images/plugin-generic-language",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-plugin": {
"title": "$:/core/images/plugin-generic-plugin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-theme": {
"title": "$:/core/images/plugin-generic-theme",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"
},
"$:/core/images/preview-closed": {
"title": "$:/core/images/preview-closed",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
},
"$:/core/images/preview-open": {
"title": "$:/core/images/preview-open",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"
},
"$:/core/images/print-button": {
"title": "$:/core/images/print-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"
},
"$:/core/images/quote": {
"title": "$:/core/images/quote",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"
},
"$:/core/images/refresh-button": {
"title": "$:/core/images/refresh-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"
},
"$:/core/images/right-arrow": {
"title": "$:/core/images/right-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"
},
"$:/core/images/rotate-left": {
"title": "$:/core/images/rotate-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"
},
"$:/core/images/save-button": {
"title": "$:/core/images/save-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"
},
"$:/core/images/size": {
"title": "$:/core/images/size",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"
},
"$:/core/images/spiral": {
"title": "$:/core/images/spiral",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"
},
"$:/core/images/stamp": {
"title": "$:/core/images/stamp",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"
},
"$:/core/images/star-filled": {
"title": "$:/core/images/star-filled",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"
},
"$:/core/images/storyview-classic": {
"title": "$:/core/images/storyview-classic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-pop": {
"title": "$:/core/images/storyview-pop",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-zoomin": {
"title": "$:/core/images/storyview-zoomin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"
},
"$:/core/images/strikethrough": {
"title": "$:/core/images/strikethrough",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
},
"$:/core/images/subscript": {
"title": "$:/core/images/subscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/superscript": {
"title": "$:/core/images/superscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/tag-button": {
"title": "$:/core/images/tag-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"
},
"$:/core/images/theme-button": {
"title": "$:/core/images/theme-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"
},
"$:/core/images/timestamp-off": {
"title": "$:/core/images/timestamp-off",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"
},
"$:/core/images/timestamp-on": {
"title": "$:/core/images/timestamp-on",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"
},
"$:/core/images/tip": {
"title": "$:/core/images/tip",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"
},
"$:/core/images/transcludify": {
"title": "$:/core/images/transcludify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"
},
"$:/core/images/twitter": {
"title": "$:/core/images/twitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"
},
"$:/core/images/underline": {
"title": "$:/core/images/underline",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"
},
"$:/core/images/unfold-all-button": {
"title": "$:/core/images/unfold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unfold-button": {
"title": "$:/core/images/unfold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unlocked-padlock": {
"title": "$:/core/images/unlocked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/up-arrow": {
"title": "$:/core/images/up-arrow",
"created": "20150316000544368",
"modified": "20150316000831867",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"
},
"$:/core/images/video": {
"title": "$:/core/images/video",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"
},
"$:/core/images/warning": {
"title": "$:/core/images/warning",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></svg>"
},
"$:/language/Buttons/AdvancedSearch/Caption": {
"title": "$:/language/Buttons/AdvancedSearch/Caption",
"text": "advanced search"
},
"$:/language/Buttons/AdvancedSearch/Hint": {
"title": "$:/language/Buttons/AdvancedSearch/Hint",
"text": "Advanced search"
},
"$:/language/Buttons/Cancel/Caption": {
"title": "$:/language/Buttons/Cancel/Caption",
"text": "cancel"
},
"$:/language/Buttons/Cancel/Hint": {
"title": "$:/language/Buttons/Cancel/Hint",
"text": "Discard changes to this tiddler"
},
"$:/language/Buttons/Clone/Caption": {
"title": "$:/language/Buttons/Clone/Caption",
"text": "clone"
},
"$:/language/Buttons/Clone/Hint": {
"title": "$:/language/Buttons/Clone/Hint",
"text": "Clone this tiddler"
},
"$:/language/Buttons/Close/Caption": {
"title": "$:/language/Buttons/Close/Caption",
"text": "close"
},
"$:/language/Buttons/Close/Hint": {
"title": "$:/language/Buttons/Close/Hint",
"text": "Close this tiddler"
},
"$:/language/Buttons/CloseAll/Caption": {
"title": "$:/language/Buttons/CloseAll/Caption",
"text": "close all"
},
"$:/language/Buttons/CloseAll/Hint": {
"title": "$:/language/Buttons/CloseAll/Hint",
"text": "Close all tiddlers"
},
"$:/language/Buttons/CloseOthers/Caption": {
"title": "$:/language/Buttons/CloseOthers/Caption",
"text": "close others"
},
"$:/language/Buttons/CloseOthers/Hint": {
"title": "$:/language/Buttons/CloseOthers/Hint",
"text": "Close other tiddlers"
},
"$:/language/Buttons/ControlPanel/Caption": {
"title": "$:/language/Buttons/ControlPanel/Caption",
"text": "control panel"
},
"$:/language/Buttons/ControlPanel/Hint": {
"title": "$:/language/Buttons/ControlPanel/Hint",
"text": "Open control panel"
},
"$:/language/Buttons/CopyToClipboard/Caption": {
"title": "$:/language/Buttons/CopyToClipboard/Caption",
"text": "copy to clipboard"
},
"$:/language/Buttons/CopyToClipboard/Hint": {
"title": "$:/language/Buttons/CopyToClipboard/Hint",
"text": "Copy this text to the clipboard"
},
"$:/language/Buttons/Delete/Caption": {
"title": "$:/language/Buttons/Delete/Caption",
"text": "delete"
},
"$:/language/Buttons/Delete/Hint": {
"title": "$:/language/Buttons/Delete/Hint",
"text": "Delete this tiddler"
},
"$:/language/Buttons/Edit/Caption": {
"title": "$:/language/Buttons/Edit/Caption",
"text": "edit"
},
"$:/language/Buttons/Edit/Hint": {
"title": "$:/language/Buttons/Edit/Hint",
"text": "Edit this tiddler"
},
"$:/language/Buttons/Encryption/Caption": {
"title": "$:/language/Buttons/Encryption/Caption",
"text": "encryption"
},
"$:/language/Buttons/Encryption/Hint": {
"title": "$:/language/Buttons/Encryption/Hint",
"text": "Set or clear a password for saving this wiki"
},
"$:/language/Buttons/Encryption/ClearPassword/Caption": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
"text": "clear password"
},
"$:/language/Buttons/Encryption/ClearPassword/Hint": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
"text": "Clear the password and save this wiki without encryption"
},
"$:/language/Buttons/Encryption/SetPassword/Caption": {
"title": "$:/language/Buttons/Encryption/SetPassword/Caption",
"text": "set password"
},
"$:/language/Buttons/Encryption/SetPassword/Hint": {
"title": "$:/language/Buttons/Encryption/SetPassword/Hint",
"text": "Set a password for saving this wiki with encryption"
},
"$:/language/Buttons/ExportPage/Caption": {
"title": "$:/language/Buttons/ExportPage/Caption",
"text": "export all"
},
"$:/language/Buttons/ExportPage/Hint": {
"title": "$:/language/Buttons/ExportPage/Hint",
"text": "Export all tiddlers"
},
"$:/language/Buttons/ExportTiddler/Caption": {
"title": "$:/language/Buttons/ExportTiddler/Caption",
"text": "export tiddler"
},
"$:/language/Buttons/ExportTiddler/Hint": {
"title": "$:/language/Buttons/ExportTiddler/Hint",
"text": "Export tiddler"
},
"$:/language/Buttons/ExportTiddlers/Caption": {
"title": "$:/language/Buttons/ExportTiddlers/Caption",
"text": "export tiddlers"
},
"$:/language/Buttons/ExportTiddlers/Hint": {
"title": "$:/language/Buttons/ExportTiddlers/Hint",
"text": "Export tiddlers"
},
"$:/language/Buttons/SidebarSearch/Hint": {
"title": "$:/language/Buttons/SidebarSearch/Hint",
"text": "Select the sidebar search field"
},
"$:/language/Buttons/Fold/Caption": {
"title": "$:/language/Buttons/Fold/Caption",
"text": "fold tiddler"
},
"$:/language/Buttons/Fold/Hint": {
"title": "$:/language/Buttons/Fold/Hint",
"text": "Fold the body of this tiddler"
},
"$:/language/Buttons/Fold/FoldBar/Caption": {
"title": "$:/language/Buttons/Fold/FoldBar/Caption",
"text": "fold-bar"
},
"$:/language/Buttons/Fold/FoldBar/Hint": {
"title": "$:/language/Buttons/Fold/FoldBar/Hint",
"text": "Optional bars to fold and unfold tiddlers"
},
"$:/language/Buttons/Unfold/Caption": {
"title": "$:/language/Buttons/Unfold/Caption",
"text": "unfold tiddler"
},
"$:/language/Buttons/Unfold/Hint": {
"title": "$:/language/Buttons/Unfold/Hint",
"text": "Unfold the body of this tiddler"
},
"$:/language/Buttons/FoldOthers/Caption": {
"title": "$:/language/Buttons/FoldOthers/Caption",
"text": "fold other tiddlers"
},
"$:/language/Buttons/FoldOthers/Hint": {
"title": "$:/language/Buttons/FoldOthers/Hint",
"text": "Fold the bodies of other opened tiddlers"
},
"$:/language/Buttons/FoldAll/Caption": {
"title": "$:/language/Buttons/FoldAll/Caption",
"text": "fold all tiddlers"
},
"$:/language/Buttons/FoldAll/Hint": {
"title": "$:/language/Buttons/FoldAll/Hint",
"text": "Fold the bodies of all opened tiddlers"
},
"$:/language/Buttons/UnfoldAll/Caption": {
"title": "$:/language/Buttons/UnfoldAll/Caption",
"text": "unfold all tiddlers"
},
"$:/language/Buttons/UnfoldAll/Hint": {
"title": "$:/language/Buttons/UnfoldAll/Hint",
"text": "Unfold the bodies of all opened tiddlers"
},
"$:/language/Buttons/FullScreen/Caption": {
"title": "$:/language/Buttons/FullScreen/Caption",
"text": "full-screen"
},
"$:/language/Buttons/FullScreen/Hint": {
"title": "$:/language/Buttons/FullScreen/Hint",
"text": "Enter or leave full-screen mode"
},
"$:/language/Buttons/Help/Caption": {
"title": "$:/language/Buttons/Help/Caption",
"text": "help"
},
"$:/language/Buttons/Help/Hint": {
"title": "$:/language/Buttons/Help/Hint",
"text": "Show help panel"
},
"$:/language/Buttons/Import/Caption": {
"title": "$:/language/Buttons/Import/Caption",
"text": "import"
},
"$:/language/Buttons/Import/Hint": {
"title": "$:/language/Buttons/Import/Hint",
"text": "Import many types of file including text, image, TiddlyWiki or JSON"
},
"$:/language/Buttons/Info/Caption": {
"title": "$:/language/Buttons/Info/Caption",
"text": "info"
},
"$:/language/Buttons/Info/Hint": {
"title": "$:/language/Buttons/Info/Hint",
"text": "Show information for this tiddler"
},
"$:/language/Buttons/Home/Caption": {
"title": "$:/language/Buttons/Home/Caption",
"text": "home"
},
"$:/language/Buttons/Home/Hint": {
"title": "$:/language/Buttons/Home/Hint",
"text": "Open the default tiddlers"
},
"$:/language/Buttons/Language/Caption": {
"title": "$:/language/Buttons/Language/Caption",
"text": "language"
},
"$:/language/Buttons/Language/Hint": {
"title": "$:/language/Buttons/Language/Hint",
"text": "Choose the user interface language"
},
"$:/language/Buttons/Manager/Caption": {
"title": "$:/language/Buttons/Manager/Caption",
"text": "tiddler manager"
},
"$:/language/Buttons/Manager/Hint": {
"title": "$:/language/Buttons/Manager/Hint",
"text": "Open tiddler manager"
},
"$:/language/Buttons/More/Caption": {
"title": "$:/language/Buttons/More/Caption",
"text": "more"
},
"$:/language/Buttons/More/Hint": {
"title": "$:/language/Buttons/More/Hint",
"text": "More actions"
},
"$:/language/Buttons/NewHere/Caption": {
"title": "$:/language/Buttons/NewHere/Caption",
"text": "new here"
},
"$:/language/Buttons/NewHere/Hint": {
"title": "$:/language/Buttons/NewHere/Hint",
"text": "Create a new tiddler tagged with this one"
},
"$:/language/Buttons/NewJournal/Caption": {
"title": "$:/language/Buttons/NewJournal/Caption",
"text": "new journal"
},
"$:/language/Buttons/NewJournal/Hint": {
"title": "$:/language/Buttons/NewJournal/Hint",
"text": "Create a new journal tiddler"
},
"$:/language/Buttons/NewJournalHere/Caption": {
"title": "$:/language/Buttons/NewJournalHere/Caption",
"text": "new journal here"
},
"$:/language/Buttons/NewJournalHere/Hint": {
"title": "$:/language/Buttons/NewJournalHere/Hint",
"text": "Create a new journal tiddler tagged with this one"
},
"$:/language/Buttons/NewImage/Caption": {
"title": "$:/language/Buttons/NewImage/Caption",
"text": "new image"
},
"$:/language/Buttons/NewImage/Hint": {
"title": "$:/language/Buttons/NewImage/Hint",
"text": "Create a new image tiddler"
},
"$:/language/Buttons/NewMarkdown/Caption": {
"title": "$:/language/Buttons/NewMarkdown/Caption",
"text": "new Markdown tiddler"
},
"$:/language/Buttons/NewMarkdown/Hint": {
"title": "$:/language/Buttons/NewMarkdown/Hint",
"text": "Create a new Markdown tiddler"
},
"$:/language/Buttons/NewTiddler/Caption": {
"title": "$:/language/Buttons/NewTiddler/Caption",
"text": "new tiddler"
},
"$:/language/Buttons/NewTiddler/Hint": {
"title": "$:/language/Buttons/NewTiddler/Hint",
"text": "Create a new tiddler"
},
"$:/language/Buttons/OpenWindow/Caption": {
"title": "$:/language/Buttons/OpenWindow/Caption",
"text": "open in new window"
},
"$:/language/Buttons/OpenWindow/Hint": {
"title": "$:/language/Buttons/OpenWindow/Hint",
"text": "Open tiddler in new window"
},
"$:/language/Buttons/Palette/Caption": {
"title": "$:/language/Buttons/Palette/Caption",
"text": "palette"
},
"$:/language/Buttons/Palette/Hint": {
"title": "$:/language/Buttons/Palette/Hint",
"text": "Choose the colour palette"
},
"$:/language/Buttons/Permalink/Caption": {
"title": "$:/language/Buttons/Permalink/Caption",
"text": "permalink"
},
"$:/language/Buttons/Permalink/Hint": {
"title": "$:/language/Buttons/Permalink/Hint",
"text": "Set browser address bar to a direct link to this tiddler"
},
"$:/language/Buttons/Permaview/Caption": {
"title": "$:/language/Buttons/Permaview/Caption",
"text": "permaview"
},
"$:/language/Buttons/Permaview/Hint": {
"title": "$:/language/Buttons/Permaview/Hint",
"text": "Set browser address bar to a direct link to all the tiddlers in this story"
},
"$:/language/Buttons/Print/Caption": {
"title": "$:/language/Buttons/Print/Caption",
"text": "print page"
},
"$:/language/Buttons/Print/Hint": {
"title": "$:/language/Buttons/Print/Hint",
"text": "Print the current page"
},
"$:/language/Buttons/Refresh/Caption": {
"title": "$:/language/Buttons/Refresh/Caption",
"text": "refresh"
},
"$:/language/Buttons/Refresh/Hint": {
"title": "$:/language/Buttons/Refresh/Hint",
"text": "Perform a full refresh of the wiki"
},
"$:/language/Buttons/Save/Caption": {
"title": "$:/language/Buttons/Save/Caption",
"text": "ok"
},
"$:/language/Buttons/Save/Hint": {
"title": "$:/language/Buttons/Save/Hint",
"text": "Confirm changes to this tiddler"
},
"$:/language/Buttons/SaveWiki/Caption": {
"title": "$:/language/Buttons/SaveWiki/Caption",
"text": "save changes"
},
"$:/language/Buttons/SaveWiki/Hint": {
"title": "$:/language/Buttons/SaveWiki/Hint",
"text": "Save changes"
},
"$:/language/Buttons/StoryView/Caption": {
"title": "$:/language/Buttons/StoryView/Caption",
"text": "storyview"
},
"$:/language/Buttons/StoryView/Hint": {
"title": "$:/language/Buttons/StoryView/Hint",
"text": "Choose the story visualisation"
},
"$:/language/Buttons/HideSideBar/Caption": {
"title": "$:/language/Buttons/HideSideBar/Caption",
"text": "hide sidebar"
},
"$:/language/Buttons/HideSideBar/Hint": {
"title": "$:/language/Buttons/HideSideBar/Hint",
"text": "Hide sidebar"
},
"$:/language/Buttons/ShowSideBar/Caption": {
"title": "$:/language/Buttons/ShowSideBar/Caption",
"text": "show sidebar"
},
"$:/language/Buttons/ShowSideBar/Hint": {
"title": "$:/language/Buttons/ShowSideBar/Hint",
"text": "Show sidebar"
},
"$:/language/Buttons/TagManager/Caption": {
"title": "$:/language/Buttons/TagManager/Caption",
"text": "tag manager"
},
"$:/language/Buttons/TagManager/Hint": {
"title": "$:/language/Buttons/TagManager/Hint",
"text": "Open tag manager"
},
"$:/language/Buttons/Timestamp/Caption": {
"title": "$:/language/Buttons/Timestamp/Caption",
"text": "timestamps"
},
"$:/language/Buttons/Timestamp/Hint": {
"title": "$:/language/Buttons/Timestamp/Hint",
"text": "Choose whether modifications update timestamps"
},
"$:/language/Buttons/Timestamp/On/Caption": {
"title": "$:/language/Buttons/Timestamp/On/Caption",
"text": "timestamps are on"
},
"$:/language/Buttons/Timestamp/On/Hint": {
"title": "$:/language/Buttons/Timestamp/On/Hint",
"text": "Update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Timestamp/Off/Caption": {
"title": "$:/language/Buttons/Timestamp/Off/Caption",
"text": "timestamps are off"
},
"$:/language/Buttons/Timestamp/Off/Hint": {
"title": "$:/language/Buttons/Timestamp/Off/Hint",
"text": "Don't update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Theme/Caption": {
"title": "$:/language/Buttons/Theme/Caption",
"text": "theme"
},
"$:/language/Buttons/Theme/Hint": {
"title": "$:/language/Buttons/Theme/Hint",
"text": "Choose the display theme"
},
"$:/language/Buttons/Bold/Caption": {
"title": "$:/language/Buttons/Bold/Caption",
"text": "bold"
},
"$:/language/Buttons/Bold/Hint": {
"title": "$:/language/Buttons/Bold/Hint",
"text": "Apply bold formatting to selection"
},
"$:/language/Buttons/Clear/Caption": {
"title": "$:/language/Buttons/Clear/Caption",
"text": "clear"
},
"$:/language/Buttons/Clear/Hint": {
"title": "$:/language/Buttons/Clear/Hint",
"text": "Clear image to solid colour"
},
"$:/language/Buttons/EditorHeight/Caption": {
"title": "$:/language/Buttons/EditorHeight/Caption",
"text": "editor height"
},
"$:/language/Buttons/EditorHeight/Caption/Auto": {
"title": "$:/language/Buttons/EditorHeight/Caption/Auto",
"text": "Automatically adjust height to fit content"
},
"$:/language/Buttons/EditorHeight/Caption/Fixed": {
"title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
"text": "Fixed height:"
},
"$:/language/Buttons/EditorHeight/Hint": {
"title": "$:/language/Buttons/EditorHeight/Hint",
"text": "Choose the height of the text editor"
},
"$:/language/Buttons/Excise/Caption": {
"title": "$:/language/Buttons/Excise/Caption",
"text": "excise"
},
"$:/language/Buttons/Excise/Caption/Excise": {
"title": "$:/language/Buttons/Excise/Caption/Excise",
"text": "Perform excision"
},
"$:/language/Buttons/Excise/Caption/MacroName": {
"title": "$:/language/Buttons/Excise/Caption/MacroName",
"text": "Macro name:"
},
"$:/language/Buttons/Excise/Caption/NewTitle": {
"title": "$:/language/Buttons/Excise/Caption/NewTitle",
"text": "Title of new tiddler:"
},
"$:/language/Buttons/Excise/Caption/Replace": {
"title": "$:/language/Buttons/Excise/Caption/Replace",
"text": "Replace excised text with:"
},
"$:/language/Buttons/Excise/Caption/Replace/Macro": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
"text": "macro"
},
"$:/language/Buttons/Excise/Caption/Replace/Link": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Link",
"text": "link"
},
"$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
"text": "transclusion"
},
"$:/language/Buttons/Excise/Caption/Tag": {
"title": "$:/language/Buttons/Excise/Caption/Tag",
"text": "Tag new tiddler with the title of this tiddler"
},
"$:/language/Buttons/Excise/Caption/TiddlerExists": {
"title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
"text": "Warning: tiddler already exists"
},
"$:/language/Buttons/Excise/Hint": {
"title": "$:/language/Buttons/Excise/Hint",
"text": "Excise the selected text into a new tiddler"
},
"$:/language/Buttons/Heading1/Caption": {
"title": "$:/language/Buttons/Heading1/Caption",
"text": "heading 1"
},
"$:/language/Buttons/Heading1/Hint": {
"title": "$:/language/Buttons/Heading1/Hint",
"text": "Apply heading level 1 formatting to lines containing selection"
},
"$:/language/Buttons/Heading2/Caption": {
"title": "$:/language/Buttons/Heading2/Caption",
"text": "heading 2"
},
"$:/language/Buttons/Heading2/Hint": {
"title": "$:/language/Buttons/Heading2/Hint",
"text": "Apply heading level 2 formatting to lines containing selection"
},
"$:/language/Buttons/Heading3/Caption": {
"title": "$:/language/Buttons/Heading3/Caption",
"text": "heading 3"
},
"$:/language/Buttons/Heading3/Hint": {
"title": "$:/language/Buttons/Heading3/Hint",
"text": "Apply heading level 3 formatting to lines containing selection"
},
"$:/language/Buttons/Heading4/Caption": {
"title": "$:/language/Buttons/Heading4/Caption",
"text": "heading 4"
},
"$:/language/Buttons/Heading4/Hint": {
"title": "$:/language/Buttons/Heading4/Hint",
"text": "Apply heading level 4 formatting to lines containing selection"
},
"$:/language/Buttons/Heading5/Caption": {
"title": "$:/language/Buttons/Heading5/Caption",
"text": "heading 5"
},
"$:/language/Buttons/Heading5/Hint": {
"title": "$:/language/Buttons/Heading5/Hint",
"text": "Apply heading level 5 formatting to lines containing selection"
},
"$:/language/Buttons/Heading6/Caption": {
"title": "$:/language/Buttons/Heading6/Caption",
"text": "heading 6"
},
"$:/language/Buttons/Heading6/Hint": {
"title": "$:/language/Buttons/Heading6/Hint",
"text": "Apply heading level 6 formatting to lines containing selection"
},
"$:/language/Buttons/Italic/Caption": {
"title": "$:/language/Buttons/Italic/Caption",
"text": "italic"
},
"$:/language/Buttons/Italic/Hint": {
"title": "$:/language/Buttons/Italic/Hint",
"text": "Apply italic formatting to selection"
},
"$:/language/Buttons/LineWidth/Caption": {
"title": "$:/language/Buttons/LineWidth/Caption",
"text": "line width"
},
"$:/language/Buttons/LineWidth/Hint": {
"title": "$:/language/Buttons/LineWidth/Hint",
"text": "Set line width for painting"
},
"$:/language/Buttons/Link/Caption": {
"title": "$:/language/Buttons/Link/Caption",
"text": "link"
},
"$:/language/Buttons/Link/Hint": {
"title": "$:/language/Buttons/Link/Hint",
"text": "Create wikitext link"
},
"$:/language/Buttons/Linkify/Caption": {
"title": "$:/language/Buttons/Linkify/Caption",
"text": "wikilink"
},
"$:/language/Buttons/Linkify/Hint": {
"title": "$:/language/Buttons/Linkify/Hint",
"text": "Wrap selection in square brackets"
},
"$:/language/Buttons/ListBullet/Caption": {
"title": "$:/language/Buttons/ListBullet/Caption",
"text": "bulleted list"
},
"$:/language/Buttons/ListBullet/Hint": {
"title": "$:/language/Buttons/ListBullet/Hint",
"text": "Apply bulleted list formatting to lines containing selection"
},
"$:/language/Buttons/ListNumber/Caption": {
"title": "$:/language/Buttons/ListNumber/Caption",
"text": "numbered list"
},
"$:/language/Buttons/ListNumber/Hint": {
"title": "$:/language/Buttons/ListNumber/Hint",
"text": "Apply numbered list formatting to lines containing selection"
},
"$:/language/Buttons/MonoBlock/Caption": {
"title": "$:/language/Buttons/MonoBlock/Caption",
"text": "monospaced block"
},
"$:/language/Buttons/MonoBlock/Hint": {
"title": "$:/language/Buttons/MonoBlock/Hint",
"text": "Apply monospaced block formatting to lines containing selection"
},
"$:/language/Buttons/MonoLine/Caption": {
"title": "$:/language/Buttons/MonoLine/Caption",
"text": "monospaced"
},
"$:/language/Buttons/MonoLine/Hint": {
"title": "$:/language/Buttons/MonoLine/Hint",
"text": "Apply monospaced character formatting to selection"
},
"$:/language/Buttons/Opacity/Caption": {
"title": "$:/language/Buttons/Opacity/Caption",
"text": "opacity"
},
"$:/language/Buttons/Opacity/Hint": {
"title": "$:/language/Buttons/Opacity/Hint",
"text": "Set painting opacity"
},
"$:/language/Buttons/Paint/Caption": {
"title": "$:/language/Buttons/Paint/Caption",
"text": "paint colour"
},
"$:/language/Buttons/Paint/Hint": {
"title": "$:/language/Buttons/Paint/Hint",
"text": "Set painting colour"
},
"$:/language/Buttons/Picture/Caption": {
"title": "$:/language/Buttons/Picture/Caption",
"text": "picture"
},
"$:/language/Buttons/Picture/Hint": {
"title": "$:/language/Buttons/Picture/Hint",
"text": "Insert picture"
},
"$:/language/Buttons/Preview/Caption": {
"title": "$:/language/Buttons/Preview/Caption",
"text": "preview"
},
"$:/language/Buttons/Preview/Hint": {
"title": "$:/language/Buttons/Preview/Hint",
"text": "Show preview pane"
},
"$:/language/Buttons/PreviewType/Caption": {
"title": "$:/language/Buttons/PreviewType/Caption",
"text": "preview type"
},
"$:/language/Buttons/PreviewType/Hint": {
"title": "$:/language/Buttons/PreviewType/Hint",
"text": "Choose preview type"
},
"$:/language/Buttons/Quote/Caption": {
"title": "$:/language/Buttons/Quote/Caption",
"text": "quote"
},
"$:/language/Buttons/Quote/Hint": {
"title": "$:/language/Buttons/Quote/Hint",
"text": "Apply quoted text formatting to lines containing selection"
},
"$:/language/Buttons/RotateLeft/Caption": {
"title": "$:/language/Buttons/RotateLeft/Caption",
"text": "rotate left"
},
"$:/language/Buttons/RotateLeft/Hint": {
"title": "$:/language/Buttons/RotateLeft/Hint",
"text": "Rotate image left by 90 degrees"
},
"$:/language/Buttons/Size/Caption": {
"title": "$:/language/Buttons/Size/Caption",
"text": "image size"
},
"$:/language/Buttons/Size/Caption/Height": {
"title": "$:/language/Buttons/Size/Caption/Height",
"text": "Height:"
},
"$:/language/Buttons/Size/Caption/Resize": {
"title": "$:/language/Buttons/Size/Caption/Resize",
"text": "Resize image"
},
"$:/language/Buttons/Size/Caption/Width": {
"title": "$:/language/Buttons/Size/Caption/Width",
"text": "Width:"
},
"$:/language/Buttons/Size/Hint": {
"title": "$:/language/Buttons/Size/Hint",
"text": "Set image size"
},
"$:/language/Buttons/Stamp/Caption": {
"title": "$:/language/Buttons/Stamp/Caption",
"text": "stamp"
},
"$:/language/Buttons/Stamp/Caption/New": {
"title": "$:/language/Buttons/Stamp/Caption/New",
"text": "Add your own"
},
"$:/language/Buttons/Stamp/Hint": {
"title": "$:/language/Buttons/Stamp/Hint",
"text": "Insert a preconfigured snippet of text"
},
"$:/language/Buttons/Stamp/New/Title": {
"title": "$:/language/Buttons/Stamp/New/Title",
"text": "Name as shown in menu"
},
"$:/language/Buttons/Stamp/New/Text": {
"title": "$:/language/Buttons/Stamp/New/Text",
"text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
},
"$:/language/Buttons/Strikethrough/Caption": {
"title": "$:/language/Buttons/Strikethrough/Caption",
"text": "strikethrough"
},
"$:/language/Buttons/Strikethrough/Hint": {
"title": "$:/language/Buttons/Strikethrough/Hint",
"text": "Apply strikethrough formatting to selection"
},
"$:/language/Buttons/Subscript/Caption": {
"title": "$:/language/Buttons/Subscript/Caption",
"text": "subscript"
},
"$:/language/Buttons/Subscript/Hint": {
"title": "$:/language/Buttons/Subscript/Hint",
"text": "Apply subscript formatting to selection"
},
"$:/language/Buttons/Superscript/Caption": {
"title": "$:/language/Buttons/Superscript/Caption",
"text": "superscript"
},
"$:/language/Buttons/Superscript/Hint": {
"title": "$:/language/Buttons/Superscript/Hint",
"text": "Apply superscript formatting to selection"
},
"$:/language/Buttons/ToggleSidebar/Hint": {
"title": "$:/language/Buttons/ToggleSidebar/Hint",
"text": "Toggle the sidebar visibility"
},
"$:/language/Buttons/Transcludify/Caption": {
"title": "$:/language/Buttons/Transcludify/Caption",
"text": "transclusion"
},
"$:/language/Buttons/Transcludify/Hint": {
"title": "$:/language/Buttons/Transcludify/Hint",
"text": "Wrap selection in curly brackets"
},
"$:/language/Buttons/Underline/Caption": {
"title": "$:/language/Buttons/Underline/Caption",
"text": "underline"
},
"$:/language/Buttons/Underline/Hint": {
"title": "$:/language/Buttons/Underline/Hint",
"text": "Apply underline formatting to selection"
},
"$:/language/ControlPanel/Advanced/Caption": {
"title": "$:/language/ControlPanel/Advanced/Caption",
"text": "Advanced"
},
"$:/language/ControlPanel/Advanced/Hint": {
"title": "$:/language/ControlPanel/Advanced/Hint",
"text": "Internal information about this TiddlyWiki"
},
"$:/language/ControlPanel/Appearance/Caption": {
"title": "$:/language/ControlPanel/Appearance/Caption",
"text": "Appearance"
},
"$:/language/ControlPanel/Appearance/Hint": {
"title": "$:/language/ControlPanel/Appearance/Hint",
"text": "Ways to customise the appearance of your TiddlyWiki."
},
"$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
"title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
"text": "Animation duration"
},
"$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
"title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
"text": "Default focus field for new tiddlers"
},
"$:/language/ControlPanel/Basics/Caption": {
"title": "$:/language/ControlPanel/Basics/Caption",
"text": "Basics"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
"text": "Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
"text": "Default tiddlers"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
"text": "Choose which tiddlers are displayed at startup"
},
"$:/language/ControlPanel/Basics/Language/Prompt": {
"title": "$:/language/ControlPanel/Basics/Language/Prompt",
"text": "Hello! Current language:"
},
"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
"text": "Title of new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
"text": "Text for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
"text": "Tags for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
"text": "Title of new tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
"text": "Tags for new tiddlers"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Number of overridden shadow tiddlers"
},
"$:/language/ControlPanel/Basics/RemoveTags": {
"title": "$:/language/ControlPanel/Basics/RemoveTags",
"text": "Update to current format"
},
"$:/language/ControlPanel/Basics/RemoveTags/Hint": {
"title": "$:/language/ControlPanel/Basics/RemoveTags/Hint",
"text": "Update the tags configuration to the latest format"
},
"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
"text": "Number of shadow tiddlers"
},
"$:/language/ControlPanel/Basics/Subtitle/Prompt": {
"title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
"text": "Subtitle"
},
"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
"text": "Number of system tiddlers"
},
"$:/language/ControlPanel/Basics/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tags/Prompt",
"text": "Number of tags"
},
"$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
"text": "Number of tiddlers"
},
"$:/language/ControlPanel/Basics/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/Title/Prompt",
"text": "Title of this ~TiddlyWiki"
},
"$:/language/ControlPanel/Basics/Username/Prompt": {
"title": "$:/language/ControlPanel/Basics/Username/Prompt",
"text": "Username for signing edits"
},
"$:/language/ControlPanel/Basics/Version/Prompt": {
"title": "$:/language/ControlPanel/Basics/Version/Prompt",
"text": "~TiddlyWiki version"
},
"$:/language/ControlPanel/EditorTypes/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Caption",
"text": "Editor Types"
},
"$:/language/ControlPanel/EditorTypes/Editor/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
"text": "Editor"
},
"$:/language/ControlPanel/EditorTypes/Hint": {
"title": "$:/language/ControlPanel/EditorTypes/Hint",
"text": "These tiddlers determine which editor is used to edit specific tiddler types."
},
"$:/language/ControlPanel/EditorTypes/Type/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
"text": "Type"
},
"$:/language/ControlPanel/Info/Caption": {
"title": "$:/language/ControlPanel/Info/Caption",
"text": "Info"
},
"$:/language/ControlPanel/Info/Hint": {
"title": "$:/language/ControlPanel/Info/Hint",
"text": "Information about this TiddlyWiki"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
"text": "Type shortcut here"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
"text": "add shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
"text": "Keyboard Shortcuts"
},
"$:/language/ControlPanel/KeyboardShortcuts/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
"text": "Manage keyboard shortcut assignments"
},
"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
"text": "No keyboard shortcuts assigned"
},
"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
"text": "remove keyboard shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
"text": "All platforms"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
"text": "Macintosh platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
"text": "Non-Macintosh platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
"text": "Linux platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
"text": "Non-Linux platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
"text": "Windows platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
"text": "Non-Windows platforms only"
},
"$:/language/ControlPanel/LayoutSwitcher/Caption": {
"title": "$:/language/ControlPanel/LayoutSwitcher/Caption",
"text": "Layout"
},
"$:/language/ControlPanel/LoadedModules/Caption": {
"title": "$:/language/ControlPanel/LoadedModules/Caption",
"text": "Loaded Modules"
},
"$:/language/ControlPanel/LoadedModules/Hint": {
"title": "$:/language/ControlPanel/LoadedModules/Hint",
"text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
},
"$:/language/ControlPanel/Palette/Caption": {
"title": "$:/language/ControlPanel/Palette/Caption",
"text": "Palette"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
"text": "clone"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
"text": "It is recommended that you clone this shadow palette before editing it"
},
"$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
"title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
"text": "delete this entry from the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
"title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
"text": "Show color names that are not part of the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
"text": "This shadow palette has been modified"
},
"$:/language/ControlPanel/Palette/Editor/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt",
"text": "Editing"
},
"$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
"text": "reset"
},
"$:/language/ControlPanel/Palette/HideEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
"text": "hide editor"
},
"$:/language/ControlPanel/Palette/Prompt": {
"title": "$:/language/ControlPanel/Palette/Prompt",
"text": "Current palette:"
},
"$:/language/ControlPanel/Palette/ShowEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
"text": "show editor"
},
"$:/language/ControlPanel/Parsing/Caption": {
"title": "$:/language/ControlPanel/Parsing/Caption",
"text": "Parsing"
},
"$:/language/ControlPanel/Parsing/Hint": {
"title": "$:/language/ControlPanel/Parsing/Hint",
"text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
},
"$:/language/ControlPanel/Parsing/Block/Caption": {
"title": "$:/language/ControlPanel/Parsing/Block/Caption",
"text": "Block Parse Rules"
},
"$:/language/ControlPanel/Parsing/Inline/Caption": {
"title": "$:/language/ControlPanel/Parsing/Inline/Caption",
"text": "Inline Parse Rules"
},
"$:/language/ControlPanel/Parsing/Pragma/Caption": {
"title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
"text": "Pragma Parse Rules"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Get more plugins"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Install plugins from the official library"
},
"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
"text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
},
"$:/language/ControlPanel/Plugins/AlsoRequires": {
"title": "$:/language/ControlPanel/Plugins/AlsoRequires",
"text": "Also requires:"
},
"$:/language/ControlPanel/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Disable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Disable/Caption",
"text": "disable"
},
"$:/language/ControlPanel/Plugins/Disable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Disable/Hint",
"text": "Disable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Disabled/Status": {
"title": "$:/language/ControlPanel/Plugins/Disabled/Status",
"text": "(disabled)"
},
"$:/language/ControlPanel/Plugins/Downgrade/Caption": {
"title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
"text": "downgrade"
},
"$:/language/ControlPanel/Plugins/Empty/Hint": {
"title": "$:/language/ControlPanel/Plugins/Empty/Hint",
"text": "None"
},
"$:/language/ControlPanel/Plugins/Enable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Enable/Caption",
"text": "enable"
},
"$:/language/ControlPanel/Plugins/Enable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Enable/Hint",
"text": "Enable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Install/Caption": {
"title": "$:/language/ControlPanel/Plugins/Install/Caption",
"text": "install"
},
"$:/language/ControlPanel/Plugins/Installed/Hint": {
"title": "$:/language/ControlPanel/Plugins/Installed/Hint",
"text": "Currently installed plugins:"
},
"$:/language/ControlPanel/Plugins/Languages/Caption": {
"title": "$:/language/ControlPanel/Plugins/Languages/Caption",
"text": "Languages"
},
"$:/language/ControlPanel/Plugins/Languages/Hint": {
"title": "$:/language/ControlPanel/Plugins/Languages/Hint",
"text": "Language pack plugins"
},
"$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
"title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
"text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
},
"$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
"text": "This plugin is not currently installed"
},
"$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
"text": "open plugin library"
},
"$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
"text": "close plugin library"
},
"$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
"title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
"text": "(requires reload)"
},
"$:/language/ControlPanel/Plugins/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Plugins/Hint": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Reinstall/Caption": {
"title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
"text": "reinstall"
},
"$:/language/ControlPanel/Plugins/Themes/Caption": {
"title": "$:/language/ControlPanel/Plugins/Themes/Caption",
"text": "Themes"
},
"$:/language/ControlPanel/Plugins/Themes/Hint": {
"title": "$:/language/ControlPanel/Plugins/Themes/Hint",
"text": "Theme plugins"
},
"$:/language/ControlPanel/Plugins/Update/Caption": {
"title": "$:/language/ControlPanel/Plugins/Update/Caption",
"text": "update"
},
"$:/language/ControlPanel/Plugins/Updates/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/Caption",
"text": "Updates"
},
"$:/language/ControlPanel/Plugins/Updates/Hint": {
"title": "$:/language/ControlPanel/Plugins/Updates/Hint",
"text": "Available updates to installed plugins"
},
"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
"text": "Update <<update-count>> plugins"
},
"$:/language/ControlPanel/Plugins/SubPluginPrompt": {
"title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
"text": "With <<count>> sub-plugins available"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Saving"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
"text": "Permit automatic saving for the download saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
"text": "Enable Autosave for Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
"text": "Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
"text": "These settings apply to the HTML5-compatible download saver"
},
"$:/language/ControlPanel/Saving/General/Caption": {
"title": "$:/language/ControlPanel/Saving/General/Caption",
"text": "General"
},
"$:/language/ControlPanel/Saving/General/Hint": {
"title": "$:/language/ControlPanel/Saving/General/Hint",
"text": "These settings apply to all the loaded savers"
},
"$:/language/ControlPanel/Saving/Hint": {
"title": "$:/language/ControlPanel/Saving/Hint",
"text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
},
"$:/language/ControlPanel/Saving/GitService/Branch": {
"title": "$:/language/ControlPanel/Saving/GitService/Branch",
"text": "Target branch for saving"
},
"$:/language/ControlPanel/Saving/GitService/CommitMessage": {
"title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
"text": "Saved by TiddlyWiki"
},
"$:/language/ControlPanel/Saving/GitService/Description": {
"title": "$:/language/ControlPanel/Saving/GitService/Description",
"text": "These settings are only used when saving to <<service-name>>"
},
"$:/language/ControlPanel/Saving/GitService/Filename": {
"title": "$:/language/ControlPanel/Saving/GitService/Filename",
"text": "Filename of target file (e.g. `index.html`)"
},
"$:/language/ControlPanel/Saving/GitService/Path": {
"title": "$:/language/ControlPanel/Saving/GitService/Path",
"text": "Path to target file (e.g. `/wiki/`)"
},
"$:/language/ControlPanel/Saving/GitService/Repo": {
"title": "$:/language/ControlPanel/Saving/GitService/Repo",
"text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
},
"$:/language/ControlPanel/Saving/GitService/ServerURL": {
"title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
"text": "Server API URL"
},
"$:/language/ControlPanel/Saving/GitService/UserName": {
"title": "$:/language/ControlPanel/Saving/GitService/UserName",
"text": "Username"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
"text": "~GitHub Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
"text": "Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
"text": "~GitLab Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
"text": "Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
"text": "Gitea Saver"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
"text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
"text": "Advanced Settings"
},
"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
"text": "Backup Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel",
"text": "~TiddlySpot Control Panel"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Backups"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
"text": "~TiddlySpot Saver"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Description": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
"text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
"text": "Upload Filename"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
"text": "~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
"text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Password": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
"text": "Password"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly",
"text": "The ~TiddlySpot service is currently only available in read-only form. Please see http://tiddlyspot.com/ for the latest details. The ~TiddlySpot saver can still be used to save to compatible servers."
},
"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
"text": "Server URL"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
"text": "Upload Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
"text": "Wiki Name"
},
"$:/language/ControlPanel/Settings/AutoSave/Caption": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
"text": "Autosave"
},
"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
"text": "Do not save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
"text": "Save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
"text": "Attempt to automatically save changes during editing when using a supporting saver"
},
"$:/language/ControlPanel/Settings/CamelCase/Caption": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
"text": "Camel Case Wiki Links"
},
"$:/language/ControlPanel/Settings/CamelCase/Hint": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
"text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/CamelCase/Description": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Description",
"text": "Enable automatic ~CamelCase linking"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Settings"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
"text": "Enable or disable the editor toolbar:"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Description": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
"text": "Show editor toolbar"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
"text": "Tiddler Info Panel Mode"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
"text": "Control when the tiddler info panel closes:"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
"text": "Tiddler info panel closes automatically"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
"text": "Tiddler info panel stays open until explicitly closed"
},
"$:/language/ControlPanel/Settings/Hint": {
"title": "$:/language/ControlPanel/Settings/Hint",
"text": "These settings let you customise the behaviour of TiddlyWiki."
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
"text": "Navigation Address Bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
"text": "Behaviour of the browser address bar when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
"text": "Do not update the address bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
"text": "Include the target tiddler"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
"text": "Include the target tiddler and the current story sequence"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
"text": "Navigation History"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
"text": "Update browser history when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
"text": "Do not update history"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
"text": "Update history"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
"text": "Permalink/permaview Mode"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
"text": "Choose how permalink/permaview is handled:"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
"text": "Copy permalink/permaview URL to clipboard"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
"text": "Update address bar with permalink/permaview URL"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
"text": "Performance Instrumentation"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
"text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
"text": "Enable performance instrumentation"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
"text": "Toolbar Button Style"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
"text": "Choose the style for toolbar buttons:"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
"text": "Borderless"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
"text": "Boxed"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
"text": "Rounded"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
"text": "Toolbar Buttons"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
"text": "Default toolbar button appearance:"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
"text": "Include icon"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
"text": "Include text"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
"text": "Default Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
"text": "Specify which sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
"text": "Default More Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
"text": "Specify which More sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
"text": "Tiddler Opening Behaviour"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
"text": "Navigation from //within// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
"text": "Navigation from //outside// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
"text": "Open above the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
"text": "Open below the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
"text": "Open at the top of the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
"text": "Open at the bottom of the story river"
},
"$:/language/ControlPanel/Settings/TitleLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
"text": "Tiddler Titles"
},
"$:/language/ControlPanel/Settings/TitleLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
"text": "Optionally display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
"text": "Do not display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
"text": "Display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
"text": "Wiki Links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
"text": "Choose whether to link to tiddlers that do not exist yet"
},
"$:/language/ControlPanel/Settings/MissingLinks/Description": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
"text": "Enable links to missing tiddlers"
},
"$:/language/ControlPanel/StoryView/Caption": {
"title": "$:/language/ControlPanel/StoryView/Caption",
"text": "Story View"
},
"$:/language/ControlPanel/StoryView/Prompt": {
"title": "$:/language/ControlPanel/StoryView/Prompt",
"text": "Current view:"
},
"$:/language/ControlPanel/Stylesheets/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Caption",
"text": "Stylesheets"
},
"$:/language/ControlPanel/Stylesheets/Expand/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
"text": "Expand All"
},
"$:/language/ControlPanel/Stylesheets/Hint": {
"title": "$:/language/ControlPanel/Stylesheets/Hint",
"text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
},
"$:/language/ControlPanel/Stylesheets/Restore/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
"text": "Restore"
},
"$:/language/ControlPanel/Theme/Caption": {
"title": "$:/language/ControlPanel/Theme/Caption",
"text": "Theme"
},
"$:/language/ControlPanel/Theme/Prompt": {
"title": "$:/language/ControlPanel/Theme/Prompt",
"text": "Current theme:"
},
"$:/language/ControlPanel/TiddlerFields/Caption": {
"title": "$:/language/ControlPanel/TiddlerFields/Caption",
"text": "Tiddler Fields"
},
"$:/language/ControlPanel/TiddlerFields/Hint": {
"title": "$:/language/ControlPanel/TiddlerFields/Hint",
"text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
},
"$:/language/ControlPanel/Toolbars/Caption": {
"title": "$:/language/ControlPanel/Toolbars/Caption",
"text": "Toolbars"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
"text": "Edit Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/Hint": {
"title": "$:/language/ControlPanel/Toolbars/Hint",
"text": "Select which toolbar buttons are displayed"
},
"$:/language/ControlPanel/Toolbars/PageControls/Caption": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
"text": "Page Toolbar"
},
"$:/language/ControlPanel/Toolbars/PageControls/Hint": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
"text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
"text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
"text": "View Toolbar"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Tools/Download/Full/Caption": {
"title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
"text": "Download full wiki"
},
"$:/language/Date/DaySuffix/1": {
"title": "$:/language/Date/DaySuffix/1",
"text": "st"
},
"$:/language/Date/DaySuffix/2": {
"title": "$:/language/Date/DaySuffix/2",
"text": "nd"
},
"$:/language/Date/DaySuffix/3": {
"title": "$:/language/Date/DaySuffix/3",
"text": "rd"
},
"$:/language/Date/DaySuffix/4": {
"title": "$:/language/Date/DaySuffix/4",
"text": "th"
},
"$:/language/Date/DaySuffix/5": {
"title": "$:/language/Date/DaySuffix/5",
"text": "th"
},
"$:/language/Date/DaySuffix/6": {
"title": "$:/language/Date/DaySuffix/6",
"text": "th"
},
"$:/language/Date/DaySuffix/7": {
"title": "$:/language/Date/DaySuffix/7",
"text": "th"
},
"$:/language/Date/DaySuffix/8": {
"title": "$:/language/Date/DaySuffix/8",
"text": "th"
},
"$:/language/Date/DaySuffix/9": {
"title": "$:/language/Date/DaySuffix/9",
"text": "th"
},
"$:/language/Date/DaySuffix/10": {
"title": "$:/language/Date/DaySuffix/10",
"text": "th"
},
"$:/language/Date/DaySuffix/11": {
"title": "$:/language/Date/DaySuffix/11",
"text": "th"
},
"$:/language/Date/DaySuffix/12": {
"title": "$:/language/Date/DaySuffix/12",
"text": "th"
},
"$:/language/Date/DaySuffix/13": {
"title": "$:/language/Date/DaySuffix/13",
"text": "th"
},
"$:/language/Date/DaySuffix/14": {
"title": "$:/language/Date/DaySuffix/14",
"text": "th"
},
"$:/language/Date/DaySuffix/15": {
"title": "$:/language/Date/DaySuffix/15",
"text": "th"
},
"$:/language/Date/DaySuffix/16": {
"title": "$:/language/Date/DaySuffix/16",
"text": "th"
},
"$:/language/Date/DaySuffix/17": {
"title": "$:/language/Date/DaySuffix/17",
"text": "th"
},
"$:/language/Date/DaySuffix/18": {
"title": "$:/language/Date/DaySuffix/18",
"text": "th"
},
"$:/language/Date/DaySuffix/19": {
"title": "$:/language/Date/DaySuffix/19",
"text": "th"
},
"$:/language/Date/DaySuffix/20": {
"title": "$:/language/Date/DaySuffix/20",
"text": "th"
},
"$:/language/Date/DaySuffix/21": {
"title": "$:/language/Date/DaySuffix/21",
"text": "st"
},
"$:/language/Date/DaySuffix/22": {
"title": "$:/language/Date/DaySuffix/22",
"text": "nd"
},
"$:/language/Date/DaySuffix/23": {
"title": "$:/language/Date/DaySuffix/23",
"text": "rd"
},
"$:/language/Date/DaySuffix/24": {
"title": "$:/language/Date/DaySuffix/24",
"text": "th"
},
"$:/language/Date/DaySuffix/25": {
"title": "$:/language/Date/DaySuffix/25",
"text": "th"
},
"$:/language/Date/DaySuffix/26": {
"title": "$:/language/Date/DaySuffix/26",
"text": "th"
},
"$:/language/Date/DaySuffix/27": {
"title": "$:/language/Date/DaySuffix/27",
"text": "th"
},
"$:/language/Date/DaySuffix/28": {
"title": "$:/language/Date/DaySuffix/28",
"text": "th"
},
"$:/language/Date/DaySuffix/29": {
"title": "$:/language/Date/DaySuffix/29",
"text": "th"
},
"$:/language/Date/DaySuffix/30": {
"title": "$:/language/Date/DaySuffix/30",
"text": "th"
},
"$:/language/Date/DaySuffix/31": {
"title": "$:/language/Date/DaySuffix/31",
"text": "st"
},
"$:/language/Date/Long/Day/0": {
"title": "$:/language/Date/Long/Day/0",
"text": "Sunday"
},
"$:/language/Date/Long/Day/1": {
"title": "$:/language/Date/Long/Day/1",
"text": "Monday"
},
"$:/language/Date/Long/Day/2": {
"title": "$:/language/Date/Long/Day/2",
"text": "Tuesday"
},
"$:/language/Date/Long/Day/3": {
"title": "$:/language/Date/Long/Day/3",
"text": "Wednesday"
},
"$:/language/Date/Long/Day/4": {
"title": "$:/language/Date/Long/Day/4",
"text": "Thursday"
},
"$:/language/Date/Long/Day/5": {
"title": "$:/language/Date/Long/Day/5",
"text": "Friday"
},
"$:/language/Date/Long/Day/6": {
"title": "$:/language/Date/Long/Day/6",
"text": "Saturday"
},
"$:/language/Date/Long/Month/1": {
"title": "$:/language/Date/Long/Month/1",
"text": "January"
},
"$:/language/Date/Long/Month/2": {
"title": "$:/language/Date/Long/Month/2",
"text": "February"
},
"$:/language/Date/Long/Month/3": {
"title": "$:/language/Date/Long/Month/3",
"text": "March"
},
"$:/language/Date/Long/Month/4": {
"title": "$:/language/Date/Long/Month/4",
"text": "April"
},
"$:/language/Date/Long/Month/5": {
"title": "$:/language/Date/Long/Month/5",
"text": "May"
},
"$:/language/Date/Long/Month/6": {
"title": "$:/language/Date/Long/Month/6",
"text": "June"
},
"$:/language/Date/Long/Month/7": {
"title": "$:/language/Date/Long/Month/7",
"text": "July"
},
"$:/language/Date/Long/Month/8": {
"title": "$:/language/Date/Long/Month/8",
"text": "August"
},
"$:/language/Date/Long/Month/9": {
"title": "$:/language/Date/Long/Month/9",
"text": "September"
},
"$:/language/Date/Long/Month/10": {
"title": "$:/language/Date/Long/Month/10",
"text": "October"
},
"$:/language/Date/Long/Month/11": {
"title": "$:/language/Date/Long/Month/11",
"text": "November"
},
"$:/language/Date/Long/Month/12": {
"title": "$:/language/Date/Long/Month/12",
"text": "December"
},
"$:/language/Date/Period/am": {
"title": "$:/language/Date/Period/am",
"text": "am"
},
"$:/language/Date/Period/pm": {
"title": "$:/language/Date/Period/pm",
"text": "pm"
},
"$:/language/Date/Short/Day/0": {
"title": "$:/language/Date/Short/Day/0",
"text": "Sun"
},
"$:/language/Date/Short/Day/1": {
"title": "$:/language/Date/Short/Day/1",
"text": "Mon"
},
"$:/language/Date/Short/Day/2": {
"title": "$:/language/Date/Short/Day/2",
"text": "Tue"
},
"$:/language/Date/Short/Day/3": {
"title": "$:/language/Date/Short/Day/3",
"text": "Wed"
},
"$:/language/Date/Short/Day/4": {
"title": "$:/language/Date/Short/Day/4",
"text": "Thu"
},
"$:/language/Date/Short/Day/5": {
"title": "$:/language/Date/Short/Day/5",
"text": "Fri"
},
"$:/language/Date/Short/Day/6": {
"title": "$:/language/Date/Short/Day/6",
"text": "Sat"
},
"$:/language/Date/Short/Month/1": {
"title": "$:/language/Date/Short/Month/1",
"text": "Jan"
},
"$:/language/Date/Short/Month/2": {
"title": "$:/language/Date/Short/Month/2",
"text": "Feb"
},
"$:/language/Date/Short/Month/3": {
"title": "$:/language/Date/Short/Month/3",
"text": "Mar"
},
"$:/language/Date/Short/Month/4": {
"title": "$:/language/Date/Short/Month/4",
"text": "Apr"
},
"$:/language/Date/Short/Month/5": {
"title": "$:/language/Date/Short/Month/5",
"text": "May"
},
"$:/language/Date/Short/Month/6": {
"title": "$:/language/Date/Short/Month/6",
"text": "Jun"
},
"$:/language/Date/Short/Month/7": {
"title": "$:/language/Date/Short/Month/7",
"text": "Jul"
},
"$:/language/Date/Short/Month/8": {
"title": "$:/language/Date/Short/Month/8",
"text": "Aug"
},
"$:/language/Date/Short/Month/9": {
"title": "$:/language/Date/Short/Month/9",
"text": "Sep"
},
"$:/language/Date/Short/Month/10": {
"title": "$:/language/Date/Short/Month/10",
"text": "Oct"
},
"$:/language/Date/Short/Month/11": {
"title": "$:/language/Date/Short/Month/11",
"text": "Nov"
},
"$:/language/Date/Short/Month/12": {
"title": "$:/language/Date/Short/Month/12",
"text": "Dec"
},
"$:/language/RelativeDate/Future/Days": {
"title": "$:/language/RelativeDate/Future/Days",
"text": "<<period>> days from now"
},
"$:/language/RelativeDate/Future/Hours": {
"title": "$:/language/RelativeDate/Future/Hours",
"text": "<<period>> hours from now"
},
"$:/language/RelativeDate/Future/Minutes": {
"title": "$:/language/RelativeDate/Future/Minutes",
"text": "<<period>> minutes from now"
},
"$:/language/RelativeDate/Future/Months": {
"title": "$:/language/RelativeDate/Future/Months",
"text": "<<period>> months from now"
},
"$:/language/RelativeDate/Future/Second": {
"title": "$:/language/RelativeDate/Future/Second",
"text": "1 second from now"
},
"$:/language/RelativeDate/Future/Seconds": {
"title": "$:/language/RelativeDate/Future/Seconds",
"text": "<<period>> seconds from now"
},
"$:/language/RelativeDate/Future/Years": {
"title": "$:/language/RelativeDate/Future/Years",
"text": "<<period>> years from now"
},
"$:/language/RelativeDate/Past/Days": {
"title": "$:/language/RelativeDate/Past/Days",
"text": "<<period>> days ago"
},
"$:/language/RelativeDate/Past/Hours": {
"title": "$:/language/RelativeDate/Past/Hours",
"text": "<<period>> hours ago"
},
"$:/language/RelativeDate/Past/Minutes": {
"title": "$:/language/RelativeDate/Past/Minutes",
"text": "<<period>> minutes ago"
},
"$:/language/RelativeDate/Past/Months": {
"title": "$:/language/RelativeDate/Past/Months",
"text": "<<period>> months ago"
},
"$:/language/RelativeDate/Past/Second": {
"title": "$:/language/RelativeDate/Past/Second",
"text": "1 second ago"
},
"$:/language/RelativeDate/Past/Seconds": {
"title": "$:/language/RelativeDate/Past/Seconds",
"text": "<<period>> seconds ago"
},
"$:/language/RelativeDate/Past/Years": {
"title": "$:/language/RelativeDate/Past/Years",
"text": "<<period>> years ago"
},
"$:/language/Docs/ModuleTypes/allfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/allfilteroperator",
"text": "A sub-operator for the ''all'' filter operator."
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Animations that may be used with the RevealWidget."
},
"$:/language/Docs/ModuleTypes/authenticator": {
"title": "$:/language/Docs/ModuleTypes/authenticator",
"text": "Defines how requests are authenticated by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
"title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
"text": "A bitmap editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/command": {
"title": "$:/language/Docs/ModuleTypes/command",
"text": "Commands that can be executed under Node.js."
},
"$:/language/Docs/ModuleTypes/config": {
"title": "$:/language/Docs/ModuleTypes/config",
"text": "Data to be inserted into `$tw.config`."
},
"$:/language/Docs/ModuleTypes/filteroperator": {
"title": "$:/language/Docs/ModuleTypes/filteroperator",
"text": "Individual filter operator methods."
},
"$:/language/Docs/ModuleTypes/global": {
"title": "$:/language/Docs/ModuleTypes/global",
"text": "Global data to be inserted into `$tw`."
},
"$:/language/Docs/ModuleTypes/info": {
"title": "$:/language/Docs/ModuleTypes/info",
"text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Operands for the ''is'' filter operator."
},
"$:/language/Docs/ModuleTypes/library": {
"title": "$:/language/Docs/ModuleTypes/library",
"text": "Generic module type for general purpose JavaScript modules."
},
"$:/language/Docs/ModuleTypes/macro": {
"title": "$:/language/Docs/ModuleTypes/macro",
"text": "JavaScript macro definitions."
},
"$:/language/Docs/ModuleTypes/parser": {
"title": "$:/language/Docs/ModuleTypes/parser",
"text": "Parsers for different content types."
},
"$:/language/Docs/ModuleTypes/route": {
"title": "$:/language/Docs/ModuleTypes/route",
"text": "Defines how individual URL patterns are handled by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/saver": {
"title": "$:/language/Docs/ModuleTypes/saver",
"text": "Savers handle different methods for saving files from the browser."
},
"$:/language/Docs/ModuleTypes/startup": {
"title": "$:/language/Docs/ModuleTypes/startup",
"text": "Startup functions."
},
"$:/language/Docs/ModuleTypes/storyview": {
"title": "$:/language/Docs/ModuleTypes/storyview",
"text": "Story views customise the animation and behaviour of list widgets."
},
"$:/language/Docs/ModuleTypes/texteditoroperation": {
"title": "$:/language/Docs/ModuleTypes/texteditoroperation",
"text": "A text editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
"title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
"text": "Converts different content types into tiddlers."
},
"$:/language/Docs/ModuleTypes/tiddlerfield": {
"title": "$:/language/Docs/ModuleTypes/tiddlerfield",
"text": "Defines the behaviour of an individual tiddler field."
},
"$:/language/Docs/ModuleTypes/tiddlermethod": {
"title": "$:/language/Docs/ModuleTypes/tiddlermethod",
"text": "Adds methods to the `$tw.Tiddler` prototype."
},
"$:/language/Docs/ModuleTypes/upgrader": {
"title": "$:/language/Docs/ModuleTypes/upgrader",
"text": "Applies upgrade processing to tiddlers during an upgrade/import."
},
"$:/language/Docs/ModuleTypes/utils": {
"title": "$:/language/Docs/ModuleTypes/utils",
"text": "Adds methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/utils-node": {
"title": "$:/language/Docs/ModuleTypes/utils-node",
"text": "Adds Node.js-specific methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/widget": {
"title": "$:/language/Docs/ModuleTypes/widget",
"text": "Widgets encapsulate DOM rendering and refreshing."
},
"$:/language/Docs/ModuleTypes/wikimethod": {
"title": "$:/language/Docs/ModuleTypes/wikimethod",
"text": "Adds methods to `$tw.Wiki`."
},
"$:/language/Docs/ModuleTypes/wikirule": {
"title": "$:/language/Docs/ModuleTypes/wikirule",
"text": "Individual parser rules for the main WikiText parser."
},
"$:/language/Docs/PaletteColours/alert-background": {
"title": "$:/language/Docs/PaletteColours/alert-background",
"text": "Alert background"
},
"$:/language/Docs/PaletteColours/alert-border": {
"title": "$:/language/Docs/PaletteColours/alert-border",
"text": "Alert border"
},
"$:/language/Docs/PaletteColours/alert-highlight": {
"title": "$:/language/Docs/PaletteColours/alert-highlight",
"text": "Alert highlight"
},
"$:/language/Docs/PaletteColours/alert-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
"text": "Alert muted foreground"
},
"$:/language/Docs/PaletteColours/background": {
"title": "$:/language/Docs/PaletteColours/background",
"text": "General background"
},
"$:/language/Docs/PaletteColours/blockquote-bar": {
"title": "$:/language/Docs/PaletteColours/blockquote-bar",
"text": "Blockquote bar"
},
"$:/language/Docs/PaletteColours/button-background": {
"title": "$:/language/Docs/PaletteColours/button-background",
"text": "Default button background"
},
"$:/language/Docs/PaletteColours/button-border": {
"title": "$:/language/Docs/PaletteColours/button-border",
"text": "Default button border"
},
"$:/language/Docs/PaletteColours/button-foreground": {
"title": "$:/language/Docs/PaletteColours/button-foreground",
"text": "Default button foreground"
},
"$:/language/Docs/PaletteColours/dirty-indicator": {
"title": "$:/language/Docs/PaletteColours/dirty-indicator",
"text": "Unsaved changes indicator"
},
"$:/language/Docs/PaletteColours/code-background": {
"title": "$:/language/Docs/PaletteColours/code-background",
"text": "Code background"
},
"$:/language/Docs/PaletteColours/code-border": {
"title": "$:/language/Docs/PaletteColours/code-border",
"text": "Code border"
},
"$:/language/Docs/PaletteColours/code-foreground": {
"title": "$:/language/Docs/PaletteColours/code-foreground",
"text": "Code foreground"
},
"$:/language/Docs/PaletteColours/download-background": {
"title": "$:/language/Docs/PaletteColours/download-background",
"text": "Download button background"
},
"$:/language/Docs/PaletteColours/download-foreground": {
"title": "$:/language/Docs/PaletteColours/download-foreground",
"text": "Download button foreground"
},
"$:/language/Docs/PaletteColours/dragger-background": {
"title": "$:/language/Docs/PaletteColours/dragger-background",
"text": "Dragger background"
},
"$:/language/Docs/PaletteColours/dragger-foreground": {
"title": "$:/language/Docs/PaletteColours/dragger-foreground",
"text": "Dragger foreground"
},
"$:/language/Docs/PaletteColours/dropdown-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-background",
"text": "Dropdown background"
},
"$:/language/Docs/PaletteColours/dropdown-border": {
"title": "$:/language/Docs/PaletteColours/dropdown-border",
"text": "Dropdown border"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
"text": "Dropdown tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
"text": "Dropdown tab background"
},
"$:/language/Docs/PaletteColours/dropzone-background": {
"title": "$:/language/Docs/PaletteColours/dropzone-background",
"text": "Dropzone background"
},
"$:/language/Docs/PaletteColours/external-link-background-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-background-hover",
"text": "External link background hover"
},
"$:/language/Docs/PaletteColours/external-link-background-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-background-visited",
"text": "External link background visited"
},
"$:/language/Docs/PaletteColours/external-link-background": {
"title": "$:/language/Docs/PaletteColours/external-link-background",
"text": "External link background"
},
"$:/language/Docs/PaletteColours/external-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
"text": "External link foreground hover"
},
"$:/language/Docs/PaletteColours/external-link-foreground-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
"text": "External link foreground visited"
},
"$:/language/Docs/PaletteColours/external-link-foreground": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground",
"text": "External link foreground"
},
"$:/language/Docs/PaletteColours/foreground": {
"title": "$:/language/Docs/PaletteColours/foreground",
"text": "General foreground"
},
"$:/language/Docs/PaletteColours/menubar-background": {
"title": "$:/language/Docs/PaletteColours/menubar-background",
"text": "Menu bar background"
},
"$:/language/Docs/PaletteColours/menubar-foreground": {
"title": "$:/language/Docs/PaletteColours/menubar-foreground",
"text": "Menu bar foreground"
},
"$:/language/Docs/PaletteColours/message-background": {
"title": "$:/language/Docs/PaletteColours/message-background",
"text": "Message box background"
},
"$:/language/Docs/PaletteColours/message-border": {
"title": "$:/language/Docs/PaletteColours/message-border",
"text": "Message box border"
},
"$:/language/Docs/PaletteColours/message-foreground": {
"title": "$:/language/Docs/PaletteColours/message-foreground",
"text": "Message box foreground"
},
"$:/language/Docs/PaletteColours/modal-backdrop": {
"title": "$:/language/Docs/PaletteColours/modal-backdrop",
"text": "Modal backdrop"
},
"$:/language/Docs/PaletteColours/modal-background": {
"title": "$:/language/Docs/PaletteColours/modal-background",
"text": "Modal background"
},
"$:/language/Docs/PaletteColours/modal-border": {
"title": "$:/language/Docs/PaletteColours/modal-border",
"text": "Modal border"
},
"$:/language/Docs/PaletteColours/modal-footer-background": {
"title": "$:/language/Docs/PaletteColours/modal-footer-background",
"text": "Modal footer background"
},
"$:/language/Docs/PaletteColours/modal-footer-border": {
"title": "$:/language/Docs/PaletteColours/modal-footer-border",
"text": "Modal footer border"
},
"$:/language/Docs/PaletteColours/modal-header-border": {
"title": "$:/language/Docs/PaletteColours/modal-header-border",
"text": "Modal header border"
},
"$:/language/Docs/PaletteColours/muted-foreground": {
"title": "$:/language/Docs/PaletteColours/muted-foreground",
"text": "General muted foreground"
},
"$:/language/Docs/PaletteColours/notification-background": {
"title": "$:/language/Docs/PaletteColours/notification-background",
"text": "Notification background"
},
"$:/language/Docs/PaletteColours/notification-border": {
"title": "$:/language/Docs/PaletteColours/notification-border",
"text": "Notification border"
},
"$:/language/Docs/PaletteColours/page-background": {
"title": "$:/language/Docs/PaletteColours/page-background",
"text": "Page background"
},
"$:/language/Docs/PaletteColours/pre-background": {
"title": "$:/language/Docs/PaletteColours/pre-background",
"text": "Preformatted code background"
},
"$:/language/Docs/PaletteColours/pre-border": {
"title": "$:/language/Docs/PaletteColours/pre-border",
"text": "Preformatted code border"
},
"$:/language/Docs/PaletteColours/primary": {
"title": "$:/language/Docs/PaletteColours/primary",
"text": "General primary"
},
"$:/language/Docs/PaletteColours/select-tag-background": {
"title": "$:/language/Docs/PaletteColours/select-tag-background",
"text": "`<select>` element background"
},
"$:/language/Docs/PaletteColours/select-tag-foreground": {
"title": "$:/language/Docs/PaletteColours/select-tag-foreground",
"text": "`<select>` element text"
},
"$:/language/Docs/PaletteColours/sidebar-button-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
"text": "Sidebar button foreground"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
"text": "Sidebar controls foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
"text": "Sidebar controls foreground"
},
"$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
"text": "Sidebar foreground shadow"
},
"$:/language/Docs/PaletteColours/sidebar-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground",
"text": "Sidebar foreground"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
"text": "Sidebar muted foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
"text": "Sidebar muted foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
"text": "Sidebar tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
"text": "Sidebar tab background"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
"text": "Sidebar tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
"text": "Sidebar tab border"
},
"$:/language/Docs/PaletteColours/sidebar-tab-divider": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
"text": "Sidebar tab divider"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
"text": "Sidebar tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
"text": "Sidebar tab foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
"text": "Sidebar tiddler link foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
"text": "Sidebar tiddler link foreground"
},
"$:/language/Docs/PaletteColours/site-title-foreground": {
"title": "$:/language/Docs/PaletteColours/site-title-foreground",
"text": "Site title foreground"
},
"$:/language/Docs/PaletteColours/static-alert-foreground": {
"title": "$:/language/Docs/PaletteColours/static-alert-foreground",
"text": "Static alert foreground"
},
"$:/language/Docs/PaletteColours/tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/tab-background-selected",
"text": "Tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-background": {
"title": "$:/language/Docs/PaletteColours/tab-background",
"text": "Tab background"
},
"$:/language/Docs/PaletteColours/tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/tab-border-selected",
"text": "Tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-border": {
"title": "$:/language/Docs/PaletteColours/tab-border",
"text": "Tab border"
},
"$:/language/Docs/PaletteColours/tab-divider": {
"title": "$:/language/Docs/PaletteColours/tab-divider",
"text": "Tab divider"
},
"$:/language/Docs/PaletteColours/tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
"text": "Tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-foreground": {
"title": "$:/language/Docs/PaletteColours/tab-foreground",
"text": "Tab foreground"
},
"$:/language/Docs/PaletteColours/table-border": {
"title": "$:/language/Docs/PaletteColours/table-border",
"text": "Table border"
},
"$:/language/Docs/PaletteColours/table-footer-background": {
"title": "$:/language/Docs/PaletteColours/table-footer-background",
"text": "Table footer background"
},
"$:/language/Docs/PaletteColours/table-header-background": {
"title": "$:/language/Docs/PaletteColours/table-header-background",
"text": "Table header background"
},
"$:/language/Docs/PaletteColours/tag-background": {
"title": "$:/language/Docs/PaletteColours/tag-background",
"text": "Tag background"
},
"$:/language/Docs/PaletteColours/tag-foreground": {
"title": "$:/language/Docs/PaletteColours/tag-foreground",
"text": "Tag foreground"
},
"$:/language/Docs/PaletteColours/tiddler-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-background",
"text": "Tiddler background"
},
"$:/language/Docs/PaletteColours/tiddler-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-border",
"text": "Tiddler border"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
"text": "Tiddler controls foreground hover"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
"text": "Tiddler controls foreground for selected controls"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
"text": "Tiddler controls foreground"
},
"$:/language/Docs/PaletteColours/tiddler-editor-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
"text": "Tiddler editor background"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
"text": "Tiddler editor border image"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
"text": "Tiddler editor border"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
"text": "Tiddler editor background for even fields"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
"text": "Tiddler editor background for odd fields"
},
"$:/language/Docs/PaletteColours/tiddler-info-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-background",
"text": "Tiddler info panel background"
},
"$:/language/Docs/PaletteColours/tiddler-info-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-border",
"text": "Tiddler info panel border"
},
"$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
"text": "Tiddler info panel tab background"
},
"$:/language/Docs/PaletteColours/tiddler-link-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-background",
"text": "Tiddler link background"
},
"$:/language/Docs/PaletteColours/tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
"text": "Tiddler link foreground"
},
"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
"text": "Tiddler subtitle foreground"
},
"$:/language/Docs/PaletteColours/tiddler-title-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
"text": "Tiddler title foreground"
},
"$:/language/Docs/PaletteColours/toolbar-new-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-new-button",
"text": "Toolbar 'new tiddler' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-options-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-options-button",
"text": "Toolbar 'options' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-save-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-save-button",
"text": "Toolbar 'save' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-info-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-info-button",
"text": "Toolbar 'info' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-edit-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
"text": "Toolbar 'edit' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-close-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-close-button",
"text": "Toolbar 'close' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-delete-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
"text": "Toolbar 'delete' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-cancel-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
"text": "Toolbar 'cancel' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-done-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-done-button",
"text": "Toolbar 'done' button foreground"
},
"$:/language/Docs/PaletteColours/untagged-background": {
"title": "$:/language/Docs/PaletteColours/untagged-background",
"text": "Untagged pill background"
},
"$:/language/Docs/PaletteColours/very-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/very-muted-foreground",
"text": "Very muted foreground"
},
"$:/language/EditTemplate/Body/External/Hint": {
"title": "$:/language/EditTemplate/Body/External/Hint",
"text": "This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
},
"$:/language/EditTemplate/Body/Placeholder": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Type the text for this tiddler"
},
"$:/language/EditTemplate/Body/Preview/Type/Output": {
"title": "$:/language/EditTemplate/Body/Preview/Type/Output",
"text": "output"
},
"$:/language/EditTemplate/Field/Remove/Caption": {
"title": "$:/language/EditTemplate/Field/Remove/Caption",
"text": "remove field"
},
"$:/language/EditTemplate/Field/Remove/Hint": {
"title": "$:/language/EditTemplate/Field/Remove/Hint",
"text": "Remove field"
},
"$:/language/EditTemplate/Field/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Field/Dropdown/Caption",
"text": "field list"
},
"$:/language/EditTemplate/Field/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Field/Dropdown/Hint",
"text": "Show field list"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Fields/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
"text": "Add the new field to the tiddler"
},
"$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
"text": "field name"
},
"$:/language/EditTemplate/Fields/Add/Prompt": {
"title": "$:/language/EditTemplate/Fields/Add/Prompt",
"text": "Add a new field:"
},
"$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
"text": "field value"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/System": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
"text": "System fields"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/User": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
"text": "User fields"
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Tags/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
"text": "add tag"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "tag name"
},
"$:/language/EditTemplate/Tags/ClearInput/Caption": {
"title": "$:/language/EditTemplate/Tags/ClearInput/Caption",
"text": "clear input"
},
"$:/language/EditTemplate/Tags/ClearInput/Hint": {
"title": "$:/language/EditTemplate/Tags/ClearInput/Hint",
"text": "Clear tag input"
},
"$:/language/EditTemplate/Tags/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
"text": "tag list"
},
"$:/language/EditTemplate/Tags/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
"text": "Show tag list"
},
"$:/language/EditTemplate/Title/BadCharacterWarning": {
"title": "$:/language/EditTemplate/Title/BadCharacterWarning",
"text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
},
"$:/language/EditTemplate/Title/Exists/Prompt": {
"title": "$:/language/EditTemplate/Title/Exists/Prompt",
"text": "Target tiddler already exists"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
},
"$:/language/EditTemplate/Title/References/Prompt": {
"title": "$:/language/EditTemplate/Title/References/Prompt",
"text": "The following references to this tiddler will not be automatically updated:"
},
"$:/language/EditTemplate/Type/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Type/Dropdown/Caption",
"text": "content type list"
},
"$:/language/EditTemplate/Type/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Type/Dropdown/Hint",
"text": "Show content type list"
},
"$:/language/EditTemplate/Type/Delete/Caption": {
"title": "$:/language/EditTemplate/Type/Delete/Caption",
"text": "delete content type"
},
"$:/language/EditTemplate/Type/Delete/Hint": {
"title": "$:/language/EditTemplate/Type/Delete/Hint",
"text": "Delete content type"
},
"$:/language/EditTemplate/Type/Placeholder": {
"title": "$:/language/EditTemplate/Type/Placeholder",
"text": "content type"
},
"$:/language/EditTemplate/Type/Prompt": {
"title": "$:/language/EditTemplate/Type/Prompt",
"text": "Type:"
},
"$:/language/Exporters/StaticRiver": {
"title": "$:/language/Exporters/StaticRiver",
"text": "Static HTML"
},
"$:/language/Exporters/JsonFile": {
"title": "$:/language/Exporters/JsonFile",
"text": "JSON file"
},
"$:/language/Exporters/CsvFile": {
"title": "$:/language/Exporters/CsvFile",
"text": "CSV file"
},
"$:/language/Exporters/TidFile": {
"title": "$:/language/Exporters/TidFile",
"text": "\".tid\" file"
},
"$:/language/Docs/Fields/_canonical_uri": {
"title": "$:/language/Docs/Fields/_canonical_uri",
"text": "The full URI of an external image tiddler"
},
"$:/language/Docs/Fields/bag": {
"title": "$:/language/Docs/Fields/bag",
"text": "The name of the bag from which a tiddler came"
},
"$:/language/Docs/Fields/caption": {
"title": "$:/language/Docs/Fields/caption",
"text": "The text to be displayed on a tab or button"
},
"$:/language/Docs/Fields/color": {
"title": "$:/language/Docs/Fields/color",
"text": "The CSS color value associated with a tiddler"
},
"$:/language/Docs/Fields/component": {
"title": "$:/language/Docs/Fields/component",
"text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
},
"$:/language/Docs/Fields/current-tiddler": {
"title": "$:/language/Docs/Fields/current-tiddler",
"text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
},
"$:/language/Docs/Fields/created": {
"title": "$:/language/Docs/Fields/created",
"text": "The date a tiddler was created"
},
"$:/language/Docs/Fields/creator": {
"title": "$:/language/Docs/Fields/creator",
"text": "The name of the person who created a tiddler"
},
"$:/language/Docs/Fields/dependents": {
"title": "$:/language/Docs/Fields/dependents",
"text": "For a plugin, lists the dependent plugin titles"
},
"$:/language/Docs/Fields/description": {
"title": "$:/language/Docs/Fields/description",
"text": "The descriptive text for a plugin, or a modal dialogue"
},
"$:/language/Docs/Fields/draft.of": {
"title": "$:/language/Docs/Fields/draft.of",
"text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
},
"$:/language/Docs/Fields/draft.title": {
"title": "$:/language/Docs/Fields/draft.title",
"text": "For draft tiddlers, contains the proposed new title of the tiddler"
},
"$:/language/Docs/Fields/footer": {
"title": "$:/language/Docs/Fields/footer",
"text": "The footer text for a wizard"
},
"$:/language/Docs/Fields/hide-body": {
"title": "$:/language/Docs/Fields/hide-body",
"text": "The view template will hide bodies of tiddlers if set to: ''yes''"
},
"$:/language/Docs/Fields/icon": {
"title": "$:/language/Docs/Fields/icon",
"text": "The title of the tiddler containing the icon associated with a tiddler"
},
"$:/language/Docs/Fields/library": {
"title": "$:/language/Docs/Fields/library",
"text": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
},
"$:/language/Docs/Fields/list": {
"title": "$:/language/Docs/Fields/list",
"text": "An ordered list of tiddler titles associated with a tiddler"
},
"$:/language/Docs/Fields/list-before": {
"title": "$:/language/Docs/Fields/list-before",
"text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
},
"$:/language/Docs/Fields/list-after": {
"title": "$:/language/Docs/Fields/list-after",
"text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"
},
"$:/language/Docs/Fields/modified": {
"title": "$:/language/Docs/Fields/modified",
"text": "The date and time at which a tiddler was last modified"
},
"$:/language/Docs/Fields/modifier": {
"title": "$:/language/Docs/Fields/modifier",
"text": "The tiddler title associated with the person who last modified a tiddler"
},
"$:/language/Docs/Fields/name": {
"title": "$:/language/Docs/Fields/name",
"text": "The human readable name associated with a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-priority": {
"title": "$:/language/Docs/Fields/plugin-priority",
"text": "A numerical value indicating the priority of a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-type": {
"title": "$:/language/Docs/Fields/plugin-type",
"text": "The type of plugin in a plugin tiddler"
},
"$:/language/Docs/Fields/revision": {
"title": "$:/language/Docs/Fields/revision",
"text": "The revision of the tiddler held at the server"
},
"$:/language/Docs/Fields/released": {
"title": "$:/language/Docs/Fields/released",
"text": "Date of a TiddlyWiki release"
},
"$:/language/Docs/Fields/source": {
"title": "$:/language/Docs/Fields/source",
"text": "The source URL associated with a tiddler"
},
"$:/language/Docs/Fields/subtitle": {
"title": "$:/language/Docs/Fields/subtitle",
"text": "The subtitle text for a wizard"
},
"$:/language/Docs/Fields/tags": {
"title": "$:/language/Docs/Fields/tags",
"text": "A list of tags associated with a tiddler"
},
"$:/language/Docs/Fields/text": {
"title": "$:/language/Docs/Fields/text",
"text": "The body text of a tiddler"
},
"$:/language/Docs/Fields/throttle.refresh": {
"title": "$:/language/Docs/Fields/throttle.refresh",
"text": "If present, throttles refreshes of this tiddler"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "The unique name of a tiddler"
},
"$:/language/Docs/Fields/toc-link": {
"title": "$:/language/Docs/Fields/toc-link",
"text": "Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"
},
"$:/language/Docs/Fields/type": {
"title": "$:/language/Docs/Fields/type",
"text": "The content type of a tiddler"
},
"$:/language/Docs/Fields/version": {
"title": "$:/language/Docs/Fields/version",
"text": "Version information for a plugin"
},
"$:/language/Docs/Fields/_is_skinny": {
"title": "$:/language/Docs/Fields/_is_skinny",
"text": "If present, indicates that the tiddler text field must be loaded from the server"
},
"$:/language/Filters/AllTiddlers": {
"title": "$:/language/Filters/AllTiddlers",
"text": "All tiddlers except system tiddlers"
},
"$:/language/Filters/RecentSystemTiddlers": {
"title": "$:/language/Filters/RecentSystemTiddlers",
"text": "Recently modified tiddlers, including system tiddlers"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Recently modified tiddlers"
},
"$:/language/Filters/AllTags": {
"title": "$:/language/Filters/AllTags",
"text": "All tags except system tags"
},
"$:/language/Filters/Missing": {
"title": "$:/language/Filters/Missing",
"text": "Missing tiddlers"
},
"$:/language/Filters/Drafts": {
"title": "$:/language/Filters/Drafts",
"text": "Draft tiddlers"
},
"$:/language/Filters/Orphans": {
"title": "$:/language/Filters/Orphans",
"text": "Orphan tiddlers"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "System tiddlers"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Shadow tiddlers"
},
"$:/language/Filters/OverriddenShadowTiddlers": {
"title": "$:/language/Filters/OverriddenShadowTiddlers",
"text": "Overridden shadow tiddlers"
},
"$:/language/Filters/SessionTiddlers": {
"title": "$:/language/Filters/SessionTiddlers",
"text": "Tiddlers modified since the wiki was loaded"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "System tags"
},
"$:/language/Filters/StoryList": {
"title": "$:/language/Filters/StoryList",
"text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Non wiki-text tiddlers"
},
"GettingStarted": {
"title": "GettingStarted",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
},
"$:/language/Help/build": {
"title": "$:/language/Help/build",
"description": "Automatically run configured commands",
"text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
},
"$:/language/Help/clearpassword": {
"title": "$:/language/Help/clearpassword",
"description": "Clear a password for subsequent crypto operations",
"text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
},
"$:/language/Help/default": {
"title": "$:/language/Help/default",
"text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
},
"$:/language/Help/deletetiddlers": {
"title": "$:/language/Help/deletetiddlers",
"description": "Deletes a group of tiddlers",
"text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"
},
"$:/language/Help/editions": {
"title": "$:/language/Help/editions",
"description": "Lists the available editions of TiddlyWiki",
"text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
},
"$:/language/Help/fetch": {
"title": "$:/language/Help/fetch",
"description": "Fetch tiddlers from wiki by URL",
"text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"
},
"$:/language/Help/help": {
"title": "$:/language/Help/help",
"description": "Display help for TiddlyWiki commands",
"text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
},
"$:/language/Help/import": {
"title": "$:/language/Help/import",
"description": "Import tiddlers from a file",
"text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"
},
"$:/language/Help/init": {
"title": "$:/language/Help/init",
"description": "Initialise a new wiki folder",
"text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
},
"$:/language/Help/listen": {
"title": "$:/language/Help/listen",
"description": "Provides an HTTP server interface to TiddlyWiki",
"text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
},
"$:/language/Help/load": {
"title": "$:/language/Help/load",
"description": "Load tiddlers from a file",
"text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
},
"$:/language/Help/makelibrary": {
"title": "$:/language/Help/makelibrary",
"description": "Construct library plugin required by upgrade process",
"text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
},
"$:/language/Help/notfound": {
"title": "$:/language/Help/notfound",
"text": "No such help item"
},
"$:/language/Help/output": {
"title": "$:/language/Help/output",
"description": "Set the base output directory for subsequent commands",
"text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
},
"$:/language/Help/password": {
"title": "$:/language/Help/password",
"description": "Set a password for subsequent crypto operations",
"text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
},
"$:/language/Help/render": {
"title": "$:/language/Help/render",
"description": "Renders individual tiddlers to files",
"text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/language/Help/rendertiddler",
"description": "Render an individual tiddler as a specified ContentType",
"text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/language/Help/rendertiddlers",
"description": "Render tiddlers matching a filter to a specified ContentType",
"text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers '<filter>' <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
},
"$:/language/Help/save": {
"title": "$:/language/Help/save",
"description": "Saves individual raw tiddlers to files",
"text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
},
"$:/language/Help/savetiddler": {
"title": "$:/language/Help/savetiddler",
"description": "Saves a raw tiddler to a file",
"text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
},
"$:/language/Help/savetiddlers": {
"title": "$:/language/Help/savetiddlers",
"description": "Saves a group of raw tiddlers to a directory",
"text": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
},
"$:/language/Help/savewikifolder": {
"title": "$:/language/Help/savewikifolder",
"description": "Saves a wiki to a new wiki folder",
"text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
},
"$:/language/Help/server": {
"title": "$:/language/Help/server",
"description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
"text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"
},
"$:/language/Help/setfield": {
"title": "$:/language/Help/setfield",
"description": "Prepares external tiddlers for use",
"text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
},
"$:/language/Help/unpackplugin": {
"title": "$:/language/Help/unpackplugin",
"description": "Unpack the payload tiddlers from a plugin",
"text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
},
"$:/language/Help/verbose": {
"title": "$:/language/Help/verbose",
"description": "Triggers verbose output mode",
"text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
},
"$:/language/Help/version": {
"title": "$:/language/Help/version",
"description": "Displays the version number of TiddlyWiki",
"text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
},
"$:/language/Import/Imported/Hint": {
"title": "$:/language/Import/Imported/Hint",
"text": "The following tiddlers were imported:"
},
"$:/language/Import/Listing/Cancel/Caption": {
"title": "$:/language/Import/Listing/Cancel/Caption",
"text": "Cancel"
},
"$:/language/Import/Listing/Hint": {
"title": "$:/language/Import/Listing/Hint",
"text": "These tiddlers are ready to import:"
},
"$:/language/Import/Listing/Import/Caption": {
"title": "$:/language/Import/Listing/Import/Caption",
"text": "Import"
},
"$:/language/Import/Listing/Select/Caption": {
"title": "$:/language/Import/Listing/Select/Caption",
"text": "Select"
},
"$:/language/Import/Listing/Status/Caption": {
"title": "$:/language/Import/Listing/Status/Caption",
"text": "Status"
},
"$:/language/Import/Listing/Title/Caption": {
"title": "$:/language/Import/Listing/Title/Caption",
"text": "Title"
},
"$:/language/Import/Listing/Preview": {
"title": "$:/language/Import/Listing/Preview",
"text": "Preview:"
},
"$:/language/Import/Listing/Preview/Text": {
"title": "$:/language/Import/Listing/Preview/Text",
"text": "Text"
},
"$:/language/Import/Listing/Preview/TextRaw": {
"title": "$:/language/Import/Listing/Preview/TextRaw",
"text": "Text (Raw)"
},
"$:/language/Import/Listing/Preview/Fields": {
"title": "$:/language/Import/Listing/Preview/Fields",
"text": "Fields"
},
"$:/language/Import/Listing/Preview/Diff": {
"title": "$:/language/Import/Listing/Preview/Diff",
"text": "Diff"
},
"$:/language/Import/Listing/Preview/DiffFields": {
"title": "$:/language/Import/Listing/Preview/DiffFields",
"text": "Diff (Fields)"
},
"$:/language/Import/Listing/Rename/Tooltip": {
"title": "$:/language/Import/Listing/Rename/Tooltip",
"text": "Rename tiddler before importing"
},
"$:/language/Import/Listing/Rename/Prompt": {
"title": "$:/language/Import/Listing/Rename/Prompt",
"text": "Rename to:"
},
"$:/language/Import/Listing/Rename/ConfirmRename": {
"title": "$:/language/Import/Listing/Rename/ConfirmRename",
"text": "Rename tiddler"
},
"$:/language/Import/Listing/Rename/CancelRename": {
"title": "$:/language/Import/Listing/Rename/CancelRename",
"text": "Cancel"
},
"$:/language/Import/Listing/Rename/OverwriteWarning": {
"title": "$:/language/Import/Listing/Rename/OverwriteWarning",
"text": "A tiddler with this title already exists."
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
"text": "Blocked incompatible or obsolete plugin."
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
"text": "Blocked plugin (due to incoming <<incoming>> not being newer than existing <<existing>>)."
},
"$:/language/Import/Upgrader/Plugins/Upgraded": {
"title": "$:/language/Import/Upgrader/Plugins/Upgraded",
"text": "Upgraded plugin from <<incoming>> to <<upgraded>>."
},
"$:/language/Import/Upgrader/State/Suppressed": {
"title": "$:/language/Import/Upgrader/State/Suppressed",
"text": "Blocked temporary state tiddler."
},
"$:/language/Import/Upgrader/System/Suppressed": {
"title": "$:/language/Import/Upgrader/System/Suppressed",
"text": "Blocked system tiddler."
},
"$:/language/Import/Upgrader/System/Warning": {
"title": "$:/language/Import/Upgrader/System/Warning",
"text": "Core module tiddler."
},
"$:/language/Import/Upgrader/System/Alert": {
"title": "$:/language/Import/Upgrader/System/Alert",
"text": "You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable."
},
"$:/language/Import/Upgrader/ThemeTweaks/Created": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Migrated theme tweak from <$text text=<<from>>/>."
},
"$:/language/AboveStory/ClassicPlugin/Warning": {
"title": "$:/language/AboveStory/ClassicPlugin/Warning",
"text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
},
"$:/language/BinaryWarning/Prompt": {
"title": "$:/language/BinaryWarning/Prompt",
"text": "This tiddler contains binary data"
},
"$:/language/ClassicWarning/Hint": {
"title": "$:/language/ClassicWarning/Hint",
"text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."
},
"$:/language/ClassicWarning/Upgrade/Caption": {
"title": "$:/language/ClassicWarning/Upgrade/Caption",
"text": "upgrade"
},
"$:/language/CloseAll/Button": {
"title": "$:/language/CloseAll/Button",
"text": "close all"
},
"$:/language/ColourPicker/Recent": {
"title": "$:/language/ColourPicker/Recent",
"text": "Recent:"
},
"$:/language/ConfirmCancelTiddler": {
"title": "$:/language/ConfirmCancelTiddler",
"text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmDeleteTiddler": {
"title": "$:/language/ConfirmDeleteTiddler",
"text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmOverwriteTiddler": {
"title": "$:/language/ConfirmOverwriteTiddler",
"text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmEditShadowTiddler": {
"title": "$:/language/ConfirmEditShadowTiddler",
"text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmAction": {
"title": "$:/language/ConfirmAction",
"text": "Do you wish to proceed?"
},
"$:/language/Count": {
"title": "$:/language/Count",
"text": "count"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "New Tiddler"
},
"$:/language/Diffs/CountMessage": {
"title": "$:/language/Diffs/CountMessage",
"text": "<<diff-count>> differences"
},
"$:/language/DropMessage": {
"title": "$:/language/DropMessage",
"text": "Drop here (or use the 'Escape' key to cancel)"
},
"$:/language/Encryption/Cancel": {
"title": "$:/language/Encryption/Cancel",
"text": "Cancel"
},
"$:/language/Encryption/ConfirmClearPassword": {
"title": "$:/language/Encryption/ConfirmClearPassword",
"text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
},
"$:/language/Encryption/PromptSetPassword": {
"title": "$:/language/Encryption/PromptSetPassword",
"text": "Set a new password for this TiddlyWiki"
},
"$:/language/Encryption/Username": {
"title": "$:/language/Encryption/Username",
"text": "Username"
},
"$:/language/Encryption/Password": {
"title": "$:/language/Encryption/Password",
"text": "Password"
},
"$:/language/Encryption/RepeatPassword": {
"title": "$:/language/Encryption/RepeatPassword",
"text": "Repeat password"
},
"$:/language/Encryption/PasswordNoMatch": {
"title": "$:/language/Encryption/PasswordNoMatch",
"text": "Passwords do not match"
},
"$:/language/Encryption/SetPassword": {
"title": "$:/language/Encryption/SetPassword",
"text": "Set password"
},
"$:/language/Error/Caption": {
"title": "$:/language/Error/Caption",
"text": "Error"
},
"$:/language/Error/EditConflict": {
"title": "$:/language/Error/EditConflict",
"text": "File changed on server"
},
"$:/language/Error/Filter": {
"title": "$:/language/Error/Filter",
"text": "Filter error"
},
"$:/language/Error/FilterSyntax": {
"title": "$:/language/Error/FilterSyntax",
"text": "Syntax error in filter expression"
},
"$:/language/Error/FilterRunPrefix": {
"title": "$:/language/Error/FilterRunPrefix",
"text": "Filter Error: Unknown prefix for filter run"
},
"$:/language/Error/IsFilterOperator": {
"title": "$:/language/Error/IsFilterOperator",
"text": "Filter Error: Unknown operand for the 'is' filter operator"
},
"$:/language/Error/FormatFilterOperator": {
"title": "$:/language/Error/FormatFilterOperator",
"text": "Filter Error: Unknown suffix for the 'format' filter operator"
},
"$:/language/Error/LoadingPluginLibrary": {
"title": "$:/language/Error/LoadingPluginLibrary",
"text": "Error loading plugin library"
},
"$:/language/Error/NetworkErrorAlert": {
"title": "$:/language/Error/NetworkErrorAlert",
"text": "`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
},
"$:/language/Error/RecursiveTransclusion": {
"title": "$:/language/Error/RecursiveTransclusion",
"text": "Recursive transclusion error in transclude widget"
},
"$:/language/Error/RetrievingSkinny": {
"title": "$:/language/Error/RetrievingSkinny",
"text": "Error retrieving skinny tiddler list"
},
"$:/language/Error/SavingToTWEdit": {
"title": "$:/language/Error/SavingToTWEdit",
"text": "Error saving to TWEdit"
},
"$:/language/Error/WhileSaving": {
"title": "$:/language/Error/WhileSaving",
"text": "Error while saving"
},
"$:/language/Error/XMLHttpRequest": {
"title": "$:/language/Error/XMLHttpRequest",
"text": "XMLHttpRequest error code"
},
"$:/language/InternalJavaScriptError/Title": {
"title": "$:/language/InternalJavaScriptError/Title",
"text": "Internal JavaScript Error"
},
"$:/language/InternalJavaScriptError/Hint": {
"title": "$:/language/InternalJavaScriptError/Hint",
"text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
},
"$:/language/InvalidFieldName": {
"title": "$:/language/InvalidFieldName",
"text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
},
"$:/language/LayoutSwitcher/Description": {
"title": "$:/language/LayoutSwitcher/Description",
"text": "Open the layout switcher"
},
"$:/language/LazyLoadingWarning": {
"title": "$:/language/LazyLoadingWarning",
"text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
},
"$:/language/LoginToTiddlySpace": {
"title": "$:/language/LoginToTiddlySpace",
"text": "Login to TiddlySpace"
},
"$:/language/Manager/Controls/FilterByTag/None": {
"title": "$:/language/Manager/Controls/FilterByTag/None",
"text": "(none)"
},
"$:/language/Manager/Controls/FilterByTag/Prompt": {
"title": "$:/language/Manager/Controls/FilterByTag/Prompt",
"text": "Filter by tag:"
},
"$:/language/Manager/Controls/Order/Prompt": {
"title": "$:/language/Manager/Controls/Order/Prompt",
"text": "Reverse order"
},
"$:/language/Manager/Controls/Search/Placeholder": {
"title": "$:/language/Manager/Controls/Search/Placeholder",
"text": "Search"
},
"$:/language/Manager/Controls/Search/Prompt": {
"title": "$:/language/Manager/Controls/Search/Prompt",
"text": "Search:"
},
"$:/language/Manager/Controls/Show/Option/Tags": {
"title": "$:/language/Manager/Controls/Show/Option/Tags",
"text": "tags"
},
"$:/language/Manager/Controls/Show/Option/Tiddlers": {
"title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
"text": "tiddlers"
},
"$:/language/Manager/Controls/Show/Prompt": {
"title": "$:/language/Manager/Controls/Show/Prompt",
"text": "Show:"
},
"$:/language/Manager/Controls/Sort/Prompt": {
"title": "$:/language/Manager/Controls/Sort/Prompt",
"text": "Sort by:"
},
"$:/language/Manager/Item/Colour": {
"title": "$:/language/Manager/Item/Colour",
"text": "Colour"
},
"$:/language/Manager/Item/Fields": {
"title": "$:/language/Manager/Item/Fields",
"text": "Fields"
},
"$:/language/Manager/Item/Icon/None": {
"title": "$:/language/Manager/Item/Icon/None",
"text": "(none)"
},
"$:/language/Manager/Item/Icon": {
"title": "$:/language/Manager/Item/Icon",
"text": "Icon"
},
"$:/language/Manager/Item/RawText": {
"title": "$:/language/Manager/Item/RawText",
"text": "Raw text"
},
"$:/language/Manager/Item/Tags": {
"title": "$:/language/Manager/Item/Tags",
"text": "Tags"
},
"$:/language/Manager/Item/Tools": {
"title": "$:/language/Manager/Item/Tools",
"text": "Tools"
},
"$:/language/Manager/Item/WikifiedText": {
"title": "$:/language/Manager/Item/WikifiedText",
"text": "Wikified text"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
},
"$:/language/No": {
"title": "$:/language/No",
"text": "No"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Official ~TiddlyWiki Plugin Library"
},
"$:/language/OfficialPluginLibrary/Hint": {
"title": "$:/language/OfficialPluginLibrary/Hint",
"text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
},
"$:/language/PageTemplate/Description": {
"title": "$:/language/PageTemplate/Description",
"text": "the default ~TiddlyWiki layout"
},
"$:/language/PageTemplate/Name": {
"title": "$:/language/PageTemplate/Name",
"text": "Default ~PageTemplate"
},
"$:/language/PluginReloadWarning": {
"title": "$:/language/PluginReloadWarning",
"text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"
},
"$:/language/RecentChanges/DateFormat": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DDth MMM YYYY"
},
"$:/language/Shortcuts/Input/AdvancedSearch/Hint": {
"title": "$:/language/Shortcuts/Input/AdvancedSearch/Hint",
"text": "Open the ~AdvancedSearch panel from within the sidebar search field"
},
"$:/language/Shortcuts/Input/Accept/Hint": {
"title": "$:/language/Shortcuts/Input/Accept/Hint",
"text": "Accept the selected item"
},
"$:/language/Shortcuts/Input/AcceptVariant/Hint": {
"title": "$:/language/Shortcuts/Input/AcceptVariant/Hint",
"text": "Accept the selected item (variant)"
},
"$:/language/Shortcuts/Input/Cancel/Hint": {
"title": "$:/language/Shortcuts/Input/Cancel/Hint",
"text": "Clear the input field"
},
"$:/language/Shortcuts/Input/Down/Hint": {
"title": "$:/language/Shortcuts/Input/Down/Hint",
"text": "Select the next item"
},
"$:/language/Shortcuts/Input/Tab-Left/Hint": {
"title": "$:/language/Shortcuts/Input/Tab-Left/Hint",
"text": "Select the previous Tab"
},
"$:/language/Shortcuts/Input/Tab-Right/Hint": {
"title": "$:/language/Shortcuts/Input/Tab-Right/Hint",
"text": "Select the next Tab"
},
"$:/language/Shortcuts/Input/Up/Hint": {
"title": "$:/language/Shortcuts/Input/Up/Hint",
"text": "Select the previous item"
},
"$:/language/Shortcuts/SidebarLayout/Hint": {
"title": "$:/language/Shortcuts/SidebarLayout/Hint",
"text": "Change the sidebar layout"
},
"$:/language/Switcher/Subtitle/theme": {
"title": "$:/language/Switcher/Subtitle/theme",
"text": "Switch Theme"
},
"$:/language/Switcher/Subtitle/layout": {
"title": "$:/language/Switcher/Subtitle/layout",
"text": "Switch Layout"
},
"$:/language/Switcher/Subtitle/language": {
"title": "$:/language/Switcher/Subtitle/language",
"text": "Switch Language"
},
"$:/language/Switcher/Subtitle/palette": {
"title": "$:/language/Switcher/Subtitle/palette",
"text": "Switch Palette"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "This is a system tiddler"
},
"$:/language/SystemTiddlers/Include/Prompt": {
"title": "$:/language/SystemTiddlers/Include/Prompt",
"text": "Include system tiddlers"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Colour"
},
"$:/language/TagManager/Count/Heading": {
"title": "$:/language/TagManager/Count/Heading",
"text": "Count"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Icon"
},
"$:/language/TagManager/Icons/None": {
"title": "$:/language/TagManager/Icons/None",
"text": "None"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Info"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Tag"
},
"$:/language/Tiddler/DateFormat": {
"title": "$:/language/Tiddler/DateFormat",
"text": "DDth MMM YYYY at hh12:0mmam"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "You have unsaved changes in TiddlyWiki"
},
"$:/language/Yes": {
"title": "$:/language/Yes",
"text": "Yes"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"subtitle": "Download changes",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/DownloadingChanges.html",
"text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
},
"$:/language/Modals/SaveInstructions": {
"title": "$:/language/Modals/SaveInstructions",
"subtitle": "Save your work",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/SavingChanges.html",
"text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
},
"$:/config/NewJournal/Title": {
"title": "$:/config/NewJournal/Title",
"text": "DDth MMM YYYY"
},
"$:/config/NewJournal/Text": {
"title": "$:/config/NewJournal/Text",
"text": ""
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"text": "Journal\n"
},
"$:/language/Notifications/Save/Done": {
"title": "$:/language/Notifications/Save/Done",
"text": "Saved wiki"
},
"$:/language/Notifications/Save/Starting": {
"title": "$:/language/Notifications/Save/Starting",
"text": "Starting to save wiki"
},
"$:/language/Notifications/CopiedToClipboard/Succeeded": {
"title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
"text": "Copied to clipboard!"
},
"$:/language/Notifications/CopiedToClipboard/Failed": {
"title": "$:/language/Notifications/CopiedToClipboard/Failed",
"text": "Failed to copy to clipboard!"
},
"$:/language/Search/DefaultResults/Caption": {
"title": "$:/language/Search/DefaultResults/Caption",
"text": "List"
},
"$:/language/Search/Filter/Caption": {
"title": "$:/language/Search/Filter/Caption",
"text": "Filter"
},
"$:/language/Search/Filter/Hint": {
"title": "$:/language/Search/Filter/Hint",
"text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
},
"$:/language/Search/Filter/Matches": {
"title": "$:/language/Search/Filter/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches": {
"title": "$:/language/Search/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches/All": {
"title": "$:/language/Search/Matches/All",
"text": "All matches:"
},
"$:/language/Search/Matches/Title": {
"title": "$:/language/Search/Matches/Title",
"text": "Title matches:"
},
"$:/language/Search/Search": {
"title": "$:/language/Search/Search",
"text": "Search"
},
"$:/language/Search/Search/TooShort": {
"title": "$:/language/Search/Search/TooShort",
"text": "Search text too short"
},
"$:/language/Search/Shadows/Caption": {
"title": "$:/language/Search/Shadows/Caption",
"text": "Shadows"
},
"$:/language/Search/Shadows/Hint": {
"title": "$:/language/Search/Shadows/Hint",
"text": "Search for shadow tiddlers"
},
"$:/language/Search/Shadows/Matches": {
"title": "$:/language/Search/Shadows/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Standard/Caption": {
"title": "$:/language/Search/Standard/Caption",
"text": "Standard"
},
"$:/language/Search/Standard/Hint": {
"title": "$:/language/Search/Standard/Hint",
"text": "Search for standard tiddlers"
},
"$:/language/Search/Standard/Matches": {
"title": "$:/language/Search/Standard/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/System/Caption": {
"title": "$:/language/Search/System/Caption",
"text": "System"
},
"$:/language/Search/System/Hint": {
"title": "$:/language/Search/System/Hint",
"text": "Search for system tiddlers"
},
"$:/language/Search/System/Matches": {
"title": "$:/language/Search/System/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/SideBar/All/Caption": {
"title": "$:/language/SideBar/All/Caption",
"text": "All"
},
"$:/language/SideBar/Contents/Caption": {
"title": "$:/language/SideBar/Contents/Caption",
"text": "Contents"
},
"$:/language/SideBar/Drafts/Caption": {
"title": "$:/language/SideBar/Drafts/Caption",
"text": "Drafts"
},
"$:/language/SideBar/Explorer/Caption": {
"title": "$:/language/SideBar/Explorer/Caption",
"text": "Explorer"
},
"$:/language/SideBar/Missing/Caption": {
"title": "$:/language/SideBar/Missing/Caption",
"text": "Missing"
},
"$:/language/SideBar/More/Caption": {
"title": "$:/language/SideBar/More/Caption",
"text": "More"
},
"$:/language/SideBar/Open/Caption": {
"title": "$:/language/SideBar/Open/Caption",
"text": "Open"
},
"$:/language/SideBar/Orphans/Caption": {
"title": "$:/language/SideBar/Orphans/Caption",
"text": "Orphans"
},
"$:/language/SideBar/Recent/Caption": {
"title": "$:/language/SideBar/Recent/Caption",
"text": "Recent"
},
"$:/language/SideBar/Shadows/Caption": {
"title": "$:/language/SideBar/Shadows/Caption",
"text": "Shadows"
},
"$:/language/SideBar/System/Caption": {
"title": "$:/language/SideBar/System/Caption",
"text": "System"
},
"$:/language/SideBar/Tags/Caption": {
"title": "$:/language/SideBar/Tags/Caption",
"text": "Tags"
},
"$:/language/SideBar/Tags/Untagged/Caption": {
"title": "$:/language/SideBar/Tags/Untagged/Caption",
"text": "untagged"
},
"$:/language/SideBar/Tools/Caption": {
"title": "$:/language/SideBar/Tools/Caption",
"text": "Tools"
},
"$:/language/SideBar/Types/Caption": {
"title": "$:/language/SideBar/Types/Caption",
"text": "Types"
},
"$:/SiteSubtitle": {
"title": "$:/SiteSubtitle",
"text": "a non-linear personal web notebook"
},
"$:/SiteTitle": {
"title": "$:/SiteTitle",
"text": "My ~TiddlyWiki"
},
"$:/language/Snippets/ListByTag": {
"title": "$:/language/Snippets/ListByTag",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "List of tiddlers by tag",
"text": "<<list-links \"[tag[task]sort[title]]\">>\n"
},
"$:/language/Snippets/MacroDefinition": {
"title": "$:/language/Snippets/MacroDefinition",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Macro definition",
"text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
},
"$:/language/Snippets/Table4x3": {
"title": "$:/language/Snippets/Table4x3",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table with 4 columns by 3 rows",
"text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
},
"$:/language/Snippets/TableOfContents": {
"title": "$:/language/Snippets/TableOfContents",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table of Contents",
"text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
},
"$:/language/ThemeTweaks/ThemeTweaks": {
"title": "$:/language/ThemeTweaks/ThemeTweaks",
"text": "Theme Tweaks"
},
"$:/language/ThemeTweaks/ThemeTweaks/Hint": {
"title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
"text": "You can tweak certain aspects of the ''Vanilla'' theme."
},
"$:/language/ThemeTweaks/Options": {
"title": "$:/language/ThemeTweaks/Options",
"text": "Options"
},
"$:/language/ThemeTweaks/Options/SidebarLayout": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout",
"text": "Sidebar layout"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
"text": "Fixed story, fluid sidebar"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
"text": "Fluid story, fixed sidebar"
},
"$:/language/ThemeTweaks/Options/StickyTitles": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles",
"text": "Sticky titles"
},
"$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
"text": "Causes tiddler titles to \"stick\" to the top of the browser window"
},
"$:/language/ThemeTweaks/Options/CodeWrapping": {
"title": "$:/language/ThemeTweaks/Options/CodeWrapping",
"text": "Wrap long lines in code blocks"
},
"$:/language/ThemeTweaks/Settings": {
"title": "$:/language/ThemeTweaks/Settings",
"text": "Settings"
},
"$:/language/ThemeTweaks/Settings/FontFamily": {
"title": "$:/language/ThemeTweaks/Settings/FontFamily",
"text": "Font family"
},
"$:/language/ThemeTweaks/Settings/CodeFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
"text": "Code font family"
},
"$:/language/ThemeTweaks/Settings/EditorFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
"text": "Editor font family"
},
"$:/language/ThemeTweaks/Settings/BackgroundImage": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
"text": "Page background image"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
"text": "Page background image attachment"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
"text": "Scroll with tiddlers"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
"text": "Fixed to window"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
"text": "Page background image size"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
"text": "Auto"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
"text": "Cover"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
"text": "Contain"
},
"$:/language/ThemeTweaks/Metrics": {
"title": "$:/language/ThemeTweaks/Metrics",
"text": "Sizes"
},
"$:/language/ThemeTweaks/Metrics/FontSize": {
"title": "$:/language/ThemeTweaks/Metrics/FontSize",
"text": "Font size"
},
"$:/language/ThemeTweaks/Metrics/LineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/LineHeight",
"text": "Line height"
},
"$:/language/ThemeTweaks/Metrics/BodyFontSize": {
"title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
"text": "Font size for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
"text": "Line height for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
"text": "Story left position"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
"text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryTop": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop",
"text": "Story top position"
},
"$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
"text": "how far the top margin of the story river<br>is from the top of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryRight": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight",
"text": "Story right"
},
"$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
"text": "how far the left margin of the sidebar <br>is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
"text": "Story width"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
"text": "the overall width of the story river"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
"text": "Tiddler width"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
"text": "within the story river"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
"text": "Sidebar breakpoint"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
"text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
"text": "Sidebar width"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
"text": "the width of the sidebar in fluid-fixed layout"
},
"$:/language/TiddlerInfo/Advanced/Caption": {
"title": "$:/language/TiddlerInfo/Advanced/Caption",
"text": "Advanced"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
"text": "none"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
"text": "Plugin Details"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
"text": "This plugin contains the following shadow tiddlers:"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
"text": "Shadow Status"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
"text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
"text": "It is overridden by an ordinary tiddler"
},
"$:/language/TiddlerInfo/Fields/Caption": {
"title": "$:/language/TiddlerInfo/Fields/Caption",
"text": "Fields"
},
"$:/language/TiddlerInfo/List/Caption": {
"title": "$:/language/TiddlerInfo/List/Caption",
"text": "List"
},
"$:/language/TiddlerInfo/List/Empty": {
"title": "$:/language/TiddlerInfo/List/Empty",
"text": "This tiddler does not have a list"
},
"$:/language/TiddlerInfo/Listed/Caption": {
"title": "$:/language/TiddlerInfo/Listed/Caption",
"text": "Listed"
},
"$:/language/TiddlerInfo/Listed/Empty": {
"title": "$:/language/TiddlerInfo/Listed/Empty",
"text": "This tiddler is not listed by any others"
},
"$:/language/TiddlerInfo/References/Caption": {
"title": "$:/language/TiddlerInfo/References/Caption",
"text": "Backlinks"
},
"$:/language/TiddlerInfo/References/Empty": {
"title": "$:/language/TiddlerInfo/References/Empty",
"text": "No tiddlers link to this one"
},
"$:/language/TiddlerInfo/Tagging/Caption": {
"title": "$:/language/TiddlerInfo/Tagging/Caption",
"text": "Tagging"
},
"$:/language/TiddlerInfo/Tagging/Empty": {
"title": "$:/language/TiddlerInfo/Tagging/Empty",
"text": "No tiddlers are tagged with this one"
},
"$:/language/TiddlerInfo/Tools/Caption": {
"title": "$:/language/TiddlerInfo/Tools/Caption",
"text": "Tools"
},
"$:/language/Docs/Types/application/javascript": {
"title": "$:/language/Docs/Types/application/javascript",
"description": "JavaScript code",
"name": "application/javascript",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "JSON data",
"name": "application/json",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/x-tiddler-dictionary": {
"title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
"description": "Data dictionary",
"name": "application/x-tiddler-dictionary",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/image/gif": {
"title": "$:/language/Docs/Types/image/gif",
"description": "GIF image",
"name": "image/gif",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "JPEG image",
"name": "image/jpeg",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "PNG image",
"name": "image/png",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/language/Docs/Types/image/svg+xml",
"description": "Structured Vector Graphics image",
"name": "image/svg+xml",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/x-icon": {
"title": "$:/language/Docs/Types/image/x-icon",
"description": "ICO format icon file",
"name": "image/x-icon",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/text/css": {
"title": "$:/language/Docs/Types/text/css",
"description": "Static stylesheet",
"name": "text/css",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "HTML markup",
"name": "text/html",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Plain text",
"name": "text/plain",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki 5",
"name": "text/vnd.tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/languages/en-GB/icon": {
"title": "$:/languages/en-GB/icon",
"type": "image/svg+xml",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
},
"$:/languages/en-GB": {
"title": "$:/languages/en-GB",
"name": "en-GB",
"description": "English (British)",
"author": "JeremyRuston",
"core-version": ">=5.0.0\"",
"text": "Stub pseudo-plugin for the default language"
},
"$:/core/modules/commander.js": {
"title": "$:/core/modules/commander.js",
"text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/commands/build.js": {
"title": "$:/core/modules/commands/build.js",
"text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/clearpassword.js": {
"title": "$:/core/modules/commands/clearpassword.js",
"text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/deletetiddlers.js": {
"title": "$:/core/modules/commands/deletetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/editions.js": {
"title": "$:/core/modules/commands/editions.js",
"text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\" \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/fetch.js": {
"title": "$:/core/modules/commands/fetch.js",
"text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = this.commander.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t \tdata = [];\n\t self.commander.write(\"Reading \" + url + \": \");\n\t response.on(\"data\",function(chunk) {\n\t data.push(chunk);\n\t self.commander.write(\".\");\n\t });\n\t response.on(\"end\",function() {\n\t self.commander.write(\"\\n\");\n\t if(response.statusCode === 200) {\n\t\t self.processBody(Buffer.concat(data),type,options,url);\n\t\t callback(null);\n\t } else {\n\t \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t \t} else {\n\t\t \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t \t\t\n\t \t}\n\t }\n\t \t});\n\t \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/help.js": {
"title": "$:/core/modules/commands/help.js",
"text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/import.js": {
"title": "$:/core/modules/commands/import.js",
"text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/init.js": {
"title": "$:/core/modules/commands/init.js",
"text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/listen.js": {
"title": "$:/core/modules/commands/listen.js",
"text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/load.js": {
"title": "$:/core/modules/commands/load.js",
"text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/makelibrary.js": {
"title": "$:/core/modules/commands/makelibrary.js",
"text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/output.js": {
"title": "$:/core/modules/commands/output.js",
"text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/password.js": {
"title": "$:/core/modules/commands/password.js",
"text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/render.js": {
"title": "$:/core/modules/commands/render.js",
"text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddler.js": {
"title": "$:/core/modules/commands/rendertiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddlers.js": {
"title": "$:/core/modules/commands/rendertiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/save.js": {
"title": "$:/core/modules/commands/save.js",
"text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savelibrarytiddlers.js": {
"title": "$:/core/modules/commands/savelibrarytiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <tiddler-filter> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe tiddler filter specifies the plugins to be included.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\tdoesRequireReload = !!self.commander.wiki.doesPluginInfoRequireReload(pluginTiddlers),\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddler.js": {
"title": "$:/core/modules/commands/savetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddlers.js": {
"title": "$:/core/modules/commands/savetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savewikifolder.js": {
"title": "$:/core/modules/commands/savewikifolder.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\n}\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type] || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/server.js": {
"title": "$:/core/modules/commands/server.js",
"text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/setfield.js": {
"title": "$:/core/modules/commands/setfield.js",
"text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/unpackplugin.js": {
"title": "$:/core/modules/commands/unpackplugin.js",
"text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/verbose.js": {
"title": "$:/core/modules/commands/verbose.js",
"text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n \" + $tw.boot.logMessages.join(\"\\n \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/version.js": {
"title": "$:/core/modules/commands/version.js",
"text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/config.js": {
"title": "$:/core/modules/config.js",
"text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter: \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
"type": "application/javascript",
"module-type": "config"
},
"$:/core/modules/deserializers.js": {
"title": "$:/core/modules/deserializers.js",
"text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlerdeserializer"
},
"$:/core/modules/editor/engines/framed.js": {
"title": "$:/core/modules/editor/engines/framed.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\t\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"},\n\t\t{name: \"focus\",handlerObject: this,handlerMethod: \"handleFocusEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nFramedEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a focus event\n*/\nFramedEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\t\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/engines/simple.js": {
"title": "$:/core/modules/editor/engines/simple.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nSimpleEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\n\t}\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/factory.js": {
"title": "$:/core/modules/editor/factory.js",
"text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\") === \"yes\";\n\t\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\t\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\t\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE] || changedAttributes.disabled) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if (changedTiddlers[this.editRefreshTitle]) {\n\t\t\tthis.engine.updateDomNodeText(this.getEditInfo().value);\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/operations/bitmap/clear.js": {
"title": "$:/core/modules/editor/operations/bitmap/clear.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/resize.js": {
"title": "$:/core/modules/editor/operations/bitmap/resize.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/rotate-left.js": {
"title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/text/excise.js": {
"title": "$:/core/modules/editor/operations/text/excise.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ? [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/make-link.js": {
"title": "$:/core/modules/editor/operations/text/make-link.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/prefix-lines.js": {
"title": "$:/core/modules/editor/operations/text/prefix-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline = prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-all.js": {
"title": "$:/core/modules/editor/operations/text/replace-all.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-selection.js": {
"title": "$:/core/modules/editor/operations/text/replace-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/save-selection.js": {
"title": "$:/core/modules/editor/operations/text/save-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-lines.js": {
"title": "$:/core/modules/editor/operations/text/wrap-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-selection.js": {
"title": "$:/core/modules/editor/operations/text/wrap-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/filterrunprefixes/all.js": {
"title": "$:/core/modules/filterrunprefixes/all.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/all.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nUnion of sets without de-duplication.\nEquivalent to = filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.all = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.push.apply(results, operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/and.js": {
"title": "$:/core/modules/filterrunprefixes/and.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/and.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nIntersection of sets.\nEquivalent to + filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.and = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\tsource = options.wiki.makeTiddlerIterator(results.toArray());\n\t\tresults.clear();\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/else.js": {
"title": "$:/core/modules/filterrunprefixes/else.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/else.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to ~ filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.else = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length === 0) {\n\t\t\t// Main result so far is empty\n\t\t\tresults.pushTop(operationSubFunction(source,widget));\n\t\t}\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/except.js": {
"title": "$:/core/modules/filterrunprefixes/except.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/except.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nDifference of sets.\nEquivalent to - filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.except = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.remove(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/filter.js": {
"title": "$:/core/modules/filterrunprefixes/filter.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/filter.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.filter = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar resultsToRemove = [];\n\t\t\tresults.each(function(result) {\n\t\t\t\tvar filtered = operationSubFunction(options.wiki.makeTiddlerIterator([result]),widget);\n\t\t\t\tif(filtered.length === 0) {\n\t\t\t\t\tresultsToRemove.push(result);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults.remove(resultsToRemove);\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/intersection.js": {
"title": "$:/core/modules/filterrunprefixes/intersection.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/intersection.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.intersection = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length !== 0) {\n\t\t\tvar secondRunResults = operationSubFunction(source,widget);\n\t\t\tvar firstRunResults = results.toArray();\n\t\t\tresults.clear();\n\t\t\t$tw.utils.each(firstRunResults,function(title) {\n\t\t\t\tif(secondRunResults.indexOf(title) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/or.js": {
"title": "$:/core/modules/filterrunprefixes/or.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/or.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to a filter run with no prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.or = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/reduce.js": {
"title": "$:/core/modules/filterrunprefixes/reduce.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/reduce.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.reduce = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar accumulator = \"\";\n\t\t\tvar index = 0;\n\t\t\tresults.each(function(title) {\n\t\t\t\tvar list = operationSubFunction(options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\t\t\treturn \"\" + (results.length - 1 - index);\n\t\t\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn widget.getVariable(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\tif(list.length > 0) {\n\t\t\t\t\taccumulator = \"\" + list[0];\n\t\t\t\t}\n\t\t\t\t++index;\n\t\t\t});\n\t\t\tresults.clear();\n\t\t\tresults.push(accumulator);\t\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filters/addprefix.js": {
"title": "$:/core/modules/filters/addprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/addsuffix.js": {
"title": "$:/core/modules/filters/addsuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/after.js": {
"title": "$:/core/modules/filters/after.js",
"text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/all/current.js": {
"title": "$:/core/modules/filters/all/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/missing.js": {
"title": "$:/core/modules/filters/all/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/orphans.js": {
"title": "$:/core/modules/filters/all/orphans.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/shadows.js": {
"title": "$:/core/modules/filters/all/shadows.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tags.js": {
"title": "$:/core/modules/filters/all/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tiddlers.js": {
"title": "$:/core/modules/filters/all/tiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all.js": {
"title": "$:/core/modules/filters/all.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/backlinks.js": {
"title": "$:/core/modules/filters/backlinks.js",
"text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/before.js": {
"title": "$:/core/modules/filters/before.js",
"text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/commands.js": {
"title": "$:/core/modules/filters/commands.js",
"text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/compare.js": {
"title": "$:/core/modules/filters/compare.js",
"text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = $tw.utils.makeCompareFunction(type,{defaultType: \"number\"}),\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/contains.js": {
"title": "$:/core/modules/filters/contains.js",
"text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/count.js": {
"title": "$:/core/modules/filters/count.js",
"text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/days.js": {
"title": "$:/core/modules/filters/days.js",
"text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/duplicateslugs.js": {
"title": "$:/core/modules/filters/duplicateslugs.js",
"text": "/*\\\ntitle: $:/core/modules/filters/duplicateslugs.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter function for [duplicateslugs[]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.duplicateslugs = function(source,operator,options) {\n\tvar slugs = Object.create(null), // Hashmap by slug of title, replaced with \"true\" if the duplicate title has already been output\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tvar slug = options.wiki.slugify(title);\n\t\tif(slug in slugs) {\n\t\t\tif(slugs[slug] !== true) {\n\t\t\t\tresults.push(slugs[slug]);\n\t\t\t\tslugs[slug] = true;\n\t\t\t}\n\t\t\tresults.push(title);\n\t\t} else {\n\t\t\tslugs[slug] = title;\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/each.js": {
"title": "$:/core/modules/filters/each.js",
"text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/eachday.js": {
"title": "$:/core/modules/filters/eachday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editiondescription.js": {
"title": "$:/core/modules/filters/editiondescription.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editions.js": {
"title": "$:/core/modules/filters/editions.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [];\n\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\t\tresults.push(name);\n\t\t\t});\n\t\t}\n\t\tresults.sort();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/else.js": {
"title": "$:/core/modules/filters/else.js",
"text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/decodeuricomponent.js": {
"title": "$:/core/modules/filters/decodeuricomponent.js",
"text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/enlist.js": {
"title": "$:/core/modules/filters/enlist.js",
"text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/field.js": {
"title": "$:/core/modules/filters/field.js",
"text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],indexedResults,\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/fields.js": {
"title": "$:/core/modules/filters/fields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/filter.js": {
"title": "$:/core/modules/filters/filter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/filter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning those input titles that pass a subfilter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.filter = function(source,operator,options) {\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\tresults = [],\n\t\ttarget = operator.prefix !== \"!\";\n\tsource(function(tiddler,title) {\n\t\tvar list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]));\n\t\tif((list.length > 0) === target) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/format/date.js": {
"title": "$:/core/modules/filters/format/date.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format/date.js\ntype: application/javascript\nmodule-type: formatfilteroperator\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.date = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.formatDateString(value,operand || \"YYYY MM DD 0hh:0mm\"));\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
"type": "application/javascript",
"module-type": "formatfilteroperator"
},
"$:/core/modules/filters/format/relativedate.js": {
"title": "$:/core/modules/filters/format/relativedate.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format/relativedate.js\ntype: application/javascript\nmodule-type: formatfilteroperator\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.relativedate = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.getRelativeDate((new Date()) - (new Date(value))).description);\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
"type": "application/javascript",
"module-type": "formatfilteroperator"
},
"$:/core/modules/filters/format.js": {
"title": "$:/core/modules/filters/format.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format.js\ntype: application/javascript\nmodule-type: filteroperator\nFilter operator for formatting strings\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar formatFilterOperators;\n\nfunction getFormatFilterOperators() {\n\tif(!formatFilterOperators) {\n\t\tformatFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"formatfilteroperator\",formatFilterOperators);\n\t}\n\treturn formatFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.format = function(source,operator,options) {\n\t// Dispatch to the correct formatfilteroperator\n\tvar formatFilterOperators = getFormatFilterOperators();\n\tif(operator.suffix) {\n\t\tvar formatFilterOperator = formatFilterOperators[operator.suffix];\n\t\tif(formatFilterOperator) {\n\t\t\treturn formatFilterOperator(source,operator.operand,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/FormatFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all unchanged if the suffix is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/get.js": {
"title": "$:/core/modules/filters/get.js",
"text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getindex.js": {
"title": "$:/core/modules/filters/getindex.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getvariable.js": {
"title": "$:/core/modules/filters/getvariable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/has.js": {
"title": "$:/core/modules/filters/has.js",
"text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field or index\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && (tiddler.fields[operator.operand].length !== 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/haschanged.js": {
"title": "$:/core/modules/filters/haschanged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/indexes.js": {
"title": "$:/core/modules/filters/indexes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/insertbefore.js": {
"title": "$:/core/modules/filters/insertbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/is/binary.js": {
"title": "$:/core/modules/filters/is/binary.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/blank.js": {
"title": "$:/core/modules/filters/is/blank.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/current.js": {
"title": "$:/core/modules/filters/is/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/draft.js": {
"title": "$:/core/modules/filters/is/draft.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/draft.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[draft]] analagous to [has[draft.of]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.draft = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,\"draft.of\")) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,\"draft.of\") && (tiddler.fields[\"draft.of\"].length !== 0)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\t\t\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/image.js": {
"title": "$:/core/modules/filters/is/image.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/missing.js": {
"title": "$:/core/modules/filters/is/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/orphan.js": {
"title": "$:/core/modules/filters/is/orphan.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/shadow.js": {
"title": "$:/core/modules/filters/is/shadow.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/system.js": {
"title": "$:/core/modules/filters/is/system.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tag.js": {
"title": "$:/core/modules/filters/is/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tiddler.js": {
"title": "$:/core/modules/filters/is/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/variable.js": {
"title": "$:/core/modules/filters/is/variable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is.js": {
"title": "$:/core/modules/filters/is.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/limit.js": {
"title": "$:/core/modules/filters/limit.js",
"text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/links.js": {
"title": "$:/core/modules/filters/links.js",
"text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/list.js": {
"title": "$:/core/modules/filters/list.js",
"text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listed.js": {
"title": "$:/core/modules/filters/listed.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listops.js": {
"title": "$:/core/modules/filters/listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/lookup.js": {
"title": "$:/core/modules/filters/lookup.js",
"text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || operator.suffix);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/match.js": {
"title": "$:/core/modules/filters/match.js",
"text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title === operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/math.js": {
"title": "$:/core/modules/filters/math.js",
"text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.power = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.pow(a,b);}\n);\n\nexports.log = makeNumericBinaryOperator(\n\tfunction(a,b) {\n\t\tif(b) {\n\t\t\treturn Math.log(a)/Math.log(b);\n\t\t} else {\n\t\t\treturn Math.log(a);\n\t\t}\n\t}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/minlength.js": {
"title": "$:/core/modules/filters/minlength.js",
"text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/modules.js": {
"title": "$:/core/modules/filters/modules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/moduletypes.js": {
"title": "$:/core/modules/filters/moduletypes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/next.js": {
"title": "$:/core/modules/filters/next.js",
"text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/plugintiddlers.js": {
"title": "$:/core/modules/filters/plugintiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/prefix.js": {
"title": "$:/core/modules/filters/prefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/previous.js": {
"title": "$:/core/modules/filters/previous.js",
"text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/range.js": {
"title": "$:/core/modules/filters/range.js",
"text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/reduce.js": {
"title": "$:/core/modules/filters/reduce.js",
"text": "/*\\\ntitle: $:/core/modules/filters/reduce.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator evaluates a subfilter for each item, making the running total available in the variable `accumulator`, and the current index available in the variable `index`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.reduce = function(source,operator,options) {\n\t// Accumulate the list\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Run the filter over each item\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\taccumulator = operator.operands[1] || \"\";\n\tfor(var index=0; index<results.length; index++) {\n\t\tvar title = results[index],\n\t\t\tlist = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\treturn \"\" + (results.length - 1 - index);\n\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\tif(list.length > 0) {\n\t\t\taccumulator = \"\" + list[0];\n\t\t}\n\t}\n\tif(results.length > 0) {\n\t\treturn [accumulator];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/regexp.js": {
"title": "$:/core/modules/filters/regexp.js",
"text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removeprefix.js": {
"title": "$:/core/modules/filters/removeprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removesuffix.js": {
"title": "$:/core/modules/filters/removesuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title && title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sameday.js": {
"title": "$:/core/modules/filters/sameday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/search.js": {
"title": "$:/core/modules/filters/search.js",
"text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/shadowsource.js": {
"title": "$:/core/modules/filters/shadowsource.js",
"text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/slugify.js": {
"title": "$:/core/modules/filters/slugify.js",
"text": "/*\\\ntitle: $:/core/modules/filters/slugify.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for slugifying a tiddler title\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.slugify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.slugify(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sort.js": {
"title": "$:/core/modules/filters/sort.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sortsub.js": {
"title": "$:/core/modules/filters/sortsub.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sortsub.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting by a subfilter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sortsub = function(source,operator,options) {\n\t// Compile the subfilter\n\tvar filterFn = options.wiki.compileFilter(operator.operand);\n\t// Collect the input titles and the corresponding sort keys\n\tvar inputTitles = [],\n\t\tsortKeys = [];\n\tsource(function(tiddler,title) {\n\t\tinputTitles.push(title);\n\t\tvar r = filterFn.call(options.wiki,function(iterator) {\n\t\t\titerator(options.wiki.getTiddler(title),title);\n\t\t},{\n\t\t\tgetVariable: function(name) {\n\t\t\t\tif(name === \"currentTiddler\") {\n\t\t\t\t\treturn title;\n\t\t\t\t} else {\n\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tsortKeys.push(r[0] || \"\");\n\t});\n\t// Rather than sorting the titles array, we'll sort the indexes so that we can consult both arrays\n\tvar indexes = new Array(inputTitles.length);\n\tfor(var t=0; t<inputTitles.length; t++) {\n\t\tindexes[t] = t;\n\t}\n\t// Sort the indexes\n\tvar compareFn = $tw.utils.makeCompareFunction(operator.suffix,{defaultType: \"string\",invert: operator.prefix === \"!\"});\n\tindexes = indexes.sort(function(a,b) {\n\t\treturn compareFn(sortKeys[a],sortKeys[b]);\n\t});\n\t// Make the results array in order\n\tvar results = [];\n\t$tw.utils.each(indexes,function(index) {\n\t\tresults.push(inputTitles[index]);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/splitbefore.js": {
"title": "$:/core/modules/filters/splitbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/storyviews.js": {
"title": "$:/core/modules/filters/storyviews.js",
"text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/strings.js": {
"title": "$:/core/modules/filters/strings.js",
"text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\toperand = (operator.operand || \"\"),\n\t\tfnCalc;\n\tif(suffix === \"prefix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimPrefix(a,b)];}\n\t} else if(suffix === \"suffix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix(a,b)];}\n\t} else {\n\t\tif(operand === \"\") {\n\t\t\tfnCalc = function(a) {return [$tw.utils.trim(a)];}\n\t\t} else {\n\t\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix($tw.utils.trimPrefix(a,b),b)];}\n\t\t}\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,fnCalc(title,operand));\n\t});\n\treturn result;\n};\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports[\"enlist-input\"] = makeStringBinaryOperator(\n\tfunction(a,o,s) {return $tw.utils.parseStringArray(\"\" + a,(s === \"raw\"));}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\",operator.suffix || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\tif(result.length === 0) {\n\t\t\treturn [];\n\t\t}\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\nexports[\"search-replace\"] = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = operator.suffixes || [],\n\t\tflagSuffix = (suffixes[0] ? (suffixes[0][0] || \"\") : \"\"),\n\t\tflags = (flagSuffix.indexOf(\"g\") !== -1 ? \"g\" : \"\") + (flagSuffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tisRegExp = (suffixes[1] && suffixes[1][0] === \"regexp\") ? true : false,\n\t\tsearchTerm,\n\t\tregExp;\n\t\n\tsource(function(tiddler,title) {\n\t\tif(title && (operator.operands.length > 1)) {\n\t\t\t//Escape regexp characters if the operand is not a regular expression\n\t\t\tsearchTerm = isRegExp ? operator.operand : $tw.utils.escapeRegExp(operator.operand);\n\t\t\ttry {\n\t\t\t\tregExp = new RegExp(searchTerm,flags);\n\t\t\t} catch(ex) {\n\t\t\t\treturn [\"RegExp error: \" + ex];\n\t\t\t}\n\t\t\tresults.push(\n\t\t\t\ttitle.replace(regExp,operator.operands[1])\n\t\t\t);\n\t\t} else {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.pad = function(source,operator,options) {\n\tvar results = [],\n\t\ttargetLength = operator.operand ? parseInt(operator.operand) : 0,\n\t\tfill = operator.operands[1] || \"0\";\n\n\tsource(function(tiddler,title) {\n\t\tif(title && title.length) {\n\t\t\tif(title.length >= targetLength) {\n\t\t\t\tresults.push(title);\n\t\t\t} else {\n\t\t\t\tvar padString = \"\",\n\t\t\t\t\tpadStringLength = targetLength - title.length;\n\t\t\t\twhile (padStringLength > padString.length) {\n\t\t\t\t\tpadString += fill;\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t//make sure we do not exceed the specified length\n\t\t\t\tpadString = padString.slice(0,padStringLength);\n\t\t\t\tif(operator.suffix && (operator.suffix === \"suffix\")) {\n\t\t\t\t\ttitle = title + padString;\n\t\t\t\t} else {\n\t\t\t\t\ttitle = padString + title;\n\t\t\t\t}\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subfilter.js": {
"title": "$:/core/modules/filters/subfilter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subtiddlerfields.js": {
"title": "$:/core/modules/filters/subtiddlerfields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/suffix.js": {
"title": "$:/core/modules/filters/suffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tag.js": {
"title": "$:/core/modules/filters/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tagging.js": {
"title": "$:/core/modules/filters/tagging.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tags.js": {
"title": "$:/core/modules/filters/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/then.js": {
"title": "$:/core/modules/filters/then.js",
"text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/title.js": {
"title": "$:/core/modules/filters/title.js",
"text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/untagged.js": {
"title": "$:/core/modules/filters/untagged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/variables.js": {
"title": "$:/core/modules/filters/variables.js",
"text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/wikiparserrules.js": {
"title": "$:/core/modules/filters/wikiparserrules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/x-listops.js": {
"title": "$:/core/modules/filters/x-listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n\t/*jslint node: true, browser: true */\n\t/*global $tw: false */\n\t\"use strict\";\n\n\t/*\n\tFetch titles from the current list\n\t*/\n\tvar prepare_results = function (source) {\n\tvar results = [];\n\t\tsource(function (tiddler, title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list before the item named in the operand\n\t*/\n\texports.putbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list after the item named in the operand\n\t*/\n\texports.putafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tReplaces the item named in the operand with a number of items from the tail of the current list\n\t*/\n\texports.replace = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -count) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list to the head of the list\n\t*/\n\texports.putfirst = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(-count).concat(results.slice(0, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the head of the current list to the tail of the list\n\t*/\n\texports.putlast = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(count).concat(results.slice(0, count));\n\t};\n\n\t/*\n\tMoves the item named in the operand a number of places forward or backward in the list\n\t*/\n\texports.move = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1),\n\t\t\tmarker = results.splice(index, 1),\n\t\t\toffset = (index + count) > 0 ? index + count : 0;\n\t\treturn results.slice(0, offset).concat(marker).concat(results.slice(offset));\n\t};\n\n\t/*\n\tReturns the items from the current list that are after the item named in the operand\n\t*/\n\texports.allafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(index) :\n\t\t\tresults.slice(index + 1);\n\t};\n\n\t/*\n\tReturns the items from the current list that are before the item named in the operand\n\t*/\n\texports.allbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(0, index + 1) :\n\t\t\tresults.slice(0, index);\n\t};\n\n\t/*\n\tAppends the items listed in the operand array to the tail of the current list\n\t*/\n\texports.append = function (source, operator) {\n\t\tvar append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || append.length;\n\t\treturn (append.length === 0) ? results :\n\t\t\t(operator.prefix) ? results.concat(append.slice(-count)) :\n\t\t\tresults.concat(append.slice(0, count));\n\t};\n\n\t/*\n\tPrepends the items listed in the operand array to the head of the current list\n\t*/\n\texports.prepend = function (source, operator) {\n\t\tvar prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,prepend.length);\n\t\treturn (prepend.length === 0) ? results :\n\t\t\t(operator.prefix) ? prepend.slice(-count).concat(results) :\n\t\t\tprepend.slice(0, count).concat(results);\n\t};\n\n\t/*\n\tReturns all items from the current list except the items listed in the operand array\n\t*/\n\texports.remove = function (source, operator) {\n\t\tvar array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || array.length,\n\t\t\tp,\n\t\t\tlen,\n\t\t\tindex;\n\t\tlen = array.length - 1;\n\t\tfor (p = 0; p < count; ++p) {\n\t\t\tif (operator.prefix) {\n\t\t\t\tindex = results.indexOf(array[len - p]);\n\t\t\t} else {\n\t\t\t\tindex = results.indexOf(array[p]);\n\t\t\t}\n\t\t\tif (index !== -1) {\n\t\t\t\tresults.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t};\n\n\t/*\n\tReturns all items from the current list sorted in the order of the items in the operand array\n\t*/\n\texports.sortby = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tif (!results || results.length < 2) {\n\t\t\treturn results;\n\t\t}\n\t\tvar lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n\t\tresults.sort(function (a, b) {\n\t\t\treturn lookup.indexOf(a) - lookup.indexOf(b);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tRemoves all duplicate items from the current list\n\t*/\n\texports.unique = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tvar set = results.reduce(function (a, b) {\n\t\t\tif (a.indexOf(b) < 0) {\n\t\t\t\ta.push(b);\n\t\t\t}\n\t\t\treturn a;\n\t\t}, []);\n\t\treturn set;\n\t};\n\n\tvar cycleValueInArray = function(results,operands,stepSize) {\n\t\tvar resultsIndex,\n\t\t\tstep = stepSize || 1,\n\t\t\ti = 0,\n\t\t\topLength = operands.length,\n\t\t\tnextOperandIndex;\t\t\n\t\tfor(i; i < opLength; i++) {\n\t\t\tresultsIndex = results.indexOf(operands[i]);\n\t\t\tif(resultsIndex !== -1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(resultsIndex !== -1) {\n\t\t\ti = i + step;\n\t\t\tnextOperandIndex = (i < opLength ? i : i - opLength);\n\t\t\tif(operands.length > 1) {\n\t\t\t\tresults.splice(resultsIndex,1,operands[nextOperandIndex]);\n\t\t\t} else {\n\t\t\t\tresults.splice(resultsIndex,1);\n\t\t\t}\n\t\t} else {\n\t\t\tresults.push(operands[0]);\n\t\t}\n\t\treturn results;\t\t\n\t}\n\n\t/*\n\tToggles an item in the current list.\n\t*/\t\n\texports.toggle = function(source,operator) {\n\t\treturn cycleValueInArray(prepare_results(source),operator.operands);\n\t}\n\n\texports.cycle = function(source,operator) {\n\t\tvar results = prepare_results(source),\n\t\t\toperands = (operator.operand.length ? $tw.utils.parseStringArray(operator.operand, \"true\") : [\"\"]),\n\t\t\tstep = $tw.utils.getInt(operator.operands[1]||\"\",1);\n\t\tif(step < 0) {\n\t\t\toperands.reverse();\n\t\t\tstep = Math.abs(step);\n\t\t}\t\n\t\treturn cycleValueInArray(results,operands,step);\n\t}\n\t\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters.js": {
"title": "$:/core/modules/filters.js",
"text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\t\toperator.operands = [];\n\t\tfunction parseOperand(bracketType) {\n\t\t\tvar operand = {};\n\t\t\tswitch (bracketType) {\n\t\t\t\tcase \"{\": // Curly brackets\n\t\t\t\t\toperand.indirect = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"[\": // Square brackets\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"<\": // Angle brackets\n\t\t\t\t\toperand.variable = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\": // regexp brackets\n\t\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\t\tif(rexMatch) {\n\t\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n\t// DEPRECATION WARNING\n\tconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(nextBracketPos === -1) {\n\t\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t\t}\n\t\t\tif(!operator.regexp) {\n\t\t\t\toperand.text = filterString.substring(p,nextBracketPos);\n\t\t\t\toperator.operands.push(operand);\n\t\t\t}\n\t\t\tp = nextBracketPos + 1;\n\t\t}\n\t\t\n\t\tp = nextBracketPos + 1;\n\t\tparseOperand(bracket);\n\t\t\n\t\t// Check for multiple operands\n\t\twhile(filterString.charAt(p) === \",\") {\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\tnextBracketPos = p;\n\t\t\t\tp++;\n\t\t\t\tparseOperand(filterString.charAt(nextBracketPos));\n\t\t\t} else {\n\t\t\t\tthrow \"Missing [ in filter expression\";\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=|\\:(\\w+))?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp = p + operation.prefix.length;\n\t\t\t\tif(match[2]) {\n\t\t\t\t\toperation.namedPrefix = match[2];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(match[3]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[4] || match[5] || match[6]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operands: [{text: match[4] || match[5] || match[6]}]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.getFilterRunPrefixes = function() {\n\tif(!this.filterRunPrefixes) {\n\t\t$tw.Wiki.prototype.filterRunPrefixes = {};\n\t\t$tw.modules.applyMethods(\"filterrunprefix\",this.filterRunPrefixes);\n\t}\n\treturn this.filterRunPrefixes;\n}\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operands = [],\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$tw.utils.each(operator.operands,function(operand) {\n\t\t\t\t\tif(operand.indirect) {\n\t\t\t\t\t\toperand.value = self.getTextReference(operand.text,\"\",currTiddlerTitle);\n\t\t\t\t\t} else if(operand.variable) {\n\t\t\t\t\t\toperand.value = widget.getVariable(operand.text,{defaultValue: \"\"});\n\t\t\t\t\t} else {\n\t\t\t\t\t\toperand.value = operand.text;\n\t\t\t\t\t}\n\t\t\t\t\toperands.push(operand.value);\n\t\t\t\t});\n\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operands.length > 0 ? operands[0] : undefined,\n\t\t\t\t\t\t\toperands: operands,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\tvar filterRunPrefixes = self.getFilterRunPrefixes();\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tvar options = {wiki: self};\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn filterRunPrefixes[\"or\"](operationSubFunction, options);\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn filterRunPrefixes[\"all\"](operationSubFunction, options);\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn filterRunPrefixes[\"except\"](operationSubFunction, options);\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn filterRunPrefixes[\"and\"](operationSubFunction, options);\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn filterRunPrefixes[\"else\"](operationSubFunction, options);\n\t\t\t\tdefault: \n\t\t\t\t\tif(operation.namedPrefix && filterRunPrefixes[operation.namedPrefix]) {\n\t\t\t\t\t\treturn filterRunPrefixes[operation.namedPrefix](operationSubFunction, options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t\tresults.clear();\n\t\t\t\t\t\t\tresults.push($tw.language.getString(\"Error/FilterRunPrefix\"));\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter: \" + filterString,function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = new $tw.utils.LinkedList();\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results.toArray();\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/indexers/backlinks-indexer.js": {
"title": "$:/core/modules/indexers/backlinks-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t oldLinks = [],\n\t self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/field-indexer.js": {
"title": "$:/core/modules/indexers/field-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/tag-indexer.js": {
"title": "$:/core/modules/indexers/tag-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/info/platform.js": {
"title": "$:/core/modules/info/platform.js",
"text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function(updateInfoTiddlersCallback) {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tinfoTiddlerFields.push({title: \"$:/info/startup-timestamp\", text: $tw.utils.stringifyDate(new Date())});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n \t\t// Dark mode through event listener on MediaQueryList\n \t\tvar mqList = window.matchMedia(\"(prefers-color-scheme: dark)\"),\n \t\t\tgetDarkModeTiddler = function() {return {title: \"$:/info/darkmode\", text: mqList.matches ? \"yes\" : \"no\"};};\n \t\tinfoTiddlerFields.push(getDarkModeTiddler());\n \t\tmqList.addListener(function(event) {\n \t\t\tupdateInfoTiddlersCallback([getDarkModeTiddler()]);\n \t\t});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "info"
},
"$:/core/modules/keyboard.js": {
"title": "$:/core/modules/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getEventModifierKeyDescriptor = function(event) {\n\treturn event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl\" : \n\t\tevent.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey ? \"shift\" : \n\t\tevent.ctrlKey && event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl-shift\" : \n\t\tevent.altKey && !event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt\" : \n\t\tevent.altKey && event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt-shift\" : \n\t\tevent.altKey && event.ctrlKey && !event.shiftKey && !event.metaKey ? \"ctrl-alt\" : \n\t\tevent.altKey && event.shiftKey && event.ctrlKey && !event.metaKey ? \"ctrl-alt-shift\" : \n\t\tevent.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta\" : \n\t\tevent.metaKey && event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta-ctrl\" :\n\t\tevent.metaKey && event.ctrlKey && event.shiftKey && !event.altKey ? \"meta-ctrl-shift\" :\n\t\tevent.metaKey && event.ctrlKey & event.shiftKey && event.altKey ? \"meta-ctrl-alt-shift\" : \"normal\";\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/language.js": {
"title": "$:/core/modules/language.js",
"text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/macros/changecount.js": {
"title": "$:/core/modules/macros/changecount.js",
"text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/contrastcolour.js": {
"title": "$:/core/modules/macros/contrastcolour.js",
"text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/csvtiddlers.js": {
"title": "$:/core/modules/macros/csvtiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/displayshortcuts.js": {
"title": "$:/core/modules/macros/displayshortcuts.js",
"text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddler.js": {
"title": "$:/core/modules/macros/jsontiddler.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddlers.js": {
"title": "$:/core/modules/macros/jsontiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/makedatauri.js": {
"title": "$:/core/modules/macros/makedatauri.js",
"text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"},\n\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/now.js": {
"title": "$:/core/modules/macros/now.js",
"text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/qualify.js": {
"title": "$:/core/modules/macros/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/resolvepath.js": {
"title": "$:/core/modules/macros/resolvepath.js",
"text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/unusedtitle.js": {
"title": "$:/core/modules/macros/unusedtitle.js",
"text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/version.js": {
"title": "$:/core/modules/macros/version.js",
"text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/parsers/audioparser.js": {
"title": "$:/core/modules/parsers/audioparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/binaryparser.js": {
"title": "$:/core/modules/parsers/binaryparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/csvparser.js": {
"title": "$:/core/modules/parsers/csvparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/htmlparser.js": {
"title": "$:/core/modules/parsers/htmlparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/imageparser.js": {
"title": "$:/core/modules/parsers/imageparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/utils/parseutils.js": {
"title": "$:/core/modules/utils/parseutils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/parsers/pdfparser.js": {
"title": "$:/core/modules/parsers/pdfparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/textparser.js": {
"title": "$:/core/modules/parsers/textparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/videoparser.js": {
"title": "$:/core/modules/parsers/videoparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/dash.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"–\" : \"—\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/entity.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: ©\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/extlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/heading.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/html.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/html.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/image.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/image.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/import.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/import.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/list.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/list.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"div\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/rules.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/syslink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/table.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/table.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/wikiparser.js": {
"title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t// Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar target;\n\tif(type === \"only\") {\n\t\ttarget = true;\n\t} else if(type === \"except\") {\n\t\ttarget = false;\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif((names.indexOf(ruleArray[t].rule.name) === -1) === target) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/pluginswitcher.js": {
"title": "$:/core/modules/pluginswitcher.js",
"text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/saver-handler.js": {
"title": "$:/core/modules/saver-handler.js",
"text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.preloadDirty = options.preloadDirty || [];\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\";\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && ($tw.config.disableAutoSave || this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\")) {\n\t\treturn false;\n\t}\n\tvar\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tvar self = this;\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\t$tw.utils.toggleClass(win.document.body,\"tc-dirty\",self.isDirty());\n\t\t});\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/savers/andtidwiki.js": {
"title": "$:/core/modules/savers/andtidwiki.js",
"text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/beaker.js": {
"title": "$:/core/modules/savers/beaker.js",
"text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/custom.js": {
"title": "$:/core/modules/savers/custom.js",
"text": "/*\\\ntitle: $:/core/modules/savers/custom.js\ntype: application/javascript\nmodule-type: saver\n\nLooks for `window.$tw.customSaver` first on the current window, then\non the parent window (of an iframe). If present, the saver must define\n\tsave: function(text,method,callback) { ... }\nand the saver may define\n\tpriority: number\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar findSaver = function(window) {\n\ttry {\n\t\treturn window && window.$tw && window.$tw.customSaver;\n\t} catch (err) {\n\t\t// Catching the exception is the most reliable way to detect cross-origin iframe errors.\n\t\t// For example, instead of saying that `window.parent.$tw` is undefined, Firefox will throw\n\t\t// Uncaught DOMException: Permission denied to access property \"$tw\" on cross-origin object\n\t\tconsole.log({ msg: \"custom saver is disabled\", reason: err });\n\t\treturn null;\n\t}\n}\nvar saver = findSaver(window) || findSaver(window.parent) || {};\n\nvar CustomSaver = function(wiki) {\n};\n\nCustomSaver.prototype.save = function(text,method,callback) {\n\treturn saver.save(text, method, callback);\n};\n\n/*\nInformation about this saver\n*/\nCustomSaver.prototype.info = {\n\tname: \"custom\",\n\tpriority: saver.priority || 4000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!(saver.save);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new CustomSaver(wiki);\n};\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/download.js": {
"title": "$:/core/modules/savers/download.js",
"text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/fsosaver.js": {
"title": "$:/core/modules/savers/fsosaver.js",
"text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitea.js": {
"title": "$:/core/modules/savers/gitea.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"token \" + password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GiteaSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/github.js": {
"title": "$:/core/modules/savers/github.js",
"text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"main\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password),\n\t\t\t\"If-None-Match\": \"\"\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitHubSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitlab.js": {
"title": "$:/core/modules/savers/gitlab.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitLabSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/hyperdrive.js": {
"title": "$:/core/modules/savers/hyperdrive.js",
"text": "/*\\\ntitle: $:/core/modules/savers/hyperdrive.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Hyperdrive Protocol (https://hypercore-protocol.org/#hyperdrive) Beaker browser beta-1.0 and later (https://beakerbrowser.com)\nCompatible with beaker >= V1.0.0\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar HyperdriveSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nHyperdriveSaver.prototype.save = function(text,method,callback) {\n\tvar dat = beaker.hyperdrive.drive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Hyperdrive Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Hyperdrive Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nHyperdriveSaver.prototype.info = {\n\tname: \"beaker-1.x\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.beaker && !!beaker.hyperdrive && location.protocol===\"hyper:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new HyperdriveSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/manualdownload.js": {
"title": "$:/core/modules/savers/manualdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/msdownload.js": {
"title": "$:/core/modules/savers/msdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/put.js": {
"title": "$:/core/modules/savers/put.js",
"text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyfox.js": {
"title": "$:/core/modules/savers/tiddlyfox.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyie.js": {
"title": "$:/core/modules/savers/tiddlyie.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/twedit.js": {
"title": "$:/core/modules/savers/twedit.js",
"text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/upload.js": {
"title": "$:/core/modules/savers/upload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/server/authenticators/basic.js": {
"title": "$:/core/modules/server/authenticators/basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve(this.server.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/authenticators/header.js": {
"title": "$:/core/modules/server/authenticators/header.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\") ? server.get(\"authenticated-user-header\").toLowerCase() : undefined;\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/routes/delete-tiddler.js": {
"title": "$:/core/modules/server/routes/delete-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-favicon.js": {
"title": "$:/core/modules/server/routes/get-favicon.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-file.js": {
"title": "$:/core/modules/server/routes/get-file.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve(state.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-index.js": {
"title": "$:/core/modules/server/routes/get-index.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-login-basic.js": {
"title": "$:/core/modules/server/routes/get-login-basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-status.js": {
"title": "$:/core/modules/server/routes/get-status.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler-html.js": {
"title": "$:/core/modules/server/routes/get-tiddler-html.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler.js": {
"title": "$:/core/modules/server/routes/get-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddlers-json.js": {
"title": "$:/core/modules/server/routes/get-tiddlers-json.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif(state.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif(state.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tif(state.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"no\") {\n\t\tfilter += \"+[!is[system]]\";\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/put-tiddler.js": {
"title": "$:/core/modules/server/routes/put-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/server.js": {
"title": "$:/core/modules/server/server.js",
"text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.boot = options.boot || $tw.boot;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(state.pathPrefix) {\n\t\t\tif(pathname.substr(0,state.pathPrefix.length) === state.pathPrefix) {\n\t\t\t\tpathname = pathname.substr(state.pathPrefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response,options) {\n\toptions = options || {};\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = options.wiki || self.wiki;\n\tstate.boot = options.boot || self.boot;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\tstate.pathPrefix = options.pathPrefix || this.get(\"path-prefix\") || \"\";\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!this.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !this.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/browser-messaging.js": {
"title": "$:/core/modules/browser-messaging.js",
"text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/commands.js": {
"title": "$:/core/modules/startup/commands.js",
"text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/CSSescape.js": {
"title": "$:/core/modules/startup/CSSescape.js",
"text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/favicon.js": {
"title": "$:/core/modules/startup/favicon.js",
"text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",$tw.utils.makeDataUri(tiddler.fields.text,tiddler.fields.type,tiddler.fields._canonical_uri));\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/info.js": {
"title": "$:/core/modules/startup/info.js",
"text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Function to bake the info plugin with new tiddlers\n\tvar updateInfoPlugin = function(tiddlerFieldsArray) {\n\t\t// Get the existing tiddlers\n\t\tvar json = $tw.wiki.getTiddlerData(TITLE_INFO_PLUGIN,{tiddlers: {}});\n\t\t// Add the new ones\n\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\tif(fields && fields.title) {\n\t\t\t\tjson.tiddlers[fields.title] = fields;\n\t\t\t}\n\t\t});\n\t\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\t\tvar fields = {\n\t\t\ttitle: TITLE_INFO_PLUGIN,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"info\",\n\t\t\ttext: JSON.stringify(json,null,$tw.config.preferences.jsonSpaces)\n\t\t};\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\n\t};\n\t// Collect up the info tiddlers\n\tvar tiddlerFieldsArray = [];\n\t// Give each info module a chance to provide as many info tiddlers as they want as an array, and give them a callback for dynamically updating them\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tArray.prototype.push.apply(tiddlerFieldsArray,moduleExports.getInfoTiddlerFields(updateInfoPlugin));\n\t\t}\n\t});\n\tupdateInfoPlugin(tiddlerFieldsArray);\n\tvar changes = $tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\",[TITLE_INFO_PLUGIN]);\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/load-modules.js": {
"title": "$:/core/modules/startup/load-modules.js",
"text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.wiki.addIndexersToWiki();\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/password.js": {
"title": "$:/core/modules/startup/password.js",
"text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/plugins.js": {
"title": "$:/core/modules/startup/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Work out which of the changed tiddlers are plugins that we need to reregister\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t// Issue warning if any of the tiddlers require a reload\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\tvar changedShadowTiddlers = {};\n\t\t\t\t// Collect the shadow tiddlers of any deleted plugins\n\t\t\t\t$tw.utils.each(changes.deletedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = true;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// Collect the shadow tiddlers of any modified plugins\n\t\t\t\t$tw.utils.each(changes.modifiedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t\t// Queue change events for the changed shadow tiddlers\n\t\t\t\t$tw.utils.each(Object.keys(changedShadowTiddlers),function(title) {\n\t\t\t\t\t$tw.wiki.enqueueTiddlerEvent(title,changedShadowTiddlers[title]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/render.js": {
"title": "$:/core/modules/startup/render.js",
"text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/RootTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget, recursionMarker: \"no\"});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !(tiddler.hasField(\"draft.of\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n\t// Run any post-render startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/PostRender\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/rootwidget.js": {
"title": "$:/core/modules/startup/rootwidget.js",
"text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-show-switcher\",function(event) {\n\t\t$tw.modal.display(\"$:/core/ui/SwitcherModal\",{variables: event.paramObject, event: event});\n\t});\t\n\t// Install the notification mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup.js": {
"title": "$:/core/modules/startup.js",
"text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Node\");\t\t\n\t}\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t}\n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/story.js": {
"title": "$:/core/modules/startup/story.js",
"text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// Update history\n\tvar story = new $tw.Story({\n\t\twiki: $tw.wiki,\n\t\tstoryTitle: DEFAULT_STORY_TITLE,\n\t\thistoryTitle: DEFAULT_HISTORY_TITLE\n\t});\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\tstory.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\tstory.addToHistory(storyList[0]);\n\t\t}\t\t\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/windows.js": {
"title": "$:/core/modules/startup/windows.js",
"text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\n$tw.windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\t$tw.windows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete $tw.windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t\tsrcWindow.document.documentElement.addEventListener(\"click\",$tw.popup,true);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/story.js": {
"title": "$:/core/modules/story.js",
"text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/storyviews/classic.js": {
"title": "$:/core/modules/storyviews/classic.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration()\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/pop.js": {
"title": "$:/core/modules/storyviews/pop.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement && targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/zoomin.js": {
"title": "$:/core/modules/storyviews/zoomin.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx = zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty = zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/syncer.js": {
"title": "$:/core/modules/syncer.js",
"text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.errorRetryInterval = 5 * 1000; // Interval to retry after an error\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\t\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function(event) {\n\t\t\tvar username = event && event.paramObject && event.paramObject.username,\n\t\t\t\tpassword = event && event.paramObject && event.paramObject.password;\n\t\t\tif(username && password) {\n\t\t\t\t// Login with username and password\n\t\t\t\tself.login(username,password,function() {});\n\t\t\t} else {\n\t\t\t\t// No username and password, so we display a prompt\n\t\t\t\tself.handleLoginEvent();\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && this.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\t\n\t} \n};\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tself.tiddlerInfo[title] = {\n\t\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t\t};\n\t\t}\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif(this.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t},\n\t\tsyncSystemFromServer = (self.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"yes\" ? true : false);\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.tiddlerExists(tiddlerFields.title) && self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null,\n\t\t\t\t\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!err && !isLoggedIn) {\n\t\t\tif(self.syncadaptor && self.syncadaptor.displayLoginPrompt) {\n\t\t\t\tself.syncadaptor.displayLoginPrompt(self);\n\t\t\t} else {\n\t\t\t\tself.displayLoginPrompt();\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nDispay a password prompt\n*/\nSyncer.prototype.displayLoginPrompt = function() {\n\tvar self = this;\n\tvar promptInfo = $tw.passwordPrompt.createPrompt({\n\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\tcallback: function(data) {\n\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\tself.syncFromServer();\n\t\t\t});\n\t\t\treturn true; // Get rid of the password prompt\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(err,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || this.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title); \t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.syncer.tiddlerInfo[self.title]\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\tif($tw.boot.files){\n\t\t\t// Remove the tiddler from $tw.boot.files\n\t\t\tdelete $tw.boot.files[self.title];\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/tiddler.js": {
"title": "$:/core/modules/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [],\n\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlermethod"
},
"$:/core/modules/upgraders/plugins.js": {
"title": "$:/core/modules/upgraders/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? (wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/system.js": {
"title": "$:/core/modules/upgraders/system.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/themetweaks.js": {
"title": "$:/core/modules/upgraders/themetweaks.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
"text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"utf8\",[],e):o.utf8=e.apply(o)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)if((e=r.charCodeAt(t))<128)o+=String.fromCharCode(e);else if(e>127&&e<2048)o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128);else if(e>55295&&e<57344&&r.length>t+1){var i=e,n=r.charCodeAt(t+1);t++;var d=65536+(i-55296<<10|n-56320);o+=String.fromCharCode(d>>18|240),o+=String.fromCharCode(d>>12&63|128),o+=String.fromCharCode(d>>6&63|128),o+=String.fromCharCode(63&d|128)}else o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128);return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)if((t=r.charCodeAt(o))<128)e+=String.fromCharCode(t),o++;else if(t>191&&t<224)e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2;else if(t>223&&t<240)e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3;else{var i=(7&t)<<18|(63&r.charCodeAt(o+1))<<12|(63&r.charCodeAt(o+2))<<6|63&r.charCodeAt(o+3);e+=String.fromCharCode(55296+(i-65536>>10))+String.fromCharCode(56320+(i-65536&1023)),o+=4}return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var i=0;i<t.length;i++)o[t[i]]=o.require(t[i]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,i,n,d,f,a,h,C=\"\",c=0;c<r.length;)d=(t=r.charCodeAt(c++))>>2,f=(3&t)<<4|(i=r.charCodeAt(c++))>>4,a=(15&i)<<2|(n=r.charCodeAt(c++))>>6,h=63&n,isNaN(i)?a=h=64:isNaN(n)&&(h=64),C+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return C},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,i,n,d,f,a,h=\"\",C=0;C<r.length;)t=o.indexOf(r.charAt(C++))<<2|(d=o.indexOf(r.charAt(C++)))>>4,i=(15&d)<<4|(f=o.indexOf(r.charAt(C++)))>>2,n=(3&f)<<6|(a=o.indexOf(r.charAt(C++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(i)),64!=a&&(h+=String.fromCharCode(n));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
"module-type": "library"
},
"$:/core/modules/utils/crypto.js": {
"title": "$:/core/modules/utils/crypto.js",
"text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/csv.js": {
"title": "$:/core/modules/utils/csv.js",
"text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
"text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&\").replace(d,\"<\").replace(e,\">\").replace(f,\"¶<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
"module-type": "library"
},
"$:/core/modules/utils/dom/animations/slide.js": {
"title": "$:/core/modules/utils/dom/animations/slide.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "animation"
},
"$:/core/modules/utils/dom/animator.js": {
"title": "$:/core/modules/utils/dom/animator.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/browser.js": {
"title": "$:/core/modules/utils/dom/browser.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/csscolorparser.js": {
"title": "$:/core/modules/utils/dom/csscolorparser.js",
"text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom.js": {
"title": "$:/core/modules/utils/dom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.hasAttribute && el.hasAttribute(\"class\") && el.getAttribute(\"class\").split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/dragndrop.js": {
"title": "$:/core/modules/utils/dom/dragndrop.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/http.js": {
"title": "$:/core/modules/utils/dom/http.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\thasHeader = function(targetHeader) {\n\t\t\ttargetHeader = targetHeader.toLowerCase();\n\t\t\tvar result = false;\n\t\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\t\tif(headerTitle.toLowerCase() === targetHeader) {\n\t\t\t\t\tresult = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !hasHeader(\"Content-Type\")) {\n\t\trequest.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!hasHeader(\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/keyboard.js": {
"title": "$:/core/modules/utils/dom/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/modal.js": {
"title": "$:/core/modules/utils/dom/modal.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\nvar navigator = require(\"$:/core/modules/widgets/navigator.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({\n\t\t\tcurrentTiddler: title,\n\t\t\t\"tv-story-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-story-list\") : \"\"),\n\t\t\t\"tv-history-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-history-list\") : \"\")\n\t\t},options.variables);\n\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\tvar navigatorTree = {\n\t\t\"type\": \"navigator\",\n\t\t\"attributes\": {\n\t\t\t\"story\": {\n\t\t\t\t\"name\": \"story\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-story-list\"]\n\t\t\t},\n\t\t\t\"history\": {\n\t\t\t\t\"name\": \"history\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-history-list\"]\n\t\t\t}\n\t\t},\n\t\t\"tag\": \"$navigator\",\n\t\t\"isBlock\": true,\n\t\t\"children\": []\n\t};\n\tvar navigatorWidgetNode = new navigator.navigator(navigatorTree, {\n\t\twiki: this.wiki,\n\t\tdocument : this.srcDocument,\n\t\tparentWidget: $tw.rootWidget\n\t});\n\tnavigatorWidgetNode.render(modalBody,null);\n\t\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/notifier.js": {
"title": "$:/core/modules/utils/dom/notifier.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/popup.js": {
"title": "$:/core/modules/utils/dom/popup.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n \t\t}\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/scroller.js": {
"title": "$:/core/modules/utils/dom/scroller.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\tif(event.paramObject && event.paramObject.selector) {\n\t\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t\t} else {\n\t\t\tthis.scrollIntoView(event.target);\t\t\t\n\t\t}\n\t\treturn false; // Event was handled\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nPageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/edition-info.js": {
"title": "$:/core/modules/utils/edition-info.js",
"text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/fakedom.js": {
"title": "$:/core/modules/utils/fakedom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_Node = function (){\n\tthrow TypeError(\"Illegal constructor\");\n};\n\nObject.defineProperty(TW_Node.prototype, 'ELEMENT_NODE', {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nObject.defineProperty(TW_Node.prototype, 'TEXT_NODE', {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nTW_TextNode.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.TEXT_NODE;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis._style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nTW_Element.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.ELEMENT_NODE;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this._style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this._style) {\n\t\t\t\tstyle.push($tw.utils.convertPropertyNameToStyleName(s) + \":\" + this._style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\");\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/filesystem.js": {
"title": "$:/core/modules/utils/filesystem.js",
"text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nReturn the subdirectories of a path\n*/\nexports.getSubdirectories = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn null;\n\t}\n\tvar subdirs = [];\n\t$tw.utils.each(fs.readdirSync(dirPath),function(item) {\n\t\tif($tw.utils.isDirectory(path.resolve(dirPath,item))) {\n\t\t\tsubdirs.push(item);\n\t\t}\n\t});\n\treturn subdirs;\n}\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = path.resolve($tw.utils.removeTrailingSeparator(srcPath));\n\tdstPath = path.resolve($tw.utils.removeTrailingSeparator(dstPath));\n\t// Check that neither director is within the other\n\tif(srcPath.substring(0,dstPath.length) === dstPath || dstPath.substring(0,srcPath.length) === srcPath) {\n\t\treturn \"Cannot copy nested directories\";\n\t}\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file on disk (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n\tisEditableFile: true if the tiddler was loaded via non-standard options & marked editable\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\textFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters,\n\tfileInfo: an existing fileInfo to check against\n\toriginalpath: a preferred filepath if no pathFilters match\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {}, metaExt;\n\t// Propagate the isEditableFile flag\n\tif(options.fileInfo) {\n\t\tfileInfo.isEditableFile = options.fileInfo.isEditableFile || false;\n\t}\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t\tif(options.extFilters) {\n\t\t\t// Check for extension override\n\t\t\tmetaExt = $tw.utils.generateTiddlerExtension(tiddler.fields.title,{\n\t\t\t\textFilters: options.extFilters,\n\t\t\t\twiki: options.wiki\n\t\t\t});\n\t\t\tif(metaExt){\n\t\t\t\tif(metaExt === \".tid\") {\n\t\t\t\t\t// Overriding to the .tid extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else if (metaExt === \".json\") {\n\t\t\t\t\t// Overriding to the .json extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/json\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else {\n\t\t\t\t\t//If the new type matches a known extention, use that MIME type's encoding\n\t\t\t\t\tvar extInfo = $tw.utils.getFileExtensionInfo(metaExt);\n\t\t\t\t\tfileInfo.type = extInfo ? extInfo.type : null;\n\t\t\t\t\tfileInfo.encoding = $tw.utils.getTypeEncoding(metaExt);\n\t\t\t\t\tfileInfo.hasMetaFile = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type or metaExt\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: metaExt || contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki,\n\t\tfileInfo: options.fileInfo,\n\t\toriginalpath: options.originalpath\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the file extension for saving a tiddler\nOptions include:\n\textFilters: optional array of filters to be used to generate the extention\n\twiki: optional wiki for evaluating the extFilters\n*/\nexports.generateTiddlerExtension = function(title,options) {\n\tvar self = this,\n\t\textension;\n\t// Check if any of the extFilters applies\n\tif(options.extFilters && options.wiki) { \n\t\t$tw.utils.each(options.extFilters,function(filter) {\n\t\t\tif(!extension) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\textension = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn extension;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n\tfileInfo: an existing fileInfo object to check against\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\toriginalpath = options.originalpath || \"\",\n\t\tfilepath;\t\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tif(!filepath && originalpath !== \"\") {\n\t\t//Use the originalpath without the extension\n\t\tvar ext = path.extname(originalpath);\n\t\tfilepath = originalpath.substring(0,originalpath.length - ext.length);\n\t} else if(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t//If the path does not start with \".\" or \"..\" and a path seperator, then\n\tif(!/^\\.{1,2}[/\\\\]/g.test(filepath)) {\n\t\t// Don't let the filename start with any dots because such files are invisible on *nix\n\t\tfilepath = filepath.replace(/^\\.+/g,\"_\");\n\t}\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|~|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath, oldPath = (options.fileInfo) ? options.fileInfo.filepath : undefined,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tif(oldPath && oldPath == fullPath) {\n\t\t\tbreak;\n\t\t}\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// If the last write failed with an error, or if path does not start with:\n\t//\tthe resolved options.directory, the resolved wikiPath directory, or the wikiTiddlersPath directory, \n\t//\tthen encodeURIComponent() and resolve to tiddler directory\n\tvar newPath = fullPath,\n\t\tencode = (options.fileInfo || {writeError: false}).writeError == true;\n\tif(!encode){\n\t\tencode = !(fullPath.indexOf(path.resolve(directory)) == 0 ||\n\t\t\tfullPath.indexOf(path.resolve($tw.boot.wikiPath)) == 0 ||\n\t\t\tfullPath.indexOf($tw.boot.wikiTiddlersPath) == 0);\n\t\t}\n\tif(encode){\n\t\tfullPath = path.resolve(directory, encodeURIComponent(fullPath));\n\t}\n\t// Call hook to allow plugins to modify the final path\n\tfullPath = $tw.hooks.invokeHook(\"th-make-tiddler-path\", newPath, fullPath);\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n/*\nDelete a file described by the fileInfo if it exits\n*/\nexports.deleteTiddlerFile = function(fileInfo, callback) {\n\t//Only attempt to delete files that exist on disk\n\tif(!fileInfo.filepath || !fs.existsSync(fileInfo.filepath)) {\n\t\treturn callback(null);\n\t}\n\t// Delete the file\n\tfs.unlink(fileInfo.filepath,function(err) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\t\n\t\t// Delete the metafile if present\n\t\tif(fileInfo.hasMetaFile && fs.existsSync(fileInfo.filepath + \".meta\")) {\n\t\t\tfs.unlink(fileInfo.filepath + \".meta\",function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t\t});\n\t\t} else {\n\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t}\n\t});\n};\n\n/*\nCleanup old files on disk, by comparing the options values:\n\tadaptorInfo from $tw.syncer.tiddlerInfo\n\tbootInfo from $tw.boot.files\n*/\nexports.cleanupTiddlerFiles = function(options, callback) {\n\tvar adaptorInfo = options.adaptorInfo || {},\n\tbootInfo = options.bootInfo || {},\n\ttitle = options.title || \"undefined\";\n\tif(adaptorInfo.filepath && bootInfo.filepath && adaptorInfo.filepath !== bootInfo.filepath) {\n\t\treturn $tw.utils.deleteTiddlerFile(adaptorInfo, function(err){\n\t\t\tif(err) {\n\t\t\t\tif ((err.code == \"EPERM\" || err.code == \"EACCES\") && err.syscall == \"unlink\") {\n\t\t\t\t\t// Error deleting the previous file on disk, should fail gracefully\n\t\t\t\t\t$tw.syncer.displayError(\"Server desynchronized. Error cleaning up previous file for tiddler: \"+title, err);\n\t\t\t\t\treturn callback(null);\n\t\t\t\t} else {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn callback(null);\n\t\t});\n\t} else {\n\t\treturn callback(null);\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/linkedlist.js": {
"title": "$:/core/modules/utils/linkedlist.js",
"text": "/*\\\nmodule-type: utils\ntitle: $:/core/modules/utils/linkedlist.js\ntype: application/javascript\n\nThis is a doubly-linked indexed list intended for manipulation, particularly\npushTop, which it does with significantly better performance than an array.\n\n\\*/\n(function(){\n\nfunction LinkedList() {\n\tthis.clear();\n};\n\nLinkedList.prototype.clear = function() {\n\tthis.index = Object.create(null);\n\t// LinkedList performs the duty of both the head and tail node\n\tthis.next = this;\n\tthis.prev = this;\n\tthis.length = 0;\n};\n\nLinkedList.prototype.remove = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t} else {\n\t\t_removeOne(this,value);\n\t}\n};\n\nLinkedList.prototype.push = function(/* values */) {\n\tfor(var i = 0; i < arguments.length; i++) {\n\t\tvar value = arguments[i];\n\t\tvar node = {value: value};\n\t\tvar preexistingNode = this.index[value];\n\t\t_linkToEnd(this,node);\n\t\tif(preexistingNode) {\n\t\t\t// We want to keep pointing to the first instance, but we want\n\t\t\t// to have that instance (or chain of instances) point to the\n\t\t\t// new one.\n\t\t\twhile (preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\tpreexistingNode.copy = node;\n\t\t} else {\n\t\t\tthis.index[value] = node;\n\t\t}\n\t}\n};\n\nLinkedList.prototype.pushTop = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t\tthis.push.apply(this,value);\n\t} else {\n\t\tvar node = _removeOne(this,value);\n\t\tif(!node) {\n\t\t\tnode = {value: value};\n\t\t\tthis.index[value] = node;\n\t\t} else {\n\t\t\t// Put this node at the end of the copy chain.\n\t\t\tvar preexistingNode = node;\n\t\t\twhile(preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\t// The order of these three statements is important,\n\t\t\t// because sometimes preexistingNode == node.\n\t\t\tpreexistingNode.copy = node;\n\t\t\tthis.index[value] = node.copy;\n\t\t\tnode.copy = undefined;\n\t\t}\n\t\t_linkToEnd(this,node);\n\t}\n};\n\nLinkedList.prototype.each = function(callback) {\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\tcallback(ptr.value);\n\t}\n};\n\nLinkedList.prototype.toArray = function() {\n\tvar output = [];\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\toutput.push(ptr.value);\n\t}\n\treturn output;\n};\n\nfunction _removeOne(list,value) {\n\tvar node = list.index[value];\n\tif(node) {\n\t\tnode.prev.next = node.next;\n\t\tnode.next.prev = node.prev;\n\t\tlist.length -= 1;\n\t\t// Point index to the next instance of the same value, maybe nothing.\n\t\tlist.index[value] = node.copy;\n\t}\n\treturn node;\n};\n\nfunction _linkToEnd(list,node) {\n\t// Sticks the given node onto the end of the list.\n\tlist.prev.next = node;\n\tnode.prev = list.prev;\n\tlist.prev = node;\n\tnode.next = list;\n\tlist.length += 1;\n};\n\nexports.LinkedList = LinkedList;\n\n})();\n",
"module-type": "utils",
"type": "application/javascript"
},
"$:/core/modules/utils/logger.js": {
"title": "$:/core/modules/utils/logger.js",
"text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/parsetree.js": {
"title": "$:/core/modules/utils/parsetree.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/performance.js": {
"title": "$:/core/modules/utils/performance.js",
"text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\n};\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\n\t\t\t\treturn + 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/pluginmaker.js": {
"title": "$:/core/modules/utils/pluginmaker.js",
"text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/transliterate.js": {
"title": "$:/core/modules/utils/transliterate.js",
"text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/utils.js": {
"title": "$:/core/modules/utils/utils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nLog a table of name: value pairs\n*/\nexports.logTable = function(data) {\n\tif(console.table) {\n\t\tconsole.table(data);\n\t} else {\n\t\t$tw.utils.each(data,function(value,name) {\n\t\t\tconsole.log(name + \": \" + value);\n\t\t});\n\t}\n}\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimPrefix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/^\\s\\s*/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('^(' + unwanted + ')+');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimSuffix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/\\s\\s*$/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('(' + unwanted + ')+$');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date),4);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear(),4);\n\t\t\t}],\n\t\t\t[/^aYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(Math.abs(date.getFullYear()),4);\n\t\t\t}],\n\t\t\t[/^\\{era:([^,\\|}]*)\\|([^}\\|]*)\\|([^}]*)\\}/, function(match) {\n\t\t\t\tvar year = date.getFullYear();\n\t\t\t\treturn year === 0 ? match[2] : (year < 0 ? match[1] : match[3]);\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call(null,match);\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\", duration: 365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\", duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\", duration: 24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\", duration: 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration: 60 * 1000},\n\t\t{name: \"Seconds\", duration: 1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&\", < to \"<\", > to \">\", \" to \""\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&\").replace(/</mg,\"<\").replace(/>/mg,\">\").replace(/\\\"/mg,\""\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s, rawUnicode) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/'/g, \"\\\\'\") // single quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(regex, exports.escape); // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s, rawUnicode) {\n\t// See http://www.json.org/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/\\x08/g, '\\\\b') // backspace\n\t\t.replace(/\\x0c/g, '\\\\f') // formfeed\n\t\t.replace(/\\t/g, '\\\\t') // tab\n\t\t.replace(regex,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10) || 0;\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm = r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type,_canonical_uri) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\nexports.makeCompareFunction = function(type,options) {\n\toptions = options || {};\n\tvar gt = options.invert ? -1 : +1,\n\t\tlt = options.invert ? +1 : -1,\n\t\tcompare = function(a,b) {\n\t\t\tif(a > b) {\n\t\t\t\treturn gt ;\n\t\t\t} else if(a < b) {\n\t\t\t\treturn lt;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\ttypes = {\n\t\t\t\"number\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t\t\t},\n\t\t\t\"integer\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t\t\t},\n\t\t\t\"string\": function(a,b) {\n\t\t\t\treturn compare(\"\" + a,\"\" +b);\n\t\t\t},\n\t\t\t\"date\": function(a,b) {\n\t\t\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\t\t\tdateB = $tw.utils.parseDate(b);\n\t\t\t\tif(!isFinite(dateA)) {\n\t\t\t\t\tdateA = new Date(0);\n\t\t\t\t}\n\t\t\t\tif(!isFinite(dateB)) {\n\t\t\t\t\tdateB = new Date(0);\n\t\t\t\t}\n\t\t\t\treturn compare(dateA,dateB);\n\t\t\t},\n\t\t\t\"version\": function(a,b) {\n\t\t\t\treturn $tw.utils.compareVersions(a,b);\n\t\t\t}\n\t\t};\n\treturn (types[type] || types[options.defaultType] || types.number);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/widgets/action-confirm.js": {
"title": "$:/core/modules/widgets/action-confirm.js",
"text": "/*\\\n\ntitle: $:/core/modules/widgets/action-confirm.js\ntype: application/javascript\nmodule-type: widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ConfirmWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nConfirmWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nConfirmWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.parentDomNode = parent;\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nConfirmWidget.prototype.execute = function() {\n\tthis.message = this.getAttribute(\"$message\",$tw.language.getString(\"ConfirmAction\"));\n\tthis.prompt = (this.getAttribute(\"$prompt\",\"yes\") == \"no\" ? false : true);\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nConfirmWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$message\"] || changedAttributes[\"$prompt\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nConfirmWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar invokeActions = true,\n\t\thandled = true;\n\tif(this.prompt) {\n\t\tinvokeActions = confirm(this.message);\n\t}\n\tif(invokeActions) {\n\t\thandled = this.invokeActions(triggeringWidget,event);\n\t}\n\treturn handled;\n};\n\nConfirmWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nexports[\"action-confirm\"] = ConfirmWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-createtiddler.js": {
"title": "$:/core/modules/widgets/action-createtiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletefield.js": {
"title": "$:/core/modules/widgets/action-deletefield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletetiddler.js": {
"title": "$:/core/modules/widgets/action-deletetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-listops.js": {
"title": "$:/core/modules/widgets/action-listops.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-log.js": {
"title": "$:/core/modules/widgets/action-log.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-log.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LogWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLogWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLogWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\nLogWidget.prototype.execute = function(){\n\tthis.message = this.getAttribute(\"$$message\",\"debug\");\n\tthis.logAll = this.getAttribute(\"$$all\",\"no\") === \"yes\" ? true : false;\n\tthis.filter = this.getAttribute(\"$$filter\");\n}\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nLogWidget.prototype.refresh = function(changedTiddlers) {\n\tthis.refreshSelf();\n\treturn true;\n};\n\n/*\nInvoke the action associated with this widget\n*/\nLogWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tthis.log();\n\treturn true; // Action was invoked\n};\n\nLogWidget.prototype.log = function() {\n\tvar data = {},\n\t\tdataCount,\n\t\tallVars = {},\n\t\tfilteredVars;\n\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.substring(0,2) !== \"$$\") {\n\t\t\tdata[name] = attribute;\n\t\t}\t\t\n\t});\n\n\tfor(var v in this.variables) {\n\t\tallVars[v] = this.getVariable(v,{defaultValue:\"\"});\n\t}\t\n\tif(this.filter) {\n\t\tfilteredVars = this.wiki.compileFilter(this.filter).call(this.wiki,this.wiki.makeTiddlerIterator(allVars));\n\t\t$tw.utils.each(filteredVars,function(name) {\n\t\t\tdata[name] = allVars[name];\n\t\t});\t\t\n\t}\n\tdataCount = $tw.utils.count(data);\n\n\tconsole.group(this.message);\n\tif(dataCount > 0) {\n\t\t$tw.utils.logTable(data);\n\t}\n\tif(this.logAll || !dataCount) {\n\t\tconsole.groupCollapsed(\"All variables\");\n\t\t$tw.utils.logTable(allVars);\n\t\tconsole.groupEnd();\n\t}\n\tconsole.groupEnd();\n}\n\nexports[\"action-log\"] = LogWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-navigate.js": {
"title": "$:/core/modules/widgets/action-navigate.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-popup.js": {
"title": "$:/core/modules/widgets/action-popup.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords || \"\");\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t} else {\n\t\t$tw.popup.cancel(0);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-sendmessage.js": {
"title": "$:/core/modules/widgets/action-sendmessage.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-setfield.js": {
"title": "$:/core/modules/widgets/action-setfield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\") || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/browse.js": {
"title": "$:/core/modules/widgets/browse.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\tif(this.accept) {\n\t\tdomNode.setAttribute(\"accept\",this.accept);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.accept = this.getAttribute(\"accept\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/button.js": {
"title": "$:/core/modules/widgets/button.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = \"button\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tdomNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tself.invokeActionString(self.actions,self,event,{modifier: modifierKey});\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nButtonWidget.prototype.updateDomNodeClasses = function() {\n\tvar domNodeClasses = this.domNode.className.split(\" \"),\n\t\toldClasses = this.class.split(\" \"),\n\t\tnewClasses;\t\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tnewClasses = this.class.split(\" \");\n\t//Remove classes assigned from the old value of class attribute\n\t$tw.utils.each(oldClasses,function(oldClass){\n\t\tvar i = domNodeClasses.indexOf(oldClass);\n\t\tif(i !== -1) {\n\t\t\tdomNodeClasses.splice(i,1);\n\t\t}\n\t});\n\t//Add new classes from updated class attribute.\n\t$tw.utils.pushTop(domNodeClasses,newClasses);\n\tthis.domNode.className = domNodeClasses.join(\" \");\n}\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.updateDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/checkbox.js": {
"title": "$:/core/modules/widgets/checkbox.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/codeblock.js": {
"title": "$:/core/modules/widgets/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/count.js": {
"title": "$:/core/modules/widgets/count.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = \"0\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/diff-text.js": {
"title": "$:/core/modules/widgets/diff-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/draggable.js": {
"title": "$:/core/modules/widgets/draggable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/droppable.js": {
"title": "$:/core/modules/widgets/droppable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = this.parseTreeNode.isBlock ? \"div\" : \"span\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t} else {\n\t\t$tw.utils.addClass(this.domNode,this.disabledClass);\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\tif(this.domNodes[0]) {\n\t\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t\t}\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.disabledClass = this.getAttribute(\"disabledClass\",\"\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nDroppableWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/dropzone.js": {
"title": "$:/core/modules/widgets/dropzone.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\n\t}\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields]), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.autoOpenOnImport = this.getAttribute(\"autoOpenOnImport\");\n\tthis.importTitle = this.getAttribute(\"importTitle\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable || changedAttributes.autoOpenOnImport || changedAttributes.importTitle || changedAttributes.deserializer || changedAttributes.class) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-binary.js": {
"title": "$:/core/modules/widgets/edit-binary.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-bitmap.js": {
"title": "$:/core/modules/widgets/edit-bitmap.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-shortcut.js": {
"title": "$:/core/modules/widgets/edit-shortcut.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-text.js": {
"title": "$:/core/modules/widgets/edit-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit.js": {
"title": "$:/core/modules/widgets/edit.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\");\n\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: this.parseTreeNode.attributes,\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/element.js": {
"title": "$:/core/modules/widgets/element.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\t// Neuter blacklisted elements\n\tthis.tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(this.tag) !== -1) {\n\t\tthis.tag = \"safe-\" + this.tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(this.tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\tthis.tag = \"h\" + headingLevel;\n\t}\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Invoke the th-rendering-element hook\n\tvar parseTreeNodes = $tw.hooks.invokeHook(\"th-rendering-element\",null,this);\n\tthis.isReplaced = !!parseTreeNodes;\n\tif(parseTreeNodes) {\n\t\t// Use the parse tree nodes provided by the hook\n\t\tthis.makeChildWidgets(parseTreeNodes);\n\t\tthis.renderChildren(this.parentDomNode,null);\n\t\treturn;\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n\t// Create the DOM node and render children\n\tvar domNode = this.document.createElementNS(this.namespace,this.tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\tif(!this.isReplaced) {\n\t\t\t// Update our attributes\n\t\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\t\t\t\n\t\t} else {\n\t\t\t// If we were replaced then completely refresh ourselves\n\t\t\treturn this.refreshSelf();\n\t\t}\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/encrypt.js": {
"title": "$:/core/modules/widgets/encrypt.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/entity.js": {
"title": "$:/core/modules/widgets/entity.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/eventcatcher.js": {
"title": "$:/core/modules/widgets/eventcatcher.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/eventcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nEvent handler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EventWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEventWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEventWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.elementTag && $tw.config.htmlUnsafeElements.indexOf(this.elementTag) === -1) {\n\t\ttag = this.elementTag;\n\t}\t\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tthis.assignDomNodeClasses();\t\n\t// Add our event handler\n\t$tw.utils.each(this.types,function(type) {\n\t\tdomNode.addEventListener(type,function(event) {\n\t\t\tvar selector = self.getAttribute(\"selector\"),\n\t\t\t\tactions = self.getAttribute(\"actions-\"+type),\n\t\t\t\tselectedNode = event.target,\n\t\t\t\tselectedNodeRect,\n\t\t\t\tcatcherNodeRect,\n\t\t\t\tvariables = {};\n\t\t\tif(selector) {\n\t\t\t\t// Search ancestors for a node that matches the selector\n\t\t\t\twhile(!selectedNode.matches(selector) && selectedNode !== domNode) {\n\t\t\t\t\tselectedNode = selectedNode.parentNode;\n\t\t\t\t}\n\t\t\t\t// If we found one, copy the attributes as variables, otherwise exit\n\t\t\t\tif(selectedNode.matches(selector)) {\n\t\t\t\t\t$tw.utils.each(selectedNode.attributes,function(attribute) {\n\t\t\t\t\t\tvariables[\"dom-\" + attribute.name] = attribute.value.toString();\n\t\t\t\t\t});\n\t\t\t\t\t//Add a variable with a popup coordinate string for the selected node\n\t\t\t\t\tvariables[\"tv-popup-coords\"] = \"(\" + selectedNode.offsetLeft + \",\" + selectedNode.offsetTop +\",\" + selectedNode.offsetWidth + \",\" + selectedNode.offsetHeight + \")\";\n\t\t\t\t\t\n\t\t\t\t\t//Add variables for offset of selected node\n\t\t\t\t\tvariables[\"tv-selectednode-posx\"] = selectedNode.offsetLeft.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-posy\"] = selectedNode.offsetTop.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-width\"] = selectedNode.offsetWidth.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-height\"] = selectedNode.offsetHeight.toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to selected node\n\t\t\t\t\tselectedNodeRect = selectedNode.getBoundingClientRect();\t\t\t\t\n\t\t\t\t\tvariables[\"event-fromselected-posx\"] = (event.clientX - selectedNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromselected-posy\"] = (event.clientY - selectedNodeRect.top).toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to event catcher node\n\t\t\t\t\tcatcherNodeRect = self.domNode.getBoundingClientRect();\n\t\t\t\t\tvariables[\"event-fromcatcher-posx\"] = (event.clientX - catcherNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromcatcher-posy\"] = (event.clientY - catcherNodeRect.top).toString();\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Execute our actions with the variables\n\t\t\tif(actions) {\n\t\t\t\t// Add a variable for the modifier key\n\t\t\t\tvariables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\t\t// Add a variable for the mouse button\n\t\t\t\tif(\"button\" in event) {\n\t\t\t\t\tif(event.button === 0) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"left\";\n\t\t\t\t\t} else if(event.button === 1) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"middle\";\n\t\t\t\t\t} else if(event.button === 2) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"right\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvariables[\"event-type\"] = event.type.toString();\n\t\t\t\tif(typeof event.detail === \"object\" && !!event.detail) {\n\t\t\t\t\t$tw.utils.each(event.detail,function(detailValue,detail) {\n\t\t\t\t\t\tvariables[\"event-detail-\" + detail] = detailValue.toString();\n\t\t\t\t\t});\n\t\t\t\t} else if(!!event.detail) {\n\t\t\t\t\tvariables[\"event-detail\"] = event.detail.toString();\n\t\t\t\t}\n\t\t\t\tself.invokeActionString(actions,self,event,variables);\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},false);\n\t});\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEventWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes that require a refresh on change\n\tthis.types = this.getAttribute(\"events\",\"\").split(\" \");\n\tthis.elementTag = this.getAttribute(\"tag\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nEventWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-eventcatcher\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEventWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"events\"] || changedAttributes[\"tag\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.eventcatcher = EventWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fieldmangler.js": {
"title": "$:/core/modules/widgets/fieldmangler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fields.js": {
"title": "$:/core/modules/widgets/fields.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif( changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/image.js": {
"title": "$:/core/modules/widgets/image.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/importvariables.js": {
"title": "$:/core/modules/widgets/importvariables.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar widgetPointer = this;\n\t// Got to flush all the accumulated variables\n\tthis.variables = new this.variablesConstructor();\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tvar node = {\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.children = [widgetPointer.makeChildWidget(node)];\n\t\t\t\t\t// No more regenerating children for\n\t\t\t\t\t// this widget. If it needs to refresh,\n\t\t\t\t\t// it'll do so along with the the whole\n\t\t\t\t\t// importvariable tree.\n\t\t\t\t\tif (widgetPointer != this) {\n\t\t\t\t\t\twidgetPointer.makeChildWidgets = function(){};\n\t\t\t\t\t}\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\n\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/keyboard.js": {
"title": "$:/core/modules/widgets/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tvar handled = self.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tif(handled || self.actions || self.message) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/link.js": {
"title": "$:/core/modules/widgets/link.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"}),\n\t\tdomNode = this.document.createElementNS(namespace,tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tvar namespaceHref = (namespace === \"http://www.w3.org/2000/svg\") ? \"http://www.w3.org/1999/xlink\" : undefined;\n\t\tdomNode.setAttributeNS(namespaceHref,\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey,\n\t\tevent: event\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/linkcatcher.js": {
"title": "$:/core/modules/widgets/linkcatcher.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo, modifier: modifierKey});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/list.js": {
"title": "$:/core/modules/widgets/list.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar parser,\n\t\temptyMessage = this.getAttribute(\"emptyMessage\",\"\");\n\t// this.wiki.parseText() calls \n\t// new Parser(..), which should only be done, if needed, because it's heavy!\n\tif (emptyMessage === \"\") {\n\t\treturn [];\n\t}\n\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/log.js": {
"title": "$:/core/modules/widgets/log.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/log.js\ntype: application/javascript\nmodule-type: widget-subclass\n\nWidget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.baseClass = \"action-log\";\n\nexports.name = \"log\";\n\nexports.constructor = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n}\n\nexports.prototype = {};\n\nexports.prototype.render = function(event) {\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,event);\t\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).log.call(this);\n}\n\n})();",
"type": "application/javascript",
"module-type": "widget-subclass"
},
"$:/core/modules/widgets/macrocall.js": {
"title": "$:/core/modules/widgets/macrocall.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\t// Check if we've already cached parsing this macro\n\t\tvar mode = this.parseTreeNode.isBlock ? \"blockParser\" : \"inlineParser\",\n\t\t\tparser;\n\t\tif(variableInfo.srcVariable && variableInfo.srcVariable[mode]) {\n\t\t\tparser = variableInfo.srcVariable[mode];\n\t\t} else {\n\t\t\tparser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\t\tif(variableInfo.isCacheable && variableInfo.srcVariable) {\n\t\t\t\tvariableInfo.srcVariable[mode] = parser;\n\t\t\t}\n\t\t}\n\t\tvar parseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else if(this.renderOutput === \"text/raw\") {\n\t\tparseTreeNodes = [{type: \"text\", text: text}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/navigator.js": {
"title": "$:/core/modules/widgets/navigator.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\tthis.story = new $tw.Story({\n\t\twiki: this.wiki,\n\t\tstoryTitle: this.storyTitle,\n\t\thistoryTitle: this.historyTitle\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.story.addToStory(title,fromTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\n\t\t});\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.story.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\t\ttext: \"\",\n\t\t\t},\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\treturn this.wiki.generateDraftTitle(title);\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler,tiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTitle = event.importTitle ? event.importTitle : IMPORT_TITLE,\n\t\timportTiddler = this.wiki.getTiddler(importTitle),\n\t\timportData = this.wiki.getTiddlerData(importTitle,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: importTitle,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t\tnewFields[\"suppressed-\" + title] = \"yes\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tvar autoOpenOnImport = event.autoOpenOnImport ? event.autoOpenOnImport : this.getVariable(\"tv-auto-open-on-import\"); \n\tif(autoOpenOnImport !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(importTitle) === -1) {\n\t\t\tstoryList.unshift(importTitle);\n\t\t}\n\t\t// And to history\n\t\thistory.push(importTitle);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tif($tw.utils.hop(importTiddler.fields,[\"rename-\" + title])) {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields,{title : importTiddler.fields[\"rename-\" + title]});\n\t\t\t} else {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\t}\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddler.fields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar options = {},\n\t\tparamObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\toptions.dontRenameInTags = (paramObject.renameInTags === \"false\" || paramObject.renameInTags === \"no\") ? true : false;\n\toptions.dontRenameInLists = (paramObject.renameInLists === \"false\" || paramObject.renameInLists === \"no\") ? true : false;\n\tthis.wiki.renameTiddler(from,to,options);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/password.js": {
"title": "$:/core/modules/widgets/password.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/qualify.js": {
"title": "$:/core/modules/widgets/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/radio.js": {
"title": "$:/core/modules/widgets/radio.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n\t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n\t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n\t// Trigger actions\n\tif(this.radioActions) {\n\t\tthis.invokeActionString(this.radioActions,this,event,{\"actionValue\": this.radioValue});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\tthis.radioActions = this.getAttribute(\"actions\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(($tw.utils.count(changedAttributes) > 0) || changedTiddlers[this.radioTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/range.js": {
"title": "$:/core/modules/widgets/range.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name:\"mousedown\", handlerObject:this, handlerMethod:\"handleMouseDownEvent\"},\n\t\t{name:\"mouseup\", handlerObject:this, handlerMethod:\"handleMouseUpEvent\"},\n\t\t{name:\"change\", handlerObject:this, handlerMethod:\"handleChangeEvent\"},\n\t\t{name:\"input\", handlerObject:this, handlerMethod:\"handleInputEvent\"},\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField,\n\t\tvalue = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue);\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.getActionVariables = function(options) {\n\toptions = options || {};\n\tvar hasChanged = (this.startValue !== this.inputDomNode.value) ? \"yes\" : \"no\";\n\t// Trigger actions. Use variables = {key:value, key:value ...}\n\t// the \"value\" is needed.\n\treturn $tw.utils.extend({\"actionValue\": this.inputDomNode.value, \"actionValueHasChanged\": hasChanged}, options);\n}\n\n// actionsStart\nRangeWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.mouseDown = true; // TODO remove once IE is gone.\n\tthis.startValue = this.inputDomNode.value; // TODO remove this line once IE is gone!\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseDown) {\n\t\tvar variables = this.getActionVariables() // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsMouseDown,this,event,variables);\n\t}\n}\n\n// actionsStop\nRangeWidget.prototype.handleMouseUpEvent = function(event) {\n\tthis.mouseDown = false; // TODO remove once IE is gone.\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseUp) {\n\t\tvar variables = this.getActionVariables()\n\t\tthis.invokeActionString(this.actionsMouseUp,this,event,variables);\n\t}\n\t// TODO remove the following if() once IE is gone!\n\tif ($tw.browser.isIE) {\n\t\tif (this.startValue !== this.inputDomNode.value) {\n\t\t\tthis.handleChangeEvent(event);\n\t\t\tthis.startValue = this.inputDomNode.value;\n\t\t}\n\t}\n}\n\nRangeWidget.prototype.handleChangeEvent = function(event) {\n\tif (this.mouseDown) { // TODO refactor this function once IE is gone.\n\t\tthis.handleInputEvent(event);\n\t}\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsInput) {\n\t\t// \"tiddler\" parameter may be missing. See .execute() below\n\t\tvar variables = this.getActionVariables({\"actionValueHasChanged\": \"yes\"}) // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsInput,this,event,variables);\n\t}\n};\n\nRangeWidget.prototype.handleEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// TODO remove the next 1 lines once IE is gone!\n\tthis.mouseUp = true; // Needed for IE10\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\",\"text\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\",\"\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Actions since 5.1.23\n\t// Next 2 only fire once!\n\tthis.actionsMouseDown = this.getAttribute(\"actionsStart\",\"\");\n\tthis.actionsMouseUp = this.getAttribute(\"actionsStop\",\"\");\n\t// Input fires very often!\n\tthis.actionsInput = this.getAttribute(\"actions\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/raw.js": {
"title": "$:/core/modules/widgets/raw.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/reveal.js": {
"title": "$:/core/modules/widgets/reveal.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"belowright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\t\t\t\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tcase \"aboveleft\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\t\t\t\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\t// class attribute handled in assignDomNodeClasses()\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\tthis.updatePopupPosition = this.getAttribute(\"updatePopupPosition\",\"no\") === \"yes\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state,\n\t defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\nRevealWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-reveal\");\n\tthis.domNode.className = classes.join(\" \");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if(this.type === \"popup\" && this.updatePopupPosition && (changedTiddlers[this.state] || changedTiddlers[this.stateTitle])) {\n\t\t\tthis.positionPopup(this.domNode);\n\t\t}\n\t\tif(changedAttributes.style) {\n\t\t\tthis.domNode.style = this.getAttribute(\"style\",\"\");\n\t\t}\n\t\tif(changedAttributes[\"class\"]) {\n\t\t\tthis.assignDomNodeClasses();\n\t\t}\t\t\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/scrollable.js": {
"title": "$:/core/modules/widgets/scrollable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tif(event.paramObject && event.paramObject.selector) {\n\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t} else {\n\t\tthis.scrollIntoView(event.target);\t\t\t\n\t}\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\tsrcWindow = element ? element.ownerDocument.defaultView : window;\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nScrollableWidget.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/select.js": {
"title": "$:/core/modules/widgets/select.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/set.js": {
"title": "$:/core/modules/widgets/set.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/text.js": {
"title": "$:/core/modules/widgets/text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/tiddler.js": {
"title": "$:/core/modules/widgets/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/transclude.js": {
"title": "$:/core/modules/widgets/transclude.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\tthis.recursionMarker = this.getAttribute(\"recursionMarker\",\"yes\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tif(this.recursionMarker === \"yes\") {\n\t\tthis.setVariable(\"transclusion\",recursionMarker);\n\t}\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/vars.js": {
"title": "$:/core/modules/widgets/vars.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/view.js": {
"title": "$:/core/modules/widgets/view.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/widget.js": {
"title": "$:/core/modules/widgets/widget.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\t// Bail if parseTreeNode is undefined, meaning that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\toriginalValue = variable.value,\n\t\t\tvalue = originalValue,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params,\n\t\t\tsrcVariable: variable,\n\t\t\tisCacheable: originalValue === value\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].render(parent,nextSibling);\n\t};\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\tevent.widget = event.widget || this;\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].refresh(changedTiddlers) || refreshed;\n\t}\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\n/*\nExecute action tiddlers by tag\n*/\nWidget.prototype.invokeActionsByTag = function(tag,event,variables) {\n\tvar self = this;\n\t$tw.utils.each(self.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\tself.invokeActionString(self.wiki.getTiddlerText(title),self,event,variables);\n\t});\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/wikify.js": {
"title": "$:/core/modules/widgets/wikify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/wiki-bulkops.js": {
"title": "$:/core/modules/wiki-bulkops.js",
"text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/wiki.js": {
"title": "$:/core/modules/wiki.js",
"text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type] || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.isBinaryTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x : x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t// indexOf unless we have a new\n\t\t\t\t\t// position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,spaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.recursionMarker : optional flag to set a recursion marker, defaults to \"yes\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\trecursionMarker: {\n\t\t\t\t\tname: \"recursionMarker\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: options.recursionMarker || \"yes\"\n\t\t\t\t\t},\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn this.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\",\n\t\tanchor = options.anchored ? \"^\" : \"\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(!tiddler.hasField(\"_is_skinny\")) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text || \"\";\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\"};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\n\tconsole.log(\"$tw.wiki.addToHistory() is deprecated since V5.1.23! Use the this.story.addToHistory() from the story-object!\")\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\n\tconsole.log(\"$tw.wiki.addToStory() is deprecated since V5.1.23! Use the this.story.addToStory() from the story-object!\")\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.slugify = function(title,options) {\n\tvar tiddler = this.getTiddler(title),\n\t\tslug;\n\tif(tiddler && tiddler.fields.slug) {\n\t\tslug = tiddler.fields.slug;\n\t} else {\n\t\tslug = $tw.utils.transliterate(title.toString().toLowerCase()) // Replace diacritics with basic lowercase ASCII\n\t\t\t.replace(/\\s+/g,\"-\") // Replace spaces with -\n\t\t\t.replace(/[^\\w\\-\\.]+/g,\"\") // Remove all non-word chars except dash and dot\n\t\t\t.replace(/\\-\\-+/g,\"-\") // Replace multiple - with single -\n\t\t\t.replace(/^-+/,\"\") // Trim - from start of text\n\t\t\t.replace(/-+$/,\"\"); // Trim - from end of text\n\t}\n\t// If the resulting slug is blank (eg because the title is just punctuation characters)\n\tif(!slug) {\n\t\t// ...then just use the character codes of the title\n\t\tvar result = [];\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tresult.push(char.charCodeAt(0).toString());\n\t\t});\n\t\tslug = result.join(\"-\");\n\t}\n\treturn slug;\n};\n\n})();\n\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/palettes/Blanca": {
"title": "$:/palettes/Blanca",
"name": "Blanca",
"description": "A clean white palette to let you focus",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Blue": {
"title": "$:/palettes/Blue",
"name": "Blue",
"description": "A blue theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Muted": {
"title": "$:/palettes/Muted",
"name": "Muted",
"description": "Bright tiddlers on a muted background",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastLight": {
"title": "$:/palettes/ContrastLight",
"name": "Contrast (Light)",
"description": "High contrast and unambiguous (light version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastDark": {
"title": "$:/palettes/ContrastDark",
"name": "Contrast (Dark)",
"description": "High contrast and unambiguous (dark version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/CupertinoDark": {
"title": "$:/palettes/CupertinoDark",
"tags": "$:/tags/Palette",
"name": "Cupertino Dark",
"description": "A macOS inspired dark palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #FF453A\nalert-border: #FF453A\nalert-highlight: #FFD60A\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #282828\nblockquote-bar: <<colour page-background>>\nbutton-foreground: <<colour background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #FF453A\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour tiddler-info-background>>\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: #3F638B\ndropdown-tab-background: #323232\ndropzone-background: #30D158\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #BF5AF2\nexternal-link-foreground: #32D74B\nforeground: #FFFFFF\nmenubar-background: #464646\nmenubar-foreground: #ffffff\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: #98989D\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #323232\npre-background: #464646\npre-border: transparent\nprimary: #0A84FF\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour background>>\nsidebar-controls-foreground-hover: #FF9F0A\nsidebar-controls-foreground: #8E8E93\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: #3F638B\nsidebar-tab-background: <<colour background>>\nsidebar-tab-border-selected: <<colour background>>\nsidebar-tab-border: <<colour background>>\nsidebar-tab-divider: <<colour background>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: #ffffff\nstatic-alert-foreground: #B4B4B4\ntab-background-selected: #3F638B\ntab-background: <<colour page-background>>\ntab-border-selected: <<colour page-background>>\ntab-border: <<colour page-background>>\ntab-divider: <<colour page-background>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #464646\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #48484A\ntag-foreground: #323232\ntiddler-background: <<colour background>>\ntiddler-border: transparent\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: #48484A\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #1E1E1E\ntiddler-info-border: #1E1E1E\ntiddler-info-tab-background: #3F638B\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: #464646\nselection-background: #3F638B\nselection-foreground: #ffffff\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #3F638B\nwikilist-button-foreground: <<colour foreground>>\nwikilist-button-open: #32D74B\nwikilist-button-open-hover: #32D74B\nwikilist-button-reveal: #0A84FF\nwikilist-button-reveal-hover: #0A84FF\nwikilist-button-remove: #FF453A\nwikilist-button-remove-hover: #FF453A\nwikilist-droplink-dragover: #32D74B\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour foreground>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-url: <<colour muted-foreground>>\n"
},
"$:/palettes/DarkPhotos": {
"title": "$:/palettes/DarkPhotos",
"created": "20150402111612188",
"description": "Good with dark photo backgrounds",
"modified": "20150402112344080",
"name": "DarkPhotos",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/DesertSand": {
"title": "$:/palettes/DesertSand",
"tags": "$:/tags/Palette",
"name": "Desert Sand",
"description": "A desert sand palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #E9E0C7\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour foreground>>\ncode-background: #F3EDDF\ncode-border: #C3BAA1\ncode-foreground: #ab3250\ndiff-delete-background: #bd8b8b\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #91c093\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ad3434\ndownload-background: #6ca16c\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #E9E0C7\ndropdown-tab-background: #BAB29C\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #313163\nexternal-link-foreground: #555592\nforeground: #2D2A23\nmenubar-background: #CDC2A6\nmenubar-foreground: #5A5446\nmessage-background: #ECE5CF\nmessage-border: #D6CBAA\nmessage-foreground: #5f6e7d\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #8A8885\nmodal-footer-background: #CDC2A6\nmodal-footer-border: #9D998E\nmodal-header-border: #9D998E\nmuted-foreground: #9D998E\nnotification-background: #F0E9D7\nnotification-border: #939189\npage-background: #e0d3af\npre-background: #D6CBAA\npre-border: #CDC2A6\nprimary: #5B6F55\nselection-background: #9D947B\nselection-foreground: <<colour foreground>>\nselect-tag-background: #F0E9D7\nselect-tag-foreground: #2D2A23\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #2D2A23\nsidebar-controls-foreground: #867F69\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #867F69\nsidebar-muted-foreground-hover: #706A58\nsidebar-muted-foreground: #B3A98C\nsidebar-tab-background-selected: #e0d3af\nsidebar-tab-background: #A6A193\nsidebar-tab-border-selected: #C3BAA1\nsidebar-tab-border: #C3BAA1\nsidebar-tab-divider: #CDC2A6\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #2D2A23\nsidebar-tiddler-link-foreground-hover: #433F35\nsidebar-tiddler-link-foreground: #706A58\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #A6A193\ntab-background-selected: #E9E0C7\ntab-background: #A6A193\ntab-border-selected: #C3BAA1\ntab-border: #C3BAA1\ntab-divider: #CDC2A6\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #2D2A23\ntable-border: #9D998E\ntable-footer-background: #8A8885\ntable-header-background: #B0AA98\ntag-background: #706A58\ntag-foreground: #E3D7B7\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #9D947B\ntiddler-controls-foreground-selected: #706A58\ntiddler-controls-foreground: #C3BAA1\ntiddler-editor-background: #E9E0C7\ntiddler-editor-border-image: #A6A193\ntiddler-editor-border: #A6A193\ntiddler-editor-fields-even: #D6CBAA\ntiddler-editor-fields-odd: #C3BAA1\ntiddler-info-background: #E3D7B7\ntiddler-info-border: #BAB29C\ntiddler-info-tab-background: #E9E0C7\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #867F69\ntiddler-title-foreground: #374464\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #8A8885\nvery-muted-foreground: #CDC2A6\nwikilist-background: <<colour page-background>>\nwikilist-item: #CDC2A6\nwikilist-info: #161512\nwikilist-title: #433F35\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #706A58\nwikilist-button-open: #7db66a\nwikilist-button-open-hover: #56a556\nwikilist-button-reveal: #5a6c9e\nwikilist-button-reveal-hover: #454591\nwikilist-button-remove: #bc5972\nwikilist-button-remove-hover: #814040\nwikilist-toolbar-background: #CDC2A6\nwikilist-toolbar-foreground: #2D2A23\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #A6A193\nwikilist-button-foreground: #161512\n"
},
"$:/palettes/GruvboxDark": {
"title": "$:/palettes/GruvboxDark",
"name": "Gruvbox Dark",
"description": "Retro groove color scheme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "https://github.com/morhetz/gruvbox",
"text": "alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nselection-background: #458588\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: <<colour primary>>\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #32302f\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #acacac\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>\n"
},
"$:/palettes/Nord": {
"title": "$:/palettes/Nord",
"name": "Nord",
"description": "An arctic, north-bluish color palette.",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md",
"text": "alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nselection-background: #5E81AC\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #3b4252\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #2d3038\nvery-muted-foreground: #2d3038\nwikilist-background: <<colour page-background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-item: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-info: <<colour muted-foreground>>\nwikilist-button-open: #A3BE8C\nwikilist-button-open-hover: #A3BE8C\nwikilist-button-reveal: #81A1C1\nwikilist-button-reveal-hover: #81A1C1\nwikilist-button-remove: #B48EAD\nwikilist-button-remove-hover: #B48EAD\n"
},
"$:/palettes/Rocker": {
"title": "$:/palettes/Rocker",
"name": "Rocker",
"description": "A dark theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarFlare": {
"title": "$:/palettes/SolarFlare",
"name": "Solar Flare",
"description": "Warm, relaxing earth colours",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n download-foreground: <<colour background>>\n dragger-foreground: <<colour background>>\n dropdown-background: <<colour background>>\n modal-background: <<colour background>>\n sidebar-foreground-shadow: <<colour background>>\n tiddler-background: <<colour background>>\n tiddler-border: <<colour background>>\n tiddler-link-background: <<colour background>>\n tab-background-selected: <<colour background>>\n dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n dragger-background: <<colour foreground>>\n tab-foreground: <<colour foreground>>\n tab-foreground-selected: <<colour tab-foreground>>\n sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n sidebar-tab-foreground: <<colour tab-foreground>>\n sidebar-button-foreground: <<colour foreground>>\n sidebar-controls-foreground: <<colour foreground>>\n sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n alert-muted-foreground: <<colour base01>>\n: base00\n code-foreground: <<colour base00>>\n message-foreground: <<colour base00>>\n tag-foreground: <<colour base00>>\n: base0\n sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n muted-foreground: <<colour base1>>\n blockquote-bar: <<colour muted-foreground>>\n dropdown-border: <<colour muted-foreground>>\n sidebar-muted-foreground: <<colour muted-foreground>>\n tiddler-title-foreground: <<colour muted-foreground>>\n site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n modal-footer-background: <<colour base2>>\n page-background: <<colour base2>>\n modal-backdrop: <<colour page-background>>\n notification-background: <<colour page-background>>\n code-background: <<colour page-background>>\n code-border: <<colour code-background>>\n pre-background: <<colour page-background>>\n pre-border: <<colour pre-background>>\n sidebar-tab-background-selected: <<colour page-background>>\n table-header-background: <<colour base2>>\n tag-background: <<colour base2>>\n tiddler-editor-background: <<colour base2>>\n tiddler-info-background: <<colour base2>>\n tiddler-info-tab-background: <<colour base2>>\n tab-background: <<colour base2>>\n dropdown-tab-background: <<colour tab-background>>\n: base3\n alert-background: <<colour base3>>\n message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n alert-highlight: <<colour magenta>>\n: violet\n external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n primary: <<colour blue-muted>>\n download-background: <<colour primary>>\n tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n modal-footer-border: <<colour tab-border>>\n modal-header-border: <<colour tab-border>>\n notification-border: <<colour tab-border>>\n sidebar-tab-border: <<colour tab-border>>\n tab-border-selected: <<colour tab-border>>\n sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarizedDark": {
"title": "$:/palettes/SolarizedDark",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Precision dark colors for machines and people",
"license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
"name": "SolarizedDark",
"text": "alert-background: #073642\nalert-border: #93a1a1\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #073642\nblockquote-bar: #d33682\nbutton-background: #073642\nbutton-border: #586e75\nbutton-foreground: #93a1a1\ncode-background: #073642\ncode-border: #586e75\ncode-foreground: #93a1a1\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #073642\ndragger-background: #073642\ndragger-foreground: #839496\ndropdown-background: #073642\ndropdown-border: #93a1a1\ndropdown-tab-background: #002b36\ndropdown-tab-background-selected: #073642\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover:\nexternal-link-foreground-visited: #268bd2\nforeground: #839496\nmessage-background: #002b36\nmessage-border: #586e75\nmessage-foreground: #839496\nmodal-backdrop: #657b83\nmodal-background: #002b36\nmodal-border: #586e75\nmodal-footer-background: #073642\nmodal-footer-border: #586e75\nmodal-header-border: #586e75\nmuted-foreground: #93a1a1\nnotification-background: #002b36\nnotification-border: #586e75\npage-background: #073642\npre-background: inherit\npre-border: #657b83\nprimary: #859900\nselect-tag-background: #002b36\nselect-tag-foreground: #839496\nsidebar-button-foreground: #93a1a1\nsidebar-controls-foreground: #93a1a1\nsidebar-controls-foreground-hover: #eee8d5\nsidebar-foreground: #93a1a1\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #839496\nsidebar-muted-foreground-hover: #93a1a1\nsidebar-tab-background: #002b36\nsidebar-tab-background-selected: #073642\nsidebar-tab-border: #073642\nsidebar-tab-border-selected: #839496\nsidebar-tab-divider: #002b36\nsidebar-tab-foreground: #657b83\nsidebar-tab-foreground-selected: #93a1a1\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #eee8d5\nsite-title-foreground: #d33682\nstatic-alert-foreground: #93a1a1\ntab-background: #073642\ntab-background-selected: #002b36\ntab-border: #586e75\ntab-border-selected: #93a1a1\ntab-divider: #93a1a1\ntab-foreground: #839496\ntab-foreground-selected: #93a1a1\ntable-border: #586e75\ntable-footer-background: #073642\ntable-header-background: #073642\ntag-background: #b58900\ntag-foreground: #002b36\ntiddler-background: #002b36\ntiddler-border: #586e75\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #002b36\ntiddler-editor-border: #073642\ntiddler-editor-border-image: #002b36\ntiddler-editor-fields-even: #002b36\ntiddler-editor-fields-odd: #073642\ntiddler-info-background: #073642\ntiddler-info-border: #657b83\ntiddler-info-tab-background: #002b36\ntiddler-link-background: #002b36\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #839496\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #839496\ntoolbar-close-button: #839496\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #839496\ntoolbar-edit-button: #839496\ntoolbar-info-button: #839496\ntoolbar-new-button: #839496\ntoolbar-options-button: #839496\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #586e75\n"
},
"$:/palettes/SolarizedLight": {
"title": "$:/palettes/SolarizedLight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Precision colors for machines and people",
"license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
"name": "SolarizedLight",
"text": "alert-background: #eee8d5\nalert-border: #586e75\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #eee8d5\nblockquote-bar: #d33682\nbutton-background: #eee8d5\nbutton-border: #93a1a1\nbutton-foreground: #586e75\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #586e75\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #eee8d5\ndragger-background: #eee8d5\ndragger-foreground: #657b83\ndropdown-background: #eee8d5\ndropdown-border: #586e75\ndropdown-tab-background: #fdf6e3\ndropdown-tab-background-selected: #eee8d5\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #268bd2\nforeground: #657b83\nmessage-background: #fdf6e3\nmessage-border: #93a1a1\nmessage-foreground: #657b83\nmodal-backdrop: #839496\nmodal-background: #fdf6e3\nmodal-border: #93a1a1\nmodal-footer-background: #eee8d5\nmodal-footer-border: #93a1a1\nmodal-header-border: #93a1a1\nmuted-foreground: #586e75\nnotification-background: #fdf6e3\nnotification-border: #93a1a1\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #839496\nprimary: #859900\nselect-tag-background: #fdf6e3\nselect-tag-foreground: #657b83\nsidebar-button-foreground: #586e75\nsidebar-controls-foreground: #586e75\nsidebar-controls-foreground-hover: #d33682\nsidebar-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #657b83\nsidebar-muted-foreground-hover: #586e75\nsidebar-tab-background: #fdf6e3\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-border: #eee8d5\nsidebar-tab-border-selected: #657b83\nsidebar-tab-divider: #fdf6e3\nsidebar-tab-foreground: #839496\nsidebar-tab-foreground-selected: #586e75\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #002b36\nsite-title-foreground: #d33682\nstatic-alert-foreground: #586e75\ntab-background: #eee8d5\ntab-background-selected: #fdf6e3\ntab-border: #93a1a1\ntab-border-selected: #586e75\ntab-divider: #586e75\ntab-foreground: #657b83\ntab-foreground-selected: #586e75\ntable-border: #93a1a1\ntable-footer-background: #eee8d5\ntable-header-background: #eee8d5\ntag-background: #b58900\ntag-foreground: #fdf6e3\ntiddler-background: #fdf6e3\ntiddler-border: #93a1a1\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #fdf6e3\ntiddler-editor-border: #eee8d5\ntiddler-editor-border-image: #fdf6e3\ntiddler-editor-fields-even: #fdf6e3\ntiddler-editor-fields-odd: #eee8d5\ntiddler-info-background: #eee8d5\ntiddler-info-border: #839496\ntiddler-info-tab-background: #fdf6e3\ntiddler-link-background: #fdf6e3\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #657b83\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #657b83\ntoolbar-close-button: #657b83\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #657b83\ntoolbar-edit-button: #657b83\ntoolbar-info-button: #657b83\ntoolbar-new-button: #657b83\ntoolbar-options-button: #657b83\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #93a1a1\n"
},
"$:/palettes/SpartanDay": {
"title": "$:/palettes/SpartanDay",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Cold, spartan day colors",
"name": "Spartan Day",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
},
"$:/palettes/SpartanNight": {
"title": "$:/palettes/SpartanNight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Dark spartan colors",
"name": "Spartan Night",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
},
"$:/palettes/Twilight": {
"title": "$:/palettes/Twilight",
"tags": "$:/tags/Palette",
"author": "Thomas Elmiger",
"type": "application/x-tiddler-dictionary",
"name": "Twilight",
"description": "Delightful, soft darkness.",
"text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n"
},
"$:/palettes/Vanilla": {
"title": "$:/palettes/Vanilla",
"name": "Vanilla",
"description": "Pale and unobtrusive",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselection-background:\nselection-foreground:\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\n"
},
"$:/core/readme": {
"title": "$:/core/readme",
"text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
},
"$:/library/sjcl.js/license": {
"title": "$:/library/sjcl.js/license",
"type": "text/plain",
"text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
},
"$:/core/templates/MOTW.html": {
"title": "$:/core/templates/MOTW.html",
"text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com --> "
},
"$:/core/templates/alltiddlers.template.html": {
"title": "$:/core/templates/alltiddlers.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
},
"$:/core/templates/canonical-uri-external-image": {
"title": "$:/core/templates/canonical-uri-external-image",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-raw": {
"title": "$:/core/templates/canonical-uri-external-raw",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-text": {
"title": "$:/core/templates/canonical-uri-external-text",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
},
"$:/core/templates/css-tiddler": {
"title": "$:/core/templates/css-tiddler",
"text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
},
"$:/core/templates/exporters/CsvFile": {
"title": "$:/core/templates/exporters/CsvFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/CsvFile}}",
"extension": ".csv",
"text": "<$macrocall $name=\"csvtiddlers\" filter=<<exportFilter>> format=\"quoted-comma-sep\" $output=\"text/raw\"/>\n"
},
"$:/core/templates/exporters/JsonFile": {
"title": "$:/core/templates/exporters/JsonFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/JsonFile}}",
"extension": ".json",
"text": "<$macrocall $name=\"jsontiddlers\" filter=<<exportFilter>> $output=\"text/raw\"/>\n"
},
"$:/core/templates/exporters/StaticRiver": {
"title": "$:/core/templates/exporters/StaticRiver",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/StaticRiver}}",
"extension": ".html",
"text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river tc-static-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
},
"$:/core/templates/exporters/StaticRiver/Content": {
"title": "$:/core/templates/exporters/StaticRiver/Content",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
},
"$:/core/templates/exporters/TidFile": {
"title": "$:/core/templates/exporters/TidFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/TidFile}}",
"extension": ".tid",
"condition": "[<count>compare:lte[1]]",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
},
"$:/core/save/all-external-js": {
"title": "$:/core/save/all-external-js",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
},
"$:/core/templates/tiddlywiki5.js": {
"title": "$:/core/templates/tiddlywiki5.js",
"text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
},
"$:/core/templates/tiddlywiki5.js/tiddlers": {
"title": "$:/core/templates/tiddlywiki5.js/tiddlers",
"text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n`\n"
},
"$:/core/templates/tiddlywiki5-external-js.html": {
"title": "$:/core/templates/tiddlywiki5-external-js.html",
"text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
},
"$:/core/templates/html-div-skinny-tiddler": {
"title": "$:/core/templates/html-div-skinny-tiddler",
"text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
},
"$:/core/templates/html-div-tiddler": {
"title": "$:/core/templates/html-div-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
},
"$:/core/templates/html-tiddler": {
"title": "$:/core/templates/html-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
},
"$:/core/templates/javascript-tiddler": {
"title": "$:/core/templates/javascript-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
},
"$:/core/templates/json-tiddler": {
"title": "$:/core/templates/json-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
},
"$:/core/templates/module-tiddler": {
"title": "$:/core/templates/module-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
},
"$:/core/templates/plain-text-tiddler": {
"title": "$:/core/templates/plain-text-tiddler",
"text": "<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/raw-static-tiddler": {
"title": "$:/core/templates/raw-static-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
},
"$:/core/save/all": {
"title": "$:/core/save/all",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/empty": {
"title": "$:/core/save/empty",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-all": {
"title": "$:/core/save/lazy-all",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-images": {
"title": "$:/core/save/lazy-images",
"text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/templates/server/static.sidebar.wikitext": {
"title": "$:/core/templates/server/static.sidebar.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
},
"$:/core/templates/server/static.tiddler.html": {
"title": "$:/core/templates/server/static.tiddler.html",
"text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
},
"$:/core/templates/server/static.tiddler.wikitext": {
"title": "$:/core/templates/server/static.tiddler.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
},
"$:/core/templates/single.tiddler.window": {
"title": "$:/core/templates/single.tiddler.window",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
},
"$:/core/templates/split-recipe": {
"title": "$:/core/templates/split-recipe",
"text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
},
"$:/core/templates/static-tiddler": {
"title": "$:/core/templates/static-tiddler",
"text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
},
"$:/core/templates/static.area": {
"title": "$:/core/templates/static.area",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
},
"$:/core/templates/static.content": {
"title": "$:/core/templates/static.content",
"text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
},
"$:/core/templates/static.template.css": {
"title": "$:/core/templates/static.template.css",
"text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
},
"$:/core/templates/static.template.html": {
"title": "$:/core/templates/static.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
},
"$:/core/templates/static.tiddler.html": {
"title": "$:/core/templates/static.tiddler.html",
"text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river tc-static-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`\n"
},
"$:/core/templates/store.area.template.html": {
"title": "$:/core/templates/store.area.template.html",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
},
"$:/core/templates/tid-tiddler": {
"title": "$:/core/templates/tid-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/tiddler-metadata": {
"title": "$:/core/templates/tiddler-metadata",
"text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
},
"$:/core/templates/tiddlywiki5.html": {
"title": "$:/core/templates/tiddlywiki5.html",
"text": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"
},
"$:/core/templates/version": {
"title": "$:/core/templates/version",
"text": "<<version>>"
},
"$:/core/templates/wikified-tiddler": {
"title": "$:/core/templates/wikified-tiddler",
"text": "<$transclude />"
},
"$:/core/ui/AboveStory/tw2-plugin-check": {
"title": "$:/core/ui/AboveStory/tw2-plugin-check",
"tags": "$:/tags/AboveStory",
"text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/Actions/new-image": {
"title": "$:/core/ui/Actions/new-image",
"tags": "$:/tags/Actions",
"description": "create a new image tiddler",
"text": "\\define get-type()\nimage/$(imageType)$\n\\end\n\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars imageType={{$:/config/NewImageType}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags=<<get-tags>>/>\n</$vars>\n"
},
"$:/core/ui/Actions/new-journal": {
"title": "$:/core/ui/Actions/new-journal",
"tags": "$:/tags/Actions",
"description": "create a new journal tiddler",
"text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
},
"$:/core/ui/Actions/new-tiddler": {
"title": "$:/core/ui/Actions/new-tiddler",
"tags": "$:/tags/Actions",
"description": "create a new empty tiddler",
"text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars textFieldTags={{$:/config/NewTiddler/Tags}} tagsFieldTags={{$:/config/NewTiddler/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<get-tags>>/>\n</$vars>\n"
},
"$:/core/ui/AdvancedSearch/Filter": {
"title": "$:/core/ui/AdvancedSearch/Filter",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Filter/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\" \n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/temp/advancedsearch]]\" firstSearchFilterField=\"text\" \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tinputCancelActions=<<cancel-search-actions>>/>\n</$keyboard>\n</$keyboard>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</div>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param='.tc-advanced-search input' />\"\"\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Shadows": {
"title": "$:/core/ui/AdvancedSearch/Shadows",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Shadows/Caption}}",
"first-search-filter": "[all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]",
"text": "\\define lingo-base() $:/language/Search/\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/Shadows]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Standard": {
"title": "$:/core/ui/AdvancedSearch/Standard",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Standard/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define next-search-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/advancedsearch\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"shift-alt-Right\" actions=<<next-search-tab>>>\n<$keyboard key=\"shift-alt-Left\" actions=<<next-search-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"\n\t\tfilterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$vars userInput={{{ [[$:/temp/advancedsearch]get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} searchListState=\"$:/temp/advancedsearch/selected-item\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/advancedsearch\" />\n</$list>\n</$vars>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/System": {
"title": "$:/core/ui/AdvancedSearch/System",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/System/Caption}}",
"first-search-filter": "[is[system]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]",
"text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\",stateTitle,tag,defaultState,currentTabTiddler) <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\"\n\t\ttype=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/System]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/AdvancedSearch": {
"title": "$:/AdvancedSearch",
"icon": "$:/core/images/advanced-search-button",
"color": "#bbb",
"text": "<div class=\"tc-advanced-search\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" default=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab--1498284803\"/>\n</div>\n"
},
"$:/core/ui/AlertTemplate": {
"title": "$:/core/ui/AlertTemplate",
"text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
},
"$:/core/ui/BinaryWarning": {
"title": "$:/core/ui/BinaryWarning",
"text": "\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"
},
"$:/core/ui/Components/plugin-info": {
"title": "$:/core/ui/Components/plugin-info",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
},
"$:/core/ui/Components/tag-link": {
"title": "$:/core/ui/Components/tag-link",
"text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
},
"$:/core/ui/ControlPanel/Advanced": {
"title": "$:/core/ui/ControlPanel/Advanced",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
"text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/TiddlerFields\" explicitState=\"$:/state/tab--959111941\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Appearance": {
"title": "$:/core/ui/ControlPanel/Appearance",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
"text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Theme\" explicitState=\"$:/state/tab--1963855381\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Basics": {
"title": "$:/core/ui/ControlPanel/Basics",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Basics/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-advanced-search input\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewTiddler/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewJournal/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
},
"$:/core/ui/ControlPanel/EditorTypes": {
"title": "$:/core/ui/ControlPanel/EditorTypes",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/Info": {
"title": "$:/core/ui/ControlPanel/Info",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Info/Caption}}",
"text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Basics\" explicitState=\"$:/state/tab--2112689675\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/KeyboardShortcuts": {
"title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/LoadedModules": {
"title": "$:/core/ui/ControlPanel/LoadedModules",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
},
"$:/core/ui/ControlPanel/Modals/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
"subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
"text": "\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[name]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$list filter=\"[<currentTiddler>get[enabled]else[yes]match[yes]]\" variable=\"ignore\">\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n</$list>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[name]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
},
"$:/core/ui/ControlPanel/Palette": {
"title": "$:/core/ui/ControlPanel/Palette",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Palette/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"
},
"$:/core/ui/ControlPanel/Parsing": {
"title": "$:/core/ui/ControlPanel/Parsing",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
},
"$:/core/ui/ControlPanel/Plugins/Add/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
"text": "<<display-server-assets language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
"text": "<<display-server-assets plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
"text": "<<display-server-assets theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Updates": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
"caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
"text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"[[<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Plugins/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
"text": "<<plugin-table language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
"text": "<<plugin-table plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
"text": "<<plugin-table theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[name]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<$macrocall $name=\"tabs\" tabsList=\"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" default=\"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\" explicitState=\"$:/state/tab--86143343\"/>\n"
},
"$:/core/ui/ControlPanel/Saving/DownloadSaver": {
"title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Saving/General": {
"title": "$:/core/ui/ControlPanel/Saving/General",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
"list-before": "",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Saving/GitHub": {
"title": "$:/core/ui/ControlPanel/Saving/GitHub",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/GitLab": {
"title": "$:/core/ui/ControlPanel/Saving/GitLab",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/TiddlySpot": {
"title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define siteURL(path)\nhttp://$(userName)$.tiddlyspot.com/$path$/\n\\end\n\\define siteLink(path)\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<siteURL $path$>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<div class=\"tc-message-box\">\n\n<<lingo ReadOnly>>\n\n</div>\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<siteLink backup>> |\n|<<lingo ControlPanel>> |<<siteLink controlpanel>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>\n"
},
"$:/core/ui/ControlPanel/Saving/Gitea": {
"title": "$:/core/ui/ControlPanel/Saving/Gitea",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
},
"$:/core/ui/ControlPanel/Saving": {
"title": "$:/core/ui/ControlPanel/Saving",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Saving/Caption}}",
"text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Saving/General\" explicitState=\"$:/state/tab-2065006209\"/>\n</div>\n"
},
"$:/core/buttonstyles/Borderless": {
"title": "$:/core/buttonstyles/Borderless",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
"text": "tc-btn-invisible"
},
"$:/core/buttonstyles/Boxed": {
"title": "$:/core/buttonstyles/Boxed",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
"text": "tc-btn-boxed"
},
"$:/core/buttonstyles/Rounded": {
"title": "$:/core/buttonstyles/Rounded",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
"text": "tc-btn-rounded"
},
"$:/core/ui/ControlPanel/Settings/CamelCase": {
"title": "$:/core/ui/ControlPanel/Settings/CamelCase",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
"title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
"title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n <option value=\"above\"><<lingo \"OpenAbove\">></option>\n <option value=\"below\"><<lingo \"OpenBelow\">></option>\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/MissingLinks": {
"title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationHistory": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
"title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/TitleLinks": {
"title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings": {
"title": "$:/core/ui/ControlPanel/Settings",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Settings/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ControlPanel/StoryView": {
"title": "$:/core/ui/ControlPanel/StoryView",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
"text": "{{$:/snippets/viewswitcher}}\n"
},
"$:/core/ui/ControlPanel/Stylesheets": {
"title": "$:/core/ui/ControlPanel/Stylesheets",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
},
"$:/core/ui/ControlPanel/Theme": {
"title": "$:/core/ui/ControlPanel/Theme",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Theme/Caption}}",
"text": "{{$:/snippets/themeswitcher}}\n"
},
"$:/core/ui/ControlPanel/TiddlerFields": {
"title": "$:/core/ui/ControlPanel/TiddlerFields",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
},
"$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
},
"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/PageControls": {
"title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars": {
"title": "$:/core/ui/ControlPanel/Toolbars",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
"text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" class=\"tc-vertical\" explicitState=\"$:/state/tabs/controlpanel/toolbars-1345989671\"/>\n</div>\n"
},
"$:/ControlPanel": {
"title": "$:/ControlPanel",
"icon": "$:/core/images/options-button",
"color": "#bbb",
"text": "<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Info\" explicitState=\"$:/state/tab-1749438307\"/>\n</div>\n"
},
"$:/core/ui/DefaultSearchResultList": {
"title": "$:/core/ui/DefaultSearchResultList",
"tags": "$:/tags/SearchResults",
"caption": "{{$:/language/Search/DefaultResults/Caption}}",
"first-search-filter": "[!is[system]search:title<userInput>sort[title]limit[250]]",
"second-search-filter": "[!is[system]search<userInput>sort[title]limit[250]]",
"text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[first-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[second-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n\\end\n<<searchResultList>>\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-current": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
"tags": "$:/tags/EditPreview",
"caption": "differences from current",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
"tags": "$:/tags/EditPreview",
"caption": "differences from shadow (if any)",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/output": {
"title": "$:/core/ui/EditTemplate/body/preview/output",
"tags": "$:/tags/EditPreview",
"caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
"text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
},
"$:/state/showeditpreview": {
"title": "$:/state/showeditpreview",
"text": "no"
},
"$:/core/ui/EditTemplate/body/editor": {
"title": "$:/core/ui/EditTemplate/body/editor",
"text": "<$edit\n\n field=\"text\"\n class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n tabindex={{$:/config/EditTabIndex}}\n focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n cancelPopups=\"yes\"\n\n><$set\n\n name=\"targetTiddler\"\n value=<<currentTiddler>>\n\n><$list\n\n filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n type=\"nomatch\"\n state=<<config-visibility-title>>\n text=\"hide\"\n class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
},
"$:/core/ui/EditTemplate/body/toolbar/button": {
"title": "$:/core/ui/EditTemplate/body/toolbar/button",
"text": "\\define toolbar-button-icon()\n<$list\n\n filter=\"[all[current]!has[custom-icon]]\"\n variable=\"no-custom-icon\"\n\n><$transclude\n\n tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n filter={{!!condition}}\n variable=\"list-condition\"\n\n><$wikify\n\n name=\"tooltip-text\"\n text=<<toolbar-button-tooltip>>\n mode=\"inline\"\n output=\"text\"\n\n><$list\n\n filter=\"[all[current]!has[dropdown]]\"\n variable=\"no-dropdown\"\n\n><$button\n\n class=\"tc-btn-invisible $(buttonClasses)$\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button></$list><$list\n\n filter=\"[all[current]has[dropdown]]\"\n variable=\"dropdown\"\n\n><$set\n\n name=\"dropdown-state\"\n value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n popup=<<dropdown-state>>\n class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n selectedClass=\"tc-selected\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button><$reveal\n\n state=<<dropdown-state>>\n type=\"popup\"\n position=\"below\"\n animate=\"yes\"\n tag=\"span\"\n\n><div\n\n class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n tiddler={{!!dropdown}}\n mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n name=\"buttonClasses\"\n value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
},
"$:/core/ui/EditTemplate/body": {
"title": "$:/core/ui/EditTemplate/body",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/EditTemplate/controls": {
"title": "$:/core/ui/EditTemplate/controls",
"tags": "$:/tags/EditTemplate",
"text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
},
"$:/core/ui/EditTemplate/fields": {
"title": "$:/core/ui/EditTemplate/fields",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name-wrapper input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define delete-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\n\\define cancel-search-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-state-tiddlers>>\n</$list>\n\\end\n\n\\define cancel-search-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newFieldNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$keyboard key=\"((delete-field))\" actions=\"\"\"<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\"\"\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit tc-big-gap-right\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<$vars refreshTitle=<<qualify \"$:/temp/fieldname/refresh\">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>\n<div class=\"tc-edit-field-add-name-wrapper\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<searchListState>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}}\n\t\tfocus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups=\"yes\"\n\t\tconfigTiddlerFilter=\"[[$:/config/EditMode/fieldname-filter]]\" inputCancelActions=<<cancel-search-actions>> />\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n</div>\n<span class=\"tc-edit-field-add-value tc-small-gap-right\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</$set>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</$vars>\n</div>\n</$fieldmangler>\n"
},
"$:/core/ui/EditTemplate/shadow": {
"title": "$:/core/ui/EditTemplate/shadow",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
},
"$:/core/ui/EditTemplate/tags": {
"title": "$:/core/ui/EditTemplate/tags",
"tags": "$:/tags/EditTemplate",
"text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon,tagField:\"tags\")\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button class=\"tc-btn-invisible tc-remove-tag-button\"><$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[{!!title}]\"/>{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon,tagField:\"tags\")\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\" tagField=<<__tagField__>>/>\n\\end\n\n\\define edit-tags-template(tagField:\"tags\")\n\\whitespace trim\n<div class=\"tc-edit-tags\">\n<$list filter=\"[list[!!$tagField$]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}} tagField=<<__tagField__>>/>\n</$list>\n<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups=\"yes\">\n<$macrocall $name=\"tag-picker\" tagField=<<__tagField__>>/>\n</$vars>\n</div>\n\\end\n<$set name=\"saveTiddler\" value=<<currentTiddler>>>\n<$macrocall $name=\"edit-tags-template\" tagField=<<tagField>>/>\n</$set>\n"
},
"$:/core/ui/EditTemplate/title": {
"title": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/EditTemplate/type": {
"title": "$:/core/ui/EditTemplate/type",
"tags": "$:/tags/EditTemplate",
"first-search-filter": "[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search<userInput>]",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define input-cancel-actions() <$list filter=\"[<storeTitle>get[text]] [<currentTiddler>get[type]] +[limit[1]]\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\"><$action-sendmessage $message=\"tm-remove-field\" $param=\"type\"/><$action-deletetiddler $filter=\"[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]\"/></$list>\n\\whitespace trim\n<$set name=\"refreshTitle\" value=<<qualify \"$:/temp/type-search/refresh\">>>\n<div class=\"tc-edit-type-selector-wrapper\">\n<em class=\"tc-edit tc-big-gap-right\"><<lingo Type/Prompt>></em>\n<div class=\"tc-type-selector-dropdown-wrapper\">\n<div class=\"tc-type-selector\"><$fieldmangler>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups=\"yes\" configTiddlerFilter=\"[[$:/core/ui/EditTemplate/type]]\" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter=\"[<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]\"/></$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$set name=\"userInput\" value={{{ [<typeInputTiddler>get[text]] }}}>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]\"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"description\"/> (<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"name\"/>)</$link></span>\n</$list>\n</$set>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n</div>\n</div>\n</$set>\n"
},
"$:/core/ui/EditTemplate": {
"title": "$:/core/ui/EditTemplate",
"text": "\\define delete-edittemplate-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<newFieldNameInputTiddler>] [<newFieldNameSelectionTiddler>] [<newTagNameTiddler>] [<newTagNameInputTiddler>] [<newTagNameSelectionTiddler>] [<typeInputTiddler>] [<typeSelectionTiddler>]\"/>\n\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define cancel-delete-tiddler-actions(message)\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">> newFieldNameInputTiddler=<<qualify \"$:/temp/NewFieldName/input\">> newFieldNameSelectionTiddler=<<qualify \"$:/temp/NewFieldName/selected-item\">> newTagNameInputTiddler=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddler=<<qualify \"$:/temp/NewTagName/selected-item\">> typeInputTiddler=<<qualify \"$:/temp/Type/input\">> typeSelectionTiddler=<<qualify \"$:/temp/Type/selected-item\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" actions=<<cancel-delete-tiddler-actions \"cancel\">>>\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/Buttons/cancel": {
"title": "$:/core/ui/Buttons/cancel",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
"description": "{{$:/language/Buttons/Cancel/Hint}}",
"text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"cancel\">> tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/delete": {
"title": "$:/core/ui/Buttons/delete",
"tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
"caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
"description": "{{$:/language/Buttons/Delete/Hint}}",
"text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"delete\">> tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/save": {
"title": "$:/core/ui/Buttons/save",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
"description": "{{$:/language/Buttons/Save/Hint}}",
"text": "\\define save-tiddler-button()\n\\whitespace trim\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
},
"$:/core/ui/EditorToolbar/bold": {
"title": "$:/core/ui/EditorToolbar/bold",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/bold",
"caption": "{{$:/language/Buttons/Bold/Caption}}",
"description": "{{$:/language/Buttons/Bold/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((bold))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
},
"$:/core/ui/EditorToolbar/clear-dropdown": {
"title": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
},
"$:/core/ui/EditorToolbar/clear": {
"title": "$:/core/ui/EditorToolbar/clear",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/erase",
"caption": "{{$:/language/Buttons/Clear/Caption}}",
"description": "{{$:/language/Buttons/Clear/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/editor-height-dropdown": {
"title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
},
"$:/core/ui/EditorToolbar/editor-height": {
"title": "$:/core/ui/EditorToolbar/editor-height",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/fixed-height",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
"description": "{{$:/language/Buttons/EditorHeight/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
"dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/excise-dropdown": {
"title": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
},
"$:/core/ui/EditorToolbar/excise": {
"title": "$:/core/ui/EditorToolbar/excise",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/excise",
"caption": "{{$:/language/Buttons/Excise/Caption}}",
"description": "{{$:/language/Buttons/Excise/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
"shortcuts": "((excise))",
"dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/heading-1": {
"title": "$:/core/ui/EditorToolbar/heading-1",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-1",
"caption": "{{$:/language/Buttons/Heading1/Caption}}",
"description": "{{$:/language/Buttons/Heading1/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((heading-1))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-2": {
"title": "$:/core/ui/EditorToolbar/heading-2",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-2",
"caption": "{{$:/language/Buttons/Heading2/Caption}}",
"description": "{{$:/language/Buttons/Heading2/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-2))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-3": {
"title": "$:/core/ui/EditorToolbar/heading-3",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-3",
"caption": "{{$:/language/Buttons/Heading3/Caption}}",
"description": "{{$:/language/Buttons/Heading3/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-3))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/core/ui/EditorToolbar/heading-4",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-4",
"caption": "{{$:/language/Buttons/Heading4/Caption}}",
"description": "{{$:/language/Buttons/Heading4/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-4))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/core/ui/EditorToolbar/heading-5",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-5",
"caption": "{{$:/language/Buttons/Heading5/Caption}}",
"description": "{{$:/language/Buttons/Heading5/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-5))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/core/ui/EditorToolbar/heading-6",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-6",
"caption": "{{$:/language/Buttons/Heading6/Caption}}",
"description": "{{$:/language/Buttons/Heading6/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-6))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
},
"$:/core/ui/EditorToolbar/italic": {
"title": "$:/core/ui/EditorToolbar/italic",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/italic",
"caption": "{{$:/language/Buttons/Italic/Caption}}",
"description": "{{$:/language/Buttons/Italic/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((italic))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
},
"$:/core/ui/EditorToolbar/line-width-dropdown": {
"title": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/line-width": {
"title": "$:/core/ui/EditorToolbar/line-width",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/line-width",
"caption": "{{$:/language/Buttons/LineWidth/Caption}}",
"description": "{{$:/language/Buttons/LineWidth/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>\n"
},
"$:/core/ui/EditorToolbar/link-dropdown": {
"title": "$:/core/ui/EditorToolbar/link-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $filter=\"[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\\end\n\n\\define get-focus-selector() [data-tiddler-title=\"$(cssEscapedTitle)$\"] .tc-create-wikitext-link input\n\n\\define cancel-search-actions-inner()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}><$list filter=\"[<searchTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/></$list></$set>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<storeTitle>!has[text]] +[<searchTiddler>!has[text]]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\"><$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"wrap-selection\" prefix=\"\" suffix=\"\"/></$list>\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" searchListState=<<qualify \"$:/temp/link-search/selected-item\">> refreshTitle=<<qualify \"$:/temp/link-search/refresh\">> storeTitle=<<qualify \"$:/temp/link-search/input\">>>\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">> class=\"tc-create-wikitext-link\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>\n\t\tselectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type=\"search\" filterMinLength=\"1\"\n\t\ttag=\"input\" focus=\"true\" class=\"tc-popup-handle\" inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default=\"\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\" />\n</$keyboard>\n</$keyboard>\n<$reveal tag=\"span\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<<cancel-search-actions>><$set name=\"cssEscapedTitle\" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-focus-selector>>/></$set>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$vars>\n\n<$reveal tag=\"div\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n\n{{$:/core/ui/SearchResults}}\n\n</$vars>\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>\n"
},
"$:/core/ui/EditorToolbar/link": {
"title": "$:/core/ui/EditorToolbar/link",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/link",
"caption": "{{$:/language/Buttons/Link/Caption}}",
"description": "{{$:/language/Buttons/Link/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((link))",
"dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/linkify": {
"title": "$:/core/ui/EditorToolbar/linkify",
"caption": "{{$:/language/Buttons/Linkify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Linkify/Hint}}",
"icon": "$:/core/images/linkify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((linkify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-bullet": {
"title": "$:/core/ui/EditorToolbar/list-bullet",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-bullet",
"caption": "{{$:/language/Buttons/ListBullet/Caption}}",
"description": "{{$:/language/Buttons/ListBullet/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-bullet))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-number": {
"title": "$:/core/ui/EditorToolbar/list-number",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-number",
"caption": "{{$:/language/Buttons/ListNumber/Caption}}",
"description": "{{$:/language/Buttons/ListNumber/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-number))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-block": {
"title": "$:/core/ui/EditorToolbar/mono-block",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-block",
"caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
"description": "{{$:/language/Buttons/MonoBlock/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((mono-block))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-line": {
"title": "$:/core/ui/EditorToolbar/mono-line",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-line",
"caption": "{{$:/language/Buttons/MonoLine/Caption}}",
"description": "{{$:/language/Buttons/MonoLine/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((mono-line))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
},
"$:/core/ui/EditorToolbar/more-dropdown": {
"title": "$:/core/ui/EditorToolbar/more-dropdown",
"text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
},
"$:/core/ui/EditorToolbar/more": {
"title": "$:/core/ui/EditorToolbar/more",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/down-arrow",
"caption": "{{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"condition": "[<targetTiddler>]",
"dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/opacity-dropdown": {
"title": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/EditorToolbar/opacity": {
"title": "$:/core/ui/EditorToolbar/opacity",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/opacity",
"caption": "{{$:/language/Buttons/Opacity/Caption}}",
"description": "{{$:/language/Buttons/Opacity/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
},
"$:/core/ui/EditorToolbar/paint-dropdown": {
"title": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/paint": {
"title": "$:/core/ui/EditorToolbar/paint",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/paint",
"caption": "{{$:/language/Buttons/Paint/Caption}}",
"description": "{{$:/language/Buttons/Paint/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
},
"$:/core/ui/EditorToolbar/picture-dropdown": {
"title": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/picture": {
"title": "$:/core/ui/EditorToolbar/picture",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/picture",
"caption": "{{$:/language/Buttons/Picture/Caption}}",
"description": "{{$:/language/Buttons/Picture/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((picture))",
"dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/preview-type-dropdown": {
"title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
"text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/preview-type": {
"title": "$:/core/ui/EditorToolbar/preview-type",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/chevron-down",
"caption": "{{$:/language/Buttons/PreviewType/Caption}}",
"description": "{{$:/language/Buttons/PreviewType/Hint}}",
"condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
"button-classes": "tc-text-editor-toolbar-item-adjunct",
"dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
},
"$:/core/ui/EditorToolbar/preview": {
"title": "$:/core/ui/EditorToolbar/preview",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/preview-open",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/Preview/Caption}}",
"description": "{{$:/language/Buttons/Preview/Hint}}",
"condition": "[<targetTiddler>]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((preview))",
"text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/quote": {
"title": "$:/core/ui/EditorToolbar/quote",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/quote",
"caption": "{{$:/language/Buttons/Quote/Caption}}",
"description": "{{$:/language/Buttons/Quote/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((quote))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
},
"$:/core/ui/EditorToolbar/rotate-left": {
"title": "$:/core/ui/EditorToolbar/rotate-left",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/rotate-left",
"caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
"description": "{{$:/language/Buttons/RotateLeft/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
},
"$:/core/ui/EditorToolbar/size-dropdown": {
"title": "$:/core/ui/EditorToolbar/size-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> × <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
},
"$:/core/ui/EditorToolbar/size": {
"title": "$:/core/ui/EditorToolbar/size",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/size",
"caption": "{{$:/language/Buttons/Size/Caption}}",
"description": "{{$:/language/Buttons/Size/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/stamp-dropdown": {
"title": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
},
"$:/core/ui/EditorToolbar/stamp": {
"title": "$:/core/ui/EditorToolbar/stamp",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/stamp",
"caption": "{{$:/language/Buttons/Stamp/Caption}}",
"description": "{{$:/language/Buttons/Stamp/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
"shortcuts": "((stamp))",
"dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/strikethrough": {
"title": "$:/core/ui/EditorToolbar/strikethrough",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/strikethrough",
"caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
"description": "{{$:/language/Buttons/Strikethrough/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((strikethrough))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
},
"$:/core/ui/EditorToolbar/subscript": {
"title": "$:/core/ui/EditorToolbar/subscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/subscript",
"caption": "{{$:/language/Buttons/Subscript/Caption}}",
"description": "{{$:/language/Buttons/Subscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((subscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
},
"$:/core/ui/EditorToolbar/superscript": {
"title": "$:/core/ui/EditorToolbar/superscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/superscript",
"caption": "{{$:/language/Buttons/Superscript/Caption}}",
"description": "{{$:/language/Buttons/Superscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((superscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
},
"$:/core/ui/EditorToolbar/transcludify": {
"title": "$:/core/ui/EditorToolbar/transcludify",
"caption": "{{$:/language/Buttons/Transcludify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Transcludify/Hint}}",
"icon": "$:/core/images/transcludify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((transcludify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
},
"$:/core/ui/EditorToolbar/underline": {
"title": "$:/core/ui/EditorToolbar/underline",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/underline",
"caption": "{{$:/language/Buttons/Underline/Caption}}",
"description": "{{$:/language/Buttons/Underline/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((underline))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
},
"$:/core/Filters/AllTags": {
"title": "$:/core/Filters/AllTags",
"tags": "$:/tags/Filter",
"filter": "[tags[]!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTags}}",
"text": ""
},
"$:/core/Filters/AllTiddlers": {
"title": "$:/core/Filters/AllTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTiddlers}}",
"text": ""
},
"$:/core/Filters/Drafts": {
"title": "$:/core/Filters/Drafts",
"tags": "$:/tags/Filter",
"filter": "[has[draft.of]sort[title]]",
"description": "{{$:/language/Filters/Drafts}}",
"text": ""
},
"$:/core/Filters/Missing": {
"title": "$:/core/Filters/Missing",
"tags": "$:/tags/Filter",
"filter": "[all[missing]sort[title]]",
"description": "{{$:/language/Filters/Missing}}",
"text": ""
},
"$:/core/Filters/Orphans": {
"title": "$:/core/Filters/Orphans",
"tags": "$:/tags/Filter",
"filter": "[all[orphans]sort[title]]",
"description": "{{$:/language/Filters/Orphans}}",
"text": ""
},
"$:/core/Filters/OverriddenShadowTiddlers": {
"title": "$:/core/Filters/OverriddenShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[shadow]]",
"description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentSystemTiddlers": {
"title": "$:/core/Filters/RecentSystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentSystemTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentTiddlers": {
"title": "$:/core/Filters/RecentTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentTiddlers}}",
"text": ""
},
"$:/core/Filters/SessionTiddlers": {
"title": "$:/core/Filters/SessionTiddlers",
"tags": "$:/tags/Filter",
"filter": "[haschanged[]]",
"description": "{{$:/language/Filters/SessionTiddlers}}",
"text": ""
},
"$:/core/Filters/ShadowTiddlers": {
"title": "$:/core/Filters/ShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[all[shadows]sort[title]]",
"description": "{{$:/language/Filters/ShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/StoryList": {
"title": "$:/core/Filters/StoryList",
"tags": "$:/tags/Filter",
"filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
"description": "{{$:/language/Filters/StoryList}}",
"text": ""
},
"$:/core/Filters/SystemTags": {
"title": "$:/core/Filters/SystemTags",
"tags": "$:/tags/Filter",
"filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTags}}",
"text": ""
},
"$:/core/Filters/SystemTiddlers": {
"title": "$:/core/Filters/SystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTiddlers}}",
"text": ""
},
"$:/core/Filters/TypedTiddlers": {
"title": "$:/core/Filters/TypedTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Filters/TypedTiddlers}}",
"text": ""
},
"$:/core/ui/ImportListing": {
"title": "$:/core/ui/ImportListing",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField() message-$(payloadTiddler)$\n\n\\define payloadTitleFilter() [<currentTiddler>get<renameField>minlength[1]else<payloadTiddler>]\n\n\\define overWriteWarning()\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\">\n<$text text={{{[subfilter<payloadTitleFilter>!is[tiddler]then[]] ~[<lingo-base>addsuffix[Listing/Rename/OverwriteWarning]get[text]]}}}/>\n</$list>\n\\end\n\n\\define selectionField() selection-$(payloadTiddler)$\n\n\\define renameField() rename-$(payloadTiddler)$\n\n\\define suppressedField() suppressed-$(payloadTiddler)$\n\n\\define newImportTitleTiddler() $:/temp/NewImportTitle-$(payloadTiddler)$\n\n\\define previewPopupState() $(currentTiddler)$!!popup-$(payloadTiddler)$\n\n\\define renameFieldState() $(currentTiddler)$!!state-rename-$(payloadTiddler)$\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table class=\"tc-import-table\">\n<tbody>\n<tr>\n<th align=\"left\">\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr class={{{[<currentTiddler>has<suppressedField>then[tc-row-disabled]] ~[subfilter<payloadTitleFilter>is[tiddler]then[tc-row-warning]] }}}>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\" tag=\"div\" class=\"tc-flex\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown tc-flex-grow-1 tc-word-break\" set=<<previewPopupState>> setTo=\"yes\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}>\n<span class=\"tc-small-gap-right\">{{$:/core/images/right-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"yes\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/Tooltip]get[text]]}}}>{{$:/core/images/edit-button}}</$button></$list>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n<span class=\"tc-small-gap-right\">{{$:/core/images/down-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$text text={{{[<lingo-base>addsuffix[Listing/Rename/Prompt]get[text]]}}}/>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n<<overWriteWarning>>\n</td>\n</tr>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"tr\">\n<td colspan=\"3\">\n<div class=\"tc-flex\">\n<$edit-text tiddler=<<newImportTitleTiddler>> default={{{[subfilter<payloadTitleFilter>]}}} tag=\"input\" class=\"tc-import-rename tc-flex-grow-1\"/><span class=\"tc-small-gap-left\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/CancelRename]get[text]]}}}>{{$:/core/images/close-button}}<$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button><span class=\"tc-small-gap-right\"/></span><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/ConfirmRename]get[text]]}}}>{{$:/core/images/done-button}}<$action-setfield $field=<<renameField>> $value={{{[<newImportTitleTiddler>get[text]minlength[1]else<payloadTiddler>]}}} /><$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button>\n</div>\n</td>\n</$reveal>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Diff": {
"title": "$:/core/ui/ImportPreviews/Diff",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Diff}}",
"text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
},
"$:/core/ui/ImportPreviews/DiffFields": {
"title": "$:/core/ui/ImportPreviews/DiffFields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
"text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
},
"$:/core/ui/ImportPreviews/Fields": {
"title": "$:/core/ui/ImportPreviews/Fields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Fields}}",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Text": {
"title": "$:/core/ui/ImportPreviews/Text",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Text}}",
"text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
},
"$:/core/ui/ImportPreviews/TextRaw": {
"title": "$:/core/ui/ImportPreviews/TextRaw",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
"text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
},
"$:/core/ui/KeyboardShortcuts/advanced-search": {
"title": "$:/core/ui/KeyboardShortcuts/advanced-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((advanced-search))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/>\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/change-sidebar-layout": {
"title": "$:/core/ui/KeyboardShortcuts/change-sidebar-layout",
"tags": "$:/tags/KeyboardShortcut",
"key": "((change-sidebar-layout))",
"text": "<$list filter=\"[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fixed-fluid]]\" \nemptyMessage=\"\"\"<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fixed-fluid\"/>\"\"\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fluid-fixed\"/>\n</$list>\n"
},
"$:/core/ui/KeyboardShortcuts/new-image": {
"title": "$:/core/ui/KeyboardShortcuts/new-image",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-image))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-journal": {
"title": "$:/core/ui/KeyboardShortcuts/new-journal",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-journal))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-tiddler": {
"title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-tiddler))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/save-wiki": {
"title": "$:/core/ui/KeyboardShortcuts/save-wiki",
"tags": "$:/tags/KeyboardShortcut",
"key": "((save-wiki))",
"text": "<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n"
},
"$:/core/ui/KeyboardShortcuts/sidebar-search": {
"title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((sidebar-search))",
"text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
},
"$:/core/ui/KeyboardShortcuts/switcher": {
"title": "$:/core/ui/KeyboardShortcuts/switcher",
"tags": "$:/tags/KeyboardShortcut",
"key": "((layout-switcher))",
"text": "<$action-sendmessage $message=\"tm-show-switcher\" switch=\"layout\"/>"
},
"$:/core/ui/KeyboardShortcuts/toggle-sidebar": {
"title": "$:/core/ui/KeyboardShortcuts/toggle-sidebar",
"tags": "$:/tags/KeyboardShortcut",
"key": "((toggle-sidebar))",
"text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
},
"$:/snippets/LayoutSwitcher": {
"title": "$:/snippets/LayoutSwitcher",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/LayoutSwitcher/Caption}}",
"text": "<$linkcatcher to=\"$:/layout\">\n<div class=\"tc-chooser\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Layout]] [[$:/core/ui/PageTemplate]] +[!is[draft]sort[name]]\">\n<$list filter=\"[{$:/layout}!has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/layout}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n\"\"\">\n<$set name=\"cls\" filter=\"[all[current]field:title[$:/core/ui/PageTemplate]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n</$list>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/core/ui/ListItemTemplate": {
"title": "$:/core/ui/ListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
},
"$:/Manager/ItemMain/Fields": {
"title": "$:/Manager/ItemMain/Fields",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/Fields}}",
"text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/Manager/ItemMain/RawText": {
"title": "$:/Manager/ItemMain/RawText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/RawText}}",
"text": "<pre><code><$view/></code></pre>\n"
},
"$:/Manager/ItemMain/WikifiedText": {
"title": "$:/Manager/ItemMain/WikifiedText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/WikifiedText}}",
"text": "<$transclude mode=\"block\"/>\n"
},
"$:/Manager/ItemSidebar/Colour": {
"title": "$:/Manager/ItemSidebar/Colour",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Colour}}",
"text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Icon": {
"title": "$:/Manager/ItemSidebar/Icon",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Icon}}",
"text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tags": {
"title": "$:/Manager/ItemSidebar/Tags",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tags}}",
"text": "\\whitespace trim\n\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\" storyview=\"pop\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</$fieldmangler>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tools": {
"title": "$:/Manager/ItemSidebar/Tools",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tools}}",
"text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
},
"$:/Manager": {
"title": "$:/Manager",
"icon": "$:/core/images/list",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
},
"$:/core/ui/MissingTemplate": {
"title": "$:/core/ui/MissingTemplate",
"text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
},
"$:/core/ui/MoreSideBar/All": {
"title": "$:/core/ui/MoreSideBar/All",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/All/Caption}}",
"text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Drafts": {
"title": "$:/core/ui/MoreSideBar/Drafts",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Drafts/Caption}}",
"text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Explorer": {
"title": "$:/core/ui/MoreSideBar/Explorer",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Explorer/Caption}}",
"text": "<<tree \"$:/\">>\n"
},
"$:/core/ui/MoreSideBar/Missing": {
"title": "$:/core/ui/MoreSideBar/Missing",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Missing/Caption}}",
"text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Orphans": {
"title": "$:/core/ui/MoreSideBar/Orphans",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Orphans/Caption}}",
"text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" default=\"$:/core/ui/MoreSideBar/Plugins/Plugins\" explicitState=\"$:/state/tab-1163638994\"/>\n"
},
"$:/core/ui/MoreSideBar/Recent": {
"title": "$:/core/ui/MoreSideBar/Recent",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/MoreSideBar/Shadows": {
"title": "$:/core/ui/MoreSideBar/Shadows",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Shadows/Caption}}",
"text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/System": {
"title": "$:/core/ui/MoreSideBar/System",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/System/Caption}}",
"text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Tags": {
"title": "$:/core/ui/MoreSideBar/Tags",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Tags/Caption}}",
"text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
},
"$:/core/ui/MoreSideBar/Types": {
"title": "$:/core/ui/MoreSideBar/Types",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Types/Caption}}",
"text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Languages": {
"title": "$:/core/ui/MoreSideBar/Plugins/Languages",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Theme": {
"title": "$:/core/ui/MoreSideBar/Plugins/Theme",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/Buttons/advanced-search": {
"title": "$:/core/ui/Buttons/advanced-search",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
"description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
"text": "\\whitespace trim\n\\define advanced-search-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<advanced-search-button>>>\n<<advanced-search-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/close-all": {
"title": "$:/core/ui/Buttons/close-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
"description": "{{$:/language/Buttons/CloseAll/Hint}}",
"text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/control-panel": {
"title": "$:/core/ui/Buttons/control-panel",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
"description": "{{$:/language/Buttons/ControlPanel/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/encryption": {
"title": "$:/core/ui/Buttons/encryption",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
"description": "{{$:/language/Buttons/Encryption/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/export-page": {
"title": "$:/core/ui/Buttons/export-page",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
"description": "{{$:/language/Buttons/ExportPage/Hint}}",
"text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
},
"$:/core/ui/Buttons/fold-all": {
"title": "$:/core/ui/Buttons/fold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
"description": "{{$:/language/Buttons/FoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/full-screen": {
"title": "$:/core/ui/Buttons/full-screen",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
"description": "{{$:/language/Buttons/FullScreen/Hint}}",
"text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/home": {
"title": "$:/core/ui/Buttons/home",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
"description": "{{$:/language/Buttons/Home/Hint}}",
"text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/import": {
"title": "$:/core/ui/Buttons/import",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
"description": "{{$:/language/Buttons/Import/Hint}}",
"text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
},
"$:/core/ui/Buttons/language": {
"title": "$:/core/ui/Buttons/language",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
"description": "{{$:/language/Buttons/Language/Hint}}",
"text": "\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/manager": {
"title": "$:/core/ui/Buttons/manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
"description": "{{$:/language/Buttons/Manager/Hint}}",
"text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/more-page-actions": {
"title": "$:/core/ui/Buttons/more-page-actions",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-image": {
"title": "$:/core/ui/Buttons/new-image",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
"description": "{{$:/language/Buttons/NewImage/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/new-journal": {
"title": "$:/core/ui/Buttons/new-journal",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
"description": "{{$:/language/Buttons/NewJournal/Hint}}",
"text": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
},
"$:/core/ui/Buttons/new-tiddler": {
"title": "$:/core/ui/Buttons/new-tiddler",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
"description": "{{$:/language/Buttons/NewTiddler/Hint}}",
"text": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/palette": {
"title": "$:/core/ui/Buttons/palette",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
"description": "{{$:/language/Buttons/Palette/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/print": {
"title": "$:/core/ui/Buttons/print",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
"description": "{{$:/language/Buttons/Print/Hint}}",
"text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/refresh": {
"title": "$:/core/ui/Buttons/refresh",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
"description": "{{$:/language/Buttons/Refresh/Hint}}",
"text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save-wiki": {
"title": "$:/core/ui/Buttons/save-wiki",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
"description": "{{$:/language/Buttons/SaveWiki/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
},
"$:/core/ui/Buttons/storyview": {
"title": "$:/core/ui/Buttons/storyview",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
"description": "{{$:/language/Buttons/StoryView/Hint}}",
"text": "\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/tag-manager": {
"title": "$:/core/ui/Buttons/tag-manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
"description": "{{$:/language/Buttons/TagManager/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/theme": {
"title": "$:/core/ui/Buttons/theme",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
"description": "{{$:/language/Buttons/Theme/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/timestamp": {
"title": "$:/core/ui/Buttons/timestamp",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
"description": "{{$:/language/Buttons/Timestamp/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/unfold-all": {
"title": "$:/core/ui/Buttons/unfold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
"description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/PageTemplate/pagecontrols": {
"title": "$:/core/ui/PageTemplate/pagecontrols",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
},
"$:/core/ui/PageStylesheet": {
"title": "$:/core/ui/PageStylesheet",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/PageTemplate/alerts": {
"title": "$:/core/ui/PageTemplate/alerts",
"tags": "$:/tags/PageTemplate",
"text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
},
"$:/core/ui/PageTemplate/drafts": {
"title": "$:/core/ui/PageTemplate/drafts",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/PageTemplate/pluginreloadwarning": {
"title": "$:/core/ui/PageTemplate/pluginreloadwarning",
"tags": "$:/tags/PageTemplate",
"text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/PageTemplate/sidebar": {
"title": "$:/core/ui/PageTemplate/sidebar",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
},
"$:/core/ui/PageTemplate/story": {
"title": "$:/core/ui/PageTemplate/story",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
},
"$:/core/ui/PageTemplate/topleftbar": {
"title": "$:/core/ui/PageTemplate/topleftbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate": {
"title": "$:/core/ui/PageTemplate",
"name": "{{$:/language/PageTemplate/Name}}",
"description": "{{$:/language/PageTemplate/Description}}",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$vars>\n"
},
"$:/PaletteManager": {
"title": "$:/PaletteManager",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}} aria-label=<<lingo Delete/Hint>> class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"><span class=\"tc-small-gap-left\"><<lingo Names/External/Show>></span></$checkbox>\n\n<<palette-manager-table>>\n"
},
"$:/core/ui/PluginInfo": {
"title": "$:/core/ui/PluginInfo",
"text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
},
"$:/core/ui/PluginInfo/Default/contents": {
"title": "$:/core/ui/PluginInfo/Default/contents",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
},
"$:/core/ui/PluginListItemTemplate": {
"title": "$:/core/ui/PluginListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
},
"$:/core/ui/RootTemplate": {
"title": "$:/core/ui/RootTemplate",
"text": "<$transclude tiddler={{{ [{$:/layout}has[text]] ~[[$:/core/ui/PageTemplate]] }}} mode=\"inline\"/>\n\n"
},
"$:/core/ui/SearchResults": {
"title": "$:/core/ui/SearchResults",
"text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/sidebar\"/>\n\n</$list>\n\n</div>\n"
},
"$:/core/ui/SideBar/More": {
"title": "$:/core/ui/SideBar/More",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/More/Caption}}",
"text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" explicitState=\"$:/state/tab/moresidebar-1850697562\"/>\n</div>\n"
},
"$:/core/ui/SideBar/Open": {
"title": "$:/core/ui/SideBar/Open",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Open/Caption}}",
"text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini tc-small-gap-right\">{{$:/core/images/close-button}}</$button><$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"
},
"$:/core/ui/SideBar/Recent": {
"title": "$:/core/ui/SideBar/Recent",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/SideBar/Tools": {
"title": "$:/core/ui/SideBar/Tools",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/SideBarLists": {
"title": "$:/core/ui/SideBarLists",
"text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
},
"$:/core/ui/SideBarSegments/page-controls": {
"title": "$:/core/ui/SideBarSegments/page-controls",
"tags": "$:/tags/SideBarSegment",
"text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
},
"$:/core/ui/SideBarSegments/search": {
"title": "$:/core/ui/SideBarSegments/search",
"tags": "$:/tags/SideBarSegment",
"text": "\\whitespace trim\n\n\\define count-popup-button()\n\\whitespace trim\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp=\"limit\\[\\d+\\]\">\n<$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$vars>\n</$vars>\n</$list>\n</$button>\n\\end\n\n\\define search-results-list()\n\\whitespace trim\n<$vars userInput={{$(searchTiddler)$}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$tiddler tiddler=<<configTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$tiddler>\n\n</$list>\n</$vars>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<searchTiddler>get[text]!match{$:/temp/search}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/search]] [<searchTiddler>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=\"$:/temp/search\" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler=\"$:/temp/search/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define advanced-search-actions() <$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search/input}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to=\"$:/AdvancedSearch\"/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/><$action-deletetiddler $filter=\"$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]\"/>\n\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$vars editTiddler=\"$:/temp/search\" searchTiddler=\"$:/temp/search/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">>>\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"((advanced-search-sidebar))\" actions=<<advanced-search-actions>>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>> \n\t\tselectionStateTitle=<<searchListState>> refreshTitle=\"$:/temp/search/refresh\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> \n\t\tclass=\"tc-popup-handle\" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups=\"yes\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<<advanced-search-actions>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>><$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n{{$:/core/images/close-button}}\n</$button>\n<<count-popup-button>>\n</$reveal>\n<$reveal state=<<searchTiddler>> type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<<search-results-list>>\n\n</$reveal>\n\n</$reveal>\n\n</$vars>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-subtitle": {
"title": "$:/core/ui/SideBarSegments/site-subtitle",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-title": {
"title": "$:/core/ui/SideBarSegments/site-title",
"tags": "$:/tags/SideBarSegment",
"text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
},
"$:/core/ui/SideBarSegments/tabs": {
"title": "$:/core/ui/SideBarSegments/tabs",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\" explicitState=\"$:/state/tab/sidebar--595412856\"/>\n\n</div>\n"
},
"$:/core/ui/SwitcherModal": {
"title": "$:/core/ui/SwitcherModal",
"subtitle": "<$text text={{{[<switch>lookup[$:/language/Switcher/Subtitle/]]}}}/>",
"class": "tc-modal-centered",
"text": "<$tiddler tiddler={{{[<switch>lookup[$:/config/SwitcherTargets/]]}}}>\n\n\n<$transclude/>\n\n\n</$tiddler>"
},
"$:/TagManager": {
"title": "$:/TagManager",
"icon": "$:/core/images/tag-button",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
},
"$:/core/ui/TagPickerTagTemplate": {
"title": "$:/core/ui/TagPickerTagTemplate",
"text": "\\whitespace trim\n<$button class=<<button-classes>> tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$list filter=\"[<saveTiddler>minlength[1]]\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter=\"[<tag>]\"/>\n</$list>\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>> preventScroll=\"true\"/>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$list filter=\"[<refreshTitle>minlength[1]]\">\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n<<actions>>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<$wikify name=\"foregroundColor\" text=\"\"\"<$macrocall $name=\"contrastcolour\" target={{!!color}} fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>\"\"\">\n<span class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n<$transclude tiddler={{!!icon}}/><$view field=\"title\" format=\"text\"/>\n</span>\n</$wikify>\n</$set>\n</$button>\n"
},
"$:/core/ui/TagTemplate": {
"title": "$:/core/ui/TagTemplate",
"text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
},
"$:/core/ui/TiddlerFieldTemplate": {
"title": "$:/core/ui/TiddlerFieldTemplate",
"text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
},
"$:/core/ui/TiddlerFields": {
"title": "$:/core/ui/TiddlerFields",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
},
"$:/core/ui/TiddlerInfo/Advanced": {
"title": "$:/core/ui/TiddlerInfo/Advanced",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Fields": {
"title": "$:/core/ui/TiddlerInfo/Fields",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
"text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
},
"$:/core/ui/TiddlerInfo/List": {
"title": "$:/core/ui/TiddlerInfo/List",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/List/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Listed": {
"title": "$:/core/ui/TiddlerInfo/Listed",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/References": {
"title": "$:/core/ui/TiddlerInfo/References",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/References/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
},
"$:/core/ui/TiddlerInfo/Tagging": {
"title": "$:/core/ui/TiddlerInfo/Tagging",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Tools": {
"title": "$:/core/ui/TiddlerInfo/Tools",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/TiddlerInfo": {
"title": "$:/core/ui/TiddlerInfo",
"text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>\n"
},
"$:/core/ui/TopBar/menu": {
"title": "$:/core/ui/TopBar/menu",
"tags": "$:/tags/TopRightBar",
"text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible tc-hide-sidebar-btn\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible tc-show-sidebar-btn\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"
},
"$:/core/ui/UntaggedTemplate": {
"title": "$:/core/ui/UntaggedTemplate",
"text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/body": {
"title": "$:/core/ui/ViewTemplate/body",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/classic": {
"title": "$:/core/ui/ViewTemplate/classic",
"tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/import": {
"title": "$:/core/ui/ViewTemplate/import",
"tags": "$:/tags/ViewTemplate",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ViewTemplate/plugin": {
"title": "$:/core/ui/ViewTemplate/plugin",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-plugin-info\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n</$reveal>"
},
"$:/core/ui/ViewTemplate/subtitle": {
"title": "$:/core/ui/ViewTemplate/subtitle",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/tags": {
"title": "$:/core/ui/ViewTemplate/tags",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/title": {
"title": "$:/core/ui/ViewTemplate/title",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<$list filter=\"[all[current]has[icon]]~[[$:/config/DefaultTiddlerIcon]has[text]]\">\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$list>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
},
"$:/core/ui/ViewTemplate/unfold": {
"title": "$:/core/ui/ViewTemplate/unfold",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate": {
"title": "$:/core/ui/ViewTemplate",
"text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\define cancel-delete-tiddler-actions(message) <$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"
},
"$:/core/ui/Buttons/clone": {
"title": "$:/core/ui/Buttons/clone",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
"description": "{{$:/language/Buttons/Clone/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close-others": {
"title": "$:/core/ui/Buttons/close-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
"description": "{{$:/language/Buttons/CloseOthers/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close": {
"title": "$:/core/ui/Buttons/close",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
"description": "{{$:/language/Buttons/Close/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/edit": {
"title": "$:/core/ui/Buttons/edit",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
"description": "{{$:/language/Buttons/Edit/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/export-tiddler": {
"title": "$:/core/ui/Buttons/export-tiddler",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
"description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
"text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
},
"$:/core/ui/Buttons/fold-bar": {
"title": "$:/core/ui/Buttons/fold-bar",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
"description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
"text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
},
"$:/core/ui/Buttons/fold-others": {
"title": "$:/core/ui/Buttons/fold-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
"description": "{{$:/language/Buttons/FoldOthers/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/fold": {
"title": "$:/core/ui/Buttons/fold",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
"description": "{{$:/language/Buttons/Fold/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/info": {
"title": "$:/core/ui/Buttons/info",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
"description": "{{$:/language/Buttons/Info/Hint}}",
"text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
},
"$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/core/ui/Buttons/more-tiddler-actions",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-here": {
"title": "$:/core/ui/Buttons/new-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
"description": "{{$:/language/Buttons/NewHere/Hint}}",
"text": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
},
"$:/core/ui/Buttons/new-journal-here": {
"title": "$:/core/ui/Buttons/new-journal-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
"description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
"text": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"
},
"$:/core/ui/Buttons/open-window": {
"title": "$:/core/ui/Buttons/open-window",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
"description": "{{$:/language/Buttons/OpenWindow/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permalink": {
"title": "$:/core/ui/Buttons/permalink",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
"description": "{{$:/language/Buttons/Permalink/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permaview": {
"title": "$:/core/ui/Buttons/permaview",
"tags": "$:/tags/ViewToolbar $:/tags/PageControls",
"caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
"description": "{{$:/language/Buttons/Permaview/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/DefaultTiddlers": {
"title": "$:/DefaultTiddlers",
"text": "GettingStarted\n"
},
"$:/temp/advancedsearch": {
"title": "$:/temp/advancedsearch",
"text": ""
},
"$:/snippets/allfields": {
"title": "$:/snippets/allfields",
"text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
},
"$:/config/AnimationDuration": {
"title": "$:/config/AnimationDuration",
"text": "400"
},
"$:/config/AutoFocus": {
"title": "$:/config/AutoFocus",
"text": "title"
},
"$:/config/AutoSave": {
"title": "$:/config/AutoSave",
"text": "yes"
},
"$:/config/BitmapEditor/Colour": {
"title": "$:/config/BitmapEditor/Colour",
"text": "#444"
},
"$:/config/BitmapEditor/ImageSizes": {
"title": "$:/config/BitmapEditor/ImageSizes",
"text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
},
"$:/config/BitmapEditor/LineWidth": {
"title": "$:/config/BitmapEditor/LineWidth",
"text": "3px"
},
"$:/config/BitmapEditor/LineWidths": {
"title": "$:/config/BitmapEditor/LineWidths",
"text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
},
"$:/config/BitmapEditor/Opacities": {
"title": "$:/config/BitmapEditor/Opacities",
"text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
},
"$:/config/BitmapEditor/Opacity": {
"title": "$:/config/BitmapEditor/Opacity",
"text": "1.0"
},
"$:/config/DefaultMoreSidebarTab": {
"title": "$:/config/DefaultMoreSidebarTab",
"text": "$:/core/ui/MoreSideBar/Tags"
},
"$:/config/DefaultSidebarTab": {
"title": "$:/config/DefaultSidebarTab",
"text": "$:/core/ui/SideBar/Open"
},
"$:/config/DownloadSaver/AutoSave": {
"title": "$:/config/DownloadSaver/AutoSave",
"text": "no"
},
"$:/config/Drafts/TypingTimeout": {
"title": "$:/config/Drafts/TypingTimeout",
"text": "400"
},
"$:/config/EditMode/fieldname-filter": {
"title": "$:/config/EditMode/fieldname-filter",
"first-search-filter": "[!is[shadow]!is[system]fields[]search:title<userInput>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type",
"second-search-filter": "[fields[]search:title<userInput>sort[]] -[!is[shadow]!is[system]fields[]]"
},
"$:/config/EditTabIndex": {
"title": "$:/config/EditTabIndex",
"text": "1\n"
},
"$:/config/EditTemplateFields/Visibility/title": {
"title": "$:/config/EditTemplateFields/Visibility/title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/tags": {
"title": "$:/config/EditTemplateFields/Visibility/tags",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/text": {
"title": "$:/config/EditTemplateFields/Visibility/text",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/creator": {
"title": "$:/config/EditTemplateFields/Visibility/creator",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/created": {
"title": "$:/config/EditTemplateFields/Visibility/created",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modified": {
"title": "$:/config/EditTemplateFields/Visibility/modified",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modifier": {
"title": "$:/config/EditTemplateFields/Visibility/modifier",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/type": {
"title": "$:/config/EditTemplateFields/Visibility/type",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.title": {
"title": "$:/config/EditTemplateFields/Visibility/draft.title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.of": {
"title": "$:/config/EditTemplateFields/Visibility/draft.of",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/revision": {
"title": "$:/config/EditTemplateFields/Visibility/revision",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/bag": {
"title": "$:/config/EditTemplateFields/Visibility/bag",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
"text": "hide"
},
"$:/config/EditorTypeMappings/image/gif": {
"title": "$:/config/EditorTypeMappings/image/gif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/webp": {
"title": "$:/config/EditorTypeMappings/image/webp",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heic": {
"title": "$:/config/EditorTypeMappings/image/heic",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heif": {
"title": "$:/config/EditorTypeMappings/image/heif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpeg": {
"title": "$:/config/EditorTypeMappings/image/jpeg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpg": {
"title": "$:/config/EditorTypeMappings/image/jpg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/png": {
"title": "$:/config/EditorTypeMappings/image/png",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/x-icon": {
"title": "$:/config/EditorTypeMappings/image/x-icon",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
"title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
"text": "text"
},
"$:/config/Manager/Show": {
"title": "$:/config/Manager/Show",
"text": "tiddlers"
},
"$:/config/Manager/Filter": {
"title": "$:/config/Manager/Filter",
"text": ""
},
"$:/config/Manager/Order": {
"title": "$:/config/Manager/Order",
"text": "forward"
},
"$:/config/Manager/Sort": {
"title": "$:/config/Manager/Sort",
"text": "title"
},
"$:/config/Manager/System": {
"title": "$:/config/Manager/System",
"text": "system"
},
"$:/config/Manager/Tag": {
"title": "$:/config/Manager/Tag",
"text": ""
},
"$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
"title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
"text": "hide"
},
"$:/config/MissingLinks": {
"title": "$:/config/MissingLinks",
"text": "yes"
},
"$:/config/Navigation/UpdateAddressBar": {
"title": "$:/config/Navigation/UpdateAddressBar",
"text": "no"
},
"$:/config/Navigation/UpdateHistory": {
"title": "$:/config/Navigation/UpdateHistory",
"text": "no"
},
"$:/config/NewImageType": {
"title": "$:/config/NewImageType",
"text": "jpeg"
},
"$:/config/OfficialPluginLibrary": {
"title": "$:/config/OfficialPluginLibrary",
"tags": "$:/tags/PluginLibrary",
"url": "https://tiddlywiki.com/library/v5.1.23/index.html",
"caption": "{{$:/language/OfficialPluginLibrary}}",
"text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
},
"$:/config/Navigation/openLinkFromInsideRiver": {
"title": "$:/config/Navigation/openLinkFromInsideRiver",
"text": "below"
},
"$:/config/Navigation/openLinkFromOutsideRiver": {
"title": "$:/config/Navigation/openLinkFromOutsideRiver",
"text": "top"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
"text": "hide"
},
"$:/config/Performance/Instrumentation": {
"title": "$:/config/Performance/Instrumentation",
"text": "no"
},
"$:/config/RegisterPluginType/plugin": {
"title": "$:/config/RegisterPluginType/plugin",
"text": "yes"
},
"$:/config/RegisterPluginType/theme": {
"title": "$:/config/RegisterPluginType/theme",
"text": "no"
},
"$:/config/RegisterPluginType/language": {
"title": "$:/config/RegisterPluginType/language",
"text": "no"
},
"$:/config/RegisterPluginType/info": {
"title": "$:/config/RegisterPluginType/info",
"text": "yes"
},
"$:/config/RegisterPluginType/import": {
"title": "$:/config/RegisterPluginType/import",
"text": "no"
},
"$:/config/SaveWikiButton/Template": {
"title": "$:/config/SaveWikiButton/Template",
"text": "$:/core/save/all"
},
"$:/config/SaverFilter": {
"title": "$:/config/SaverFilter",
"text": "[all[]] -[prefix[$:/HistoryList]] -[prefix[$:/StoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
},
"$:/config/Search/AutoFocus": {
"title": "$:/config/Search/AutoFocus",
"text": "true"
},
"$:/config/Search/MinLength": {
"title": "$:/config/Search/MinLength",
"text": "3"
},
"$:/config/SearchResults/Default": {
"title": "$:/config/SearchResults/Default",
"text": "$:/core/ui/DefaultSearchResultList"
},
"$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
"title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
"text": "yes"
},
"$:/config/ShortcutInfo/add-field": {
"title": "$:/config/ShortcutInfo/add-field",
"text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search": {
"title": "$:/config/ShortcutInfo/advanced-search",
"text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search-sidebar": {
"title": "$:/config/ShortcutInfo/advanced-search-sidebar",
"text": "{{$:/language/Shortcuts/Input/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/bold": {
"title": "$:/config/ShortcutInfo/bold",
"text": "{{$:/language/Buttons/Bold/Hint}}"
},
"$:/config/ShortcutInfo/cancel-edit-tiddler": {
"title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
"text": "{{$:/language/Buttons/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/change-sidebar-layout": {
"title": "$:/config/ShortcutInfo/change-sidebar-layout",
"text": "{{$:/language/Shortcuts/SidebarLayout/Hint}}"
},
"$:/config/ShortcutInfo/delete-field": {
"title": "$:/config/ShortcutInfo/delete-field",
"text": "{{$:/language/EditTemplate/Field/Remove/Hint}}"
},
"$:/config/ShortcutInfo/excise": {
"title": "$:/config/ShortcutInfo/excise",
"text": "{{$:/language/Buttons/Excise/Hint}}"
},
"$:/config/ShortcutInfo/heading-1": {
"title": "$:/config/ShortcutInfo/heading-1",
"text": "{{$:/language/Buttons/Heading1/Hint}}"
},
"$:/config/ShortcutInfo/heading-2": {
"title": "$:/config/ShortcutInfo/heading-2",
"text": "{{$:/language/Buttons/Heading2/Hint}}"
},
"$:/config/ShortcutInfo/heading-3": {
"title": "$:/config/ShortcutInfo/heading-3",
"text": "{{$:/language/Buttons/Heading3/Hint}}"
},
"$:/config/ShortcutInfo/heading-4": {
"title": "$:/config/ShortcutInfo/heading-4",
"text": "{{$:/language/Buttons/Heading4/Hint}}"
},
"$:/config/ShortcutInfo/heading-5": {
"title": "$:/config/ShortcutInfo/heading-5",
"text": "{{$:/language/Buttons/Heading5/Hint}}"
},
"$:/config/ShortcutInfo/heading-6": {
"title": "$:/config/ShortcutInfo/heading-6",
"text": "{{$:/language/Buttons/Heading6/Hint}}"
},
"$:/config/ShortcutInfo/input-accept": {
"title": "$:/config/ShortcutInfo/input-accept",
"text": "{{$:/language/Shortcuts/Input/Accept/Hint}}"
},
"$:/config/ShortcutInfo/input-accept-variant": {
"title": "$:/config/ShortcutInfo/input-accept-variant",
"text": "{{$:/language/Shortcuts/Input/AcceptVariant/Hint}}"
},
"$:/config/ShortcutInfo/input-cancel": {
"title": "$:/config/ShortcutInfo/input-cancel",
"text": "{{$:/language/Shortcuts/Input/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/input-down": {
"title": "$:/config/ShortcutInfo/input-down",
"text": "{{$:/language/Shortcuts/Input/Down/Hint}}"
},
"$:/config/ShortcutInfo/input-tab-left": {
"title": "$:/config/ShortcutInfo/input-tab-left",
"text": "{{$:/language/Shortcuts/Input/Tab-Left/Hint}}"
},
"$:/config/ShortcutInfo/input-tab-right": {
"title": "$:/config/ShortcutInfo/input-tab-right",
"text": "{{$:/language/Shortcuts/Input/Tab-Right/Hint}}"
},
"$:/config/ShortcutInfo/input-up": {
"title": "$:/config/ShortcutInfo/input-up",
"text": "{{$:/language/Shortcuts/Input/Up/Hint}}"
},
"$:/config/ShortcutInfo/italic": {
"title": "$:/config/ShortcutInfo/italic",
"text": "{{$:/language/Buttons/Italic/Hint}}"
},
"$:/config/ShortcutInfo/layout-switcher": {
"title": "$:/config/ShortcutInfo/layout-switcher",
"text": "{{$:/language/LayoutSwitcher/Description}}"
},
"$:/config/ShortcutInfo/link": {
"title": "$:/config/ShortcutInfo/link",
"text": "{{$:/language/Buttons/Link/Hint}}"
},
"$:/config/ShortcutInfo/linkify": {
"title": "$:/config/ShortcutInfo/linkify",
"text": "{{$:/language/Buttons/Linkify/Hint}}"
},
"$:/config/ShortcutInfo/list-bullet": {
"title": "$:/config/ShortcutInfo/list-bullet",
"text": "{{$:/language/Buttons/ListBullet/Hint}}"
},
"$:/config/ShortcutInfo/list-number": {
"title": "$:/config/ShortcutInfo/list-number",
"text": "{{$:/language/Buttons/ListNumber/Hint}}"
},
"$:/config/ShortcutInfo/mono-block": {
"title": "$:/config/ShortcutInfo/mono-block",
"text": "{{$:/language/Buttons/MonoBlock/Hint}}"
},
"$:/config/ShortcutInfo/mono-line": {
"title": "$:/config/ShortcutInfo/mono-line",
"text": "{{$:/language/Buttons/MonoLine/Hint}}"
},
"$:/config/ShortcutInfo/new-image": {
"title": "$:/config/ShortcutInfo/new-image",
"text": "{{$:/language/Buttons/NewImage/Hint}}"
},
"$:/config/ShortcutInfo/new-journal": {
"title": "$:/config/ShortcutInfo/new-journal",
"text": "{{$:/language/Buttons/NewJournal/Hint}}"
},
"$:/config/ShortcutInfo/new-tiddler": {
"title": "$:/config/ShortcutInfo/new-tiddler",
"text": "{{$:/language/Buttons/NewTiddler/Hint}}"
},
"$:/config/ShortcutInfo/picture": {
"title": "$:/config/ShortcutInfo/picture",
"text": "{{$:/language/Buttons/Picture/Hint}}"
},
"$:/config/ShortcutInfo/preview": {
"title": "$:/config/ShortcutInfo/preview",
"text": "{{$:/language/Buttons/Preview/Hint}}"
},
"$:/config/ShortcutInfo/quote": {
"title": "$:/config/ShortcutInfo/quote",
"text": "{{$:/language/Buttons/Quote/Hint}}"
},
"$:/config/ShortcutInfo/save-tiddler": {
"title": "$:/config/ShortcutInfo/save-tiddler",
"text": "{{$:/language/Buttons/Save/Hint}}"
},
"$:/config/ShortcutInfo/save-wiki": {
"title": "$:/config/ShortcutInfo/save-wiki",
"text": "{{$:/language/Buttons/SaveWiki/Hint}}"
},
"$:/config/ShortcutInfo/sidebar-search": {
"title": "$:/config/ShortcutInfo/sidebar-search",
"text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
},
"$:/config/ShortcutInfo/stamp": {
"title": "$:/config/ShortcutInfo/stamp",
"text": "{{$:/language/Buttons/Stamp/Hint}}"
},
"$:/config/ShortcutInfo/strikethrough": {
"title": "$:/config/ShortcutInfo/strikethrough",
"text": "{{$:/language/Buttons/Strikethrough/Hint}}"
},
"$:/config/ShortcutInfo/subscript": {
"title": "$:/config/ShortcutInfo/subscript",
"text": "{{$:/language/Buttons/Subscript/Hint}}"
},
"$:/config/ShortcutInfo/superscript": {
"title": "$:/config/ShortcutInfo/superscript",
"text": "{{$:/language/Buttons/Superscript/Hint}}"
},
"$:/config/ShortcutInfo/toggle-sidebar": {
"title": "$:/config/ShortcutInfo/toggle-sidebar",
"text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
},
"$:/config/ShortcutInfo/transcludify": {
"title": "$:/config/ShortcutInfo/transcludify",
"text": "{{$:/language/Buttons/Transcludify/Hint}}"
},
"$:/config/ShortcutInfo/underline": {
"title": "$:/config/ShortcutInfo/underline",
"text": "{{$:/language/Buttons/Underline/Hint}}"
},
"$:/config/SwitcherTargets/layout": {
"title": "$:/config/SwitcherTargets/layout",
"text": "$:/snippets/LayoutSwitcher"
},
"$:/config/SwitcherTargets/language": {
"title": "$:/config/SwitcherTargets/language",
"text": "$:/snippets/languageswitcher"
},
"$:/config/SwitcherTargets/palette": {
"title": "$:/config/SwitcherTargets/palette",
"text": "$:/core/ui/ControlPanel/Palette"
},
"$:/config/SwitcherTargets/theme": {
"title": "$:/config/SwitcherTargets/theme",
"text": "$:/core/ui/ControlPanel/Theme"
},
"$:/config/SyncFilter": {
"title": "$:/config/SyncFilter",
"text": "[is[tiddler]] -[[$:/core]] -[[$:/library/sjcl.js]] -[prefix[$:/boot/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
},
"$:/config/SyncSystemTiddlersFromServer": {
"title": "$:/config/SyncSystemTiddlersFromServer",
"text": "no"
},
"$:/config/Tags/MinLength": {
"title": "$:/config/Tags/MinLength",
"text": "0"
},
"$:/config/TextEditor/EditorHeight/Height": {
"title": "$:/config/TextEditor/EditorHeight/Height",
"text": "400px"
},
"$:/config/TextEditor/EditorHeight/Mode": {
"title": "$:/config/TextEditor/EditorHeight/Mode",
"text": "auto"
},
"$:/config/TiddlerInfo/Default": {
"title": "$:/config/TiddlerInfo/Default",
"text": "$:/core/ui/TiddlerInfo/Fields"
},
"$:/config/TiddlerInfo/Mode": {
"title": "$:/config/TiddlerInfo/Mode",
"text": "popup"
},
"$:/config/Tiddlers/TitleLinks": {
"title": "$:/config/Tiddlers/TitleLinks",
"text": "no"
},
"$:/config/Toolbar/ButtonClass": {
"title": "$:/config/Toolbar/ButtonClass",
"text": "tc-btn-invisible"
},
"$:/config/Toolbar/Icons": {
"title": "$:/config/Toolbar/Icons",
"text": "yes"
},
"$:/config/Toolbar/Text": {
"title": "$:/config/Toolbar/Text",
"text": "no"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
"text": "show"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
"text": "hide"
},
"$:/config/shortcuts-mac/bold": {
"title": "$:/config/shortcuts-mac/bold",
"text": "meta-B"
},
"$:/config/shortcuts-mac/input-tab-left": {
"title": "$:/config/shortcuts-mac/input-tab-left",
"text": "ctrl-Left"
},
"$:/config/shortcuts-mac/input-tab-right": {
"title": "$:/config/shortcuts-mac/input-tab-right",
"text": "ctrl-Right"
},
"$:/config/shortcuts-mac/italic": {
"title": "$:/config/shortcuts-mac/italic",
"text": "meta-I"
},
"$:/config/shortcuts-mac/underline": {
"title": "$:/config/shortcuts-mac/underline",
"text": "meta-U"
},
"$:/config/shortcuts-mac/new-image": {
"title": "$:/config/shortcuts-mac/new-image",
"text": "ctrl-I"
},
"$:/config/shortcuts-mac/new-journal": {
"title": "$:/config/shortcuts-mac/new-journal",
"text": "ctrl-J"
},
"$:/config/shortcuts-mac/new-tiddler": {
"title": "$:/config/shortcuts-mac/new-tiddler",
"text": "ctrl-N"
},
"$:/config/shortcuts-mac/save-wiki": {
"title": "$:/config/shortcuts-mac/save-wiki",
"text": "meta-S"
},
"$:/config/shortcuts-not-mac/bold": {
"title": "$:/config/shortcuts-not-mac/bold",
"text": "ctrl-B"
},
"$:/config/shortcuts-not-mac/italic": {
"title": "$:/config/shortcuts-not-mac/italic",
"text": "ctrl-I"
},
"$:/config/shortcuts-not-mac/underline": {
"title": "$:/config/shortcuts-not-mac/underline",
"text": "ctrl-U"
},
"$:/config/shortcuts-not-mac/new-image": {
"title": "$:/config/shortcuts-not-mac/new-image",
"text": "alt-I"
},
"$:/config/shortcuts-not-mac/new-journal": {
"title": "$:/config/shortcuts-not-mac/new-journal",
"text": "alt-J"
},
"$:/config/shortcuts-not-mac/new-tiddler": {
"title": "$:/config/shortcuts-not-mac/new-tiddler",
"text": "alt-N"
},
"$:/config/shortcuts/add-field": {
"title": "$:/config/shortcuts/add-field",
"text": "enter"
},
"$:/config/shortcuts/advanced-search": {
"title": "$:/config/shortcuts/advanced-search",
"text": "ctrl-shift-A"
},
"$:/config/shortcuts/advanced-search-sidebar": {
"title": "$:/config/shortcuts/advanced-search-sidebar",
"text": "alt-Enter"
},
"$:/config/shortcuts/cancel-edit-tiddler": {
"title": "$:/config/shortcuts/cancel-edit-tiddler",
"text": "escape"
},
"$:/config/shortcuts/change-sidebar-layout": {
"title": "$:/config/shortcuts/change-sidebar-layout",
"text": "shift-alt-Down"
},
"$:/config/shortcuts/delete-field": {
"title": "$:/config/shortcuts/delete-field",
"text": "shift-alt-D"
},
"$:/config/shortcuts/excise": {
"title": "$:/config/shortcuts/excise",
"text": "ctrl-E"
},
"$:/config/shortcuts/sidebar-search": {
"title": "$:/config/shortcuts/sidebar-search",
"text": "ctrl-shift-F"
},
"$:/config/shortcuts/heading-1": {
"title": "$:/config/shortcuts/heading-1",
"text": "ctrl-1"
},
"$:/config/shortcuts/heading-2": {
"title": "$:/config/shortcuts/heading-2",
"text": "ctrl-2"
},
"$:/config/shortcuts/heading-3": {
"title": "$:/config/shortcuts/heading-3",
"text": "ctrl-3"
},
"$:/config/shortcuts/heading-4": {
"title": "$:/config/shortcuts/heading-4",
"text": "ctrl-4"
},
"$:/config/shortcuts/heading-5": {
"title": "$:/config/shortcuts/heading-5",
"text": "ctrl-5"
},
"$:/config/shortcuts/heading-6": {
"title": "$:/config/shortcuts/heading-6",
"text": "ctrl-6"
},
"$:/config/shortcuts/input-accept": {
"title": "$:/config/shortcuts/input-accept",
"text": "Enter"
},
"$:/config/shortcuts/input-accept-variant": {
"title": "$:/config/shortcuts/input-accept-variant",
"text": "ctrl-Enter"
},
"$:/config/shortcuts/input-cancel": {
"title": "$:/config/shortcuts/input-cancel",
"text": "Escape"
},
"$:/config/shortcuts/input-down": {
"title": "$:/config/shortcuts/input-down",
"text": "Down"
},
"$:/config/shortcuts/input-tab-left": {
"title": "$:/config/shortcuts/input-tab-left",
"text": "alt-Left"
},
"$:/config/shortcuts/input-tab-right": {
"title": "$:/config/shortcuts/input-tab-right",
"text": "alt-Right"
},
"$:/config/shortcuts/input-up": {
"title": "$:/config/shortcuts/input-up",
"text": "Up"
},
"$:/config/shortcuts/layout-switcher": {
"title": "$:/config/shortcuts/layout-switcher",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/link": {
"title": "$:/config/shortcuts/link",
"text": "ctrl-L"
},
"$:/config/shortcuts/linkify": {
"title": "$:/config/shortcuts/linkify",
"text": "alt-shift-L"
},
"$:/config/shortcuts/list-bullet": {
"title": "$:/config/shortcuts/list-bullet",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/list-number": {
"title": "$:/config/shortcuts/list-number",
"text": "ctrl-shift-N"
},
"$:/config/shortcuts/mono-block": {
"title": "$:/config/shortcuts/mono-block",
"text": "ctrl-shift-M"
},
"$:/config/shortcuts/mono-line": {
"title": "$:/config/shortcuts/mono-line",
"text": "ctrl-M"
},
"$:/config/shortcuts/picture": {
"title": "$:/config/shortcuts/picture",
"text": "ctrl-shift-I"
},
"$:/config/shortcuts/preview": {
"title": "$:/config/shortcuts/preview",
"text": "alt-P"
},
"$:/config/shortcuts/quote": {
"title": "$:/config/shortcuts/quote",
"text": "ctrl-Q"
},
"$:/config/shortcuts/save-tiddler": {
"title": "$:/config/shortcuts/save-tiddler",
"text": "ctrl+enter"
},
"$:/config/shortcuts/save-wiki": {
"title": "$:/config/shortcuts/save-wiki",
"text": "ctrl-S"
},
"$:/config/shortcuts/stamp": {
"title": "$:/config/shortcuts/stamp",
"text": "ctrl-S"
},
"$:/config/shortcuts/strikethrough": {
"title": "$:/config/shortcuts/strikethrough",
"text": "ctrl-T"
},
"$:/config/shortcuts/subscript": {
"title": "$:/config/shortcuts/subscript",
"text": "ctrl-shift-B"
},
"$:/config/shortcuts/superscript": {
"title": "$:/config/shortcuts/superscript",
"text": "ctrl-shift-P"
},
"$:/config/shortcuts/toggle-sidebar": {
"title": "$:/config/shortcuts/toggle-sidebar",
"text": "alt-shift-S"
},
"$:/config/shortcuts/transcludify": {
"title": "$:/config/shortcuts/transcludify",
"text": "alt-shift-T"
},
"$:/config/ui/EditTemplate": {
"title": "$:/config/ui/EditTemplate",
"text": "$:/core/ui/EditTemplate"
},
"$:/config/ui/ViewTemplate": {
"title": "$:/config/ui/ViewTemplate",
"text": "$:/core/ui/ViewTemplate"
},
"$:/config/WikiParserRules/Inline/wikilink": {
"title": "$:/config/WikiParserRules/Inline/wikilink",
"text": "enable"
},
"$:/snippets/currpalettepreview": {
"title": "$:/snippets/currpalettepreview",
"text": "\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch-inner()\n<$set name=\"swatchColour\" value={{##$(colourResolved)$}}>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}>\n<$set name=\"swatchTitle\" value=<<colour>>>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>\n"
},
"$:/snippets/download-wiki-button": {
"title": "$:/snippets/download-wiki-button",
"text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
},
"$:/language": {
"title": "$:/language",
"text": "$:/languages/en-GB"
},
"$:/snippets/languageswitcher": {
"title": "$:/snippets/languageswitcher",
"text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/macros/CSS": {
"title": "$:/core/macros/CSS",
"tags": "$:/tags/Macro",
"text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n -webkit-box-shadow: $shadow$;\n -moz-box-shadow: $shadow$;\n box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n -webkit-filter: $filter$;\n -moz-filter: $filter$;\n filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n -webkit-transition: $transition$;\n -moz-transition: $transition$;\n transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n -webkit-transform-origin: $origin$;\n -moz-transform-origin: $origin$;\n transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
},
"$:/core/macros/colour-picker": {
"title": "$:/core/macros/colour-picker",
"tags": "$:/tags/Macro",
"text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
},
"$:/core/macros/copy-to-clipboard": {
"title": "$:/core/macros/copy-to-clipboard",
"tags": "$:/tags/Macro",
"text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
},
"$:/core/macros/diff": {
"title": "$:/core/macros/diff",
"tags": "$:/tags/Macro",
"text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
},
"$:/core/macros/dumpvariables": {
"title": "$:/core/macros/dumpvariables",
"tags": "$:/tags/Macro",
"text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"
},
"$:/core/macros/export": {
"title": "$:/core/macros/export",
"tags": "$:/tags/Macro",
"text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$set name=\"count\" value={{{ [subfilter<__exportFilter__>count[]] }}}>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$list filter=\"[<currentTiddler>has[condition]subfilter{!!condition}limit[1]] ~[<currentTiddler>!has[condition]then[true]]\" variable=\"ignore\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=<<__exportFilter__>> filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</$list>\n</$set>\n</div>\n</$reveal>\n\\end\n"
},
"$:/core/macros/image-picker": {
"title": "$:/core/macros/image-picker",
"created": "20170715180840889",
"modified": "20170715180914005",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
},
"$:/core/macros/keyboard-driven-input": {
"title": "$:/core/macros/keyboard-driven-input",
"tags": "$:/tags/Macro",
"text": "\\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)\n<$set name=\"tabsList\" filter=\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]\">\n<$vars currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}} firstTab={{{ [enlist<tabsList>nth[1]] }}} lastTab={{{ [enlist<tabsList>last[]] }}}>\n<$set name=\"nextTab\" value={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}}>\n<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>\n$actions$\n</$set>\n</$vars>\n</$set>\n\\end\n\n\\define keyboard-input-actions()\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>\n</$list>\n\\end\n\n\\define input-next-actions-inner()\n<$list filter=\"[<nextItem>minlength[1]]\" variable=\"ignore\">\n<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$action-setfield $tiddler=<<__refreshTitle__>> text=\"yes\"/>\n</$list>\n\\end\n\n\\define input-next-actions(afterOrBefore:\"after\",reverse:\"\")\n<$list filter=\"[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]\" variable=\"ignore\">\n<$vars userInput={{{ [<__storeTitle__>get[text]] }}} selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}>\n<$set name=\"configTiddler\" value={{{ [subfilter<__configTiddlerFilter__>] }}}>\n<$vars primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}} secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}>\n<$set name=\"filteredList\" filter=\"[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]\">\n<$vars nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}} firstItem={{{ [enlist<filteredList>nth[1]] }}} lastItem={{{ [enlist<filteredList>last[]] }}}>\n<$list filter=\"[<selectedItem>match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<lastItem>!match<firstItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<firstItem>match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [<userInput>addsuffix[-userInput]] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>!match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<<input-next-actions-inner>>\n</$list>\n</$vars>\n</$set>\n</$vars>\n</$set>\n</$vars>\n</$list>\n\\end\n\n\\define keyboard-driven-input(tiddler,storeTitle,field:\"text\",index:\"\",tag:\"input\",type,focus:\"\",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:\"\",default:\"\",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:\"0\",refreshTitle,selectionStateTitle,cancelPopups:\"\",configTiddlerFilter,firstSearchFilterField:\"first-search-filter\",secondSearchFilterField:\"second-search-filter\")\n\\whitespace trim\n<$keyboard key=\"((input-accept))\" actions=<<__inputAcceptActions__>>>\n<$keyboard key=\"((input-accept-variant))\" actions=<<__inputAcceptVariantActions__>>>\n<$keyboard key=\"((input-up))\" actions=<<input-next-actions \"before\" \"reverse[]\">>>\n<$keyboard key=\"((input-down))\" actions=<<input-next-actions>>>\n<$keyboard key=\"((input-cancel))\" actions=<<__inputCancelActions__>>>\n<$edit-text tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>> \n\t\tinputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>> \n\t\tplaceholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>> \n\t\tfocus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>> \n\t\ttabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>> \n\t\trefreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n\\end\n"
},
"$:/core/macros/lingo": {
"title": "$:/core/macros/lingo",
"tags": "$:/tags/Macro",
"text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
},
"$:/core/macros/list": {
"title": "$:/core/macros/list",
"tags": "$:/tags/Macro",
"text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n{{$:/core/images/blank}}\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
},
"$:/core/macros/tabs": {
"title": "$:/core/macros/tabs",
"tags": "$:/tags/Macro",
"text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain,actions,explicitState)\n<$set name=\"qualifiedState\" value=<<qualify \"$state$\">>>\n<$vars tabsState={{{ [<__explicitState__>minlength[1]] ~[<qualifiedState>] }}}>\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<tabsState>> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler>$actions$</$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<tabsState>> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n</$vars>\n</$set>\n\\end\n"
},
"$:/core/macros/tag-picker": {
"title": "$:/core/macros/tag-picker",
"tags": "$:/tags/Macro",
"first-search-filter": "[tags[]!is[system]search:title<userInput>sort[]]",
"second-search-filter": "[tags[]is[system]search:title<userInput>sort[]]",
"text": "\\define get-tagpicker-focus-selector() [data-tiddler-title=\"$(currentTiddlerCSSEscaped)$\"] .tc-add-tag-name input\n\n\\define delete-tag-state-tiddlers() <$action-deletetiddler $filter=\"[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]\"/>\n\n\\define add-tag-actions(actions,tagField:\"tags\")\n<$set name=\"tag\" value={{{ [<__tiddler__>get[text]] }}}>\n<$list filter=\"[<saveTiddler>!contains:$tagField$<tag>!match[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[<tag>]\"/>\n\"\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n</$list>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n\\end\n\n\\define clear-tags-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newTagNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-tag-state-tiddlers>>\n</$list>\n\\end\n\n\\define clear-tags-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newTagNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<clear-tags-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define tag-picker-inner(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars newTagNameInputTiddlerQualified=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddlerQualified=<<qualify \"$:/temp/NewTagName/selected-item\">> fallbackTarget={{$(palette)$##tag-background}} colourA={{$(palette)$##foreground}} colourB={{$(palette)$##background}}>\n<$vars storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}} tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}>\n<$vars refreshTitle=<<qualify \"$:/temp/NewTagName/refresh\">> nonSystemTagsFilter=\"[tags[]!is[system]search:title<userInput>sort[]]\" systemTagsFilter=\"[tags[]is[system]search:title<userInput>sort[]]\">\n<div class=\"tc-edit-add-tag\">\n<div>\n<span class=\"tc-add-tag-name tc-small-gap-right\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newTagNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<tagSelectionState>> inputAcceptActions=\"\"\"<$macrocall $name=\"add-tag-actions\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\"\n\t\tinputCancelActions=<<clear-tags-actions>> tag=\"input\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> \n\t\tfocus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} filterMinLength={{$:/config/Tags/MinLength}} \n\t\tcancelPopups=<<cancelPopups>> configTiddlerFilter=\"[[$:/core/macros/tag-picker]]\"/>\n</span><$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$reveal state=<<storeTitle>> type=\"nomatch\" text=\"\"><$button class=\"tc-btn-invisible tc-small-gap tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}} aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}>{{$:/core/images/close-button}}<<delete-tag-state-tiddlers>></$button></$reveal><span class=\"tc-add-tag-button tc-small-gap-left\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=<<newTagNameTiddler>> setTo=\"\" class=\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<<delete-tag-state-tiddlers>><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>>/>\n</$set>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-block-tags-dropdown\">\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<nonSystemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-primaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n<hr>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<systemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-secondaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n</div>\n</$vars>\n</$vars>\n</$vars>\n\\end\n\\define tag-picker(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars saveTiddler=<<currentTiddler>> palette={{$:/palette}}>\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=\"\"\"<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\">\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\n</$set>\n</$list>\n</$vars>\n\\end\n"
},
"$:/core/macros/tag": {
"title": "$:/core/macros/tag",
"tags": "$:/tags/Macro",
"text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
},
"$:/core/macros/thumbnails": {
"title": "$:/core/macros/thumbnails",
"tags": "$:/tags/Macro",
"text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
},
"$:/core/macros/timeline": {
"title": "$:/core/macros/timeline",
"created": "20141212105914482",
"modified": "20141212110330815",
"tags": "$:/tags/Macro",
"text": "\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n of the same name if you need to change \n how titles are displayed on the timeline \n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
},
"$:/core/macros/toc": {
"title": "$:/core/macros/toc",
"tags": "$:/tags/Macro",
"text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n <$transclude field=\"caption\">\n <$view field=\"title\"/>\n </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><$view field='caption'><$view field='title'/></$view></$link>\">\n <<toc-caption>>\n </$list>\n <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </li>\n </$set>\n </$set>\n </$vars>\n </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n <li class=<<toc-item-class>>>\n <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n </$list>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n </$list>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-selective-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n <div class=\"tc-tabbed-table-of-contents\">\n <$linkcatcher to=<<__selectedTiddler__>>>\n <div class=\"tc-table-of-contents\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n </div>\n </$linkcatcher>\n <div class=\"tc-tabbed-table-of-contents-content\">\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n <$transclude mode=\"block\" tiddler=<<__template__>>>\n <h1><<toc-caption>></h1>\n <$transclude mode=\"block\">$missingText$</$transclude>\n </$transclude>\n </$reveal>\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n $unselectedText$\n </$reveal>\n </div>\n </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
},
"$:/core/macros/translink": {
"title": "$:/core/macros/translink",
"tags": "$:/tags/Macro",
"text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tree": {
"title": "$:/core/macros/tree",
"tags": "$:/tags/Macro",
"text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/utils": {
"title": "$:/core/macros/utils",
"text": "\\define colour(colour)\n$colour$\n\\end\n"
},
"$:/snippets/minifocusswitcher": {
"title": "$:/snippets/minifocusswitcher",
"text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"
},
"$:/snippets/minilanguageswitcher": {
"title": "$:/snippets/minilanguageswitcher",
"text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/minithemeswitcher": {
"title": "$:/snippets/minithemeswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/modules": {
"title": "$:/snippets/modules",
"text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
},
"$:/palette": {
"title": "$:/palette",
"text": "$:/palettes/Vanilla"
},
"$:/snippets/paletteeditor": {
"title": "$:/snippets/paletteeditor",
"text": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
},
"$:/snippets/palettepreview": {
"title": "$:/snippets/palettepreview",
"text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
},
"$:/snippets/paletteswitcher": {
"title": "$:/snippets/paletteswitcher",
"text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/snippets/peek-stylesheets": {
"title": "$:/snippets/peek-stylesheets",
"text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
},
"$:/temp/search": {
"title": "$:/temp/search",
"text": ""
},
"$:/tags/AdvancedSearch": {
"title": "$:/tags/AdvancedSearch",
"list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
},
"$:/tags/AdvancedSearch/FilterButton": {
"title": "$:/tags/AdvancedSearch/FilterButton",
"list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
},
"$:/tags/ControlPanel": {
"title": "$:/tags/ControlPanel",
"list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
},
"$:/tags/ControlPanel/Info": {
"title": "$:/tags/ControlPanel/Info",
"list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
},
"$:/tags/ControlPanel/Plugins": {
"title": "$:/tags/ControlPanel/Plugins",
"list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
},
"$:/tags/EditTemplate": {
"title": "$:/tags/EditTemplate",
"list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
},
"$:/tags/EditToolbar": {
"title": "$:/tags/EditToolbar",
"list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
},
"$:/tags/EditorToolbar": {
"title": "$:/tags/EditorToolbar",
"list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
},
"$:/tags/Manager/ItemMain": {
"title": "$:/tags/Manager/ItemMain",
"list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
},
"$:/tags/Manager/ItemSidebar": {
"title": "$:/tags/Manager/ItemSidebar",
"list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
},
"$:/tags/MoreSideBar": {
"title": "$:/tags/MoreSideBar",
"list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
"text": ""
},
"$:/tags/PageControls": {
"title": "$:/tags/PageControls",
"list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
},
"$:/tags/PageTemplate": {
"title": "$:/tags/PageTemplate",
"list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
"text": ""
},
"$:/tags/PluginLibrary": {
"title": "$:/tags/PluginLibrary",
"list": "$:/config/OfficialPluginLibrary"
},
"$:/tags/SideBar": {
"title": "$:/tags/SideBar",
"list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
"text": ""
},
"$:/tags/SideBarSegment": {
"title": "$:/tags/SideBarSegment",
"list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
},
"$:/tags/TiddlerInfo": {
"title": "$:/tags/TiddlerInfo",
"list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
"text": ""
},
"$:/tags/TiddlerInfo/Advanced": {
"title": "$:/tags/TiddlerInfo/Advanced",
"list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
},
"$:/tags/ViewTemplate": {
"title": "$:/tags/ViewTemplate",
"list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
},
"$:/tags/ViewToolbar": {
"title": "$:/tags/ViewToolbar",
"list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
},
"$:/snippets/themeswitcher": {
"title": "$:/snippets/themeswitcher",
"text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/wiki/title": {
"title": "$:/core/wiki/title",
"text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
},
"$:/view": {
"title": "$:/view",
"text": "classic"
},
"$:/snippets/viewswitcher": {
"title": "$:/snippets/viewswitcher",
"text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
}
}
}
<svg class="tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt">
<text x="0" y="85" font-family="Verdana" font-weight="600" font-size="63">The</text>
</svg>
<svg class="tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt">
<g fill-rule="evenodd">
<path d="M65.0864256,75.4091629 L14.9727349,125.522854 C11.8515951,128.643993 6.78104858,128.64922 3.65685425,125.525026 C0.539017023,122.407189 0.5336324,117.334539 3.65902635,114.209145 L53.7727171,64.0954544 L3.65902635,13.9817637 C0.537886594,10.8606239 0.532659916,5.79007744 3.65685425,2.6658831 C6.77469148,-0.451954124 11.8473409,-0.457338747 14.9727349,2.66805521 L65.0864256,52.7817459 L115.200116,2.66805521 C118.321256,-0.453084553 123.391803,-0.458311231 126.515997,2.6658831 C129.633834,5.78372033 129.639219,10.8563698 126.513825,13.9817637 L76.4001341,64.0954544 L126.513825,114.209145 C129.634965,117.330285 129.640191,122.400831 126.515997,125.525026 C123.39816,128.642863 118.32551,128.648248 115.200116,125.522854 L65.0864256,75.4091629 L65.0864256,75.4091629 Z"></path>
</g>
<text x="0" y="85" font-family="Verdana" font-weight="600" font-size="63">The</text>
</svg>
\define dr(dicestring) <$wikify name=ds text="""<$list filter="[[$dicestring$]prefix[+]] [[$dicestring$]prefix[-]]" emptyMessage="$dicestring$">d20$dicestring$</$list>"""><$vars mult={{{[<ds>split[d]nth[1]max[1]]}}}, side={{{[<ds>split[-]trim[]join[+-]split[d]nth[2]split[+]nth[1]]}}} add={{{[<ds>split[-]trim[]join[+-]split[+]nth[2]]}}}><$fieldmangler tiddler="$:/alerts/Dice"><$set name="currentTiddler" value="$:/alerts/Dice"><$button class="tc-btn-invisible dice-roller"><$action-chooserandom $filter="[range<side>]" $field=result $number=<<mult>> $opt="none" $replace="true"/><$action-setfield dicestring=<<ds>>/><$action-setfield add=<<add>>/><$vars max={{{[<mult>multiply<side>add<add>]}}}, average={{{[<side>add[1]divide[2]multiply<mult>add<add>]}}}><$action-setfield max=<<max>>/><$action-setfield average=<<average>>/></$vars><$action-sendmessage $message="tm-add-tag" $param="$:/tags/Alert"/>$dicestring$</$button></$set></$fieldmangler></$vars></$wikify>
\define drp(string valiftrue valiffalse) <$vars num={{{[[$string$]split[%]first[]]}}}><$vars hundredminus={{{[[100]subtract<num>]}}}><$fieldmangler tiddler="$:/alerts/Percent"><$set name="currentTiddler" value="$:/alerts/Percent"><$button class="tc-btn-invisible dice-roller"><$action-chooserandom $filter="[range[100]]" $field=result $opt="none"/><$action-setfield string="$string$"/><$action-setfield target=<<hundredminus>>/><$action-setfield valiftrue="$valiftrue$"/><$action-setfield valiffalse="$valiffalse$"/><$action-sendmessage $message="tm-add-tag" $param="$:/tags/Alert"/>$string$</$button></$set></$fieldmangler></$vars></$vars>
\define list-links-article(filter,emptyMessage)
\whitespace trim
<ul>
<$list filter="$filter$" emptyMessage=<<__emptyMessage__>>>
<li>{{!!article}}<$link/></li>
</$list>
</ul>
\end
\define lteq() [has[$(fld)$]!greaterthan:$(fld)${$(tid)$!!$(fld)$}]
\define gteq() [has[$(fld)$]!lessthan:$(fld)${$(tid)$!!$(fld)$}]
\define eq() [$(fld)${$(tid)$!!$(fld)$}]
\define comp-actions()
<$vars comp="">
<$wikify name=comp text="""<$list filter="[[$(tid)$]comparison[=]]" emptyMessage=<<comp>>><$text text=<<eq>>/></$list>""">
<$wikify name=comp text="""<$list filter="[[$(tid)$]comparison[≤]]" emptyMessage=<<comp>>><$text text=<<lteq>>/></$list>""">
<$wikify name=comp text="""<$list filter="[[$(tid)$]comparison[≥]]" emptyMessage=<<comp>>><$text text=<<gteq>>/></$list>""">
<$action-setfield $tiddler="$(tid)$" text=<<comp>>/>
</$wikify>
</$wikify>
</$wikify>
</$vars>
\end
\define capitalized() ^([A-Z]|ir'|il-).*
\define ppl-ent() [category[person]] [category[entity]]
\define table-body-org(item, firstitem)
<ul>
<$list filter="[category[organization]tag<__item__>] -[tag<__item__>tagging[]] +[sort[title]]">
<$list filter="[<currentTiddler>tag<__firstitem__>]" emptyMessage="""<li>{{!!article}}<$link overrideClass="graylink"/></li>""" variable="noop">
<li>{{!!article}}<$link/></li></$list>
<$macrocall $name="table-body-org" item=<<currentTiddler>> firstitem=<<__firstitem__>>/>
</$list>
</ul>
\end
\define resetobjects()
<$action-setfield $tiddler="$:/config/Manager/Filter" text=""/>
<$action-setfield $tiddler="$:/config/Manager/Rarity" tags="[rarity[1]] [rarity[2]] [rarity[3]] [rarity[4]] [rarity[5]] [rarity[6]]"/>
<$action-setfield $tiddler="$:/config/Manager/ObjectTag" text=""/>
<$action-setfield $tiddler="$:/config/Manager/ExcludeObjectTag" text=""/>
\end
\define resetorgs()
<$action-setfield $tiddler="$:/config/Manager/Filter" text=""/>
<$action-setfield $tiddler="$:/config/Manager/OrgType" text=""/>
<$action-setfield $tiddler="$:/config/Manager/OrgTag" text=""/>
<$action-setfield $tiddler="$:/config/Manager/OrgTag2" text=""/>
<$action-setfield $tiddler="$:/config/Manager/ExcludeOrgTag" text=""/>
\end
\define resetplaces()
<$action-setfield $tiddler="$:/config/Manager/Filter" text=""/>
<$action-setfield $tiddler="$:/config/Manager/LocationType" text=""/>
<$action-setfield $tiddler="$:/config/Manager/LocationTag" text=""/>
<$action-setfield $tiddler="$:/config/Manager/LocationTag2" text=""/>
<$action-setfield $tiddler="$:/config/Manager/ExcludeLocationTag" text=""/>
\end
\define resetspells()
<$action-setfield $tiddler="$:/config/Manager/Filter" text=""/>
<$action-setfield $tiddler="$:/config/Manager/SpellTier" tags="[tier[1]] [tier[2]] [tier[3]] [tier[4]] [tier[5]]"/>
<$action-setfield $tiddler="$:/config/Manager/SpellTag" text=""/>
\end
\define resetcreatures()
<$action-setfield $tiddler="$:/config/Manager/Filter" text=""/>
<$action-setfield $tiddler="$:/config/Manager/CreatureType" text=""/>
<$action-setfield $tiddler="$:/config/Manager/CreatureTag" text=""/>
<$action-setfield $tiddler="$:/config/Manager/ExcludeCreatureTag" text=""/>
<$action-setfield $tiddler="$:/config/Manager/CreatureTier" tier="0" comparison="≥" text="[has[tier]!lessthan:tier{$:/config/Manager/CreatureTier!!tier}]"/>
\end
\define resetpplents()
<$action-setfield $tiddler="$:/config/Manager/Filter" text=""/>
<$action-setfield $tiddler="$:/config/Manager/PplEntType" text=""/>
<$action-setfield $tiddler="$:/config/Manager/PplEntTag" text=""/>
<$action-setfield $tiddler="$:/config/Manager/ExcludePplEntTag" text=""/>
\end
\define resetmisc()
<$action-setfield $tiddler="$:/config/Manager/Filter" text=""/>
<$action-setfield $tiddler="$:/config/Manager/MiscCat" text="[has[category]!category[location]!category[object]!category[spell]!category[creature]!category[person]!category[entity]!category[organization]]"/>
<$action-setfield $tiddler="$:/config/Manager/MiscTag" text=""/>
<$action-setfield $tiddler="$:/config/Manager/ExcludeMiscTag" text=""/>
\end
\define tv-wikilink-tooltip()
<$transclude field="tooltip"><$transclude field="tooltip"/></$transclude>
\end
\define tt(text,tid) <$reveal type="match" text="" default="""$tid$"""><span class="tooltip"><$link to="$text$"/><$list filter="[[$text$]has[tooltip]]" emptyMessage=""><span class="tooltiptext tooltip-right"><$view tiddler="$text$" field="tooltip"/><<tooltip>></span></$list></span></$reveal><$reveal type="nomatch" text="" default="""$tid$"""><span class="tooltip"><$link to="$tid$">$text$</$link><$list filter="[[$tid$]has[tooltip]]" emptyMessage=""><span class="tooltiptext tooltip-right"><$view tiddler="$tid$" field="tooltip"/><<tooltip>></span></$list></span></$reveal>
\define showspells(text)
<$button class="tc-btn-invisible tc-tiddlylink">
<<resetspells>>
<$action-setfield $tiddler="$:/state/tab-1473298955" text="Find Spells"/>
<$action-navigate $to="Find Things"/>
$text$
</$button>
\end
\define showspells-school(school)
<$button class="tc-btn-invisible tc-tiddlylink">
<<resetspells>>
<$action-setfield $tiddler="$:/config/Manager/SpellTag" text=$school$/>
<$action-setfield $tiddler="$:/state/tab-1473298955" text="Find Spells"/>
<$action-navigate $to="Find Things"/>
Find $school$ spells
</$button>
\end
\define add-tag-actions()
<$action-sendmessage $message="tm-add-tag" $param={{$:/temp/NewTagName}}/>
<$action-deletetiddler $tiddler="$:/temp/NewTagName"/>
\end
\define tag-button()
<$button class="tc-btn-invisible" tag="a">
$(actions)$
<$action-deletetiddler $tiddler="$:/temp/NewTagName"/>
<$macrocall $name="tag-pill" tag=<<tag>>/>
</$button>
\end
\define tag-picker(actions)
<$set name="actions" value="""$actions$""">
<$set name="cat" filter="[<currentTiddler>get[category]]">
<div class="tc-edit-add-tag">
<span class="tc-add-tag-name">
<$keyboard key="ENTER" actions=<<add-tag-actions>>>
<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle" tabindex=<<tabIndex>>/>
</$keyboard>
</span> <$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class="tc-add-tag-button">
<$set name="tag" value={{$:/temp/NewTagName}}>
<$button set="$:/temp/NewTagName" setTo="" class="">
$actions$
<$action-deletetiddler $tiddler="$:/temp/NewTagName"/>
{{$:/language/EditTemplate/Tags/Add/Button}}
</$button>
</$set>
</span>
</div>
<div class="tc-block-dropdown-wrapper">
<$reveal state=<<qualify "$:/state/popup/tags-auto-complete">> type="nomatch" text="" default="">
<div class="tc-block-dropdown">
<$list filter="[{$:/temp/NewTagName}minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$list filter="[category<cat>tags[]!is[system]!subfilter{$:/config/Tags/hide}search:title{$:/temp/NewTagName}sort[]]" variable="tag">
<<tag-button>>
</$list></$list>
<hr>
<$list filter="[{$:/temp/NewTagName}minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$list filter="[tags[]!is[system]!subfilter{$:/config/Tags/hide}search:title{$:/temp/NewTagName}sort[]] -[category<cat>tags[]]" variable="tag">
<<tag-button>>
</$list></$list>
<hr>
<$list filter="[{$:/temp/NewTagName}minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$list filter="[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]" variable="tag">
<<tag-button>>
</$list></$list>
</div>
</$reveal>
</div>
</$set></$set>
\end
\define timeline-title()
<!-- Override this macro with a global macro
of the same name if you need to change
how titles are displayed on the timeline
-->
<span class="lightweight"><$view field="article"/></span><$view field="title"/>
\end
\define timeline(limit:"100",format:"DDth MMM YYYY",subfilter:"",dateField:"modified")
<div class="tc-timeline">
<$list filter="[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]">
<div class="tc-menu-list-item">
<$view field="$dateField$" format="date" template="$format$"/>
<$list filter="[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]" >
<div class="tc-menu-list-subitem">
<$link to={{!!title}}>
<<timeline-title>>
</$link>
</div>
</$list>
</div>
</$list>
</div>
\end
/*\
title: $:/core/modules/widgets/action-chooserandom.js
type: application/javascript
module-type: widget
Action widget to select a random tiddler from those matching the supplied filter. Result is written to the specified output tiddler's specified field.
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
function checkData(array, data, value) {
for (var i =0 ; i < array.length; i++) {
if (data[array[i]] == value){
return true;
}
}
return false;
}
var Widget = require("$:/core/modules/widgets/widget.js").widget;
var ChooseRandomWidget = function(parseTreeNode,options) {
this.initialise(parseTreeNode,options);
};
/*
Inherit from the base widget class
*/
ChooseRandomWidget.prototype = new Widget();
/*
Render this widget into the DOM
*/
ChooseRandomWidget.prototype.render = function(parent,nextSibling) {
this.computeAttributes();
this.execute();
};
/*
Compute the internal state of the widget
*/
ChooseRandomWidget.prototype.execute = function() {
this.actionFilter = this.getAttribute("$filter","[is[tiddler]]" );
this.actionTiddler = this.getAttribute("$tiddler",this.getVariable("currentTiddler"));
this.actionField = this.getAttribute("$field","text");
this.actionIndex = this.getAttribute("$index");
var num = this.getAttribute("$number","1");
var opt = this.getAttribute("$opt","none");
var replace = this.getAttribute("$replace","false");
var dataTiddler = this.getAttribute("$dataTiddler","false");
var unique = this.getAttribute("$unique","false");
var tiddlers = [];
var data = this.wiki.getTiddlerData(dataTiddler,[]);
if(dataTiddler !="false"){
this.actionFilter = "[["+dataTiddler+"]indexes[]]";
}
tiddlers = this.wiki.filterTiddlers(this.actionFilter,this);
shuffleArray(tiddlers);
var numpicks = parseInt(num,10);
if(isNaN(numpicks)){
numpicks=1;}
if(replace=="false") {
numpicks=Math.min(numpicks,tiddlers.length);}
var picks=[];
while(numpicks>0 && tiddlers.length>0){
if(replace=="false"){
var tid = tiddlers.pop();
if(unique !="false" && dataTiddler !="false"){
if(checkData(picks, data, data[tid])){
continue;
}
}
picks.push(tid);
}
else{
picks.push(tiddlers[0]);
shuffleArray(tiddlers);
}
numpicks--;}
this.actionValue = "";
picks.forEach((pick) => {
var tid = pick;
if(dataTiddler !="false"){
tid = data[pick];
}
switch(opt){
case "link-br":
this.actionValue += "[["+tid+"]]<br>\n"; break;
case "br":
this.actionValue += tid +"<br>\n"; break;
case "hashes":
case "comma":
this.actionValue += tid +"###"; break;
case "none":
default:
this.actionValue += tid +" "; break;
}
})
this.actionValue = this.actionValue.trim();
if(opt=="comma"){
this.actionValue = this.actionValue.replace(/###/g,", ");}
};
/*
Refresh the widget by ensuring our attributes are up to date
*/
ChooseRandomWidget.prototype.refresh = function(changedTiddlers) {
var changedAttributes = this.computeAttributes();
if(changedAttributes["$filter"] || changedAttributes["$tiddler"] || changedAttributes["$field"] || changedAttributes["$number"]) {
this.refreshSelf();
return true;
}
return this.refreshChildren(changedTiddlers);
};
/*
Invoke the action associated with this widget
*/
ChooseRandomWidget.prototype.invokeAction = function(triggeringWidget,event) {
if(typeof this.actionValue === "string") {
this.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue);
}
return true; // Action was invoked
};
exports["action-chooserandom"] = ChooseRandomWidget;
})();
/*\
title: $:/core/modules/wiki.js
type: application/javascript
module-type: wikimethod
Extension methods for the $tw.Wiki object
Adds the following properties to the wiki object:
* `eventListeners` is a hashmap by type of arrays of listener functions
* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:
modified: true/false
deleted: true/false
* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted
* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted
* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var widget = require("$:/core/modules/widgets/widget.js");
var USER_NAME_TITLE = "$:/status/UserName",
TIMESTAMP_DISABLE_TITLE = "$:/config/TimestampDisable";
/*
Add available indexers to this wiki
*/
exports.addIndexersToWiki = function() {
var self = this;
$tw.utils.each($tw.modules.applyMethods("indexer"),function(Indexer,name) {
self.addIndexer(new Indexer(self),name);
});
};
/*
Get the value of a text reference. Text references can have any of these forms:
<tiddlertitle>
<tiddlertitle>!!<fieldname>
!!<fieldname> - specifies a field of the current tiddlers
<tiddlertitle>##<index>
*/
exports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {
var tr = $tw.utils.parseTextReference(textRef),
title = tr.title || currTiddlerTitle;
if(tr.field) {
var tiddler = this.getTiddler(title);
if(tr.field === "title") { // Special case so we can return the title of a non-existent tiddler
return title;
} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {
return tiddler.getFieldString(tr.field);
} else {
return defaultText;
}
} else if(tr.index) {
return this.extractTiddlerDataItem(title,tr.index,defaultText);
} else {
return this.getTiddlerText(title,defaultText);
}
};
exports.setTextReference = function(textRef,value,currTiddlerTitle) {
var tr = $tw.utils.parseTextReference(textRef),
title = tr.title || currTiddlerTitle;
this.setText(title,tr.field,tr.index,value);
};
exports.setText = function(title,field,index,value,options) {
options = options || {};
var creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),
modificationFields = options.suppressTimestamp ? {} : this.getModificationFields();
// Check if it is a reference to a tiddler field
if(index) {
var data = this.getTiddlerData(title,Object.create(null));
if(value !== undefined) {
data[index] = value;
} else {
delete data[index];
}
this.setTiddlerData(title,data,modificationFields);
} else {
var tiddler = this.getTiddler(title),
fields = {title: title};
fields[field || "text"] = value;
this.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));
}
};
exports.deleteTextReference = function(textRef,currTiddlerTitle) {
var tr = $tw.utils.parseTextReference(textRef),
title,tiddler,fields;
// Check if it is a reference to a tiddler
if(tr.title && !tr.field) {
this.deleteTiddler(tr.title);
// Else check for a field reference
} else if(tr.field) {
title = tr.title || currTiddlerTitle;
tiddler = this.getTiddler(title);
if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {
fields = Object.create(null);
fields[tr.field] = undefined;
this.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));
}
}
};
exports.addEventListener = function(type,listener) {
this.eventListeners = this.eventListeners || {};
this.eventListeners[type] = this.eventListeners[type] || [];
this.eventListeners[type].push(listener);
};
exports.removeEventListener = function(type,listener) {
var listeners = this.eventListeners[type];
if(listeners) {
var p = listeners.indexOf(listener);
if(p !== -1) {
listeners.splice(p,1);
}
}
};
exports.dispatchEvent = function(type /*, args */) {
var args = Array.prototype.slice.call(arguments,1),
listeners = this.eventListeners[type];
if(listeners) {
for(var p=0; p<listeners.length; p++) {
var listener = listeners[p];
listener.apply(listener,args);
}
}
};
/*
Causes a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.
This method should be called after the changes it describes have been made to the wiki.tiddlers[] array.
title: Title of tiddler
isDeleted: defaults to false (meaning the tiddler has been created or modified),
true if the tiddler has been deleted
*/
exports.enqueueTiddlerEvent = function(title,isDeleted) {
// Record the touch in the list of changed tiddlers
this.changedTiddlers = this.changedTiddlers || Object.create(null);
this.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);
this.changedTiddlers[title][isDeleted ? "deleted" : "modified"] = true;
// Increment the change count
this.changeCount = this.changeCount || Object.create(null);
if($tw.utils.hop(this.changeCount,title)) {
this.changeCount[title]++;
} else {
this.changeCount[title] = 1;
}
// Trigger events
this.eventListeners = this.eventListeners || {};
if(!this.eventsTriggered) {
var self = this;
$tw.utils.nextTick(function() {
var changes = self.changedTiddlers;
self.changedTiddlers = Object.create(null);
self.eventsTriggered = false;
if($tw.utils.count(changes) > 0) {
self.dispatchEvent("change",changes);
}
});
this.eventsTriggered = true;
}
};
exports.getSizeOfTiddlerEventQueue = function() {
return $tw.utils.count(this.changedTiddlers);
};
exports.clearTiddlerEventQueue = function() {
this.changedTiddlers = Object.create(null);
this.changeCount = Object.create(null);
};
exports.getChangeCount = function(title) {
this.changeCount = this.changeCount || Object.create(null);
if($tw.utils.hop(this.changeCount,title)) {
return this.changeCount[title];
} else {
return 0;
}
};
/*
Generate an unused title from the specified base
*/
exports.generateNewTitle = function(baseTitle,options) {
options = options || {};
var c = 0,
title = baseTitle;
while(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {
title = baseTitle +
(options.prefix || " ") +
(++c);
}
return title;
};
exports.isSystemTiddler = function(title) {
return title && title.indexOf("$:/") === 0;
};
exports.isTemporaryTiddler = function(title) {
return title && title.indexOf("$:/temp/") === 0;
};
exports.isImageTiddler = function(title) {
var tiddler = this.getTiddler(title);
if(tiddler) {
var contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || "text/vnd.tiddlywiki"];
return !!contentTypeInfo && contentTypeInfo.flags.indexOf("image") !== -1;
} else {
return null;
}
};
exports.isBinaryTiddler = function(title) {
var tiddler = this.getTiddler(title);
if(tiddler) {
var contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || "text/vnd.tiddlywiki"];
return !!contentTypeInfo && contentTypeInfo.encoding === "base64";
} else {
return null;
}
};
/*
Like addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported
*/
exports.importTiddler = function(tiddler) {
var existingTiddler = this.getTiddler(tiddler.fields.title);
// Check if we're dealing with a plugin
if(tiddler && tiddler.hasField("plugin-type") && tiddler.hasField("version") && existingTiddler && existingTiddler.hasField("plugin-type") && existingTiddler.hasField("version")) {
// Reject the incoming plugin if it is older
if(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {
return false;
}
}
// Fall through to adding the tiddler
this.addTiddler(tiddler);
return true;
};
/*
Return a hashmap of the fields that should be set when a tiddler is created
*/
exports.getCreationFields = function() {
if(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,"").toLowerCase() !== "yes") {
var fields = {
created: new Date()
},
creator = this.getTiddlerText(USER_NAME_TITLE);
if(creator) {
fields.creator = creator;
}
return fields;
} else {
return {};
}
};
/*
Return a hashmap of the fields that should be set when a tiddler is modified
*/
exports.getModificationFields = function() {
if(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,"").toLowerCase() !== "yes") {
var fields = Object.create(null),
modifier = this.getTiddlerText(USER_NAME_TITLE);
fields.modified = new Date();
if(modifier) {
fields.modifier = modifier;
}
return fields;
} else {
return {};
}
};
/*
Return a sorted array of tiddler titles. Options include:
sortField: field to sort by
excludeTag: tag to exclude
includeSystem: whether to include system tiddlers (defaults to false)
*/
exports.getTiddlers = function(options) {
options = options || Object.create(null);
var self = this,
sortField = options.sortField || "title",
tiddlers = [], t, titles = [];
this.each(function(tiddler,title) {
if(options.includeSystem || !self.isSystemTiddler(title)) {
if(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {
tiddlers.push(tiddler);
}
}
});
tiddlers.sort(function(a,b) {
var aa = a.fields[sortField].toLowerCase() || "",
bb = b.fields[sortField].toLowerCase() || "";
if(aa < bb) {
return -1;
} else {
if(aa > bb) {
return 1;
} else {
return 0;
}
}
});
for(t=0; t<tiddlers.length; t++) {
titles.push(tiddlers[t].fields.title);
}
return titles;
};
exports.countTiddlers = function(excludeTag) {
var tiddlers = this.getTiddlers({excludeTag: excludeTag});
return $tw.utils.count(tiddlers);
};
/*
Returns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)
*/
exports.makeTiddlerIterator = function(titles) {
var self = this;
if(!$tw.utils.isArray(titles)) {
titles = Object.keys(titles);
} else {
titles = titles.slice(0);
}
return function(callback) {
titles.forEach(function(title) {
callback(self.getTiddler(title),title);
});
};
};
/*
Sort an array of tiddler titles by a specified field
titles: array of titles (sorted in place)
sortField: name of field to sort by
isDescending: true if the sort should be descending
isCaseSensitive: true if the sort should consider upper and lower case letters to be different
*/
exports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {
var self = this;
titles.sort(function(a,b) {
var x,y,
compareNumbers = function(x,y) {
var result =
isNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :
!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :
(isDescending ? y - x : x - y);
return result;
};
if(sortField !== "title") {
var tiddlerA = self.getTiddler(a),
tiddlerB = self.getTiddler(b);
if(tiddlerA) {
a = tiddlerA.fields[sortField] || "";
} else {
a = "";
}
if(tiddlerB) {
b = tiddlerB.fields[sortField] || "";
} else {
b = "";
}
if(sortField == "relevance") {
isNumeric = true;
if(tiddlerA) {
var blA = self.getTiddlerBacklinks(tiddlerA.fields.title).length;
var tlA = self.getTiddlersWithTag(tiddlerA.fields.title).length;
a = -(blA + tlA);
}
if(tiddlerB) {
var blB = self.getTiddlerBacklinks(tiddlerB.fields.title).length;
var tlB = self.getTiddlersWithTag(tiddlerB.fields.title).length;
b = -(blB + tlB);
}
}
}
x = Number(a);
y = Number(b);
if(isNumeric && (!isNaN(x) || !isNaN(y))) {
return compareNumbers(x,y);
} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {
return isDescending ? b - a : a - b;
} else if(isAlphaNumeric) {
return isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: "base"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: "base"});
} else {
a = String(a);
b = String(b);
if(!isCaseSensitive) {
a = a.toLowerCase();
b = b.toLowerCase();
}
return isDescending ? b.localeCompare(a) : a.localeCompare(b);
}
});
};
/*
For every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:
sortField: field to sort by
excludeTag: tag to exclude
includeSystem: whether to include system tiddlers (defaults to false)
*/
exports.forEachTiddler = function(/* [options,]callback */) {
var arg = 0,
options = arguments.length >= 2 ? arguments[arg++] : {},
callback = arguments[arg++],
titles = this.getTiddlers(options),
t, tiddler;
for(t=0; t<titles.length; t++) {
tiddler = this.getTiddler(titles[t]);
if(tiddler) {
callback.call(this,tiddler.fields.title,tiddler);
}
}
};
/*
Return an array of tiddler titles that are directly linked within the given parse tree
*/
exports.extractLinks = function(parseTreeRoot) {
// Count up the links
var links = [],
checkParseTree = function(parseTree) {
for(var t=0; t<parseTree.length; t++) {
var parseTreeNode = parseTree[t];
if(parseTreeNode.type === "link" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === "string") {
var value = parseTreeNode.attributes.to.value;
if(links.indexOf(value) === -1) {
links.push(value);
}
}
if(parseTreeNode.children) {
checkParseTree(parseTreeNode.children);
}
}
};
checkParseTree(parseTreeRoot);
return links;
};
/*
Return an array of tiddler titles that are directly linked from the specified tiddler
*/
exports.getTiddlerLinks = function(title) {
var self = this;
// We'll cache the links so they only get computed if the tiddler changes
return this.getCacheForTiddler(title,"links",function() {
// Parse the tiddler
var parser = self.parseTiddler(title);
if(parser) {
return self.extractLinks(parser.tree);
}
return [];
});
};
/*
Return an array of tiddler titles that link to the specified tiddler
*/
exports.getTiddlerBacklinks = function(targetTitle) {
var self = this,
backlinksIndexer = this.getIndexer("BacklinksIndexer"),
backlinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);
if(!backlinks) {
backlinks = [];
this.forEachTiddler(function(title,tiddler) {
var links = self.getTiddlerLinks(title);
if(links.indexOf(targetTitle) !== -1) {
backlinks.push(title);
}
});
}
return backlinks;
};
/*
Return a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced
*/
exports.getMissingTitles = function() {
var self = this,
missing = [];
// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified
this.forEachTiddler(function(title,tiddler) {
var links = self.getTiddlerLinks(title);
$tw.utils.each(links,function(link) {
if((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {
missing.push(link);
}
});
});
return missing;
};
exports.getOrphanTitles = function() {
var self = this,
orphans = this.getTiddlers();
this.forEachTiddler(function(title,tiddler) {
var links = self.getTiddlerLinks(title);
$tw.utils.each(links,function(link) {
var p = orphans.indexOf(link);
if(p !== -1) {
orphans.splice(p,1);
}
});
});
return orphans; // Todo
};
/*
Retrieves a list of the tiddler titles that are tagged with a given tag
*/
exports.getTiddlersWithTag = function(tag) {
// Try to use the indexer
var self = this,
tagIndexer = this.getIndexer("TagIndexer"),
results = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);
if(!results) {
// If not available, perform a manual scan
results = this.getGlobalCache("taglist-" + tag,function() {
var tagmap = self.getTagMap();
return self.sortByList(tagmap[tag],tag);
});
}
return results;
};
/*
Get a hashmap by tag of arrays of tiddler titles
*/
exports.getTagMap = function() {
var self = this;
return this.getGlobalCache("tagmap",function() {
var tags = Object.create(null),
storeTags = function(tagArray,title) {
if(tagArray) {
for(var index=0; index<tagArray.length; index++) {
var tag = tagArray[index];
if($tw.utils.hop(tags,tag)) {
tags[tag].push(title);
} else {
tags[tag] = [title];
}
}
}
},
title, tiddler;
// Collect up all the tags
self.eachShadow(function(tiddler,title) {
if(!self.tiddlerExists(title)) {
tiddler = self.getTiddler(title);
storeTags(tiddler.fields.tags,title);
}
});
self.each(function(tiddler,title) {
storeTags(tiddler.fields.tags,title);
});
return tags;
});
};
/*
Lookup a given tiddler and return a list of all the tiddlers that include it in the specified list field
*/
exports.findListingsOfTiddler = function(targetTitle,fieldName) {
fieldName = fieldName || "list";
var titles = [];
this.each(function(tiddler,title) {
var list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);
if(list && list.indexOf(targetTitle) !== -1) {
titles.push(title);
}
});
return titles;
};
/*
Sorts an array of tiddler titles according to an ordered list
*/
exports.sortByList = function(array,listTitle) {
var self = this,
replacedTitles = Object.create(null);
// Given a title, this function will place it in the correct location
// within titles.
function moveItemInList(title) {
if(!$tw.utils.hop(replacedTitles, title)) {
replacedTitles[title] = true;
var newPos = -1,
tiddler = self.getTiddler(title);
if(tiddler) {
var beforeTitle = tiddler.fields["list-before"],
afterTitle = tiddler.fields["list-after"];
if(beforeTitle === "") {
newPos = 0;
} else if(afterTitle === "") {
newPos = titles.length;
} else if(beforeTitle) {
// if this title is placed relative
// to another title, make sure that
// title is placed before we place
// this one.
moveItemInList(beforeTitle);
newPos = titles.indexOf(beforeTitle);
} else if(afterTitle) {
// Same deal
moveItemInList(afterTitle);
newPos = titles.indexOf(afterTitle);
if(newPos >= 0) {
++newPos;
}
}
// If a new position is specified, let's move it
if (newPos !== -1) {
// get its current Pos, and make sure
// sure that it's _actually_ in the list
// and that it would _actually_ move
// (#4275) We don't bother calling
// indexOf unless we have a new
// position to work with
var currPos = titles.indexOf(title);
if(currPos >= 0 && newPos !== currPos) {
// move it!
titles.splice(currPos,1);
if(newPos >= currPos) {
newPos--;
}
titles.splice(newPos,0,title);
}
}
}
}
}
var list = this.getTiddlerList(listTitle);
if(!array || array.length === 0) {
return [];
} else {
var titles = [], t, title;
// First place any entries that are present in the list
for(t=0; t<list.length; t++) {
title = list[t];
if(array.indexOf(title) !== -1) {
titles.push(title);
}
}
// Then place any remaining entries
for(t=0; t<array.length; t++) {
title = array[t];
if(list.indexOf(title) === -1) {
titles.push(title);
}
}
// Finally obey the list-before and list-after fields of each tiddler in turn
var sortedTitles = titles.slice(0);
for(t=0; t<sortedTitles.length; t++) {
title = sortedTitles[t];
moveItemInList(title);
}
return titles;
}
};
exports.getSubTiddler = function(title,subTiddlerTitle) {
var bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);
if(bundleInfo && bundleInfo.tiddlers) {
var subTiddler = bundleInfo.tiddlers[subTiddlerTitle];
if(subTiddler) {
return new $tw.Tiddler(subTiddler);
}
}
return null;
};
/*
Retrieve a tiddler as a JSON string of the fields
*/
exports.getTiddlerAsJson = function(title) {
var tiddler = this.getTiddler(title);
if(tiddler) {
var fields = Object.create(null);
$tw.utils.each(tiddler.fields,function(value,name) {
fields[name] = tiddler.getFieldString(name);
});
return JSON.stringify(fields);
} else {
return JSON.stringify({title: title});
}
};
exports.getTiddlersAsJson = function(filter,spaces) {
var tiddlers = this.filterTiddlers(filter),
spaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,
data = [];
for(var t=0;t<tiddlers.length; t++) {
var tiddler = this.getTiddler(tiddlers[t]);
if(tiddler) {
var fields = new Object();
for(var field in tiddler.fields) {
fields[field] = tiddler.getFieldString(field);
}
data.push(fields);
}
}
return JSON.stringify(data,null,spaces);
};
/*
Get the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:
application/json: the tiddler JSON is parsed into an object
application/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs
Other types currently just return null.
titleOrTiddler: string tiddler title or a tiddler object
defaultData: default data to be returned if the tiddler is missing or doesn't contain data
Note that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers
*/
exports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {
var self = this,
tiddler = titleOrTiddler;
if(!(tiddler instanceof $tw.Tiddler)) {
tiddler = this.getTiddler(tiddler);
}
if(tiddler) {
return this.getCacheForTiddler(tiddler.fields.title,"data",function() {
// Return the frozen value
var value = self.getTiddlerData(tiddler.fields.title,undefined);
$tw.utils.deepFreeze(value);
return value;
}) || defaultData;
} else {
return defaultData;
}
};
/*
Alternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused
*/
exports.getTiddlerData = function(titleOrTiddler,defaultData) {
var tiddler = titleOrTiddler,
data;
if(!(tiddler instanceof $tw.Tiddler)) {
tiddler = this.getTiddler(tiddler);
}
if(tiddler && tiddler.fields.text) {
switch(tiddler.fields.type) {
case "application/json":
// JSON tiddler
try {
data = JSON.parse(tiddler.fields.text);
} catch(ex) {
return defaultData;
}
return data;
case "application/x-tiddler-dictionary":
return $tw.utils.parseFields(tiddler.fields.text);
}
}
return defaultData;
};
/*
Extract an indexed field from within a data tiddler
*/
exports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {
var data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),
text;
if(data && $tw.utils.hop(data,index)) {
text = data[index];
}
if(typeof text === "string" || typeof text === "number") {
return text.toString();
} else {
return defaultText;
}
};
/*
Set a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to "application/json" and setting the text to the JSON text of the data.
title: title of tiddler
data: object that can be serialised to JSON
fields: optional hashmap of additional tiddler fields to be set
*/
exports.setTiddlerData = function(title,data,fields) {
var existingTiddler = this.getTiddler(title),
newFields = {
title: title
};
if(existingTiddler && existingTiddler.fields.type === "application/x-tiddler-dictionary") {
newFields.text = $tw.utils.makeTiddlerDictionary(data);
} else {
newFields.type = "application/json";
newFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);
}
this.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));
};
/*
Return the content of a tiddler as an array containing each line
*/
exports.getTiddlerList = function(title,field,index) {
if(index) {
return $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,""));
}
field = field || "list";
var tiddler = this.getTiddler(title);
if(tiddler) {
return ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);
}
return [];
};
// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs
exports.getGlobalCache = function(cacheName,initializer) {
this.globalCache = this.globalCache || Object.create(null);
if($tw.utils.hop(this.globalCache,cacheName)) {
return this.globalCache[cacheName];
} else {
this.globalCache[cacheName] = initializer();
return this.globalCache[cacheName];
}
};
exports.clearGlobalCache = function() {
this.globalCache = Object.create(null);
};
// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it
exports.getCacheForTiddler = function(title,cacheName,initializer) {
this.caches = this.caches || Object.create(null);
var caches = this.caches[title];
if(caches && caches[cacheName]) {
return caches[cacheName];
} else {
if(!caches) {
caches = Object.create(null);
this.caches[title] = caches;
}
caches[cacheName] = initializer();
return caches[cacheName];
}
};
// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers
exports.clearCache = function(title) {
if(title) {
this.caches = this.caches || Object.create(null);
if($tw.utils.hop(this.caches,title)) {
delete this.caches[title];
}
} else {
this.caches = Object.create(null);
}
};
exports.initParsers = function(moduleType) {
// Install the parser modules
$tw.Wiki.parsers = {};
var self = this;
$tw.modules.forEachModuleOfType("parser",function(title,module) {
for(var f in module) {
if($tw.utils.hop(module,f)) {
$tw.Wiki.parsers[f] = module[f]; // Store the parser class
}
}
});
// Use the generic binary parser for any binary types not registered so far
if($tw.Wiki.parsers["application/octet-stream"]) {
Object.keys($tw.config.contentTypeInfo).forEach(function(type) {
if(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === "base64") {
$tw.Wiki.parsers[type] = $tw.Wiki.parsers["application/octet-stream"];
}
});
}
};
/*
Parse a block of text of a specified MIME type
type: content type of text to be parsed
text: text
options: see below
Options include:
parseAsInline: if true, the text of the tiddler will be parsed as an inline run
_canonical_uri: optional string of the canonical URI of this content
*/
exports.parseText = function(type,text,options) {
text = text || "";
options = options || {};
// Select a parser
var Parser = $tw.Wiki.parsers[type];
if(!Parser && $tw.utils.getFileExtensionInfo(type)) {
Parser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];
}
if(!Parser) {
Parser = $tw.Wiki.parsers[options.defaultType || "text/vnd.tiddlywiki"];
}
if(!Parser) {
return null;
}
// Return the parser instance
return new Parser(type,text,{
parseAsInline: options.parseAsInline,
wiki: this,
_canonical_uri: options._canonical_uri
});
};
/*
Parse a tiddler according to its MIME type
*/
exports.parseTiddler = function(title,options) {
options = $tw.utils.extend({},options);
var cacheType = options.parseAsInline ? "inlineParseTree" : "blockParseTree",
tiddler = this.getTiddler(title),
self = this;
return tiddler ? this.getCacheForTiddler(title,cacheType,function() {
if(tiddler.hasField("_canonical_uri")) {
options._canonical_uri = tiddler.fields._canonical_uri;
}
return self.parseText(tiddler.fields.type,tiddler.fields.text,options);
}) : null;
};
exports.parseTextReference = function(title,field,index,options) {
var tiddler,text;
if(options.subTiddler) {
tiddler = this.getSubTiddler(title,options.subTiddler);
} else {
tiddler = this.getTiddler(title);
if(field === "text" || (!field && !index)) {
this.getTiddlerText(title); // Force the tiddler to be lazily loaded
return this.parseTiddler(title,options);
}
}
if(field === "text" || (!field && !index)) {
if(tiddler && tiddler.fields) {
return this.parseText(tiddler.fields.type,tiddler.fields.text,options);
} else {
return null;
}
} else if(field) {
if(field === "title") {
text = title;
} else {
if(!tiddler || !tiddler.hasField(field)) {
return null;
}
text = tiddler.fields[field];
}
return this.parseText("text/vnd.tiddlywiki",text.toString(),options);
} else if(index) {
this.getTiddlerText(title); // Force the tiddler to be lazily loaded
text = this.extractTiddlerDataItem(tiddler,index,undefined);
if(text === undefined) {
return null;
}
return this.parseText("text/vnd.tiddlywiki",text,options);
}
};
/*
Make a widget tree for a parse tree
parser: parser object
options: see below
Options include:
document: optional document to use
variables: hashmap of variables to set
parentWidget: optional parent widget for the root node
*/
exports.makeWidget = function(parser,options) {
options = options || {};
var widgetNode = {
type: "widget",
children: []
},
currWidgetNode = widgetNode;
// Create set variable widgets for each variable
$tw.utils.each(options.variables,function(value,name) {
var setVariableWidget = {
type: "set",
attributes: {
name: {type: "string", value: name},
value: {type: "string", value: value}
},
children: []
};
currWidgetNode.children = [setVariableWidget];
currWidgetNode = setVariableWidget;
});
// Add in the supplied parse tree nodes
currWidgetNode.children = parser ? parser.tree : [];
// Create the widget
return new widget.widget(widgetNode,{
wiki: this,
document: options.document || $tw.fakeDocument,
parentWidget: options.parentWidget
});
};
/*
Make a widget tree for transclusion
title: target tiddler title
options: as for wiki.makeWidget() plus:
options.field: optional field to transclude (defaults to "text")
options.mode: transclusion mode "inline" or "block"
options.recursionMarker : optional flag to set a recursion marker, defaults to "yes"
options.children: optional array of children for the transclude widget
options.importVariables: optional importvariables filter string for macros to be included
options.importPageMacros: optional boolean; if true, equivalent to passing "[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]" to options.importVariables
*/
exports.makeTranscludeWidget = function(title,options) {
options = options || {};
var parseTreeDiv = {tree: [{
type: "element",
tag: "div",
children: []}]},
parseTreeImportVariables = {
type: "importvariables",
attributes: {
filter: {
name: "filter",
type: "string"
}
},
isBlock: false,
children: []},
parseTreeTransclude = {
type: "transclude",
attributes: {
recursionMarker: {
name: "recursionMarker",
type: "string",
value: options.recursionMarker || "yes"
},
tiddler: {
name: "tiddler",
type: "string",
value: title
}
},
isBlock: !options.parseAsInline};
if(options.importVariables || options.importPageMacros) {
if(options.importVariables) {
parseTreeImportVariables.attributes.filter.value = options.importVariables;
} else if(options.importPageMacros) {
parseTreeImportVariables.attributes.filter.value = "[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]";
}
parseTreeDiv.tree[0].children.push(parseTreeImportVariables);
parseTreeImportVariables.children.push(parseTreeTransclude);
} else {
parseTreeDiv.tree[0].children.push(parseTreeTransclude);
}
if(options.field) {
parseTreeTransclude.attributes.field = {type: "string", value: options.field};
}
if(options.mode) {
parseTreeTransclude.attributes.mode = {type: "string", value: options.mode};
}
if(options.children) {
parseTreeTransclude.children = options.children;
}
return this.makeWidget(parseTreeDiv,options);
};
/*
Parse text in a specified format and render it into another format
outputType: content type for the output
textType: content type of the input text
text: input text
options: see below
Options include:
variables: hashmap of variables to set
parentWidget: optional parent widget for the root node
*/
exports.renderText = function(outputType,textType,text,options) {
options = options || {};
var parser = this.parseText(textType,text,options),
widgetNode = this.makeWidget(parser,options);
var container = $tw.fakeDocument.createElement("div");
widgetNode.render(container,null);
return outputType === "text/html" ? container.innerHTML : container.textContent;
};
/*
Parse text from a tiddler and render it into another format
outputType: content type for the output
title: title of the tiddler to be rendered
options: see below
Options include:
variables: hashmap of variables to set
parentWidget: optional parent widget for the root node
*/
exports.renderTiddler = function(outputType,title,options) {
options = options || {};
var parser = this.parseTiddler(title,options),
widgetNode = this.makeWidget(parser,options);
var container = $tw.fakeDocument.createElement("div");
widgetNode.render(container,null);
return outputType === "text/html" ? container.innerHTML : (outputType === "text/plain-formatted" ? container.formattedTextContent : container.textContent);
};
/*
Return an array of tiddler titles that match a search string
text: The text string to search for
options: see below
Options available:
source: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)
exclude: An array of tiddler titles to exclude from the search
invert: If true returns tiddlers that do not contain the specified string
caseSensitive: If true forces a case sensitive search
field: If specified, restricts the search to the specified field, or an array of field names
anchored: If true, forces all but regexp searches to be anchored to the start of text
excludeField: If true, the field options are inverted to specify the fields that are not to be searched
The search mode is determined by the first of these boolean flags to be true
literal: searches for literal string
whitespace: same as literal except runs of whitespace are treated as a single space
regexp: treats the search term as a regular expression
words: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering
*/
exports.search = function(text,options) {
options = options || {};
var self = this,
t,
invert = !!options.invert;
// Convert the search string into a regexp for each term
var terms, searchTermsRegExps,
flags = options.caseSensitive ? "" : "i",
anchor = options.anchored ? "^" : "";
if(options.literal) {
if(text.length === 0) {
searchTermsRegExps = null;
} else {
searchTermsRegExps = [new RegExp("(" + anchor + $tw.utils.escapeRegExp(text) + ")",flags)];
}
} else if(options.whitespace) {
terms = [];
$tw.utils.each(text.split(/\s+/g),function(term) {
if(term) {
terms.push($tw.utils.escapeRegExp(term));
}
});
searchTermsRegExps = [new RegExp("(" + anchor + terms.join("\\s+") + ")",flags)];
} else if(options.regexp) {
try {
searchTermsRegExps = [new RegExp("(" + text + ")",flags)];
} catch(e) {
searchTermsRegExps = null;
console.log("Regexp error parsing /(" + text + ")/" + flags + ": ",e);
}
} else {
terms = text.split(/ +/);
if(terms.length === 1 && terms[0] === "") {
searchTermsRegExps = null;
} else {
searchTermsRegExps = [];
for(t=0; t<terms.length; t++) {
searchTermsRegExps.push(new RegExp("(" + anchor + $tw.utils.escapeRegExp(terms[t]) + ")",flags));
}
}
}
// Accumulate the array of fields to be searched or excluded from the search
var fields = [];
if(options.field) {
if($tw.utils.isArray(options.field)) {
$tw.utils.each(options.field,function(fieldName) {
if(fieldName) {
fields.push(fieldName);
}
});
} else {
fields.push(options.field);
}
}
// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)
if(fields.length === 0 && !options.excludeField) {
fields.push("title");
fields.push("tags");
fields.push("text");
}
// Function to check a given tiddler for the search term
var searchTiddler = function(title) {
if(!searchTermsRegExps) {
return true;
}
var notYetFound = searchTermsRegExps.slice();
var tiddler = self.getTiddler(title);
if(!tiddler) {
tiddler = new $tw.Tiddler({title: title, text: "", type: "text/vnd.tiddlywiki"});
}
var contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo["text/vnd.tiddlywiki"],
searchFields;
// Get the list of fields we're searching
if(options.excludeField) {
searchFields = Object.keys(tiddler.fields);
$tw.utils.each(fields,function(fieldName) {
var p = searchFields.indexOf(fieldName);
if(p !== -1) {
searchFields.splice(p,1);
}
});
} else {
searchFields = fields;
}
for(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {
// Don't search the text field if the content type is binary
var fieldName = searchFields[fieldIndex];
if(fieldName === "text" && contentTypeInfo.encoding !== "utf8") {
break;
}
var str = tiddler.fields[fieldName],
t;
if(str) {
if($tw.utils.isArray(str)) {
// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry
for(var s=0; s<str.length; s++) {
for(t=0; t<notYetFound.length;) {
if(notYetFound[t].test(str[s])) {
notYetFound.splice(t, 1);
} else {
t++;
}
}
}
} else {
// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match
str = tiddler.getFieldString(fieldName);
for(t=0; t<notYetFound.length;) {
if(notYetFound[t].test(str)) {
notYetFound.splice(t, 1);
} else {
t++;
}
}
}
}
};
return notYetFound.length == 0;
};
// Loop through all the tiddlers doing the search
var results = [],
source = options.source || this.each;
source(function(tiddler,title) {
if(searchTiddler(title) !== options.invert) {
results.push(title);
}
});
// Remove any of the results we have to exclude
if(options.exclude) {
for(t=0; t<options.exclude.length; t++) {
var p = results.indexOf(options.exclude[t]);
if(p !== -1) {
results.splice(p,1);
}
}
}
return results;
};
/*
Trigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.
*/
exports.getTiddlerText = function(title,defaultText) {
var tiddler = this.getTiddler(title);
// Return undefined if the tiddler isn't found
if(!tiddler) {
return defaultText;
}
if(!tiddler.hasField("_is_skinny")) {
// Just return the text if we've got it
return tiddler.fields.text || "";
} else {
// Tell any listeners about the need to lazily load this tiddler
this.dispatchEvent("lazyLoad",title);
// Indicate that the text is being loaded
return null;
}
};
/*
Check whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed
*/
exports.checkTiddlerText = function(title,targetText,options) {
options = options || {};
var text = this.getTiddlerText(title,"");
if(!options.noTrim) {
text = text.trim();
}
if(!options.caseSensitive) {
text = text.toLowerCase();
targetText = targetText.toLowerCase();
}
return text === targetText;
}
/*
Read an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read
*/
exports.readFiles = function(files,options) {
var callback;
if(typeof options === "function") {
callback = options;
options = {};
} else {
callback = options.callback;
}
var result = [],
outstanding = files.length,
readFileCallback = function(tiddlerFieldsArray) {
result.push.apply(result,tiddlerFieldsArray);
if(--outstanding === 0) {
callback(result);
}
};
for(var f=0; f<files.length; f++) {
this.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));
}
return files.length;
};
/*
Read a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects
*/
exports.readFile = function(file,options) {
var callback;
if(typeof options === "function") {
callback = options;
options = {};
} else {
callback = options.callback;
}
// Get the type, falling back to the filename extension
var self = this,
type = file.type;
if(type === "" || !type) {
var dotPos = file.name.lastIndexOf(".");
if(dotPos !== -1) {
var fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));
if(fileExtensionInfo) {
type = fileExtensionInfo.type;
}
}
}
// Figure out if we're reading a binary file
var contentTypeInfo = $tw.config.contentTypeInfo[type],
isBinary = contentTypeInfo ? contentTypeInfo.encoding === "base64" : false;
// Log some debugging information
if($tw.log.IMPORT) {
console.log("Importing file '" + file.name + "', type: '" + type + "', isBinary: " + isBinary);
}
// Give the hook a chance to process the drag
if($tw.hooks.invokeHook("th-importing-file",{
file: file,
type: type,
isBinary: isBinary,
callback: callback
}) !== true) {
this.readFileContent(file,type,isBinary,options.deserializer,callback);
}
};
/*
Lower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects
*/
exports.readFileContent = function(file,type,isBinary,deserializer,callback) {
var self = this;
// Create the FileReader
var reader = new FileReader();
// Onload
reader.onload = function(event) {
var text = event.target.result,
tiddlerFields = {title: file.name || "Untitled"};
if(isBinary) {
var commaPos = text.indexOf(",");
if(commaPos !== -1) {
text = text.substr(commaPos + 1);
}
}
// Check whether this is an encrypted TiddlyWiki file
var encryptedJson = $tw.utils.extractEncryptedStoreArea(text);
if(encryptedJson) {
// If so, attempt to decrypt it with the current password
$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {
callback(tiddlers);
});
} else {
// Otherwise, just try to deserialise any tiddlers in the file
callback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));
}
};
// Kick off the read
if(isBinary) {
reader.readAsDataURL(file);
} else {
reader.readAsText(file);
}
};
/*
Find any existing draft of a specified tiddler
*/
exports.findDraft = function(targetTitle) {
var draftTitle = undefined;
this.forEachTiddler({includeSystem: true},function(title,tiddler) {
if(tiddler.fields["draft.title"] && tiddler.fields["draft.of"] === targetTitle) {
draftTitle = title;
}
});
return draftTitle;
}
/*
Check whether the specified draft tiddler has been modified.
If the original tiddler doesn't exist, create a vanilla tiddler variable,
to check if additional fields have been added.
*/
exports.isDraftModified = function(title) {
var tiddler = this.getTiddler(title);
if(!tiddler.isDraft()) {
return false;
}
var ignoredFields = ["created", "modified", "title", "draft.title", "draft.of"],
origTiddler = this.getTiddler(tiddler.fields["draft.of"]) || new $tw.Tiddler({text:"", tags:[]}),
titleModified = tiddler.fields["draft.title"] !== tiddler.fields["draft.of"];
return titleModified || !tiddler.isEqual(origTiddler,ignoredFields);
};
/*
Add a new record to the top of the history stack
title: a title string or an array of title strings
fromPageRect: page coordinates of the origin of the navigation
historyTitle: title of history tiddler (defaults to $:/HistoryList)
*/
exports.addToHistory = function(title,fromPageRect,historyTitle) {
var story = new $tw.Story({wiki: this, historyTitle: historyTitle});
story.addToHistory(title,fromPageRect);
console.log("$tw.wiki.addToHistory() is deprecated since V5.1.23! Use the this.story.addToHistory() from the story-object!")
};
/*
Add a new tiddler to the story river
title: a title string or an array of title strings
fromTitle: the title of the tiddler from which the navigation originated
storyTitle: title of story tiddler (defaults to $:/StoryList)
options: see story.js
*/
exports.addToStory = function(title,fromTitle,storyTitle,options) {
var story = new $tw.Story({wiki: this, storyTitle: storyTitle});
story.addToStory(title,fromTitle,options);
console.log("$tw.wiki.addToStory() is deprecated since V5.1.23! Use the this.story.addToStory() from the story-object!")
};
/*
Generate a title for the draft of a given tiddler
*/
exports.generateDraftTitle = function(title) {
var c = 0,
draftTitle,
username = this.getTiddlerText("$:/status/UserName"),
attribution = username ? " by " + username : "";
do {
draftTitle = "Draft " + (c ? (c + 1) + " " : "") + "of '" + title + "'" + attribution;
c++;
} while(this.tiddlerExists(draftTitle));
return draftTitle;
};
/*
Invoke the available upgrader modules
titles: array of tiddler titles to be processed
tiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array
Returns a hashmap of messages keyed by tiddler title.
*/
exports.invokeUpgraders = function(titles,tiddlers) {
// Collect up the available upgrader modules
var self = this;
if(!this.upgraderModules) {
this.upgraderModules = [];
$tw.modules.forEachModuleOfType("upgrader",function(title,module) {
if(module.upgrade) {
self.upgraderModules.push(module);
}
});
}
// Invoke each upgrader in turn
var messages = {};
for(var t=0; t<this.upgraderModules.length; t++) {
var upgrader = this.upgraderModules[t],
upgraderMessages = upgrader.upgrade(this,titles,tiddlers);
$tw.utils.extend(messages,upgraderMessages);
}
return messages;
};
// Determine whether a plugin by title is dynamically loadable
exports.doesPluginRequireReload = function(title) {
return this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));
};
// Determine whether a plugin info structure is dynamically loadable
exports.doesPluginInfoRequireReload = function(pluginInfo) {
if(pluginInfo) {
var foundModule = false;
$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {
if(tiddler.type === "application/javascript" && $tw.utils.hop(tiddler,"module-type")) {
foundModule = true;
}
});
return foundModule;
} else {
return null;
}
};
exports.slugify = function(title,options) {
var tiddler = this.getTiddler(title),
slug;
if(tiddler && tiddler.fields.slug) {
slug = tiddler.fields.slug;
} else {
slug = $tw.utils.transliterate(title.toString().toLowerCase()) // Replace diacritics with basic lowercase ASCII
.replace(/\s+/g,"-") // Replace spaces with -
.replace(/[^\w\-\.]+/g,"") // Remove all non-word chars except dash and dot
.replace(/\-\-+/g,"-") // Replace multiple - with single -
.replace(/^-+/,"") // Trim - from start of text
.replace(/-+$/,""); // Trim - from end of text
}
// If the resulting slug is blank (eg because the title is just punctuation characters)
if(!slug) {
// ...then just use the character codes of the title
var result = [];
$tw.utils.each(title.split(""),function(char) {
result.push(char.charCodeAt(0).toString());
});
slug = result.join("-");
}
return slug;
};
})();
<div class="tc-alert">
<div class="tc-alert-toolbar">
<$button class="tc-btn-invisible"><$action-deletefield $tiddler=<<currentTiddler>> tags/><$action-deletetiddler $tiddler="$:/temp/DiceNewRoll"/>{{$:/core/images/close-button}}</$button>
</div>
<div class="tc-alert-subtitle">
<$view field="component"/> <$reveal type="nomatch" state="!!count" text=""><span class="tc-alert-highlight">({{$:/language/Count}}: <$view field="count"/>)</span></$reveal>
</div>
<div class="tc-alert-body">
<$transclude/>
</div>
</div>
<$reveal type="nomatch" state="!!article" text="the ">
<$button tooltip="Add 'the'" aria-label="Add 'the'" class=<<tv-config-toolbar-class>>>
<$action-setfield article="the "/>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/add-article}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text">
<$text text="Add 'the'"/>
</span>
</$list>
</$button>
</$reveal>
\whitespace trim
\define find-things-button(class)
<$button message="tm-navigate" to="Find Things" rootwindow="true" tooltip="Find Items, Spells, Creatures, or Anything Else" aria-label="Find Things" class="""$(tv-config-toolbar-class)$ $class$""">
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/list}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text="Find Things"/></span>
</$list>
</$button>
\end
<$list filter="[list[$:/StoryList]] +[field:title[Find Things]]" emptyMessage=<<find-things-button>>>
<<find-things-button "tc-selected">>
</$list>
<$reveal type="match" state="!!article" text="the ">
<$button tooltip="Remove 'the'" aria-label="Remove 'the'" class=<<tv-config-toolbar-class>>>
<$action-deletefield article/>
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/core/images/remove-article}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text">
<$text text="Remove 'the'"/>
</span>
</$list>
</$button>
</$reveal>
<$action-sendmessage
$message="tm-edit-text-operation"
$param="wrap-selection"
prefix='<<dr "'
suffix='">>'
/>
<$action-sendmessage
$message="tm-edit-text-operation"
$param="wrap-selection"
prefix='<<tt "'
suffix='">>'
/>
\define lingo-base() $:/language/EditTemplate/
\define config-title()
$:/config/EditTemplateFields/Visibility/$(currentField)$
\end
\define config-filter()
[[hide]] -[title{$(config-title)$}]
\end
\define current-tiddler-new-field-selector()
[data-tiddler-title="$(currentTiddlerCSSescaped)$"] .tc-edit-field-add-name-wrapper input
\end
\define new-field-actions()
<$action-sendmessage $message="tm-add-field" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>
<$action-deletetiddler $filter="[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]"/>
<$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/>
\end
\define delete-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]"/>
\define cancel-search-actions-inner()
<$list filter="[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]" variable="ignore" emptyMessage="""<<cancel-delete-tiddler-actions "cancel">>""">
<<delete-state-tiddlers>>
</$list>
\end
\define cancel-search-actions()
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}>
<$list filter="[<newFieldNameTiddler>get[text]!match<userInput>]" emptyMessage="""<<cancel-search-actions-inner>>""">
<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
</$list>
</$set>
\end
\define new-field()
<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>
<$reveal type="nomatch" text="" default=<<name>>>
<$button tooltip=<<lingo Fields/Add/Button/Hint>>>
<$action-sendmessage $message="tm-add-field"
$name=<<name>>
$value={{{ [<newFieldValueTiddler>get[text]] }}}/>
<$action-deletetiddler $filter="[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]"/>
<<lingo Fields/Add/Button>>
</$button>
</$reveal>
<$reveal type="match" text="" default=<<name>>>
<$button>
<<lingo Fields/Add/Button>>
</$button>
</$reveal>
</$vars>
\end
\whitespace trim
<div class="tc-edit-fields">
<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>
<tbody>
<$list filter="[all[current]fields[]] +[sort[title]]" variable="currentField" storyview="pop">
<$list filter=<<config-filter>> variable="temp">
<tr class="tc-edit-field">
<td class="tc-edit-field-name">
<$text text=<<currentField>>/>:</td>
<td class="tc-edit-field-value">
<$keyboard key="((delete-field))" actions="""<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/></$set>""">
<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/>
</$keyboard>
</td>
<td class="tc-edit-field-remove">
<$button class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>
<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/></$set>
{{$:/core/images/delete-button}}
</$button>
</td>
</tr>
</$list>
</$list>
</tbody>
</table>
</div>
<$fieldmangler>
<div class="tc-edit-field-add">
<em class="tc-edit tc-big-gap-right">
<<lingo Fields/Add/Prompt>>
</em>
<$vars refreshTitle=<<qualify "$:/temp/fieldname/refresh">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>
<div class="tc-edit-field-add-name-wrapper">
<$macrocall $name="keyboard-driven-input" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>
selectionStateTitle=<<searchListState>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}
focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}}
focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups="yes"
configTiddlerFilter="[[$:/config/EditMode/fieldname-filter]]" inputCancelActions=<<cancel-search-actions>> />
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>
<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="">
<div class="tc-block-dropdown tc-edit-type-dropdown">
<$set name="tv-show-missing-links" value="yes">
<$linkcatcher to=<<newFieldNameTiddler>>>
<div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/User>>
</div>
<$set name="newFieldName" value={{{ [<storeTitle>get[text]] }}}>
<$list filter="[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type" variable="currentField">
<$list filter="[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$link to=<<currentField>>>
<$text text=<<currentField>>/>
</$link>
</$list>
</$list>
<div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/System>>
</div>
<$list filter="[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField">
<$list filter="[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$link to=<<currentField>>>
<$text text=<<currentField>>/>
</$link>
</$list>
</$list>
</$set>
</$linkcatcher>
</$set>
</div>
</$reveal>
</div>
<div align="right">
<span class="tc-edit-field-add-value tc-small-gap-right">
<$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}>
<$keyboard key="((add-field))" actions=<<new-field-actions>>>
<$edit-text tiddler=<<newFieldValueTiddler>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor" tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/>
</$keyboard>
</$set>
</span>
<span class="tc-edit-field-add-button">
<$macrocall $name="new-field"/>
</span>
</div>
</$vars>
</div>
</$fieldmangler>
\whitespace trim
\define lingo-base() $:/language/EditTemplate/
\define tag-styles()
background-color:$(backgroundColor)$;
fill:$(foregroundColor)$;
color:$(foregroundColor)$;
\end
\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon)
\whitespace trim
<$vars foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> backgroundColor="""$colour$""">
<span style=<<tag-styles>> class="tc-tag-label tc-tag-list-item">
<$transclude tiddler="""$icon$"""/> <$view field="title" format="text" />
<$button message="tm-remove-tag" param={{!!title}} class="tc-btn-invisible tc-remove-tag-button">{{$:/core/images/close-button}}</$button>
</span>
</$vars>
\end
\define tag-body(colour,palette,icon)
<$macrocall $name="tag-body-inner" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon="""$icon$"""/>
\end
\define tag-picker-actions()
<$action-listops
$tiddler=<<currentTiddler>>
$field="tags"
$subfilter="[<tag>] [all[current]tags[]]"
/>
\end
<div class="tc-edit-tags">
<$fieldmangler>
<$list filter="[all[current]tags[]sort[title]]" storyview="pop">
<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}}/>
</$list>
</$fieldmangler>
<$set name="tabIndex" value={{$:/config/EditTabIndex}}>
<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/>
</$set>
</div>
\whitespace trim
\define lingo-base() $:/language/CloseAll/
\define drop-actions()
<$action-listops $tiddler=<<tv-story-list>> $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
\end
\define placeholder()
<div class="tc-droppable-placeholder"/>
\end
\define droppable-item(button)
\whitespace trim
<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>
<<placeholder>>
<div>
$button$
</div>
</$droppable>
\end
<div class="tc-sidebar-tab-open">
<$list filter="[list<tv-story-list>]" history=<<tv-history-list>> storyview="pop">
<div class="tc-sidebar-tab-open-item">
<$macrocall $name="droppable-item" button="""<$button message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class="tc-btn-invisible tc-btn-mini tc-small-gap-right">{{$:/core/images/close-button}}</$button> <$link><span style="font-weight:normal;">{{!!article}}</span>{{!!title}}</$link>"""/>
</div>
</$list>
<$tiddler tiddler="">
<div>
<$macrocall $name="droppable-item" button="""<$button message="tm-close-all-tiddlers" class="tc-btn-invisible tc-btn-mini"><<lingo Button>></$button>"""/>
</div>
</$tiddler>
</div>
<div style="height: 3px;background-color: #909090;background-image: linear-gradient(to right, #909090, #ffffff);position: -webkit-sticky;position:-moz-sticky;position:-o-sticky;position:-ms-sticky;position:sticky;top:73px"></div>
<$reveal tag="div" class="tc-tiddler-body" type="nomatch" stateTitle=<<folded-state>> text="hide" retain="yes" animate="yes">
<$list filter="[all[current]!has[plugin-type]!field:hide-body[yes]]">
<$transclude>
<$transclude tiddler="$:/language/MissingTiddler/Hint"/>
</$transclude>
</$list>
</$reveal>
<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-subtitle">
<$link to={{!!modifier}}>
<$view field="modifier"/>
</$link> <span style="font-weight: bold;">{{!!category}}</span> <$view field="modified" format="date" template={{$:/language/Tiddler/DateFormat}}/>
</div>
</$reveal>
<$reveal type="nomatch" stateTitle=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-tags-wrapper" style="display:inline-block;vertical-align:middle;width:100%;"><$list filter="[all[current]tags[]sort[title]]" template="$:/core/ui/TagTemplate" storyview="pop" emptyMessage=""/><div style="float:right">{{||TierTemplate}}</div></div>
</$reveal>
\define title-styles()
fill:$(foregroundColor)$;
\end
\define config-title()
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
\end
<div class="tc-tiddler-title" style="height:45px;">
<div class="tc-titlebar">
<span class="tc-tiddler-controls" style="position:absolute;top:0px;right:0px;">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem"><$reveal type="nomatch" state=<<config-title>> text="hide"><$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>
</span>
<$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}>
<$link overrideClass="blacklink">
<$set name="foregroundColor" value={{!!color}}>
</$set>
<$list filter="[all[current]removeprefix[$:/]]">
<$set name="tid" filter="[<currentTiddler>addprefix[$:/]]">
<h2 class="tc-title" title={{$:/language/SystemTiddler/Tooltip}}><span class="tc-tiddler-title-icon" style=<<title-styles>>><$transclude tiddler={{!!icon}}/></span><span class="big-text" style="font-variant: small-caps;"><span class="tc-system-title-prefix">$:/</span><$text text=<<currentTiddler>>/></span>
</h2></$set>
</$list>
<$list filter="[all[current]!prefix[$:/]]">
<h2 class="tc-title">
<span class="big-text" style="font-variant: small-caps;"><div style="""width: 600px; height: 1.1em; text-overflow: ellipsis;text-align:left;overflow:hidden;white-space:nowrap;"""><span class="tc-tiddler-title-icon" style=<<title-styles>>><$transclude tiddler={{!!icon}}/></span><span class="xlightweight"><$view field="article"/></span><<currentTiddler>></div></span>
</h2>
</$list>
</$link>
</$set>
</div>
<$reveal type="nomatch" text="" default="" state=<<tiddlerInfoState>> class="tc-tiddler-info tc-popup-handle" animate="yes" retain="yes">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]" variable="listItem"><$transclude tiddler=<<listItem>> mode="block"/></$list>
</$reveal>
</div>
@font-face {
font-family: 'masoch-dirach';
src: url(data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAJZQABAAAAACFlAAAJXwAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4bgw4cIAZgAINyCAQRCAqIiUCF6R4LhwAAATYCJAOGfAQgBYQiB4UZW5SBMTKQx4FgVBxbFIHzIEXfwX1sVNRt0soo5K8LuCEDGnozHJUKqE2147OFgAjtYwTaUw9toKqBCDgiQQBIiAhhtaPp038MYWLJR/F6Gf1eYr+dgW0jf5KTd3iazr97985jl8tFmkqsSeqRtkmbSkSrkaaKpHVstLTA0LXYPsxabGOOTowOmH7BJk5nMIf5nwKzr2OA5tbtFkVsDb1gDHpr6K2hF4woV7Qio21GGUWJUYDY/y8h5qugWK/+g2J/YL6vvoG+9sPD9/s9+7WPvMeQVEOGCpUhmnmU6A2vos0kJCJD/CH/xMzdh2tlzma/7ghyhDwzkQVjUApCIRGzuwVZYzu8TvuSWql9eiJDQGAI/JmNE/6c5GcWyLDH1N+tG7uNW6ElsywFaBJD4hANgeAImvL+T2f/Wl2O3OV47Q8IRRlqH4S6pOhShee2M+2FkcawoJHMS6bdfY+9+OgnEQToJ93im2ln2icJ3HkWzrzoruhMZBpoQzsWAVYiy2blC4QvKl1x8LX2bLGJUTAkczDFl/11BnbgFr7BINjq+V+mlmljsVuHPUvKUifvg+yMz6RUoUJlirpfN8mZ3wB30IPbG/TssrAN6AQOKYlsLNcMzjnuyjgfWYcd7DnwLLlyjGR9qFCRT1IlsXOhMuOiREESa/j9TO17P/ntv5QoHZbRA6Ac68mf//+a+/+Ad01SxrtS7toe5JdTIFBDzKVEPEBygOhy9wZACtFWjUC1U2SnxGzlxmrsUahNyBk1I2djaLXoIJKyIaBG776Vbe/6hurzY1ukQUKMrzMn4lTfxbY2AiQqMrWsgZ67Sw8zJ8aWlUz9BgCC3Yc3T9x6P/H0lora9sdjzbO8UJRLyiaAlvBT0jCuIIczcgWBHN1VXQ6g8mYQeWKP7KtMVU8CTh3zFDQMz36t1CJIqGiky9WqTbcePznstEuu+91TL32BIOhEVBaU8ACRnT3xxvj8CUjIa6g5H+TFOsXI1+YmDFmS+GYLQeKIcoh4GFQN10QMW0XnbzISpWv4FyBTLmBPxdpmYZ6gQzvysrB8BMqUA2UumijHno87sq7XlTtEJBUybCe9OlxKL7eXNJsOLBkGwaSnpTV5BVTHSNjls+5hC6RGkUtBYx9K522dfS9rSiStalNTjXJ8Kd248+CDzU+AEKF4hMTCRYikoBYvQ5ZstvF4/Nm8lB+EtdJ4Dwe7k9sAdEkIj732UFzjn5xJwBMr0Vaw0bp/hRga/hJAfIzfF4FMTnbwV7uZK0e3hl0xUvDhD32NnuMw55o2tPYXWmap3QYdc9Its7Em6suF8vsijDZNuIVfhERM5EVLXA4aov//lR7cnE6PvQ474Yw7oYN5ZIQ2STiFd0uTxS9+8788m2N5Jk/nyTyRxYkf/P/H7w+nz0yfmD46fWR6eHpget/0zulFfx2/Nw3/HUERX0cJnYox8HwR8AhQPosTpEad0q1TVvYPrt5gNOWbLdaCwqLiktIym93hLK+odLmrqj01tXX1XqlMrlCq1HHxCYlJySmpGq1On2ZIz8jMys7JzcufYzQByxoam9e0Q3xV1pv19uzivGn77nI33Fzf3nO3v/8wLgbY9hYU36zZPP/w/aoSwH4XqAQMnwV8bslFoOf9wj3z1q/T0ku3zIuWtp04ee3p9Ru/TQw6/hkALvz540+g9vcUsOT64htNK1auWr5uPbD2/oZO4NTXCgCyGtYGO14qZJmkPH32VUe/XuxRZXZ55R+3pK9k21aKJQ0+nxgKh24DIfW9DYNQDkcVi1+e2wKkW1X1HMDKXwlGSBrzTZVlCE9pyIljamNeADrtgzTk5CnncipG4WMWk55O7+qhVK4aA3TNTK4xkr7rabCFcy1Jea2UcY2zFVSGRS8hdWxcXULSMubbVFsu968PvX5e3N/pH/JihHuuij+gjduygr7b9wJ/a0zkr0NFs3WzYJZmFaVbJ2/P/upa9nJrR9y/tuf80V++/omYzWeH7rzpWtGxlcUyZwNZqW5u8MfoqUu+lPtrUpr7yCw2j8XY2dJpIUNvK07u210UMOt+yNGGBsVwJQEBX7vPip8bvAoLr7lWuF3geziJgsTcSR6edweyhuCCa7f4zqpm6zwccAWJJTP0i11L3UuTSs+SziyezdattHoScAXJIEmjm9tTseqvHl/dvyZ/vWxdcDX0z6LLFXj5T98W6JFduOXadSD/mlz1PTJwIw9TlVthPSiY1FJ3z2fDiaTlZAYuIAmkenVzS8jGVKq9Xzy+Jn318rrg1RV/h06/dqt1dtFAU96YpPWQ9NbFK5QKhZdBzTqwZXYM1uOeVUex66Rr+hxpke2G35tuCOuQO7GQ2Hqy6YbJRNpsiwytMX/mzp6OQlP2gmL2ZsmKEViKXkKzmorC4qNxbUPc8/LDzBOzjP/HqJ6twHrFEVYqKerAbsY4betwklfur4Y+wzdMmb+7WhVJX8SfpMri1qfZdEisyUYTUbWqBngzuz/FE9tZBh2gaSpEP7+pM1z3yorQUAsM82GMshpYDJb9asLrjbqRtWaEZxcPF5Ad7fBoCil7hRuQDCSQUl2WvmJx+nnm4abopdT4zZDtHB5SKCWdnNv6jwigRrwl4/0TwsnRxmmRvNYCI62Gr6WE1D6deZJEBSuXxwVKw3H9vkk2G1St0KHzTg5o5y44UI3ku3chlBbQ1RYm97Mw1CvfqFBmpNky1u51vo1GdizFsgfBb7YU0Cy0wJ5lCWgknAqlhpWdK0ch6iJxQizRIludULH6EMvAUpY77A45hrO6hT/OVL5+PoeejapbghuHxQlIHk+bmlLk6Pl3EuHyFd0ReMt3HSGdhALK5bHE8Gm+ChXvfDUSZSicGEixutXcqLSqDXEEVKQ5QpK8c3cBPdoIKqRavV6CumheErSJnqYNwGPADiTzzRccWHkwpkECLF37njyKA+zj8Uc8jZMOaxTVe4v8YwiWt9CajF8e95WQoe4m0C7v2Gh6hoxQQDNWZVnpw3dyscBxoZgLlyniPUHEEU3jTVaXwYgLf1MaWESgHWPUHXNYX6EGuQNIjWohha8SU7wuYhiNWSDUwxOxJ2pW6yVPFhcgZHkIHX9Fet3deSTpu8SjhzuAi+O9a90QajctnhNy0fAaHob1IAh9V4Nv6hTRAJC33r48ZJCUfZbLh/zOfVd55LKvLKEmpd/T7/49m377wyCAVQpNu8MhPOYa+NqHQqRCE8Ekt5S+Qhre0ZtW8H/TSyMHhWBXh46tWEr2YSEo/HxEsPmxpBiD99tmcAfaUyjlTXatYKTzC50t7zkLBAtX2gw0M97dUHo63b4gCHOU8QjHSj9g+kDwzeSnhVbJygI+prnkTHD+uPgAEevuH4f8m2YCMTtih5tdgbjavHsL9X+xA/kshakvLKbJjW2F84HPXgOM4QPiKsX/yfZYqbG0Gj4P++ySOPBGOVmQ1yTz/X9T1JU2Jc5Sxlk59JUHvqZ7+dg0sAI53AJ2CDXANFbA/gtNDZyEo8oN0i5O4rd5aiPdE3PcBLz38tF/UGhCXkAK3RhuwC2AG7ah6W4ylbicxGtq58BAzDzRzEi/58zaYeDRKI8+2k57UWlO3X8yXCOulmza7U7Eib8uDKflyPZ2D7PBdi74MkWlXpPq8Hob6nTi9I7Oi4gBTefCOlLlkzvKN+Lz13fdjN1816v6gJifpPtj+YztK0r9T0YtNd99TtM1XWTG3+cCIaE4sG+Be+qm8SDrH8/Ocg/GooaeR0GQd1vv+TV24WIwOZiskNo79J5XPaXuU80hR6hVi7i2Phe1h+Hxu6kc8bPpaff+7b007sjv4QLblGcHaSVRmuVwgaRHQ7lPrmz0Mcsut1Ny9Hhd0ygjqBRLiueHqHOwQGo7WU4RH2cNQ1BJBkoPonm++s8PaLIMd+K1HRXVBtQbWnhSxhn7vTvOl377IuFTCGalgzjVgJ0htPAKPSCdN8wuEGU79Hx+pIrpHLxDtd2QdQHWE3sAeKDX+dg6XcaTaPNRxJ5K7jjNhdpSukPFk9gwKHDb0n12waRrxSbby8H8S6rUkfEexdkqbvB6GGar0td0gW5uYWy9ph7UYM9d7ChoT/ySjHePyychD9B86OP5Y2GY4HJJ8Q0TbjDLke1RyPVImRRW9rm6D2V74JPkblLk8+f0/Mic+rUj3v/06OP45AntItEU3iKiP2aUa7IkYGKmyygaUXiwJSD9byiGGoypvbRNq/BWhp5M6GiJNl2LhZSiP1/bvDsq+9XG9GksQIeq2UQsFAICPUB6jZFHkEsoR7bL46GVB8ZcI3GxmbCuEeQ9RoNzcfmcAHKNpMrNIBT5hjS22TRRIja0oCm57L2HdYYZ21YDKYx3xC7JjojdMBksgSh9zPrPksZZIcmGTHHSRD3XjuEbdpa43NiHsxi6VJ9WOs7JusmZmWzS8Z6IKDyoZcDIzRg+cAmm17M113c9gbRKLKqTUj04cuw2NLpN1n0ew8lqTNH7QbRlnqxObGt7qMU1zmKrdDtDm9hxY49pcRPhUSlWEMDBqMPcKJnhcooteXT6rU62A/5oZ5MbipO8MDmMY7jxAPTTvr76Ie97cf/XElwm3WcauUvKj3pkDwXmwF9hy6pYmFXdwxyRCCIb/XlxUUf2RuLq7afurDCmLVhbc2g/oU0s4DGVxMWKhazsTLAd2cNCb0jMVlsV+pTnn9hofHBDS2aakIfYSP4O5BhdE4ZXYeUUt/IoNQo7oCPojhE2WL2QgrrmVAwK2N7njVrPQu40s6tQvP/2oHHhMO4zWimnI/U2SvPNT7FNKQmqDzRnWeldvG7mQfHmTkHVU6ULk3A91kNwkUEqFJpCGeUBi4SshPc2fyURrqr/nKBseGJJEdDG+2fn7DpRRNQ9vozXpd32LGUW1UTmPTAeu/WTHBKgObSHprLGryDrq7ujO1nQRBzzJ7iJkx+3iIeDPrK+mSyfjsWxmuU9qN2reRk3qewN4XC6rMyANrERNvKpZTFvdMtCHrJiSLevTVsb8QfUR5oRnnLCm00zdA3XMP4BO81eaZhi2iKeMltR+wgcLFMXSQ5YVKmtPLqbO6RrDeiNneYbZouyLoUH/SZbmETAEUvwlf0hr7GksKf4FVx8yYOrCe91stWFXDYexiIceDUJ5WUlvSS9C2UDve8lLu7Ij9LSxVYa0axu0+04yYUkCv21PRgoFKIs0WKCm7ezctAG0rK0acA5Hec/Lg7dB3x2wiI7e/UhaTpH0tcuvZPlZslL/xYdwAd0Bti1oFFtuMhKGau7XfWFG9LmR3lhK4fk5136oBaq38WKnnbajqGemOzE9LHQDCNKmajxV1PYUfpOKtmKQY+7GsPkKOlt3td3RIqwHLsLVSO2c1pMiem6bZaCioCktCIOTWoaoXPZqtyTrvW29A+ZSu+Z8KQXFpgcH84+vrGOsyQtKWBA6t7F2nTMy/mLydQf7U3KdrH1qnwYeM5tlTQdYcU3EQ0NJzc5LrJOhO9zOs/6x+G4pE6j8znf3qW0K1IyohNCreESFbo2PpAn3r2dv+wF/vMJSbs68bSGzCUbn0CqbZ6mZB1zzk/ezpxL9zvdbzVQlAqzFmmlgdkY99ghNG16TD16+OXl5x25GzTzpAnIEXap1vCGJbbgLiTIscfU2q47Xf8x4kCsaKPncorgWhlupoFDVD0fp8bNSTGWV0C45mmPVYsfpiB6WlXqwZTPpAksQk3akW2WmOkIa0CY0tAtUfnbXUizqprjgl1tXhLzJTpZBClK7AuT+6fQLDdaN+LyhWbmmmjDagwp+8DCZuZhDqLFfM/4fTyVUiNrzvzdRF4rPRKVqR9Zh2f39P7v7HEWSPr7rVnIlZG35z/5ndm/rQ3OPm0D1OQuWb3oTfCmtS+wb2A/FGdZIRx4ZZgyE7NAlGRltObfOLucCyXbU2c+ZzQVkMRqAKeNaGygb0MpemC1YR/4SurU4Ml5GZ0acqvPT9qvkkcugQKIG3K0wA1SwP1QTFs/384o2RncMOCM4vd8aecHu7eHxElJoxa50LOMLYXLjGrCYRVR0M7v7KVLq0FjsOpvYytMV+Q7tQmbLK25TPdFbWorZXmDxwolyCN9LbmCfXej89I8lwcsaGld9arondwZeRG2K2QubCReRjcCFg1PAbnsh2EorawahqUUlshfxSS1PU/M+J0gJ8PavoQ7vGSQBVVC0QG8H95KURv9eTubu9R1hOQJTylar7pNlKoIgB0buy/effPigbC28K/ifd6/Jgazj6ns8daK9u7dTrjJOy7HLcoL50iHxuUNHWd8mJln4bFoj39PbG49u0qiUMTMj14E7kBmM4w3noji2FA8byMhSv1NGnFpgBxVar+x+WB8NYvH9oFm34y0GHyKI4BhDMHqxdTM941Q1w9eBLf5ykR/svskyW1gqfFuME56zFCu7bqFyHSj4zjxT6TsD/fzQ5NKw90gaPcnqw+LucJCH04+rqkvl0F/oZI4d8Ru3DeSzXTicrni+QW6vQdG6aDFJ4SVA4/l9nnA+zrb1xbHn+i7FLoHVI7R5oMn/nT49IiV7araVgk5z71IfGHQ8imrx8U0PHiaerAs9pT2nsHKib4D2kphW12K+qwYEGBwA61OaR/MpmYMv9gjN2gcjd4ke8WuNpJp4iZl03LgcLtsj+FDmib4gTWI0neSMX2kgGBIcgpUBDIefdjuYhRgYmpQw+b4/pMGTU7S12fAN1UIZcf/ZexfKe3lTQ2CEQ4BjloqByUjjEusKN2EVJB1nxez/2ciMN9FV6C/iC+q7ezB9Udh+ICdTRJ7JA3LSGMgRia9CSelz1mEA6Z5U9Y9kmXLlHlB1TSZ+SiXlzZYFBQZ3uquWJyD39Y9cWVWId3zvh3ce/Mkue5c/f10W4oRQkTOstZh9JYQrPqO4oMw/aUo122Ly1L1KpqYzvMDTLF3Ensl864QdmmqY9YvLBToV02Am9P+0yhM6MIPK+LqLH7CfEFlbcElIGfSF4A6tDPkIacIGDqrm+dSTME4WzWkMs3NECqLptcD/f2M4xDmDsgXm2tlIfb+efPP7sDMwbnd0ftLPyWy/Xqd+fGjYM4Tck8uqev77TnueUzV2cRoHNzUS46KAQV2IXdIW3mH0Y5oj+JnPOgU97quaWDG5Yex3lG2K4af4HXKnau85JGtZklxIlB3u5qC2Nmx0sYaevNkwiawwBHXlm08Av0YFxXFzbCzSewnOyOYmYCDHHdAe8vItDNOWKWmvGZFkc6fsqYrnreJ1WuhSoCtRtFKTJn4xvCewL1OOjLD35a2cYS4xKoL9fS4i9Bv5zjlGBzC48Q50nV1F2PUqeKKi7V4wUh3hA+ppDmoJmi4LSta6c20RSEUNVNTbNBIGZFYtPj4mLlIa7jA1Qf4iShIho8wJ12oxnkMj5jFYSaqZ0nnOaB7aptDTq2OYquIobwi1INESLGcOfvAMMT4hHyyF4EqQ1QicXHSZW8ErI7HKjyQoGpxtGmzBM6Yb/NGywc8PVIe0oFkciWLI5frf8u2J37FsMVhKQkBWcSA22Z7JPBcDY9CHb0opXnWPbIgQvqQWhQgNgV6gWhtRXaHJT532QQVBULmMZAUTzT9FRpV+9YSLWbEzhpagPZPdzYRTueZww6grfAOzKhNmkwxkiDcCVkmfN2XldDPZJ9JUPJwSVfoqv0/Qd4kIaA49bXsHCQ+hz2oKbhSQG/aRhL9nC2AYQpO+nELspEopz2ucnoUjlqeXovm9CwXJNIVtihEH2xXKwJ67j6gZg1Fd7fn2Bmn57Ro+0vC/rEaJ8KamGjBXgHAV4vo2Y5Kk/ZYluqjcyOxD/dyLMay3Eggkqkh+dRYmruEIsEgPm2qfj5pI40oPD0SdeqjCUjD6yDcvx2DAt85L+smtu9kXj+s9xpquCSHPmVDdMeDeDaeTuio2AFSpRBq79NctrCuiVEyJDvbJ8K1snwOhirebtVq70DJadz0EDmsbGMVpI4VB84FmUZFtAernppNPR+reabey3HD+aMnyvF4FCS02+VQucxnydCG0z+qH/EFxuc9PU6ps3bixqBekAtzSsvVluLEgoxwc2PeQQe19T3BPs0LpRe9sov0hYa5To8EwKiY4PcU3q0LOuHB42TkCVt1wEg3KgZX/i67A8bN16gFWW4R+u8ysLHGeZVPEK7iHtEQFsDGhOUuHRVS0qDegNO69FfP4kbVsbfdn2e1zTTbyRtkRb5bqFKeW3M1X66Rg9cz3g+hKaCpEEVcOlZVXMLiAYns/PaQuimeSQpvueLnaHWwjq1itVMmvE7wo9KaNqXJjikXZvAF8MmXnUZZ3lfpWahnkHHDWwA+daUId3mPsgTV060xD5OfuZO2+LO963GZVv356jHknKUCgnFiWgr3HU0DH5P7LCfcJClzxChGUgVFNDlRAz8+BBkHjFQ1qRqAYvixSA5KN8VTJb/iNpGZoQKaiNohdz2s9agTuLaUZl3W9aP6kF+K8iQ1a+Z1St+t93Ct8O6K4k9PFX6XAdSQElOSocrmiiJGsyZnwe1RaTtIFtckB7CbA5+E2rYYlu8GEfaNqGtOmYHybCHaQsUoWnrhrTHcxcilbYufNGin7rMo20rqfUY/cjfK0NDrZf9dnjR43GHOrgP2AwlCfYg6m2Kj3SdRWhi54JraHwk61zCcbAqn41ESbH1chxAfQNiuYLonpxCtXDoI+qigsq22MBLwDipFVHEQ3toZBebUpFjJoQ5tK151sE47dz0pQvZmgVhNyfEO/PFYfaEvtA5gHNoKUtoFlC1s0JygCONEves6SkyynZ4XhWfMUAEr1GpoVDtKNiWJKTSevItmI8Prcl+mPYTIAtAOUwF5FEFLRFwvupM5n2wJKxkJEUsh74menXTMJlS7VWYkQKKMF9Rx+2nGEBGyECgklAwWCWVpFVahQVcRB5KhLFXz6UgpKG2F6W5hbeZIBsQ0QGg1eUFLuezmBBX/mmIwHxrtRbhcSiEdZHTIxkz3QNeQAZAuE9JFG+OmEInicYyM9GoYw4AT5SipiocX3oNDrj+sPMoP1RKySAckrEghUJpYvI8rSfTHAO1zIXPJdODOjHUjUC4B11k424GgsB4ZMKDKF0etbi5GJdKSjf4giAXGmqxCUZvvr9iKsX2kWwXW/gAiLd6joZ9gJCsTGGcxqO9QX1P23gHC+Gm79HMKj+pp5NIFm4yi6Z7ocIkLtCvoLYYrgUgslW3UoBUPHQojpQfK8k1gYsGFMoOX3owiGTsOZlH9HTgy8tdqPDkrKdHIp+tznlSO31TtZTBUamfSdnWVy4NDt+PaZkYb697zWB/a1iPhg6jlP6xyTBJUQHaPaDgdskdXqVP1zHs8bwVoZBReUxMd6BwoASNtWjCeLZEEmSpBaXhOJWeJhtP87CqlBPEeb+ktHmdoij8b0FRglZq/SaXRgai3wBMnC1kQ/fgkO9Goz5KpoWuXUTrHAu8XaZdnUfjFmt9obqhz1ffg7xEwXXiHedDirS7TW/CO7u3L4BEeo70DyRWWjsfybNDnEVsZ2sX9zA6Ssw/vnaOWEp+7Vf276EOPeiLONI8NbYliWmGhy/XT2MmVFs5iky2zenMzQ9K0VjZn8OonfcjFLZUBxwTBQBTD+Cj7rCgVYOkC5CqdEn+yIqEgdLJHoWoQNNdHjyeT+eC+fh4tSgJzR96jXRmSHR9u8Q3I8p5kZir4h7FHGOoWHGpVAF/EPEsjRO+TcSTtpBEI+KvSZ0MK5RCMvGxvqnQFYVKU3/e4eQHwMeFdZA+omvQsbiJVvyqPgjNGobfjWBBaCuDORMnTLEq+5uCt/ntlHcNs2MaB4jSvLwjv1J8iwN5mwkWSqkBaDlUaY7VYlZog0XvyniSYZ/HMQLLgLYjKxWbNzNGJpnM98OJcOzsHKmB+4/V8S0d1kXm3nfgEIJmuKBexeiGiKv0udebKkiieoDwNFT7Mbz1E/Ilj29tL1DUM7tDhY0jvrQQNQlzP4fJsYY0FAihcMbhxVzaZuqPIt4j/W8/PsdyiMxOglgM0oTmKCvLdPuVEoPAjvEXdiaHAixSYgULaCqacI7OQqhb45W6sO/aVKYCdkehpFz+xLjOobD5Woy8eitWAfqiWk+D1FA0FzHBbpO3N9WFgVB5lkFMtYHVt7xy54AucmGY8oVTyhL5rieKTTAHjn1xYUQAye1pgIXlgZGXlEkeyKG4ftEGj/88QiyZigadTDHuAQ8nPrlA9powwsnu774983q/6Sp/ozaMJbQrFBjP+ya1d6A235utIImjPdxN4j9grz/Ylj2Y4Wu20MYdSThEs0zwW0j2tlmZ35vndADN3hkKasDYSdnI3cDrBSrlEUqYa8xjDmWoi7XktLbbIw80aneNRmDRIXnDZumF76b82Erv1gxXVHq/trvfif9keZWicdou1Qc3OU5tCPWo0MCo9fSUOaPTaFjCkzFRZELIewHAH2V4MOJOZZOFnX1KKNeKzRyVuZ1pvgG75CwUAU8KOWA0lWhw4HMp+MQpkK0bj862/WNI7+HAXSc4unwB2CuEwKmwvy4aYsApuUj7gW9dFbbV4DBHMKLwHerDWZiJutaIFnkIf4BY7hu3mFRG2/6LG6+NMr5MzK9CeHgusyLrS3Y1ICtqH9cOa1I1KkXt+FAhAcZnY8gzlwBV+WxaTPJ8VuEPwNQ2Ex1FD9CoIUBG45CZLt3mS0TjuJN4BouKFTmuUbhR1TElH2naOuEgxCq0gaspw2xU6QsjXBN3yHBf+19FFcdWUdiVa5y/bGbJ5WCKGuhkH+eHlIwqtMXqZdUKO86E9hl/gjmUCinCFkfa4O1ziMwWwqp9lENIuM83yVjU3jENXvz2d/GloN+lfOXPHoqhsFJUF00fDt8bBdigtaFQzhY3gZWiX3u8b0UWXEGHvwDtsuouCcKmNBUA0J7fDDCfsW9nntaFg0Lt1owYkvcZ023r/xie856ntjMI0qf6BNJhNs9KoxdfjNJr2HUq1z+WvIQfUasixjWvUjJlNdkjVBQ5p5kmq2vjpKqRy5kEBm0O594L6GpiMIYy18mclTEipfGmpjH1MIeVg0CQ7En/7Sk8zQtOHw1m8KS4IZ47Y0FhHP5YuuZAYkGgQ9nzXUeQJot794hSma9vhiYRJ+ZZEJKoayhCxO2m1vM04U0/2YcDgKMr0MaZdTTq52FGl5SLHyymN0jx+jULm1UXFidF46jxPqV1EcWqQ0F8kKwu+yr1JdzSFMHqT5EYfzhgOp7Uim65/QngWSDi6FcpofBvIUzHnQy2pkE0bnRhjgt1x8ZfcQngeT+TIOTid11AoOC62ubStBBom7UQ46y0LNSdfd4DVo7NwCMoFHrEknqqBcN57+Q5qy3d4lTMJ1UJiytLLpq/PHQ+NzfSS4wktQWmu1SK6FZDa9WNKEZopCrApV9mWaXgOHCVLlFUbsJIm57B3W/e0Vs4IjnCpocp4+BO7WmS7tuX6CHJTgyv+Wxv7lcFjmTKoQ4JPeudxQkNQdxmyVUdJk5lPOr8dFEtAPyt5577X1C0FJ4shhRuAr2tBznyE4SIzVw9tCmS3fnVFRIPE92hwZamSxWo/NWXyFBusE92ChQEYEjD2mkJXpC2qP6RmMYY/6bjwO3pDUC5qiuh0WPFKsAhKe9ZLAcJE3st9omtisoknGCpWelZlCAyR2y4/4ochgNu8IQgCHD4NCcvZkO9S6fheDpvad6InxGAL0B5BWypZfw46NFkQhH4oppAjU1yHPqplWFjfSATGUAenJXuFenYn/+ZxRzWU7JbdzVVFIlTkVXNHDpLOc5ju5MnXPoVZ/17XKm2XO1fISwriGuM4ZT9yYA3KFHGjVSHc7+fhJiDr8uhEQnPJ4vaVm7BXVMDop1fgXvfXrg8UamYK16hLmSYU+p2697nLp5NiBDSXJ9Gl6nl5fUysqFnX+dysBQV7iP6FarupAAOe+2eC6oLwlnjqBWK2dgTScLrCFo3coViQlDFmgk4BnibBL7Kv5Z+ftiJ7O/DYM/EB91vlw5prRDk49ve49SC8zRrVWX0H5XKYHma7vu/n5iR+yoeBDq2KjwUTMTtEoVgNcas9oHEYlqL2EB6I1m+wQF1EP/dLHtm+ZI7uj/ZO6BtdJLBFICHtgFaEv/65x/14SfiAPGG60R6EKrt/JaW25Bdi0vkM/xvaZcUoZewzL8S+G5kBHIAm3Uw2k5XeFzda6cjroy8hDcIQNDSdQdujVLWHhPhWv1iLKEtH/0IrU0C/ZynSTSTQtBHTvqqvH9AfthHe493A6Z6/7cPmVWJ42XU8CfuX2voD6BJbW7ZBxCRchUMwnCAEzY5p/Xy0pU32gOnhdnh/UoLA46U525wjEYZ3GHgY0ZYRxQvLihMiOk8F+c7y6VXYmzHmD13Qblg9UywjrpPi3FS55V7ioz87mxH8uShf6NN5JM52mW2yQOUl/ocPumrkqPRdeVSlYlRHZnk/UyTd5jzJtEDDNU+Bk3yZgOYgk3eJSuaVrXtmppNWmi7gBhTPNwFZrIT2ESEda66T/oO8VmDt132eqDd9UVopMNpAMCBss4bcBehED3WyZb1nIGPphxXMELJMiQeVcEqz8ic9kMQuExOOvuF8tsdAjbq190moUlBZAKEPYg/OXFnA7EPyeIMY0spGqr/shkP7FmJuvR3GScMbXn5Xu5qp4tLl/wKO14RipjZIF2R2WSSHQONJk3ciHN51UP7yA8XVc+rWjfRO0WnxUMzuxbfFowun06+cGG+tukxAeHnzXQiTHlHVKUu6bjueLvXO48F2ZBz/oaS7Ov3bqADg4q15/6T+I6IADpIHFVUpZEcLSeKa+LKKCe8aFe+wvukm707Cl/Rv7RMoU4kMJZa68Uozr9zkII2dccyS2dWbxT6FQ5DjGAkr4H+BV5T16EU68CdUgLPWuPUkik+IwRzxPnWqmX7f46CS2A8jvLtjyBa87CyWwqtunAfUm2Umbl58yO/0bjU3t1cPfRMxf0r+dj/QvqPSfOLMDQmWv0Q6xX/JFZ+uS9uxRBbjPrOc7xSDU1kRBdjSjGVfCiFHGEE8cadnCv/aQp8qA6SI1DF1rJ5pO7ewygz6z/OeP3q7ZMRoD79MzxmGtI4AaV/TkQt4oZ0Y7fUn1qM2v8DFe9b+LHLJ1Jonr2wuqX8yasl0HdsFwN/1pZgUcQPGEY0CkFut8w+7+4fQ2t4ND5v+h+NF8hSvnKX+gwqYdZBJOaqoaKlheI9dj/D3k5CKvZXYvWT51Wjz2vbbvSAKoZ0IWPC91nQniDAn13q7ci7OQZvHR5sPqYZYbmP4WkShdZcWnKARkzchTDmuryF86wHvJT6XZFlZmrg1PyHPl4RHJ0GxHaatzml683klL0BtzPgOXFjxzrpThQMBgGmLO89MR8o8kGKArINtjhw2+yz+E2e47oPu9SPNjpY949VuMCXgIi7iUAg0qVj02lsTgBgeC1Of+ce9obCOftkqL5phFV48aUrFVxn9rHNhVi3Ze53aAllC8yywdhATsLf3wfSi99yLBi1R3qbzJHWP6P30jXOH9X+OpopNUBZnwZKLrZMGdjhyzV8cmrfXu//jyRnxUxj9qh7odRnWuqb+byAfcAZTLMxnb8UenIUE6pr5QdClKzjnC2y2yJeMbE9i0zdwJwHiIQMXL8c8/psSYNtk6YkzgGnjKTmxsLAA8CxjgXRJGQYix4+QwSMhiLDjBgjolRqabadD2rVmjIvzLhh/eT+rFXbfycKv8YfLzA4aQC8ebsHkEYL6W5OlIKt95hHg5IzcvDyjryLzZyDC/x0jpjQB6OnMS0iNspFnYN9wCI6I92nTFQVQ82FWpeM+C0ksuXOBverAUq10iZAmq8zDLkG4R132B7GzSicW8vscz/OgG2f6DL9ZzdEZ0FUK5QdU7y7uBTMQSq0Xn2uyMPzVQ+bLrJbD/WIVbZl7MfP++YV5nLRsddrM5jvrYwyfHz5DOr5xvbBdLk+R/ped3xB1QdT7jBNaaDJhAsE0gSkj1oBU6OcOKH5jnvEef7RmHF3dJrSin5I3XHHGq8MrF1gzXsdH7BMg556KMkRO31m9Wer78EEE5Qem+dJkit9QRt1iaZliuYrQH3Ckt8TAi7fmuEJZwGHYe1aSfzNBAZQIorR0z+dWaXcqNygQx7IyKjeoFpx3Nx4uu/didAhBBJQ/2Ny+9H2uYgsQ/j/kda02zDMvryTkukZYCFMwxAmWoGOge/wfngUFlOROkOHevLlJD2Tt0CShm0FYDOg4taQhrF2S8YWqa0uJQLxOvcpcq/dynpraJAazZwjWEKsihCNet2coLJJN6+u5a4I3jua4PTL8GjHG+A7TMGYAvsCwB7BbA9fhlFoi0yAgIRkbFiZzNWhYdVU6xZQov6uDEHXojAor0M0xtqmHzFJ1KklO5VEKPK+gp5f+QYCQ9b2duKFgQI7+pJ0eGqEpxuuT2b5ZfoBh6gtlcBj7EKZ3IasD/SlUJMfR9JBR5gUH2LX/3ZTJ1D1uCPVz5z1hGDcws/UkRRT5TwMcQsgUCYoc/tEAQ0QWZSmlOSRSZGG+IFI4TWL2W8ZmMa1GYORd3sNkAvGJACW6o5dkWRQ2dSrvz0obt5t9+mxJR7Lj+vnXyZw7Feep48tjm5prhX1tnIhdfRmddeDQzGp2n7a8SY+bR/ZH6R1/4g7tUWhCaO8iBW+bmkViazlpJEQ1dAeKBhnJ2LCG0qFwBixXFn57Rfa8cA/9RkRXjb97xka+Arg7L7MVSoImFORwQUyKcQPai7gDfbDH4VzXtpReCamuGUE0YFBqbfOnovow45YkfVxmyLy//7OnuVJW+RG7ALk5qWSOsMX5dcGp284jNfU9SLNP1lWS5J84BhWQrOhGwfK4GZZQ/WGB5g4Nuhm/vbzWtv0U+vnLxRt4hZaSz0gefPuwe1/9+08uvZfLFsq4/ld42iqbCA2bdELUdsJWQOw3tJxuZ7eLHwPyHWYEeVArdLgJHnX9tc17yIaE0wgeTd32RyXXSOqCSlEUbII8hSI7CgtA+yqRtoNdjG1qhAy+QSwt+HMrJy0xep+rWKh3F2tya+KcZFWvOCWOnp+6LxgRLSntsaWdnync80aZ0D64/MyYmhUHevHCGNfcoNzZB4ZljlzIFDqAp7C/14F2M8qLL7OqXTziJNpVtIrI0ZHJ4WJ37EeVPq/2oZLSaby1A4n1QJYiKVnjKHTzfIcexMkbJ10Toxe8rZJqzKPaYaW7T/kuUbsVlUKneie3UVed0B4Wy2dYINWFCjHG1+hQdudy0gEMiF/7d7rnYDqfJoa35jACxwArzABULZf7L+8msPfYhLfCEChQOKdg5cGu9C5kyRNR+vx+2HXfpjk6Yc4PGdH7NA13+tVkFoVcj90Jv4YIih41C6G0S4MFWEsld73AhHDFUOb1JpmVMXW+bOAaYknnGbBepa9g+g7y0xirQRZBoOKABm1J+hhmX9z2R7reeUCJTWR7TjGVgzCvHqbj0nC8qUsyhHP06JQ2FdicvZwb0pUgTZpw7iouYyDbDCzdieMEGicnAVvOceYpuxiLGJc0QP7xPtQKPNX8PQOMUY7eWSFJLxuVM0daPGqNA8awzk9XZEPbSX3zatIFBcoIkLgoSJQc0kXIJ4069KJOmsCdMuppiy8otSdc3soqxDZ6S0I1dEMzteQtSmB76nso+KRLpFNh7S2w7imuk+kJajVcP/r42Uspntq4RRxcBB3jfIg1cZDcoGYnidBml3IJQEsn1LwPeEOqoW/aAf3fqXP/p/vjv2i62Hc93YuNGrD30Jitlm5n5mIlxShnxStHldUAtX3VBU3otI5FE+p4e0lCDdyNZ6tSVtnWwXwr5OzEr1gcbLfOCb34H9oNoikHpzkKr7KQ0+D5WH255NtOp2fGJ/FagaYyxdRuSryVzM5mkKTi5soF5EiCUU6sWEUHQvoCDheeYdFdFozR7g01gsESMHZNZxiREAzv62s8WqbSIssL/Czcm+gW7e+uXaKqksWbvgilbTYPQAJpbH8jp3T6GKZCfCRylEkDy0mbY1O6I/AbGar7L87fQt0P/NuMCKkEv6EJBQ+yieGX5ik8UmpGMn5YRsZ1fCbeNrxGk7telPiux1pPS8l48e+x1GTVf53ZTopXnf15s3payBiNYw/lLrND3TPVK0rRF3xx0VflpgsXN7WiyLsQRJtSHJE9/DsI/AnSO7Z4+IJgs20J7eUtRSEYvMuRer2Xq7wSmovWe+NMwpmCWJscJlFlCFUyNgWKNgtH8UEm4Y+2o39Wpn3dVqD9T4dkl5qL4unqRYKuUsk3YoOElVqCw/0Xmj8ZkVpb1pFBlvoXfNneyTQbvFJzevihbdzMXdJhuNPrtTs1S4wFoRX3s1gjdgvChAiTx0IZRQs0VHrtjlGkG45ng//H1iqzdWg0kb2hFKG0y/UPY/kgvjh1AbJwSMwHQXx0tLZL+9N77asJn+A1ZXERFwrCFkR4wMF8kazfYHQ7AB4G8UaZ7mp+2KrGA5q46IOqBPRmTbrd9bjwP4BxrjfSZYMbkBXoG4DZHWVj0L86bM6DVVH9X9+rvyCHNT31x2LWffDAUttMKzIJuLkRR5x3GvGlZFSboKE0xd5xZ33TIyfkrQeiumCd1SSN+4TqUtUVVRTZx0N5drS5ErZHZvmGAcbod9Xb4oK5koHgY9qE4EouqmeectoKG1cy3OV7YrsO/ph0+bpVNNEltASWm5U/hppOmIv1yZ8gATgrKrYcUzdXNckQbThczoCh4+5BUx7Glv2v/+Fsld4gLYABuDBbw+jXjUk4yDPkndNywRk4XpjVZoT7toUKUWPQTb840juxLn2nF86UOwWdZKFKVRQvC4HoJIdq+4fKnXXB7tBJds7bFqPsREuJ7jauItVCyBw3NHyS1UioFZWb9WN3DO2AX4r2iqsiKyD1ZYtV21BeDpypSUsCDUNeGTJnqb9vG+SepHhHUwjV/HpacLTPrdd12C1kNCZmr/WjI3JFVZvaXErimqmn3aPPzHny0+I4IL8DBIpV+rVvNA3zgpRvxUllxHAz8TS2v6BZqIPZTqiOpN3OdxnhTOtn2pyrlcTwFrcByZnEoz4VsM8LTOEKdr4x6NAE1Am1SeiVNasHSiGq8V06trJAxp2HQWQTDJ35YQ6bNAuBiUtGCrLJRWcyQ2STJLOEj1YHH6ruhyT0kxv2q1xNkvLFxfv2SCjU/zVPeYWS75y2UzEnCqRrTikGmGyoFeKrqQTsL6ChAKmt80eZJzKoq52wJujXV2XEVQ4+ihyy7XyWSUZZUyQDtaosW3PAqxNgVPalcRdod3nKuECt7CZTbNf16FV6e+2jUbpb2BK/wJlgFjwDLUUyzaE3BkvWTOvzfQG3+atclQ5cduKOyloBbr1pgrK2uP2D05K6KPcLdbK3wPSLHfNsXUiXDc9VLGk5aNah/S9hqqwT5VUAWz8HCheDLBN1ZX8p4wA2fy7FMsai2iaVO1/B7UgPluZL844oOHlerPD0BkvXV92ZetUU+gU6vd4kdadvTKZ8lf5JlcEMS1k0r43NVaywCh2q8FLGbiYoATGcr7EiAKRF3T+E9Kh7qS+azZM58iqEd+OIhSEBlDRlHW7dJxtsDexZKrSNJxLqC5msWqPOE4ZsWshE7UMlxEJc9+Yp1gHLMmUaytJ+X5cxezEnxCknN2L9bmDci7Tal9UjzUyULyd/MAdLlNYy+cJhQLMGUAPUihVU6m1sQIJkA4lt7Jw9uZ+osOc7dHzCtrLLAc0uChFvNtb/wl9iXEiW44ICYXIB0/0nqEtUV484dnxUlzzK/0wWnUjIwDHLH76CnBJzbHMRsFJgCqLJS/cRJ+gp4PSo2bIr5AdgLO16YqK53F6/UtCRaRflScpfsdufvNvM8gW12E5dTu3WVIvM9L/2bTp/9OMypzE6TVFUIXW//N6xURxmgY1KQem1b8CtKXwRJL9cUbPsVeobvQOyIeZHWR6IKiAY1/i2Jg4Y5GSEG5R/66zQI3XxGaMul9ybCOtrcFkxuER61S601x8efJc/IupHw+SVDjLDQg41Eonv+8yHRl/HKLat98c9m600P3qT2ZuYHRtT6ktgD03IfdTATjgiJnPkYIAyt/2+D1IDdhfooSu8QajEBeMM8E6qmZVTgMeNh2edfD8MCQIqCYE6U+Pf0ZbDtixzj8osYQ9RSXDrWP4e4IYFmHm4+xXW13yEg8tgiVPv0gsiyY7x/CXAzAJNdCzdoslQ4xeDAY7CH1em088trv/Sqt8aU+fQo5WT6rRi3usS1IL9VUqNNHCulGWFFpxQ5ZLVWUE1V7Wq7JJJSAgPgVEQ6B18cuPuMqXJv+ILHk3tORbKj3hn/hUPUven/REFJlLR78wNKhzAzmM3OKtaVtz0qbmkcJbANjox9Fuj3Ry0/KTIGwrAkDcSszfcRNNeqwlMUPB+YXgAAYTEddus2bJpTwkKrXmgTiSS9oso1rNHL14eP9MiyUjl/mZKK4+ciNf1hqb48L0BZRlDF+s66qfm4BiA+7yx+d6Kx3W/AfmmRrnbZsR2u8clsi7UdMWxoysGQt1aC0XDl6z99H8TZThRK/jIV5nHgUdKr6h/4lb9Iiu7rc6lyho7On22cGzy879aF5kXLCdVWVX5NpX76fNN/00+X4QxeI+Jm2T9x2yRPqsqhiRYHDB0fz2dlOSIHC2MxEf60i8dEey46+Y+Yg3VnwXe2rAbWT7iKgYWXlY8euS9KXY46WFCJPKfxRnVEHh0Oq+Kkwq6uVX1YENu1IDpWQMeflvDyn0nv9jefl8OJd+B5jFCRORrIgDpiPCUdOJGJs0iVQTKyaQkcWS+KgmwZsqCigat1w1Zr2flY1RBdZnIljNplS4mCXzR5oGoN2nrDj2LqqySISliZ1QtJAEyMPCBeqpsMdqqlqkYbIrC2igqv2E8lk+VsWIr32BgsJ9R8F/C8LgdheAdtflPVfWWkCPaNhDrNBISkcJSiPo/kVriURAEIvOvkDtGYN2MgMSeY2ACUPHAx7ohNwSnEbpARteqaaILMYB/Cc+0ismSOpMAoDNN/i8qbIiIl1iG6w1ogDljqCGhvY4QX3OQaC344KS7+WHgxOGP+HmUZKhd79/7/u9LNZCVS5sGmw/QALlkepFO1o8kLCugdFcmy/EBi62KFke9AAImMX/c7rpyK4svbhdMsVqhvba2FkmSnjqQ8zqkezgy8pc2DwQve/0TZHuj7FtZCrqqYqJsBE5OTyPi/X/n9vCaJNXiwm9EDey4YS9syuEDaMlf4U5HqbEmH1e5gAUzHa2EEjE6RtiKDoXqOSMo7AdahYwFXs376ukZmmeL2nBgrbDKVpVW6y9Mdbh+fS7LEDq/gsRxsqtS6RyZFWBYPtr7rrhGOH0kQiXidg0xvk7H+BTY5YbczkG5N1gA2Crcdo2f0kwD5D+go7pZR32jPESaRwHA0zr/zu8j+aZrm0Kouw+QSTMUFJMj6UXcFXyO0faO0yqTy3lXj68OjjjcuLMZt4FEK/DiI6USMp6FCGE9h/2QirKqfHExxnShxaBMEUbEIa5ct10VfhKnqMoDGqVL4HpQvqGyJsIg2Rd9+2Uwog0jNirxp4nIU0j/t+w1ALvGXBk2rqlFDh2eNyx0DL2HZUTB32JMpyoHO+E+p61BDh/OHVIuUbKxhhBcbalF0AISy4B6g1yvr2tOOoCvxuNSOM5UJ8fWbHtkuv1OmuGJhhBV4LoKn8MlHK8TZt1U1c/54h4IhDFM5VbVefxCivQI2QwDmHIy22m2wLaFwOn1/Bn9fZyBBahAHG/AVFFq7IAqhj3nCh64Zcy8koLgNWM4isgenbuMoiiQOVMYUYhJ6qQKUeYg5tKBJYONj5rVWjpNkEqxI9r714VuHWkASSwN+X9ycr2Jz6Wmf0Wif0nstmwunsO2Qj3gLa1J6z/Y/nd7xbkKJnJZIPyewyMDOzVJDFum5hpB5wyCOqvb9DYvdKQssJDToTlcXXP+5qM4C44z1cQxddo6DqraOOgigBl0zI2gBeed7/aY4GuA5ycEFm1FebkbJmQtqjfCKauozfQQjJx51g49niCIZBWktFaCPHYLEUNgay33f1gxr+XPuHrG8fUk3N2oXEqJGU0ML5fgqltB254Xrtjv+tclh/GKg3x/500BUAoqIa6Dq9RSlH30/o0rpoEiLu8PHtC1sfkhT/4zyZJ9GOJDUydQcIdN4tJ2eIMkTFmxC+Fdq1HADpF/+9VvoIAJq+dSv8RiVvR3GU77WS9Y08496RMRjcFf+8U0PqcDtjNoUMt+vt1mQ0KlTNBZUXMUEcfH7/4rBrFV//EXnF7Br+3e2K3HHyOoJajsBVB0PhR5FWjeZPK+HMVpj/N4fV+uZVN7zw4P2daP2hzKny9Rhx3R0gFJJ9HJvi4w8N8I9w2PLvd9t+bHxOaIAkHfLw3xgFxrQ6/G5bgLRjsJdYSNAP0pTeeqC+bIpmgN/QUAB4Fv2kOTfpDq/HW847y9CxU7IP0Kpe/8clAFiqAcYlrMGoMIaMsNeJX1XaEZ5BZY9N+lSJ+Hev/CjfhbL+I/CeiKG0igGmA5mIaDYskZSgF7UCH/t0Un6YyLafh4mZ+Me1+LsidxaRAvgYDtIwD8wzqAN7uv7PnqEuhUNxlrMhIusYAtQeet6STkEq7IJ+SQ8fQyS6mlmBNFXKqqk956QQ4KQzqXR8KwbAxycO2FethOouubX8ZceZ2Bi5ymF8lK1ogbhtZQ429lJe+GpkkdW6ZST5VO+LDDcFTBowiC3t/b08IsHjJKad9vCSBSBK+yocPVRafjtaklspJ12FvXQ89vX3vzpg9JRjfTrMBOF+BNdmISdWbQuF17CiTk3YeHoWq0Gc3/JB5Qvfpjz06+uCNnfQAlN49/Kiajk7GS8a+1woDPwAufIPgFRWJsWRVa/ioIcqVvwYhAickbCMR/wMbdo12F/4vxVZz8hooST6pcSx3bbWcSnt9yIdVkyGSKosRFYH4ShNdVoZFm/R5/T8+FvcYK5BjqI0Opug6jretQaK6BvIyVlKRPr0iNW9seOzdam1sTGBuxBgbws8549x8uy0pUoa8Ujt/q8PvcsFGJ8aqfhP2bpUTdvQfMZLKyFumyS/X0qy9dSSKJVH4A51fQFuR7zwn+nAMp/85NRiwrKlA9dSFFXb0QktJYFTauXdYRQ6IFa+98EarBP9wCWo+IcZcK93BS3ATHtORkSH72yoa1gPSYS1rdcOFfv9bo6bTKFsFMOUazJjAjSMCA7KopFnXH4n1kyna0+Ffz1VvPfYgfMBPj+N97quj79Da2Ah06S4URrjNPzTCEnfOXXw3RwQ6KdPZjw28upAQJfe4+h4cRa4k8dXNkauk65M8tbn4LMF6+LyasaVSlk26otSXSPv4gWSzCt5DkBc5hJMCyIBCFVWo73cjXv0z8lMFLosnhE5dPFY+cdNks3WmfOkNJhCqPm320FEkjrO2/jsq0MBUHhL6yuSzvX0IOeIjH3+dQeTTIz9tIZH+VD6I+gpq5xTXE+tWOEMQaYoWp88AyTdDHF8PDHMillCYt5eD8DWwDtcPlIbrh3DuDAu7q1V8MrZSe29N97dlPzBNM4r8f3/cli+mnlX7xosxVYtF9gFQuK/P8pu9podWHnh97qcJJ0QY0Iv6DWfoKdw5NNjMRZ2+eq5Kf1oj4ic1E5dLX5YMiB9/LJysTEa82kj0ZRr2QqkH1X1Oa8kKVi5c53f7kjQ1b1rDiXh5ZpXvZYINGrv+rwsvH7bkEh5eKFh1QzPOUSsGTsc6qU3MsFu07OGPp7OZ5w8IlSiTrjyI+6GExSEaF1xPkwJ95VVP3Ahqub0+ebYTynLsBTt8/v+RVMqW1igCrg2KTtBHje3YJ1Ee+6I+PD5X9XZhx4ouitrzWBDHKvXJEwRdS41zinmCVcL218EzRhSL+de47BZFIFLM9ZPZtDB/s7ttVjGIDL/kXlfKQ8mZUmFDFiexXUR/j8J17dCcYfwCXCkgPAnLDNAgHqX+ebrJG+diiISq1nPNx5IyrsD1mqA60XvNus9l09nMROBNyxFwlA3GA3+lobpe0HtUo9lqcUn6T7h3/K4fUqYQnC0bvVeLSTUo7o+1t/0VF+rXnqhlMUrZ+16dFvQF5pxMA3uHbpHUB8du+01bfWeihiaD8WG3qzGNbdWlruM38BF+Vn+Z2x5qmurQ3cMl7NGavC2aOBi8ik73MLr+dBDKBdjLU0r+x8ti5JxR25/4f/ApdVIXjzrI1bsn16djckSjoTQhhfcR2R18UcQk6SlHyyM4eEffQsb1j8XgmksTTge9kUZMakpYkLA7XpyvSDT+GXox1/ObF25aIm9IblcRLxDf15sNbD9vCKNJ/4fWnzqumkgce580qUincgAJKh22pLkTX+LJXSxkLXtXHE4/xLvPOvrutYXQuZg/T1fCCs/veLArHXdt6r/8MK3NO+MIo8RpHHi01YFl+JGjKUULSKWNbe+6jsIyipF/TLlUk5PG6XtIVIzHF35kruvY5NjqhCzyCcVpafvOSxwOAgX8i6PACYY3txLxVLCnLIwZ7ugS1DyDW6tPbXYT60CFPXPSHOle3PNJVUwL962t9uSSPJGMbsYVM1xP+q5A9hUuC0OjODvjVNMSHYeDQNl+wmHmwjcv7rnUbIpSFjrASXhir7D6SQSwVS9RiMMrno8983ySAauiCLh9/sLpXuwAunyk6ecPGCy8qCSclhE9VuiCafwtcKThxuRuZrWhv2VZxXTolD9Zp/jgMPzf+BqHn9PR8IPzReYYCaqs2kur8T655rVDKf8vOUhmuHr7ie0oie5wbhL60c8Qk5iaQoIh0P20muhQO+it3E9AOeixxlwbwgyRrf4E3SQaOCm1/oTK/9xHnx8bKrzEKHF/8tmrTFY+XNZO3lCen7HMXCzH3YdtWDTzkOBuO+CrqT8Wx9OByNAipqKoOO/zFec11jqQKJ7x6jJ4xTpeIkdVfuWheuMdR4n9We2mRWUJB4Y4g/41nWO91sZoWtOTogQmLhMXJTN3svH9kML7qp7ircZc3styMGjHinngFkViTIg+dqQ3eL8uP//UCi/2mNbYU9XvFZkXMK/AtCFN/vzRh0/vI14kxhxKileL2iw/3FUcjoiJYdZsMrnPIUGBuSFid2PCqBfGe0dlegmjOax3IoC7k3zI2JlpT7+dnze1QR5TJSUoX5w6pyEPF8OI+7yynkfv86v+PXk7/NtKlYgWkEol64ueQlcsghhvHkVlU1QJnqoDg0SAGdPrSO6IprRR5YXeWz2N2V5jaeQkibiMJD2nAU14jTiinbz+ou/QCMil158E6ABdQfFGgiDCJ4SVF0xs0BQ8frPK/unoHuSh79VT8dfC341sXqA0C18cFNT0RxIqlxRr9UaVjLlZhSHIbIUnunFACVSmJTSL914UvU3ZhJQGU9lAEFmJJEJQqyYDAlxaUFMOAiIKtGBqUc+vIThJM58fAoqJ3qALRcgRLOnM0UFXbb/iw4o28NVuxQJlz6HILKq+rURhtk2um97IJVcpFSNCKiHqbxD+/inA5CUf7ylW4okkM3/tukJPuoP3Nvary1v9pJEC+KuuQ0AN489wxfc8e/fYA5vP4U/zTpKUUJJ5LNYSg+gprss5lEyETznxRFXV9kMs1NWwvMeQm61pDnTpnz9ZaN6fhIkp3Nxc+Nl16p5Dn7iKFHyhdH3U8ixLauHcO8hUxaYiA/oKhc5u7p9o7YLazkyb4lBN3zhn7/Pp+5rXkC74NExgX35No2M7MAOqXSTKarObXQ3KY3qOt1g6TTUtIlhYOfzKseFawJGtLZd7U6fAyxzwOkTJYlfNomK6O6JpQvw3i/b8qBo912OZ3aGLwDTMjCrcTuBmwPQ2/7B1tNR1XHx0Vikb4P9etC2ubrX+GN5+SkogFyVrPBBInJUb3VkJOcx64wPqSlPhkmfJ0bJ2TM/K6oBDN2v8psZKncGo0nE6+OWzeIN7dsqhGvtjow8qQSdOIe4mNO4ZpP6KnJqH8rzTe4e1VlOXz6B/SE9IFEwsOhbEzWZnwjgqz1oRacb/2nB9ilpzMa5scettw4XfZ3YC0qnme2evOnKb4//l93ClHoFkVFrNplY+vpmrPoR+T0QO2FMH5KnjKFpAKrI5CrmmupEvmhZ8tUuELhbp2RUcVMhP6lSKLAZGy/vURx1xiFVC1DV72RzDldYrezzZHhpfMQys1GriOzqJlVQuYGAmZW16PAW3noValrC0dSwbOzw9x6CHlK94cg21vhKiu+3lZAtz1MNX55uWkDdlqb/1GTsDKq+zko8luhvFTdwWavd/jSfcUiS0W0m8pkPdvzMlWpxBgqgcNGPWCIRYkI5SLFhZulHFT6SmPNKSqvvQbT95Jp0c1RMkb+0RFfWdDEiC1paS+F5Xs+vMH7ZPWvWFz9maqZU6jmyuqnFVXBh13vntxvGpdlfCaqjfL3RYEb7xfv14UWeV6qVxHiEuIPbNTXT6V5/scllsIpwZM6x+Xl5nv/6D6xYEf9LiiYuQwCuzSJ6fhgmn2gc0x/mX8Jfffl+X/MlZMKy4tV8lTnpsDB3wy1am38hM4DZUL5/+9qoSbqSovTZG+TO55i5Dx8qM1Pn3x2/ZZ74gQ9k13au8i19w+ehxxl2XuTmHcz/0rn/A0UwGKXnnirEH0/4k9EecRXNbWjlv9UvDXlf9cphxgWaNTYk4s7ufdK6dkGsZDzVESi2z8OyAFD4lbmPJxEyFvT+6j/Du2sOFtvoJO4tUNCoaTaXi0wIDadSNN7X3v7r5L0yjLxcOdqy+0LKrRL9b4+N4AF/aTKVJtJr6dCJEfP8w9iUV7CY7/HWbYvd1C2TiX/gS4r05IPh0RdkOWmLpaWYU0WScGJQaoZZreNtH+tuHCKx76X9tMS50Wn8cn+EtSFDxsVzq0Jtp1me+3g/y16UdtJmMvJ4UeX5S8+zst0SULnMPaBxGcr62w93jY0QEVvw5yquXGz1t+3spOScKCBHsd1iMrW5xfEVoRPriSwG/PpLWndTSdbzqd5qoMDNodPO6U2wDBeszhu3zdq77gnk5CbLOlFJuaEElvYEF4FOITtaIlgrh/YYx+TVgrWEIGMeK2qz436NX9FwdZb/4+qCB5fYBN9tvxZeEgG758Az+TM20L8+88f2qB8Ys7WK+1OdpysgAi/I4noQE80cNiIgpptNI9BIpWZ0NzclZYVlH2jkkDQtFDmcdtOr5JkOQh0K1kct7j0EirTKYYlNgktPAHlWqRcKZfEiLzzQ1YJstDTvV/NmvL2wmpZIB2YTB9CEKhQ5QAonLMLSK1k7qO3vIgLTM3+khf0VmLNMhC+xZMmtf4MWivrqAWTw/CqY1jnKOc+rvdfHMq+s0POWb+4OcQUI6iaODsWNe9x/iFC8pgNTvhaWJCDY2iYR7gnH01N3HyYf0KiLOrVk6s8oJnTg022TQNVucrU1nnBsM//yY3LiDt6C9hLrT8Yyh4UDBq/ru3aYfk7IWzDRPmasuETlZhG8MenjSevVPgqL9mJR2Hqn7PysIvbtEjUrG3lbpdJpOpweDcO63CykOBgBTZY1r7jbD164GC6QJ8hsBKu9XWdErSfpxjOqKf2PByCzmm5s7+o48FQn0UJwCJaYiDw2zvcYwMgzKJxhpLFdosulCtQIaTBg8dI2622L39IdshxvKK0/hsSF2qCx7BNzVT6jevxP+WftnCK9dD1tux3CmTkFNVuva/P5pI3Xt/gj1jM7a5kAN4RvGHw2VDn15vW/v098NfdGNFveeNESrd5ScPqESWamaMWDNWDRAVpP9YjaJKWbHIaP5sgbStn+Mn85EG9w4J4gSKoWipp2I+rhDgV/0FTRErWKPKMKiXhny8RLtAOU9wiglzoINbFj+8zXpXZ13DUANKYLVCfnUmbulTHIl+RiLLPpZpTObJ3eJECqGHu/YJf4zn1/+xsgSWJnqdvU8sffXKZBbMoo79+WjwukMc3oKbPMppx/abYQPPottevj1+vcjAVzsEJMd+jM/960XhqeKefhEh5CPIBwtExvsqWyKYowdD6G1qnwihaV740Cd+K5T/7o2cRfQOi28GUjpcXWI532bK9GV3fdjsNPIeWUMM+XBYe/pqzbzVDaMqFifiHTexF4xxqm3B8t2PIhTlggS04WYB680DUe9WFtXVPy7GdMYI1dkuhGPhnzm1PnN8o/+TH1fi/sOcGonkj9seD0uR6l6IHwzHNmiiJfylzFxIZNj9xuU9eYbC+IPgSjQuWNQvp8oVvrVUAywRcfr0YoKL2q+LsYTxrj+EF0pWerE73YsT6QtcDJmQ9UISTeWl458aC9GHuIM4YmSt5WQLzdV1c0QG7kq2KW+Jx3p9Rrqv0lE1nABpuXaV6cxDOLoG14RIpvf6pfrG33d3a9vwOSyq5O2f3P/fcEQ74RfrLDo7fgoAmtuYCUE32yoa6EvR2oKN52p8b4gzu/b6gkMbzNShxw49mE2Mx6Fsul+wzikyme2aFSNzK8DBzSOMNH0avhJKBuFOfyN/7/yrK/w308/VwPCTuGJYVB2fm51HPLsoXuBK+pRSSQmmVuJNgOGKS24Wo2P1ypq8XXnASOuGK4AMj1a6DVtaylBwhbw9ASjSdT93o4y7+m+4yirZM07MD5IL/Nf5p+4M+/MBAT28YyZLPUpmrxrb5ns9jJVzGmheSackPVDLKhnpAmsrocXhfyM1Pgm5YFc1ovghH3IJJd6qQiawwkpN9FJhvXW171IPhXdcFmptktm6ma2/0DMoG+gZ0CsPAAppm1M72ehGt+l/4CwgjezntKCGvjgLXNSvRJ2UI/B7dIBPg/tbJfSKkzBqwhgPtq/Bp/twb1I6QS8XjSe2zBNAIxgdYJfBpeW8QkiuSUNVbcilOO5hRN0aNEyE84N7LtCCrUkwc9rHcQO8NN3WVojxim1/UIb/GR5amPQV8evInmJRC7PGsenG7f8+GrnguoeXuPEH587JIYXyGGYge7tfK8L4FZhol9qJFBmdwaKx+C6zdoR9Qe1VxHiH2JoOdXDhUnzSH1yU53fYj23eOzPMJARgnDzpxXubkPMip1RMv56Y7C5l9XYVCcbPVOt3z1hddUPvx73giwFTo2oI3xL+HinDmSYlb6Hv7XYbmJmrYIzjZYyqX/5acJNQAlsUiAA09lwrdCWiwvrJStVz54kkr+M90dcjg/1/H9/VXKzNdqu6ISUnQc0/9tqatIoO/61IGy66CrEa9G3f/Nr5xa0+MDOwwC98VIzcse6E6+bq9w/zLzc1f+Tz017IYCqBqzuqr+JdA9I40QuXgVlvYxwI+mfS81HtBSj7N/aWvuCAes11Up/na2jDNMyYoZBkHel8KEOcmlQ3oGY5fcvnxmCB9YnCyvFLuAoe8EbaOXzNRcONObls9zDietIjeKNil1xY5+a30DL1aXXuK/D/pl1uOW965PZhmzYxXPyZ4Bw3Z881dktUASZv+Z5mfyTVPvnw3cNdQGqfO+YC2SZGxvz8/4z03Q+3N9JW/fiw+eOhG2ePT9ZBkz9K7FYu1LcqB5KRH27Eu2YaiiRuFiRjPehTr+RC74PcQGMlIxmiB20LKQBCZ9WJMTyOE20aammjzKnNkeLIu9kGcVQDluSwjbhnmT4oVlJ1DGF3tnWbzkVTM1AhBtsvq8Lhhri2cWa/Vqod6jzXcBOCW7Jf2ZVW6/+iM072bIZ3SVfwve3KKpUmg517hZyrQdI0nR4+e2KTZ0WAd0t+rH7SevR8s2HYts2Y5tKO/pp739zglIVjFYxIsxYF4xYvi6SMiBBUO0Mvz8WFMJ2cSN1Jjb4hwt9tdX3TKX3nqhEaO3OavG1nFXSZWrYB1VG/Tr0kzufe3Gq05qwj6t9I1ES6Zaia1E6fQAoZvgUpSGaMNVBA+6hMEprZiwVvYy34VnbfSvT0XA+JbaS/mKLNVG4grkS3skYj0ykejMI71RZSQgN6ZQm0HqhYSgtvbXSb60j8DY/H4HAg/kANOvYLKuyDtrdN7xfCzlxsxCyFu8iLc9MPfhffyli4yWULxjf/4VGF48PuZFTCXJ8HyMeZnDP+8PNj9ipbAQcigSe9vbJqZRzMsZ1MHsryv9617OGkgm+17PuTPlJDhGuQ5RqW4A8KxkwAQ720tlbuR4t6pRcPAA8I5EwFVMOTnppeTcebhjdJUBudyJuEv4UQy5yDRBaSJDlBM8vHLjWYH6A+7tHq2x9I7B8QPfKezvifc5l0tN3FlnSsWWDhdzONeQ6jo+4V1W7I4PkjtXvlFwSrEb2uZXhp3jIUUvE41CFPOrGt9sHdLaN8b0fIObjk1YHrBjUkPmmqAF2r+e5yvCgm0jBp5BUVypvHWC6+CYNoBhs0kPEjT18foO7y/X2mtyIAnkeJCrgFCbA4XtuLVZf4Dx52ahyTVNAfpgObQEoEqjxV9FOaoA8RLZSmsO2SS2g/0m13ja4podkKXqzi0l/Q7zEUw5T3CN9NGFl6Xne2dIdZrzUX2Wf4Q+8PP1knICSlRz/75Yqcm8SEi3dZr/dLuRq5kQvFmjC8gc0pNGUhOCQVzM1UHoMRW+nsE+GJxuyMLlcxvm+gKm/H+7NTRPoi5BWK/fvkrtHaB94V+AaqBnGyYvmNdAm8ToOkWg5vPHf9w2R7sRF5TlbV/MXmmeY3qND9cDODgYUKLn54ytTN3pAYFBFY3fVv2TqUrjWDXn//JCwn4+7NHwvf/FNccPeG2sZF/a1POxKj/GLORqh/6//4yBC1FGs2JYIjbswtjJ59T5UMGhX2CZnTLvirt7O6zdIEldPSXQ55qGc5hq8SBFac0eQ10VNAuooaxBsUB0fgQ8DQlDl7ZKzp4/5dVaQ0U7Zb1bCJnAw13z1jj5TqDi0v6KhjbbIS9Bx+Qz0g9VFT5rlluC+N9Z8RU9cWFyooZ9AiwrLvaQqEf8Tnp70KBm9d5d2SDXo9W4m+wzjIacwkSCSQxNAcZMXzzlc67DV90YF51k2ewg/W4IZp2DFDDQtIMLqzv52ogKlXOXpZ+Y/eKRgNCjo5RITGeJv6JR1XvkdT4Xv9hl6lmWYNYAz2FthrS2Htea7ikop5BTFwe8r0H9fnKcFil4A3CyYByJwQTW8mT3t4Qw/OWq53bmZxqaIrBGwG5OaH7C4ISEZXmhNRrdnoBjc1N5QchekSDQbpXQZoInWZOTwgSgOnCM7wrlQjqIpaEulgZn1bErcmUjuooSBkp8foSK0iSihV1UkSVO/6PCVYfA532Hz5OhM6MSL1D0nzU2F57IINft4wyiwQM1041XYbzRQWSurI5Ajc8/0WETYIPTZBIicUzDyrG01IkZS3oIZA56dZTjoChT6RoB518W/390CUJZAqtPq5yjfATueRF8amq4bbJZqKPzf4S5xrZWqwm6ZJrsMTwJrNnuge+bxpFNEfhubCLIYrITYZwtIN7X/4qA6hU+QI2E5VuJLAO5XYblyZZynT0wlTmKbey2hCR1ehZB3UFQFB/NM3gYTfLcUv64cCHwBhpoEn10K7IxwVJ7r3+ozQEPPX083V229+tEZ8B6w2V09ArZBJkSA3nVSAEsuImlCmOcEvh41wDf1cGIqIzE+cWw4O5QmHioSZiBz91tp2UrY0KDS1QrQioCUJOYh9aYhw9sHce2oTGxb4310pprjOaReMFVuQzRnq9morpjGVo80JnNwHK8/JK4fOuA7RlulyC1tVB0S9oZOP0Xlte942GKGsI7vn1F/dr9cInwWnNh3aORS7Y2e84djVrhvhwcw+uJDqwytEesQR05iLhBm/5Uee0kZh8HNXrPfDZFZoHhFtOgWNomC+DiW1t/hcQjCwGSOGCmA6x19S52ESYlHkCAX2/BLXxZybTyoHKUoGf3NijgyiA8PTVemln5GaA+Cirf9sLbkpkmWMpR33r86LzrrRS4PuMUqgPdviWkUxIe1EZPgnTpRYLusov/ifSlJMdf1olPVYz3YfTsPuxui4VmPd0grJ+rJfTUkrsyGHEDHuUWigAu6NTBUJJMlQ2ySjwnuyahI+NDoWibpCZhABII8PY8+NxoXldaXVwXmXamX63JTIrKNurp1I7EgoHqdAMzheV+NogzWoheNJp1LEmWK2YCXYspwdy+48xZmhFbfcOgzf9OOKs/aMEYVlnS4W0+huptG+EOyE4oserPmEa/G/l9YFZK2VxAlZlNMLNtW51pT0U/9wcx1RJ8TjAATAlIy8838/ZzUNmGbe+y7qBDWoaH0YuVbgtc50MYxsm36TDnvn7ZNXGvBvOPGAHPFQeJV1DQPLIAz8OwdT5p9rwWRWwGYHHQjebMU1eNOyX4+fQHfuq65SxAUbofe+vuDysYR3R/l+aKxy5w74jlAk9MbVsl4aUkGSnsc+2hoVjY5gL5Y53VEPO0iR1OgWUmafG19VUVe8DGpFD+dFyhpCME1Uk5PM8BRKU3Xzw3JIyAarH4G0KH2SoDKVGg8mo9yqLeVjqxQryMSZmUa5EntaBvFB8BcioCUzDRCSOYRKxNN+M7JQYJx8fDMRpRLYksJVecZEUA8khMCph+8kP+acmHtjo+qGSPvYeFLhq3gwBUa80oJsH8JzQgpW9UwScyXm7/+VrTWkTu5EB8LJsTFapXM+I9xdVSfkahfyI7A42PyPbASqR89qUP20yAu8go28OxV0ivVrJHIwiRflgw5Go8pntUpe4/bk5OjtIBdUZgn3RpHXQZNYwl0w150LsPizoCS4j49YSS2GM/GeSiDRyJriI9+eNv43cb1ykmBE+2tjn+VeXFlYrcrDAxugOUZ558+MIir40I0bBWX8K3x1Mm9s+8eM2noigZDgCTVUQJ0tTF+iTQ73AhuWLhyJIwTHmYMWYFqShU9RMooRRKpaFGuQ1mZnYUuyoH20F6jAPBmsE4V22BOJisj33fwcEX5xyHUR1IHvJLCxK/wioW+kHkXincPpxjqn116vSy78a+jdquN13y8bAvh3tgk8Uv9QVUCaAB6PUBCtmGh+0B2vVQsakmigySySV2jC0EDqiJtshod/MD0Lqn6F98YOo/wXufFIEXouflZXw4bLiDCgqMLICpzEM5jiaekaaUMWVw8a7LxSnGLqRQkRB0Jl5cjifQHsn9txEoUzkjancQMgVDH6JiErCWq6EhOvCqs2x808OkQaC75plrb3VqaSWhEtOCqbw8n2Sw53UrZCrm9PXeCWkDH/+rdkyhMmXdqKd+NkMndOEgmZ5dFkaS3KjcRlbGH2bSKt+P2mjUeXidx8riO3RRojdm6rx67i3lzJkSPUtJkblhSeuJXDUazhILeR9W2BnkUqy58EspnLJ4lbeUkQbD7QXn9pQcpQtqD55SkcfGAFkv4V3Ha8Y5zXN950wm3tQAytLnhFuBEfkBEMJ6O4BPVJbKaO6JzwiwvVda9KzGqzXeAT3+2QydJoNRpPZwta8OSC+6pFW3bA0ngnEtsUGujPzSuhfhYVll06qorIHU6kfSSHE7XfXDU/0t+KmZuizEDFycVkp2j+TH5B30PrCSj3t33uXRiy1U0rMFPtAiTCjjC8kWHaFA5itKC8lCzxFFIakFRAVVDeiHNVKrBWHvlcNU8WJ4fFdXtu2CskmYN4Z64FpjishE7JHu2aHOt7tOfczOXd2yPSr+hJUrDbDafrxb/6oogrQzudyK/uqutYpefZdzc3wOGBzC701t+xNMCzlErncDupYpJY6otGlyShQdFncCpR97FC3YZZfXsDfVnL9+1h4lVi/y4gCxdYaRy0eI4HQj7HO9/o+KP0VFyTkbT7vNDGgRwxVtnracn/iMDAJwk+yd7uf7JxoSCjBP75U9S8OmALYRUzy9cPbkmvKdy8VKyKXC6BBaYegOfP2aNglnzsn5ublr+of1SCDYR9U1YnHmbzq+fi8H8Jr6m3hc+LRDjWVkYEHwYrcnjRreQWTCQur7T+P77aVsB+Bd92cBt1M2aTmudzI2R+w3necfL71q7Wv/b2bd9rfWMYUZbrQtcO3nOSfYMnzEtbOH+nCRTV93sKrT+7Z3GzQtj6P9CwI816MtEWGbcwcVM49nxml/dcpoHcTbptRh915qaGFlDZKT8w/TcSrAOlH8CFq/7L246lrkyq75Ok4bx629E04j03HE4sn1JMn2+HPJ0kr1KkLUpKKho+KvIIOvracPFyFmkeivTpVC3JAUcCfQLHhmydPBujsv5inQT6R+CIRNsvsgbPai76iIPaLmMX1c1H3A3pQWQcVnXlUW2OFrXFNjHu+/d2aJNGNecPdL52bcDAuRw2cSYfCdfQ5L0ZNOFKVcBCVLa42eqYoznqGlJWYp3nBwN1Kd1Zfzf+pWfaRxOF/WMZyH0HrqvEMtgkdGJKCVRlXCByBKrjCLwJVdEJzkErEc+X4gL0yQCn7na4x1q4uRcWP3oMxc3A8Fb7ZAIKzkGMF780yrNpcUY8wKrg9WocZcQpYcysM+Kxb6dkMtL/9ADLi67dTgFlmbq8cnLxMM1tjPPA1sQsNJT9xwqMr/UPaAxb9Kvgt885kdmi8SXvwrvV/g6s/dDfHWaSK/ZydoAif/d/pTQHi+z+wvbeyj71HNgwLW5jsgJQDvdxuLxz5+Ma+lr492pWC3tWowqV9wBi7t2uZa4bXMAVRMs9+V7f9Cv1XWmkENUxfbdP5ZfdlWv6n/HGpi2HGDzxknzHfcjKwhzaT1iaG9WU9Zx7lqfzs0dM9CRXXdDIYe62b9mBiE9W8deH1rphCvWvFYYdCpcqLulXivJemnbSCRcPHWWL6oA4TC0C0sDVq6cqHeemOqsVtBoJ9PK0vGOyQo4n5PxzvGBk8IHfjT7iS/7DmgeTB+7/UTc/e8cfW/rlfRxyrmLXXspcq0Ow+JajpsrSOaUuz9m0RlyzuwmIfdwEb2eyGgvCE+lOCncDwUH/0driTWGlW5UnPl22cXMRK2zMXS7uNWwvQyMZeXAcHdmwPDlpURA0uMul0qPEoQGfGMwKhIuWmLYL+Tosn08zC+jdAG+PrBGha4FlvNDLY63wHFceWU1aoJ8kFKV2wj5Ihs9Ds9i0mFrucVWxWEgDy8lxVpqRSCcym1QbhzdQ37zHi6OGyMjIRS/7UWC1X3DQYaG2ruNd48NP8LjN5vmIzYkcaKifC73ig4uQAFI3rW1zDgP7FvsjP5akBNFXJKxL1M5Q8RnSoAJ++Em5e2ghvdezl71LQvx48uEb8SAPKgQk8FjcsLqzRLhnnIce2fzy0aJvxOC48RMNXsDmgiaTh5BLoDlmP0pFmen7zAgxoRVq//zHzPgPDStcOtrsuBwYZSA54skVo6S/LNAK5XiD3FEQC2Qzj9kkQ8AGznmSlLo2uMT7Eh9zz5au5kCuvVnB4rynRV6xA1qorfdwG/jGwX61vnPEluJMLyH0kjYnYj1TWlDUFIgdFxMCLm9pd4Fr/uqSG5goeeWkHmj6ykfPyoWnRt85pNR5aFQsaYUdptBaLUnK0VieiuGO+WIq5A1Kl2IqRnm7zzc+BpqJ7xt61UwmHj/zpsrLLzkH4Sm5NSs+LLJpnOay3kVCS1Jkeqb5D9ty3ZOvFv+sgj4X+znBR7+sbvk6km99iqE2RH6q9JxDcZMJz4Mii2VvSFxdnE9Ddj7CYmphIV5SpfMVGWEusikcZDemaIDIqXfvF5ranu5MLCImBR+8zQ3cGqxnqOPl8eFLo1+yrIk7DHVHwyoXkRTxeIXRjiLAOrDirDrM3cJzOuP6k2KfLrFqTeaS3kN+8GOM69/5Dua7Dd9xe4+l299jYAOwYwxsc+LTZ0HJqboeDSCMG/dJnotwP2ajgYcQw+MrMBCPwds+RTzctDjKMgjBvlxW6K5lt81h66jYJiLvSb+I4CWCIvrgTJj3vAD//0iM6DMfExnzj4gTf65fcXx5smixp2w03ZxwLzG8Z3/pTkidW7F30nnmFq9SMOevYcPhGx8FtxwM+kgl5w7fTdjy+/sbAww0sWmIn0CMQkFuT+TaFi76PGCdyJytdfvMEbl80TRz0czidYPpAeI/wkgN2RvUcwmyQ9hg3QmmeLwTAFfI6uaGt6MqlgMcZEj2uHJ/p99ayNOu7iclm6z2WdFFH/NRlqs1863Cv7QkwAR4oOmptU1Pd0dEyZo3xq8T5VAh2n5ynEW1YGd2yWLwS20MaiaX3kKAuORmY5Cvp/UX4oXu9o69GdD4NoToimRgut3gHYV9TMcOCUIfM09VyrKcJOc/7/6hmGBpO8ImMUrjQ3cv+br6/N1Oe9ROiS7VX7sauZ/vf2f14SNVvtAeK0y6QCp5pxgxkU+9APUtjc/TrAaJX5BTKpf9+1AFf9ArriMPUPzO7WnvyMZ0VAbjxen2PyKKBZyldcLBVBjS2uMZfrEdBmfhGHOG4U+5u/UEyazEOn71Mpk7IARWWNcpFxEWK+p0LceYP+aTSyEogiLAluTQEFCuD9LxHBLa3Mov47/H4AmFpxM/X0/oUxh64ltJ4AncmGxRMXdusdCf0DvH5RUkJFxGrFzJVShkAxDsXH8PVHcUGHduDt6ccRp8IOF24JdXaU3THOx+8fhnxoUwjco0XZj+lUjIa965fmpe8mh8FOyv1gT/ZNarjeQSJkShY7LqVzpIwGqOi1ago4WK/Uy+p7auFHAc9xdy6C8Q6Sz0doX/FTQIz8AK4urRpId3soPkVf5S/iwu1fr4M/CP02kqQryPukDWfJfvc5AYfy4hsnkbGE/s5yv9iNzDWXDJToV4mYGZKmA8Ka/t2M4CzxJO2psNv6cT1ipX6MK7djdz8B5sCXF4mY7r4DiKhx4dH4BdHkg7MKco488bxHfv07b9ISBKR6GMr7i6qI3h/2j8ym/MeefDFXdvR9AjaPyt/Mfk4FU/D2X9QoQYRLDSeSO+ZlaDSur5aXCXWXC9oC4gqKQU5VCOW022DEUAqU3vlw6rmUR4ctfArlcsUTNPK3J1JtgpninpGR66SOh8TJAKeFxMFwgFPfyk8x+gZ6LBsEyxfo5oMQ2lIVT0xnYqhxnICv2pbpUYXdImVqbF/BciZUkDjed97FkpiMrqFl/EebIV63cXxeNMAHh8gbIFqI6aU+ZW66n4MRd84gvuef/+ndQtxUx8yGj77Au9GZ14UhUWbH5jzqaHzZCKfk8bFYLo8KhRbai8u+AbfuO+WvvUIkTJddnvDRYMBlT8UDK5/IOYN8LMdkZie/GHH7Uc8Dgib+MvrfvKVY+BI/SsQDpH+cpdBHCBYzKnuYzQKDvmpPiNNEBvc0dfohG8BvPaP3bIgWO8MEhUK+DvBtGjS4VjGo+nA88OPQmOu3ku9lxBRHb9UbZ00YQDnejUQdZOafouSPgSUCo7ziTZTuB6s9lzIst0aYjvGKzW1oLEo5SZT65aWnegRzWGarZtjEdnUJQ9OSQHA+ANVIq+/P+HRrnxsBIlUgdgR/WjLvj7XW9cPZBkuO224jepImjcazg8M1Ko814/N77wz57x35auLV/l+1fVdgbhGSwVifPNFAIb96MyF9/1FPhdjfVKpr1/0YbduoWbiqSieD6fAnyUdmRoZcEzWlo2vE9WyF2JgCJZ/oMBGLpIZ6efDLiwcQ6GuRCQl2eJwkWd0x1KsPxFsMR9ZMYzNjS9x+F4xgxlhhms18bYgtjK7htsx1xiSCojfXYT57rdht8NfT5bJSbBqUMsVEhlVcJpCWglciG4DZtHeEfGZlu8JxEs3y+ssE2awYnjEkgaTNe/5iGRcloJ2lLkd697C3O0Ae+JAtRBQCeASeCXQhFU2i837UKoWvxrWYNhjW5p1T0wibKGxPG7Yrfrt+7KH9VWoWr63NQrb/utcny0WHXaF6fXvHr82AhH3ob/b4DO8UJsN18PrCAC2/CR/guxB8PpHWvMIZZkz8SFKYheWWJT59y4ucQIZOevPkhFBbnqIdeWJ83QzzHsmgysb3TvJcRAK9iWHP7p5t4x0Ir37c3XeaObJTKRkS6TF7NyYHBypzgyIBZufYQNySIJrAd3DlocuslQsaFaYaQ4ysvekDakS6EnJh7axivsSrsuqcGogOHDXoeEKE6Zya0swUkUwIvjUgS/rjsUBxbDOq6AauMdXCKbmyKSd8QTKx8DrZCMx09GyZyMEIPImfdEA9zogOOyx0i1kfnZAa1Bvo/HQ49+wT0SMBJ++jc+JJyxowlsHbb33hIF6w/txoediPIFHg2PcHQURbxfwrbZgI370u3v0fA2vGo8AYpt49KuDzYM1AxAM7PQp/L3SxcFBvggZmc8VC9CO+MUnVeyXkG3aIng8ikIN0S0ybylp7h6kVoZ6VLi9ZEGzvlbEOu+l4U4r0pnpgHI29VlkQaY/ffOh5qgeCmGL/gIvwnP3yMHZwS0BWC7ZSNTkQUHEJYHAhfYEvBxpOEAMmo42BflVlPIu/zrLHISILEuc3XLFsaxSDB73mVxGgA5orArt7dcMhv2Sr1Br3i8yVme+hVGO6MzaN0b5Djs8dlQTpiQKzzm59rxEVBQcSMSg+CIGMPT6gpcI3N8OMDDE38cl1W392js7ytCTcPxqEDYxRfPBWFT8FIvvxDCCb4jck8tkcL65H8QngYWO4zMwfTdwv+IJoQfAlnmYfUmYU+pkEpmkyrSj6tAhR68/OVbOmfU5MY9u4TrJlV6oREttGAB1sEyJapC3dszL4S7DvJfd3VPTMoG10QGVRD+EoyymlLirYpu5iKaJ0RTxG8LcQn4WRKVlZS/fv+FNLSGVNI3tFM47AAaSSKGTAI1SgCZHPdLxauZ3OwKqlREIipfSQuV/d0oUf6iXDttBkzOzv0TPQrYqbm0hrZc6ATmA+NbKjDv0nCqd5zxpqdNiFWe7WxwUnm37Yne/IDKlpJFO5GQEy6zwmtS/xbeN7njI/VCwshMHbMiLC66K63A5obEPOy4BirTVuY/noEjGoyADeS11fo5kJQLH2Prc4ECRbEsXpy/NDwVHd4joZ8TlJWjennpzCgds0I2anZ4hlCpQ3UlyGikLs+1WH01JgG3dMoPRMRytlnhtvaWws63ozS36pfbSA2dJuP2XOBXewJd/mEzWrWhBYul25fFsrlzykjZPPFiALA5mtHlrX7/0eq8/8WHRxWBUIg3MMYq6633a+Or9tOq9PGQpdXb1ZmUawT3aUfau5X6pKA0uWUoqpB3kce8i9mdDhxsmvzg8vjmWK9xpO1t25uGG04EiNBnUrfkMf/qAo/wBfd3lpcZni39ssn/JNnrvLNjbPn/4sgXczayoi2tPm54sXeROEyxHSeWh0lx/11asuf7Cot+28tnS/2cata+PaD/80I6qV1jD+r1barQc8AYtbKwKOsirGbrhrT9Sfub01cLEjK+XAnRq1AWQ2HdmxXODWrg6y9WuWUESHBR0hq/ObSl0NhhpNQHmrfbMOBl4ifrpSjbNRO+9qUUzdyZRwjygafS9vMP9ynciRBocQ1OE6SVt2zIfC7P4uzHAVxA6g1x3/tWlVk2sNqJnZTQtq3U9fdl2FeMo4xZo2LfkSdPJ/oThm6297aNGAFw/T8B4DL6WAAW8g6m/2949u3w+nDhlR/D1n5tlJ3P50LWucJ+/U5a8vw0TFdlsW57+KYrvrIwOWlS7DRmKNxA//P1rqDcHwBvX7zsPSn98aCm/fsYfBc2MUpQo7a+fPyUhVtxdEO3/Hjufq+rP4Wqt1y8H9OkCm/mnKx08qiQ6A9gwLWcp9are6pqrad8eqfe2d+25zp9zWVg+SDi0alsp0LArVUmKE627H7+zdpK6pYBZrGmRuZ4CtyWD1Q87G/m6Ctpdjwg6JGeMwoIHjESgCj4aRdHpUgrSSiQSJs6lukbd1plRL6Q5fn1gT0edR3NSOowxrlb8ZFSMRlDV+I9s1HjKr0gziapDF9HFOeZaFI0oGRYESQYzwX6uJjJmxHAtCQ+3dGFiUwn6W+/boA3mASTMkBxI+dBwhH+6AOHj/DJwYHGc51G1CsTdsNDQ9XW0iH5Xaq+lrSAmAXpgZI2dLR7FZ7PvN5rwNp5g+xs4NhZ4JdH/D7aFBR+KHODxeVnYR5/FWzGJRoZByuMFRy9hOJ6fwasswJiQnmZ3m63//GYLIN8JX8SX9a2+GJYHQQTEQXl+b0Oe8zZvvv+EJzK+KWaV9nHqaq8KflB4nSLinTPPBT6RYUrvCSWZmmfLv3p+19AS9VQ6G3RzXH/ljwyMdng9J7qnZ5mZcQ1Y/YrzY0HhIeaBu2cb3u24tyl6hZEnLW3YspFdIm6cAqFfVfRuTJz9mDRg2nBNIm86s1GXDdoOexbSi3MDhmK8RX8hp4t2IG3D/4xT/EnJ076B3FneGV3iyOHU8UIsgiPh2+UGDwHyDvJqCDHwUYvWSdIRqKobASq56J5IouIi24s1Ilhh1HmcXcNDC2XFyS9Ea2wSY2gwqsSdxHg+f3NfPJpmR8yV7d+i9A7Ht11cfVqh/PhfFTYC3+bdrN63BrgFT3mQDpz0f9b9TQQhjwhXFYIN6cBabyLPHlQnEv7a6AqTX+IYTgTKGymu9YOUQWrWzbv+HyuXeJadfuFrgtQzMsR+6lRAFAMUEj9tO5xTg7j+n6rHtEvFjZpO/hnNTOpjn4ZT3fQ3oRNnOTeQFh+kUDJRfzgV+YC68Y0eeF0IT806OyTGcM0Dc+eTSsQS0y9dwWbrUdXGEYLeK+5246gF4PTqrAchPcKp1GCOXY8Y5eE+ipOFD/OyeGX1sh9LUdRhIBrcySn2fOTNokXS3EGqGocKo0JxzZgTYmwPWd+wT3uWgHwZQevy9ykAeF1cCNoak3Ye/V4yfUzszq27QR9cHLQbrFr/jsSRdSdouF0tyvCl1XvW5NstjyxZEoqSnofvjcGTjYsxZ48gB49hAiAhx5NZWHP30zPqO7sX5AIpd4/LFz/j5w1tizTBbRQ8Zwi2xOjUwYge72Kci317eSeSS0/Lb2AW3hqWqHIdlI7MU/RXpl8mfnpg8nzZ2XdGofTlxxmZNp4tMVu/cr4jFr/Akp8mT9UPcMv1LUuvxeHRH0HJFX/hDh4ksTygHmBT+/1pVpCnizmX/p1/8g6AovE3cYYUJrX1YvNSS83+3Q+n3rTtHlTMmCiLWqAp+2tj8wh7jmt5O1yD0Qqd2HVY+R5UoIiipZNZIIgkej7sldzKz8dv5aIL7mL3vQgkP9hL0BHqKI4hln3o8vUjeh7jhdJ4r+e3TrcNx8/aWEOYL+4/JSNTKgknhmnJCFnU4oTt4PDSFXZ7Z82TedVQJZvEnVGDaAb7gGXLv01M4ze97kReqSW3wucT21pzT8FWCBtXRefGsDtkYU0zgy1pMHgLR2MaDyb1cn8cSzTUBh98GgWXn90bxLCShNUpaKP3g47CvIfVAx0gG+9DnYWLgPZceP4iXW2T9InUm7/Iw59oyv96OKNt+hPMlCyCOIdnAkvk9P23bgkoKw9FbWdACvHN1UAo0XvN2we6DAjkGA/DloCFDrAUwATEChAD6cJsXxGxTiis5jgK6ZxEg4dSDVQC3FUIVURxUoloSS0tVgt1HpAsZxXYBU+fKMpDWo90oKgrp50JOMCLrD6IhUocqAWNM+G6SHPEmYWy4JAI80XCUCsdozDZ3WVXf/rgYTzMH6aA6UwGJdM2Sq40BmYc6XhrB0vxffgHMbJMyS1chbaCa6/4IfWi845MDLFBRvk5qdTaSQE1g45XEYn5MJ5ZB9GHrlvH2ahthg07RCil3Cy0gjtNPjlkF4AwsA+j5BKJAkKdKGJJAXKtZQGd3InGVSj/G/ZtBiX4ghp3l6ekc8XJlC7eZrWjxtKg6Eu1VoCcJAUSMJGgO9Gezrxi/hWotCj3id6JQJrwToIYgoqXg//wYXoDXZH/xfeiDCTsFfJ65Ctdh7lKjRMjVgJOTk27QsoIEgvtKQ3cFQKXvQFoif3L/yl5qGkDta0gOSDOYMlOUyBu0K+jB4UBpraSBIEmGyFZCx5UD/Hlo6VcZogspP4NiY+0d4Ji2ceiiSixLU3Hv5+6aTv777xIHEUgSzB8DugBxtFsS0wTX3y8wE6NIFbkjrO23apJHS4C6hqVygcyqBoSAtj81ZYV5H3Dsr8Q5M6XlqgpV3Lq3yc6m6gujMqGg3zhJBHKM6wQrnPdlF2KP9mm5Zre5/qqXzlGOrqeLQfpuBjSpVY+S5VEirxnRNcLvu84bHR+sVsLLcTJGz7/FCjOgxCtP4a5Igb2D2Rvu7fh2u57AUxFzYjh2tHqO41co7DRr6t7rxhnvN+ndHI7S3pB3AAHWjW4HT4MJSwcFINm1AtVozbpKFPTMHJ8MD4F71xnj0u1kkTOWBv6qj+0pQCbVDawGTZ2LefcgCMyjZm/dactN8geY3z8W0I9aSRc3HfLab5d9bK6LDMHG7v344QwN3wT30wXzb8BVn4l2VgK83EuOpdL+hGZIJ9sBkO9cxRCWx2c4CfB2+XdCM4KUzApfPFEq1ISqUsYEqgBUBchaszVJhECY0QIg2wYL/+nIur8qln2ncT6eOD6ch9OztEC1wCLSW2Es1RVzeDqtkxmwIGFF8fElPozK1IejskF0wR2T3jOyN+dM9Hf9Kidk2C3nOePTXBaUYleqQ9qog4krnj734uVlTQUxkOrXR0J+Z8/q00L9HNf01wGuu/MmWhT5OZY0Lbjy2erFSXU8qcAntdL7AD9BKfQqa/jsVndObJ/yYDxzgVLAAvMUpN4OQlKZyBczCRmtXPV3x0w7SJ6WG4MDJU2due3oNj16KLf3NtIwVkt66mBFBrTi963tLXFnd+1Btn7L4uQglj+S+dN6jHnIC46Fjtu7Xb90T3PYen37sRjM+jgEObBVPDX1nzcjc0bcQFox1hIjebyEicO4wxEd86ON4rwfusF/5rlMKexj/A3RacH7PiwQ6uDhwwIRaC2UGIH//zw74AEwPsGwk7uBuE9J7/Z8m2nXnvCInfhJCjVhZHRKVTGmW0Agj0FRlrWYBZC3ABh2MOtoaaI/FhCO/tsfNZB/rOteD0UvBtFLGCrwTHsIQMj2OXpye6+LxKB0/flYdETS0osp+0hSE6cpYI2GG7HRW9Fe3VDbuktnZ7Ya6UpNE+4rJ2rY3JtQFB+iHsCsLrpYzZn2lTTJzoSY7cG3FOZmkyfRLtWKmkZFp8NQJw/NSBGshsk0ecV2ZzudaPHf0POCFp9NgzEb+4HFB50yIWencNo+hgIfyK0fnDUc5l22Wpdg5rBcQ/Hwjr5KPTEffPB8XUlsv+Lq5ZHR8TDvqsPQYJkfCX40rcn4at5fFcqpJgsbJXIU3Kj/2hxJ8TGF3bC1z2kCy/bhF4fy+a+40cnrgcClVBhVLvXrBgtWHzWqhlysaAOhFNacOUFhazPXLlX+Kwgux5alFEkBTn4tBuliPJLHmqMvewqPvm8APc34eF2o1TtwuxRw7uHPzAUQ+N6mk520ozp6LjhOh6aRlb7OzLPu/TNzmA0T79vC8MvbnYDcOb4HzaJajeZcUdP7yg8crVeMy5dxR912qYl+5y8RfedjyvWt8a/X1j2E+Pbw9KI/jXAYwNb0K0jYviyKCg7b4atuUeaUNcQ8mBO5WMxzJaqHhLAZAKvsbyGVG5WIGkUANwy+eps109rDvrrn9rCndzVHeUdK9WasMlqICaf6xymtCKvHLW90KXGbYd7KMwDXDUR/85T1rARbaVwEhRsjX9p2ASilYzn1THBVI2uoTmmcRVCo9WDqMIrBOUmaguPIuglC9RzIHZUidpxeYWCeYXLf0cd/CRk0OZ1OHWiAriwBwJVAdEK0WWFg/XbFa9AuEUt9nh/SqS0NzU906uPNz4HV9x3cR5Z3rDBVvhb7uU7Y/duLodvC7nx+Ub//WNR/lF1KhUoCIK53FGwTQLDpgOBZQZv9+CYcTWmj/vWBj/oWFGdse03WEc5utP27OQRI2KyWZLiwoghm0EVJTqQWJ97ibL8LzYAaRAtAKVBoE0AB3WjxFFnpoasrS8Ko+nFFRcauTpQk0EEiQipILmXS4szuzl1+/Lhb7iJ5y15rbP9YxDY4viLqL2+eC9KkwuEupeXBiYh8CbaVs1L4ExioULLcqBwI2ILCXRAjTvlRsTMwDXgLCwqCUpHIzCiSYWDS2ucuJhkdTT9SP89gO5h4LkkNPwyf/L5gWpGSy+GB3Wxq5r+qZ2vT03IaLl4srCNVMRhYnzHXKd3Si8oAf659DBsPSdew6+O7fvkf3cJClMfBA/jyUTCPeuxxd95TRhDwVQj0D+GJ7+RZ2VMmN/Xz7mNZRfHKtLOgSNa+TkfJWjI/Pn68urvjnkfXJF6mBeJSNSAlH+/GxeoNx2jEZjPwyPnOylNKeK7Jhm4IPOHudv1tu8/XAmkgvTktUBfA4kL3+fgiYRF4jx0qBdcH/UAcF0wjq86JaStqxiPLjfBNmJDqDosgQWnV0okO4O9ypBKzZqO86xLUUJQTx/z2Xb56z2f2bX7Vrh1h5Gb6TZnYvWSF+VwmKoWGI0fWLxUpO/VBjkEfPVFgi047b3OU2eDyB/pS+bD8GS6HpvG2HMKOR8fOYLt3KwqbpFXAyBF3S2+X4IBxd4/nVX2dCn2cm6p1f7JX66yYzeW8YIsf1f59/yNHptYQyFQw/KE7sOQs+UEVj3qXKmQFm2zJaWIBBcfUmwoq97R+BNYkGsV1HLo0PEAxmCOJJa9L/fYQ2hEcTB0OZwHtWlLfJRQ4KF8V/6ZC/9G+FQL4u9S5ats2lWuMULBFGj1Tc+8FCAeL363dGS8uQDLsCgffeu55GDWsxWEtBUhB04v+bQKu/IOyifFOp7FtYGM15q4S5J0XJa/ZBNVFEift+16LE7326/DEaawuYDnCIiVnDblqwOtEjd1JRbE7lZs+NSkFFgDUBhd66pbeO/rH0JfZu/NFmPnKkGFZs/nBGeuo5vIC26SnxuKD+IE3O9e+shW0PizHWIkReyidHy9+Vei7UlL7bir5VuY8mWxQM5BmsV4U9mLmNBIWMh42BqagzhbxQU3X5pl9HkP1Mt3QZdquf6JqJ4jGHuctxdIeSzXo0F8uhdxYQjkM/ye/MNG6KgwuM4Ddax89lcJdYQiGXy601StdAf648FGaPWFlgfMyKAfQH52jFkjubeFe4SCkLx7kewcL0l29tJIVEvhKnMi1DY5LvKHc6x68T5y5CS3qfLMeJ/i/FeuJQLIbmiXD5KVdCHa6DgNFFTKd4qzsvKY93IHDGT7Y7ShjmE7A2vI065ufsqqwoee+BlMacs6ZwU0U+Q+0n+mdCgG7M8mKNhgrmuSM5ZNZNVdlaTHMNoFZ8VE9VlVUm61d5gKLDW9l4hYX8rguZLj4v4pzPGZyKeUU5iYQIkdxG4D6dQCjWop8/d+oJyrJ6IibXFvLCrVCqf9Gnwoh94tgRZSWpsmbABIczoCnGeS7j3jJJAI9wmRvt8d0qLlBXC88fgSHL1ojRI0RlDdH5ehOtkZB3MN0JCX2lVOSoWvsBvxAu+5oMzKrTZhvlTAK4ZmviJyH/tGbCUw+cJpP5qoShtB32Cba9B7c0IgkpduGACE0jbgzaOSZQM7y4DGG/1gzFyhNHIusVaDQRjvbZ25sAovr7+X8OZc4LiCBZF74mQ/Yb5jCtGxH58bCd2zcE34RHMCR+tcrV9m7f1qjyGFz1YN7S1eMWraMG1N0U+XwaBhhSgkM4R1K3YCALBz3Od74TfTXhjSLQXZA1NVt5qJ7TpyUF9VL1flEU0nQ9o3OcueXh3DHzysTIRj/th3FhiWxk0Ve+dU8L34fvre2fXdIIPwKU1yw5WtcJq0N1iOmv7ZAIOAIFV2CpM/P7qYAGXchQWQL28ONqIwZsFyr8sF1XZ/ID0id9XHF/86IhqW8H2Uuo2YB8HVYq880BSIlMVH5CTYiPs0RZVrMP/1l7+688aPpsdrGyOnP7wmMB3HTzWgLdJ3Ul81R5hMH7paGzb415Jvk5de6dGYdw0kXXrSn32qgJ5N4zfs14dtnlt7g1sf+BmeshAssUq7NvOxHZl+qqCkdMkRtzu1U3Z/NNZro4juDTX3f8I9EsX+M3DGrtfkV5lT2H6lYiffOV65xmmNYSw5kK0TUuVtGZp47R1bFc3XPWDzV/NgESYrMQVBKuSkE1o/cm81mizfPJ/LhFTN1sr42bMC8DuIRN2Xu+s/8Z9gFiwAH5w3+x97V1uwHVvcZEHHeAhssBVDqvPzHPngZ2yraeUoo35UEqcLd6TW2tI9QCut3FQWEPpmeIHqqa0tINFsWts9s/Rf8cHlm6anRFJDzL62qRPfBrw2rjLAnKZ26KqbYrrk9c7JnqHShz991ucdkaQj76TBmXuNM0tFPzR0v/8u7WV0M0wKOR6WtgktIXTGDMx+wPg15uJFvODPggS6kFhB+lUDX1MgPOIMHWPHM6q6s27EoyPrnJ1DYr05+EluhI3iZZlbG29aIbjP3sx/YufSKkBtv/FrGqRvAMnWC/nPsT247hPHyLenHWtyc+TOiuVaTrbSI90o6qxA6f3bAbnUM0O8YTaUPH4OUB6UMjMQqcjiyH3Emi0r8CrsAHQAF3wBgoR73JSkUMc8kHfW9b59bMF0v7GvfQH6IRsS8fX1UNZjm+51xGZ7KO6Tuw/U33Hc5zDW1Eg7aHM0wVAq1dZHHgiKYy3XPn2U1/b240zY8xGqU1bsc3OwXupfvv89K9KO2l82xiKGyP8g5y5SVsqa3XY5lDVpq9IN3wT5pBeQ8K+TgyFpZTZYoalSp0P8oW1hOL/6k8+EMwVfGhB+F/+F/n27IijTzfN0lSBWmF+p+AWMy+d0ZVUY0l1mO66RibD/zgymLmjUk27dHI/qyygFdrSxsZblAX/QpOgTJZ7a6Iv6ALYKMY6D/HRD28avQwAiTbp00DHt2grdyHT6uMFNl7Z9+uK2o4trLys71Ncbxll0TYqOjMRsjtM0P7d1id4/pf4/zL6EmhI6S0SmKtxCpWP/+ZzePmHi7K8o3EdJpYJ1U8Tcj3Xk8mKlEzLDfCF+w1Z1gWvc+D5lIiv/bRQyXijzCLzGFkXorUvyly0Mg0gHcvu2/+1iQj/2YvuW/+4y+g9/mP+nKD5JxMJ8ypSyljBYTVmLD7uu+qDn0Yna/V9X3x++y1cRV9YgkoEyT09+yVY27g4S/d323uizGfja/uTeWp4KbcBW6xA/ccgajF9SjwbxJZgY7EhnVC/t3JFx+qjt1i69sQKQ+GaS25dZkRrWggW4iEwH0MrUKc4bCbymuoeMCRD8+tBpDwSgUG0uIBDCktJVjH1i6j+pbXR1ArSlaCglL5F8QBnyVT4kcHqwbmJ0d4uBY0IcOAUQYxqQEqshFyTSMVPbwoVUMhkj1m9X0aksW+ub657+hfHgLDbasKcZAEC6/MX8jOBB5qhfbuaAQV9JULJykstSrqdOxl6MGFZ4aH+I3w7AMyQmYMaqsQO+488yDOzokH2tou+1Z2w431mmh9M1noI/ndD8x59a/5QnsuN0cLAgN1EBczgL6uzU9ie7jAK30A3doJlfW4x42JERc+MUG85uhnVG372FlRnr8klA0mAFhLHrFSK2rEyflV4C+x4JXqJDkAy4YLFz9609OjB0V40f3ww+1GhgOsrELNoKEI56JXUod8lHZzFltbfQ65Mg1WCLiTxVmMiEm3Os6Ur6I/GjNCyShVeJNESuS/CXXNclN5M2INL9PPHo/PepxsKX3ZspiRUk2/65a9CQ3SVBralgjRNi0o0hy8lIoUCbspfJlxduHG3TnHhtQTdt+TJJQMFdp1N07ypsNF7/+iI01fs3Id2sVdDiEf6zs8M0dsoSA0gthEouMujc3LgjB/HJHGQ3/cQTBbPURAI9bx58SV496CmCeeEz6p1nxNEzZK7FcAGF2O3VBYPb0PGGX2LAQ7YISkyp8lvMek08wHerY/7nCu5255EgV7SV0k/l9bxbcLIEsQN0K9aaIDoUsqY/JwI1/uSgBoaZzsJPRdXcYhNRPh6iguFKTHtOnCvG7gtuvOlBZuBsoa0qqFqkl2HmZxAyqFd/eL3i5OYSOEZoU3rRNvpGYygi1kNuhQDm9HpGNrmJeLIPif5MGO7hSHsH+01UiVMol7JqwFrHx9pRGyadcfT6CIEB6m4HPOm4a9I8fvqLUdctqL8zfqxc12/1F7DKxx3uPOeaX33B/CcZ32k9iAUTQ8t9gKuE7lpzzV/GOXSwz5KaxceDHBcofM/1vznEIs7siE8ocDH+/UaluAlESafEDvFuEbifLXHPIn+uGUXcfAsxw7H70eP7oo/lcukoSweM3ms9277LT3VxIOnro61UfKwk6OeFbtPsXkvCdB7vTvF3avhpPPmoEzHzeB3OGjL9ruK9Qi5Ro7u+okqPrc4gMe1kIzYVKXySYmhUd8zXempjv9de+f1HzU83wRnuxf0WPHr/LFbbftyBWnhHqFo1MsekIW6cpTz+HagVbpMMpR60XNfXPwS/L3y/EbspmD/CeXOCICgQguha8/7zZf47qrf7lZ+ReuvwEh8vMUk7NF9cZGX7UxC8V20pp4gzPWBY2p4cntR5SWF8lJHhP/sc9xcPVgNAOlJq3YnC2b5DXEN9QfuVFKezvqubrh+exDa/CffKli/4s+9KzYHbcapaaajgBAQ6gWERYR11ExMBZ8t/13qtU2a9e2AYuuCHUTZMogSySmsriL8uVS46rXS+dNPYUj5mxT2YjLhgFHrCociaxnlkGOVZ5Zf1k6FptPYd2ZZzvZH2x57VLyWBKzzWaNaWbBB+gAYd+UESKXXfOoo837Y+m5dxE6wvAOM/PHnCkttuwwP3T4LPQV+iFC6oBH7HElvuan92HXF5q+itS6xB2PSHDva8sRsp7JXtjXHhzlX13qxVfbqiH26c9rO7EHsJ3Cf3G4aqLxdDa0gWfDaN5j2FMFiVzlikRL80pF1puhIkUG8KbrgOA5teqcw+g/NLtMNm0aw1zKhl9l04KI/LDuHoTQUPJ88lIW8b14XJbsrgUWElFckwJCksHJtJKOoBZ3aRbrNSehmfgr6x1P8Xz+fVT5kt6BGYGzms6jD0d8fpJ8auFl12GdQJi5kwrYfC8v3lpo9QUtNSJ24QCe30vxDolRcQTr6r9KM/Ke52qULw2E41puuLrkt0y64/pBORgrJmZdR+tKmaB/xurSbCAqc9kad+jrevr/BTxOKH3mtID7fFLUJHy7r3atgCfqEO9YhRpgKPkf+tcxrsTb+ZWYm2sbyjvakezfPsKAws+6H5JR84ikye8kG6STa/6Tzwx/rjQrcv826ks5tirOTZ/um7UOljn3ATBAmzqQHt8OUXa84BRy7z2jdA3FPkpKdx2a16P1B8H1QZvdn2hnO6WnE6ambujtcDDLG26GcaNdceyOHibmnDIvkxKFM9XWCYUovG//c6CDNkQXmPfc2NTze0m/cFybaCvN6I4zZt83+3FUONFRF+Uh6pjAY4fVWWE31/jjK9PqI6Bj/kZ7XJ1tx3TRp0k5z5E6zk5cqWXdyA2GL5Fn7sgjVipp3zP2K0/gNo+9KOaYndgllRi5DO/RXtA1Ip43bd9XFcRI7YVf0ZCdHt2xROCvTgr8vSgkeM/cV/XC7Mu3CS4XDpiaJFU97sitI07zYQlS99h1e2/yyd/UVJUVmyeyCP+X9Wcs3noznER2tx0qz7y8npJyMShri2WUR5QBjD9rAVYxVqZoU4tUGKUXcCi6r5usKwUWR1FprCE+3PgK4IRMKan89BgRpmxaXkKAwu/u+OOM7BEHLSxmmf/FjoL4xBZGElbgrtTnyQaNBe6i2uXDZi+VgpInY7Rjv3bIcjGFhMgvmwTDRR8ISkamqpnArtMvMpuUil6YkuyT/cXo1TU7Z3mVboUgr6Mo68QdCE+/trMKMCqr02XcvQIIKHnaZh6GWkeThz1Mgui92TY7W3sSoA4jFvwHLIAoP6TWE2Xc8pkcNvKjf7tui0sivs892RNvVfB3xQfAPgBVZ7aD8qQGoJra0KsJthEcIuJk6HXaMKDdYE9QCyRm4OgAqYihjpDP3+0QYaCkbCd3E/zR4iiQgO5RDawn0tMA/dMOtvDh1WYjzGROKmNGnkLV9AA3GMmIvIO87/kLo/NO5YkF0cDUd9V7Xc3QlkU5175Yycnechke3qH0V2Vh3v6NGwwatx6DI8tcgtRWj2lbU8KHcYdFiuQvWH0M828Ni1JGZb92FMyHLX3lFb/P7BIrvuvi6cA6MQ4xOVJ6V1mEGD5V3Cp2932Flvcp9tcN5DkQNPYgP/4EXPQnRS80ZTlXIO04Lqe0ZG/HYQ8uvLZfvuch7X4hT4kha+8XamtF03/SJ/Dgv35tGLqaf5Ms7FdOsvnT4mpse+p4azVaW+zFO+cDlOKhG8dCsJRYeWJ/D61tdST0hcHrgGQm9VVZ9WbcEcmsRfQd4p4wlZ+Ge4rXI01XEHFSi8OdrdayGOPA3tLagbmhlPN9ZhcJuEwkKhWAEHgFjySwjpHYFlULQeIBJ+J8OB9A46LS8HaXhCY7iSWgtIEvwOo/GVs+WREEHZEJYGRfGUIQA7gToXxSrr5dQrJ88IY4kCO3DOOTLCRiAnYCDouM3q2meWE4OGjAIdJC3URUULoO8YMKgDcMRnkrheW7CBSHVOr7kjzo8jI/LSMidBCFVpwTYbkaiAoARNdMoj/JOVpDUg1wRD9AsDIo4Cmx6nPkr8741SC3kRSsZVpoaIBFBH+H8k09/gS5fuZ2g6GktwNtwO7Q8wHSg3ASZGEXwlMGEQjnm2qC5ubawkFRGqrPLKy+Hsf2yXOIL14Asl5BEFENMBwmVSBCpcpXQAWT5QaEQiYdX1WAKaEkgMU5vs/+2bozskLJrsfIMQ/qIgIDFBaqJAny6gp5dt2mokEgFCAgHYbblCBXBU7ROrOZUAplDwFyISoscExLSm9GYEfPlFYfU/ZDuRpvhRauzwK+PGbb1VAwjriwBcD2CB/gxvtOkAU6UT8L1OJxTzFTatvmGIufoVR0I2ttRYdZQRaXlV/npS/I345vRXYpBx8S3YO9BrRxrlwZHA5VQzPllDgw7NrNttsgiLVFAMB+SA00kHRwVMIoxDcwAvsbMK4T06jSYpVV2ocnOrBwyGkshivzgMzdjgwsmOs/a/XAhSM1Yb1uPBSJn/m2YQWwZIhjhAGxIBhfns7vYVPNecFb7FtUWg/NHj7JlK7o3H+a6djb0pCmPBVg9trOWkx/jVuFSD2X8wLx1tTmI5Q2+hAoMvR/3BtEQoHesCt8cdh2pEicEzpjv7V4bGP+iAnIMDZg28FZFQxa9W6KNAhYy4qFC1ALPeJj+dFgVh9MaZDlCUoNI2BleGqOkd6TKaO6qd3rvGUKQ5g4XJUwzoKYU0vWhrm4DlXCG8noeD7IypU4kLmAwYqcKlXVnA06P9NnLQOiQpdMjVNsNVII5r1hBq7F6c70YyxYpqm0mPDsVlgVvxNNTagehEGQVqjtRchK2aeQEW8f7eu3+uDDE8+pqsNEK4Vna8AtlazpBC0NfXlPBmab9cwBmxBDqZKjMc19l8cy/Lz8/kwa8+/+VJMNCGfkGChVhDdVkm/xqmrItcDN9tIbukPg3pP2gCVd05Oz0qkeFZN0CJbCZOH4HY58dsoOawO0bHeQNHgryQFcxs3mP5dyMlawden/Yi4nFxN2xv5e5rovFEaSYy6+2p+KdCnzkr3Do2zDGRY9LdLx91y7K2UDKlj4fQ+THxc9H+McdvQrIB1jFeu7DMYH+jwUhh0Cue+hP01/THOeo/yfkTQD+teOVZksGfvzv6HziKMfAZCE+DmpIf85zIhXUp1Of97PyksIR4DmB/uwm+ldoua2szWWoJNktzXO6C01sVVD+FuldyFVtj/QqpBg1Klz6RV+b6LobQ3kto/lZV78isscuTuE3tcO66wpmto3Y9hVsuldO6xjk5lohOrN707Bu6AlRnSKxbZXXlWJ7tJRGkFHHxfXknuI/4RYWWU3YnBDPk35L6btJ2wPsvpOiJZL0P8S3TP0rjZ/oxufR5+K1B/mNyuLecSgdg+jaXPKyOf+pTSKdZHTjP1aLBNQTkduCFHkiOrYkDkBVE8R9c8viLKkf5UQT9u0q6mEFncZSIvW0Ut2NXEvpR7Qv7F6ixz9Z0xr5YF4ymmdBNcvpcRWYVqrPha7PFTODpFWjYluCzI3HqzFMvb27rCtpQm70H0+P0dtLrZxMflhFK3yWn97aa7NnvTxHCe7SDu59OTH7213Mtcd7Egpvce1UxMtR2KCoj0cLzElC8vFHHGCgSJUTzGCdqLk5iQ+A1Qwsy+xrL1xghpxPcCNYSNXiZLFoOMpnKwgW+C8st1VoL6s0hXW79vYRPTRF5ZLE7S05GGwNZTurBT5gGsmlgvBgvngNbofo1OxeIXxukb2gZNZoYYeIiQVGZSkMDEhMBsbYrAsMFTrN4rPwb1liNf4h8MsogQOveArfwK9yinbwmscYID6oSlEpHlf4rSxCk6DEvFa3k5lUsqhRJZTa/HFZiTJyiSbNAhUKhPRYRZJVqZ4tK2EWtvoJtLLmWTKanGwzGI9IXpmSg51/KooFQyoqmeKsbhVbtJqbWyvfJ2URuDcUFxlOQEjUVpcDUSla2Swny7lCQvwh2YwiMyt8WqBcNdpX3jQ1CvosiaxFZDw8ghw2orBhxPIPKseAs7LWmYpCpvoNqjEmq1QVYY2JqvS8ejY1tUuELZhrAfLL++cbVmV+BkALiiHY/5PBJEGhMVgiYhJSMngERCRkFFQuXP/d9gfEkxdvNHQMTD5YfP8l91l/sR8oSLAQoVjKxMPHsVHYv+7+K3uUaDFiSUjJyCkoqajFiZcgUZJkKVJpaOnopTFIlyFTlmw5cuXJN4eRKWDIQc1anNKt1Tqrbbdff+DIDvc06bTWRiuc86cdDujzo8su+omZRRurKwpc8ovfXHXNr/5R6IYJkw4p0u6WKTcVe+FfK5WSrMy8Yrdcj/lsKsaDpljlWnWeq7dQdjKLLLHYMb2WWaqB3UuvnDBg0El33A0ESqIUSqMMyqIiVIxKUCkqC3wQgmjIsCOOGnfYiPOWOxgKp50JwZpQBjVcRkVHF1QUcwOl88ia4yUc27CwYxN9HhsVHF7ES3gZr+BVvIbX8QbeFA49FQuWRf5fNZDdaqoqTrQszZywSoIbuyVVMo6dcwA=) format('woff2'),
url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAMmUABAAAAACFlAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABbAAAABwAAAAceOowp0dERUYAAAGIAAAAHQAAAB4AJwDlR1BPUwAAAagAAAE0AAABjtDN8XJHU1VCAAAC3AAAACAAAAAgbJF0j09TLzIAAAL8AAAASgAAAGBC3QPmY21hcAAAA0gAAAGcAAAB8jwmk6xjdnQgAAAE5AAAAAQAAAAEAEQFEWdhc3AAAAToAAAACAAAAAgAAAAQZ2x5ZgAABPAAALzXAAIEwI5AuZZoZWFkAADByAAAADUAAAA2BOwK/2hoZWEAAMIAAAAAIAAAACQOEwZIaG10eAAAwiAAAAH3AAADfJ2HOMxsb2NhAADEGAAAAnAAAAOAAOURuG1heHAAAMaIAAAAIAAAACABJgIgbmFtZQAAxqgAAAEpAAACIge/Uzpwb3N0AADH1AAAAb4AAAKZYejw6AAAAAEAAAAA2odvjwAAAADCW3B2AAAAANwHUKF42mNgZGBg4AFiMSBmYmAEwntAzALmMQAADSgBDQAAAHjaJZC9S0NBEMR/Fy1CqoD5QoOgBJUgCkGNiQYsHopdqoSENBZWiqIIYmGRQhsbg2ApqVMEESsLwU4REQQLwU6w8i+weOu8Z7F7Mzs3u3uHA2KMMo3b3jjYIcqgKpgRKG5rcz+o8c+kRcIzinPj4c0MZVZYpUqNFqecc0mXPrfc88gbn3zzw6/DxVzcpVxW7qx1lYesr25JeyFtu+Jpu1BO2rv2iVuCCTthzuIs2A1F36fkH1P2W1TslbpFafgf8ufsiLZ5cubtTrxgTyzaFwNSrsUq8j9ILdih1KJdUbZ06OuodhaimlAnRFWhXoA0z7Mx+ZbtWb3q4g1F0++pFsyLSK/R9oPenjXDXA1zInxLsFGGlGKYEbLkmGSKPDPMUmCeIiX93BIea6xTp0GTvT+bqme6AAEAAAAKABwAHgABbGF0bgAIAAQAAAAA//8AAAAAAAB42mNgZtFj/MLAysDCasxqzMDAaAyhWRgY0hjPMiCBBgaG9QEMCh4MqEDhNxNb2r80Bga2XYzfFBgYBUGCLIdZroLkGJgA+r0L/wAAeNpjYGBgZoBgGQZGBhB4A+QxgvksDBeAtAGDApAlwFDHsJRhI8MOht0M1xj+MwYzVjAdY7qjwKUgoiClIKegpKCmoK9gpRCvqKT65zfT//9AnQoMCxiWM2xh2MWwn+EGYxBUB4OCgIKEggxUhyVUB+P///8f/z/0/+D//f/3/d/9f9f/jP8uf7//ffRg/4NdD7Y/2PZg84MND1Y8mP+g+v7OWw9Y70BdSxJgZGOAa2NkAhJM6AqAQcHCysbOwcnFzcPLxy8gKCQsIiomLiEpJS0jKyevoKikrKKqpq6hqaWto6unb2BoZGxiamZuYWllbWNrZ+/g6OTs4urm7uHp5e3j6+cfEBgUHBIaFh4RGRUdExsXn5DIUN/Q1NIzcdrsWXPmzZ2/cPGiJUuXL1uxcvXaNes2rN+yees2hsKU1IyrpTPzs24XZzI0TmIoYmBILwG7LruCYcGmquRcEDun8lpSdd2EXbvPnrt0+fyFjQw79zAw3Lh59x5D2cUrDLWtNW3NHZ1d7X39DL1Tpk5m2LuvAKipHIgBmbGSMwBEBREAAQAB//8AD3jadL15jGzZeR/WZ1/uuefu99a+dlV1VW+vu5but/Vb5q2zvNk4Q3JEDjkUKZLarMWiQkmRoggQYcWhJRkibCcITFhRgsQwLMJw/rBiBJaYBLFkRbYkR4ECJUhgREFkJHG0UeR7+c69Vd39hsx0vVpu3brLOd/y+33LmS28dW9rC3+SvbVFtsTWwS+jrcMbXxF064+Of5mz37/xFYLh7dYvE7eZuc1fERx9/cZXkNs+j/rRqB/17+He0230N55+hr31tf/8Hv2NLTjk1uGz30Wfp7+59crWZ7a2kEUCHlzwVJRvi5wXHQJvxgOLJuOTxXh5hhaTk/HJGT5ZwafFeHWyGsNjOV6NJwd4ebLKT1ZFTnLuDjOBbWi1dDufHK86uMjR53GGEcIBwpQSagOCLcbdpolUYxpeOyYJo0gK6hGECSWEI4IIZgJhqdm2yWrv1rMfT4ZSpmN2fQE/RxzJGPsD0Y6KkNfpfzb++Ym6bj8RmXtptIgW/95I7Wg/N7kvCeMM6aPoRnD4euPBR/K6zELNfZ/oa3GbhEy8TvPJnhXahBmFs3L8Fz+VrLwcqY7ctyIjIihwQjGivrcPY/dddIx/lP2rrWRrCmOXcrhX94DhgCHowAZ2sW1VbcQW4R++uqpJT+xR2+nPH/cYoU9/o9zE95hkSX/+YEAoDBH7xA989aj4dG4X+YPxHiErndqG+cu/dpx/JvfneWdV2yP8qrSRzrfKuXxr66+QP6ZTNEMvw/Xkoo3dJKzntLqOAywsyTPeQfDVYLyLB5MBTBL8Lcdn6MQ98GQ84MNDZLE4342My5uAp0u7HSA+dEcGKQABWMBEl1KRz49LMbmFhgdoIM73gANU+yDYp1guVuXRQFbm+Wp+DJs6rMhh72J1DIPnHs/vc7w6rvbhIuVuyxnOC7hJlOZO1AL03F1y2Fp+YVEKIlzuPdpFg0OUuu0WwwlW1xGc5biDSlGG6yL/DyGUMQ9LDJNPlaayLoNJJ2QcZBbFEUmZCVjUy0wjkwGlHCEGgoxpyigOmuLJPay425GWO4b9/sDnFnMCu7k9GaYFo8QOsFf3iymGEyHKRC3OihckIYgibERTB17N1OFbkG33vddpN940gpEerqdU6p5QvdwTWnAi4Cc+nvCp0V0t21Iw2lnvZOs2UeudZI4YEY1gNuhnhBCMKePaYAH3qKhoSN3MNAVFI0ghuEbrFazc9+mX5O3obELdF4Tyoouvw3mIgcGh7mJpnMT9ftf6HtwackJLy5uMJcXS6ozGy3GfY4wF86g0iLFqSPeSXMClin4zWO9BKTWIcyQw557bJ1wWXYk16WDSyDnVg7DwY+WHgvGQeyQ4DJeI4s3XRsMBC7jhOBQiA0HY57puG3ugrDAz8HMVyoy2kisGLqYcdTQUB1Q3zXofwtb7NN4McQZz5QdahqYZ9VAHdy182NwenNQIhJQhZI68HRIwSmFqkW+1/A8pFgfomLJYCYYJVjAYRIS5CA8Cp6No651n34H/PvsE8i9b2/IlAF0rzS7Pnf11z3kGEp7llRldm5YbyFncpbMnkwOy2X6IDpD7B0J8vJqfOIUCZaz0aA4HWc3BLINeuCPRQzS+OOLmQ2mjKw0+Wa4W1TnOsPtyAQpYHopWBwTLUCqRu0q35bj8Nneaub6lSgknY7jy4cDdYZE547/eDfQR/z03nJJYTwl1kNWIqccaBhEjJ50w0Io2AhSI6RMKDiGhCtwBQkRihqjs2LYwBaUhRVqrgDIDxwbhQtxIWofB10bfyWSTsx2e0d2+CYkpSD/FuZ9GUmhuEtEW3A88mMus3aRwSo70KM+YgUmMMAYdYc6xaAtnDvdxzkCjdINjgxnMNYfvmNuLHfrhytBU9Hwee/6ekVO/1qctwdIWJxHTiaU1QsJ459BvhsXH0kHEMhIqhv6l6Aq6K1u+svmhUkSHLNxXXSW2KegICbjs4ig3dePR4CrxQTopvJUUxD+iJ/VjhZGhBqMaJhKsC/gNQv0s9UD5uIecGvOrHKXIA507tSMV5XQU4tQLPbBwPFCsYOCdiKA06y5llNoam49ySXwJnpaKkKM6Kq6Ko3zbDw85x7IJhogKAa4ZKyKjut+l6IDuI6bAYiIfxZokxOt4cEEpwSHCbWa0VMLNJsXGtBrcdLZhQLJbYcenI9GMGlts62NbP0mXdLH1fVu/gx6in0C/4jxpKUNZpRYbkVrryOpkOFgbebTxSZUDc2+WlXNyTuYWKl3uyWqzwcGS87/KwThxzPIUPHV5uo0mrk8JgnuyOBkcrR3k5b8lQCH4q87instzrE91+TxOf6sTjZwvBc2pjn2h9+5BUqcTxVDMd9H8KtqVAzGZ58PyxMvFydrjbh4XdwVfOnBVOkOn+HlyE9DZeHk+JGNnVNZ/bQQX00WVCl46FOg4GtxEq8lisrj46cVguLFJ3S/X97MxEiUIGNOldD4qy8Go6ogEhMc8cSKimhNEOVOaMHCfCZho6kmmUYHBEwmnzeWDONOZgV6L0G0Fo9JjEdseeLUGtsEopImz1uWuGH3j/watxCSsge0NOM4Y2AbLJX2Tg4OuFyiyKaKhFoESSMGOBEy7QFxq8OY+swxJXhOFKOh2P0hrzAaDhEVc0PXV/KhEGvHuvh/PE9nXIhNqu25UzOw7Hmi8s0wKJmvyEKUJ2vynMjNAUjatgq9xisA0mhcz99u+kn07/aIlA3AwWA/jhHIVpfBF2tLudhgiNkOjrvU0QAnuDmAo10SRQOyMHQLxMPgliuAKv/FHmPhwAjA7JpLbbS1CgB3gyqTTMKPhx0b7ownnoN9YIgDO7mfo+1UNBl/SaR3sBJg2gYgmtrxdBrvAboACYBM8pMcCvM24CLuw764bXAMYCK6jG4IDTwUMAGAeCxNiJPIkFqZRZwOYXrhiaqmOmI9+TWasBY583DIYDCB2dwNWE0cAgLRC3AsQCbVpGk3jJveylNd8kA3s65T4xNAI7oqH1KMK+QJrd5K8LQYqNJT6YNrZ76lsKBo7u3Hjwy1zGOmh9nf6ib+jiydjmsvIC6WKvQgEAubeQQlO4bZlUwZv9GDnYC/wF7Vrv5uzUaQ7yht7SDvsAp6d42+c4RjuFcQXSAm3DVQEFsZZShM2RaebFoFM3fCxaAyDwEOiALtRqzX6pzjqhhS8PyFgYIE+1CMmAlAJkNaoYYvYqO0spsR4IhxwwFyKGsITwgKtS1zw2tYv0v+VLre+s8IFTvcGYO7yDHxsf20IVifwdIbmx7CVO+swHDjNLKqP8IlXH+eg1sDMhg58Z+n6WwfB3V+JDJB7hS/o75CY2l2w6rXo7oP3fuHpb33k7X/nlQ88ni3e+Nyth59qBWzcq/3EMLjfnTW8pR32hu2T7/zSf/LeO9/2Zr/dHfSb4c5Mg8x6yz/67idFAqixlmbkl/SBmUqQMSw/8MM//wN/Px+/8sHve/WLce+7b350b2+WxJ787INeYFUvaqj5zu3TK9uPyHvv/Ogb3+X7s9QcBnHy1t6400x73i1hzUoU03oHxuhTdAc9ZP8b8K1vybbQvQti1Vs86gG/ZB//wa8eOwo1Lx5s73JyqjI1KMf7+tM/Jj/Jvrz1c1tbrEQs5wzHAZfzt2jjWcYbk1c+Fpc8y3qz8wHH82vOzVRMBfHJYDwYb2zouTkFExdXQKiDzwFR5YtgbuCVfL/Ypa8uWjx+kgx2VB2xVsxlS9h9mZPkhIai3yCg5h6gd4CY0gOzhHrE7zguTbLH4a6ce7xG7jO/oPzE705o5FlW+MMx3TXDtGWu+K+uBsQzCGw34CWhJMBUDtrqpZS1WZ7NahJgynW2s4pezYrwfwHT3HQ4GnOfg3hipZhMwU7wFEevsiS4/iNmx88wac9ivuP5V7logDES7cJzwKW1sBGNFVACzQFDOGYf7HeJw9I0Evt391i+EE0RPjFXvO7TsOtdDXb76fBQ+X0xjMcCw4X6yM8of+jm7tnPPP0j/BX2N7e+5Fhu/LwvhVd6abBLFLpyQYlj57XO6MZxnVRxC/ft+YSvYQR2zNf9aA6eHNB0vqrc5vpxadKyi8/4l4hyA5R3Wcjn4FbkFSNaJm6whursxS/Hppi/weoRD22evhYdHspB3avFCYx4I6ItQjIFo+L4pNDwjgSawOzIRDdPXw8PTSvtB2M+HnmFBnqua12lbMjv04L7c8n2Pb3f9YgB3NUFd4PA9MK9K0o1+XzrG18vzNT7/E1Tl69ENGd9q3IDZj3ELBSAJwkrwAsz84DzCAUgT8xyTye00RZ9Xx0N051xMI9jrGI7C9S4G4iGGI7S5u19CTYZlJwi1t0LOXcEFlw+l5jKkOBUiE49AEtOddYSY1/XwPPVlLcjQtC/t7d+mp7Sf7T1M87eYVEGGwDIrMrBrOYN2M2YrzWjmksAKWMXn1hPtpuukzNSzmbFNip7UM4JHGytuevQC+JZXtJ+94s1GgTkHvd486c/3/a7D+8Oo0dhf8dP8/5tm9VV8fDG69u5TmsBmBS/3Tp9uc0cmq3XVBh/4oqsRY29zrXGdMgCU3cHadnuw3tD+5I/3PGyonPXzxqy9fFPXjkahnU4hGRRf/m4w2GYajUZ8lqnM6wDSQ6XR8eDGblrrE+j/pVx3I40aLL0uo3jKy8A846Zf+/WCcWzB7d6wXFxd7pHxHWTd7zmx1//ZG/y7gP/dlADcLF7c6V84ZGovz9OOgDIkS9Nq7k8uEuQTqn95BuUf8+VhV1UsSNxzeRDAcf4VNfSrLnbT+xZuMfIwU2Yn3soIBH5n8qo4HO0jsNkpPx5Szk+Abw4PECXwHY5wisgkhVePrtk7+BQATp2qnVyfMZKT0R0+12SAYkRUQwm2mvVqM+yF1lXcBMyOZEFSpJ7w+4dIbB3QJUQLeELwBy9+9hBmGmCGvrhZ2nmM9ZkljpoZGgoe5xpoHsAeIJp6uE/vP6DdCBgD58RTO7OOneFIPoKkUJ6HvhrEePtO6KRIp8WDwGIih6cGhBomlLuey3Z7iXbqS+HbwNvFTzkua9yDTzQwS3w+xbFdedbvuNZBz3a+h+dnxp9k58C7HXup/y281OMIvK281Pf4fzU3Wnpp1LTKv3UPfT7MA8W8AHoCbs8EeNKSVyM75uG/qyC+e7p2CnV82Mt0rBlBpSn1YCLwgNQ7F+ZRPpBf5F88yDbWf0aq+/xpScsZwX/5nEN+rVxOOPAacvBhTkBrEi0BDGm0n7TeCrCYiQk0Fbw0WDs3jd+bz77c/Tm1u9v9WH8wJpb5uIcuLwvUo4heoQD6VsJdCFTiQ49n/F2wEIv5s2w5s1Xhr1Gch15xMWTMDgcIMgC5ix5xaepMtg7C3areMwbz36M7LO3t77X+ZJzbvbcAwOqAtHl42FJCgFmwWMdS8GTEpK9j5/BU1xFSGEfGPnraLcMjjqWl5JdXN/VYd/KNoXbEA1OCgD/VC0mHV2fSn6FZWfJsKgBPMWHSDUTnWhnd7hwkJGb+5EIiKgLPwRU+8EujZTz4to+7lI/QKJ5zdtOmwbGBNN/Obr1Yvvgr06br3viLIsXVi6T7GY8eunhzmunSXtbAioH9XHBTUyZCsFtYKVhaLnd8Zv/7pX0JljBYvRC40kdmc/6260oueKB1gDOhZFlSsaNeLiOPXP6q/S/Ah7/D88jW5eG8JJ/5mJ4gazGzzvfk8UldnvLxaTOSerJGbrg7ueRJPhjLvewHAN93RwO/Mb5KSvklV4Qf1Iy2I22AIH9VfA/mAO0wen+Ds84byY+eNt9K7Yt6/zgzSTcEWZmdrYHUS+SPvDIkQl4mMGAMQ1cKwZ+0JUJ/MtiAxxlv2df17XEzB/N29ev1NLjK1c7zRbJgYdQCoDr6VMCFLjDuQAVClIuMj/3v/9dHSRsDzAVqesmGDAq+7xeC0yfpyYxP/I5U6gxiVlkSKQRfiNZeHIeAR1aPZwC1+SdUIZWFpI2gTWmCtUJMyyuF2E9VzFoyVmU2d5rYrBYkof9UG3LNDwMhrqrGqkCRjNM5ZD6ksZcA0Yxut9b7Y5u82mom/7ONZseAq0ZilceoDyN+rGf1qVsB5l6ac78mI27qkOn2dWX049dHy3eCpYHWQSXDQK4+gGv493lbT06tdPG0OnbB599A3+B/s7W33R+peCpgIvL3RtgIwVgY3DT5dzyogyAuoeLNLro/pBPnN8pExDkFioTCg6+AY6bLMtXeAd/5RZ4Lt8sD+ha9rAYu03lvI/L+c/X5rI4Q4APy7QD/kID5tXDDOgtBv4gJSmjA2CjuUdUxIEZYx71eHSX9JtXhxFBXk5poDRQfBfhB0KuXXicMbBsHPmBcr939hBJAdBIC2PlIk0OMpZ2ZIwYkMjU+A0UYz7V0jJ7L+cHJjo4BfcCp+P0H3fqvM+vdEK1L3WjJ058+4IvioFMnxjzcU9f0d6O8Q589dflmHB30eDUfE+BFfbAfvNm49RYygdEgO39TtmX8nF6qBctOqJ6pvVIkxrG1xiJAc5hMjMPfU8Doxd2bPTSaxTSZ4DeUILBDIML4ogi8K8BzOUXn/0p+TL93a3/1tlO0JwiD9BmrM+feZG6oNH8GBD4Oja2+QZQNviuGbwDg+oAxQV0uGRQN8SrQm3j503t5IA6ZV/reSU5YoMDF5ewPrg+mGg4Sn6Jc1UvKfmPXJTF0ZKOf6xY5nM+4v6N/cTcCXJA4nvi5OgNPIxSU8SYCJJ5Ln8gwVtH6Z79kd7RT9mTvVRaxAMCw98WPhGRH9S0PwiktcxYdSJppCMlTQDO3kuYNIy4ZAdSxzIqgja3lNXwdm9v4A9oRIN69/jxaI+BBIF7rIOHNKT3Zl6PrNm1gs3TSccCyW5lOx7wtbYmMbjRr5IROWrSWn3csYeKp6GngR4s9wr7QtZuqxiEQxo5rRGqmrlejRM91MexBsxOuYurhareYjWuj4MO4R2hFsrc9IGrcpPF8KYZAqLvExSCIDF1ACcg4X32+BSOSV2WFoaEJ/UPje7Imjd+vbVX6Js7wbFs5Nrb9XUQ8uXtKNcocfu54BM1ItZpoNpqVuNNqv3SH7/59Mvki/QPtv4O+P6SxuFL5LlMO2/m08U4yokuicABdpvyE75cnEdj1wkPFxi5JB8l1x+XDB7ooHuUe4NBeV/c1ok0WKW8kuINAQQpJ/8+noKHrQ297GP7/nDe/lRx1Fvo+4dReLQddyVrhDTwsrOFbgeeoC73R+svENAuxupMBQpZgmgSjW9yIzIyD1/waI0kpPvo5N6DELkfEBHzSOikFm4r0jM6S+b85Q/0hvXaEVHtKI/ckJd5igYtCjHjJCDgjJD413de2euFRUcnL3ZFXgtue/VipW8dJvF8Wt8LvKsjc+Wls971BxJLolRH1P1M3y7nDwvPa5noMBfjRW9wADYcMxToncf7V1Vdfej6Xlb/UGha6hr3kx64jrBeDzoStzlzcbY01YEOB0SOarO6DgLV4PQ+wUc4mNrX7hUnmmUym56GN6pc9Y9tYfLj9KtbX9z6Lx3KwyW2cjO1LhmAP6fqk+UB4gC4+GRYzfP4UuD6IvpS0flK7RdndA7U/Ti/jsCmV3PmMsbgYfIyu5alwATbyM1r5javs27lnsjJjEMhZT3DeGOoXMbLMUd0Ha06ZQIOTks+T70c+yMRLmJ1zcsBfFkMpN2FirNJ3NGL1SqY5cWtQCU3lR6IsQLzfuQbLR/RAUy5BzRFiJy3WARmm1OFeNRe3gETVjdJIALmgSRQlzhGRLocLHNZp1J9gJ+j5Olvwwfh0iuA3oCPqJCpnMkH3n4dcbW9vYgBSyQxxbAPS7mLtCMOB1JmcByYJLmRsK5KDJUgR3BQnhw3ZzdNMJa7JtPJPMyMfpvNApZHHs3bVyMquQ0qaE8ccBfC7y6MhbtvySIdm9r9IL+XbQfTTpttG/UauU+OurIuk/44YC3023LkX4laIrV1VgOPJFRERZPpj4Szcb2rE24jBP5Wi4YkobMFP/XsGfle+htbv7XG5ps42gDmY01AaYn2Jou1MMzBhzNeWCJKd3Se51g/yOXUyNq4uIjChlqU0rQsI6zz41vIEaeT6t8xSAtxvyBV3JVXv0cOTlZ2YVWBy014qMIx5Dup6dK43T+6+7CwOmWhoR8chMdS2pCD81egOAPi8IHHZ7NhC7ucniyzEYxFdJifHs9wjlBAwUDgECONBHgYEuy1ZTF7a3uoVdEV7ZAx7mHqCYASQHdYE4AHLmLV1f34qj7Quk/b9hMqDUHAjWyS9tIf1g90jXVv0oYwAAjLJJ1E8ZHYczUD8o0RK0zIVbeQfAbTbqhwNOGnavu3vGl/PFtGEmQPBM83vEUJyGqGqKdDvn+na+ixKWinBdwvYIGQPFAeT/vjq0OprhK45VT7U1/1FJuIicqi2+GHB4nIgK4FjAmG1TZL/ZTpuRfebMxEaE57suFnE6ctAGqcEgDMicAU+SN60BEg3a7CAina51p61McdcNACKD5OYIap4qqeW309sVkwu2HDY2d/vvTsz2lOf2vr17b+oqyVuZSW2yTpytwZ0OwhML8qIFxSlVLgyqcSYy4X48XzcKVCKhVugScXP1yLxfq5ioHAYyj4cszXPLLKBG6uYi27jrDPy9+crC7FijEcYTV5Pg+6FumqfmC9H8gj6qJVvvGYNKZAtLnLSdcoAHQDtqjQnOJReOP+HgiYHrNw6U8nZtQCpiyokYrqEJChcIlvcGFg26hKFCBSEmAW1JhZyIiyrhBRn97KRNzBj6ge94xopJ7akUwKQgqMNdJ9qQxpKqVwSLabWsb1770CakotzBnoFhggMGKTI9nk/g5vCTXQdi9UPtjMIZdiwJUxmDzzA1waIADiJKYNb/fJyRFQFw4GFIykzORAUF9kWGwDl2nIo8JFwREenbSjd2p2FaqObAQsVgT3CAqwl+RNz9V6oQgckK7VIj5RcLxAgVbUk54I9syb1g4EmKxU5R/J7BwgCzN5jwdXZEBlCDzO4EZU1paBGwVcJzk3nPqwKeIsEt2TwKPONRBw0GRsFxM5OBFNwSIdKtnXKpc8wbhOXG0JChFOQHp9opsstQde0DsU+unyI7yvWE2wgomGXoVnmr3K8vQDkbcw2f6PHCR3rE5kAfbMkUta6/PuCwEBG/qJZ1/DT+k/c3gKMPpFicYFG+eVMOKi/NpF9ypLh0pQ7vztovKyiwtwvoFga4IOAjjYSJ8ta8UqoFZ5a7E2zrl7lFxrdVyVCXYw/hoYPBojrBAJCfaBBHEWiwhj50kx+EWeIBS5ciPMPTUa6bEnlh1Rlv2FBinY2UgwlaDxqsCas56mRPqO/jb3TWfBd6+8eMAyJWI/i6zinLlknwe4mhsXwxBUCs0oI9ktfiy9le2Go0OfJyy8amVNK0b/mjdV4ZLJgoenVrRF+gO94Z3ODKaBtbQ3ixrBwgtOg6xHhqYeihyOClIR+C0ZJ/0pmxm0E9wMvVw2a2H7Css9+YFa5OVtaU/t20urkbTZLmtxmoUBFrLlyQD4QT33VJBwHPFAeEI64w/UAUiloKCuZeYZO5MXtR2eIls/u8Vpm/761s9v/aOtP7yIwOC12yo51vPWony34VaVcatCWs/VBqyn+IKLzSuYfGHK1nzOnelSWUWRA1qqPPTYlRhuTOs6Nt8pj59Ulg++H4zPk2RV7H6905oLjmnBegAWrJd3lbfId/PsBQAWO0ERmr62+z582PaZxwcyAVdapykFIwD4FXCIZoXlCRhzcBEFUYGrE/OYD0Yr9kFZiaizYC+Kh3uB9Pnhsj04qOVtXySwH8vAfxGTcJZZzlIlpThUgCVZIeCbp18JRdqqEY9pT9htwG+dWidS2jdIEwFo3Hiquxif7Xr3wiENrZe2OQUkhaddav0Quyy8tDRlbsfOcjw8zA1OpEFPwpHQi8CPcyGnYU3JwHFujC1hktGA5haY0168//LR9hXR0rIWJInywjCU3cxOrjPf4yoDOx6YYcsXnk+Zb+A2gP9h3gUNcMrFtDLtMGjGqq+8rtgOdocmypTsFYHXj4ZeWPP0QImu14330ZcHL9w7HbNE+4opgYkSjZpf689OWtIHkNDO9HiI2P346T+4MhedSHjc1V2YfdZrrdTIz7woc3aunevREJFhv8bGL9+qeMDPPfs68N1/sfXVrWdVFCG98MPkwh+WUuzccRUouEg+lI8KuwGDm7sojit2K2Vo449dfSdA9mElhJMq/FjWio4v1Q89F8Al50ldUiZ0566s9X1yX4ppzkeLdRmeez5EfHyJsL4/Wrmp2wFPHCJwjYkHE2IlNYDneew3GImIK02LdJ08snb3ZiAnXaMBLe1IcCvgtcF2wexhwVwFiTG05cFpMA7puKFF3PieQ9SQNPZpWfcAZxjOZYvl/QlwfTsDbxrQqKeE7AsbAxtl1HBAArggoQc4yUhReGALRyLzeuTlMUicnvBoqSe7ZrtlWCpRm1mjjSYODTz9fzkYLC6HcAMKkMWYaN5Q+3XDG66exA9cdJlQDX46SPdeuXokhAJYJijFv2i7epHG7xb+IqjHKvULBk85IFsmIxcNl6jnaaUcGaZGrP2pCDmPOSDCSMeudI+5yhIADaPSp65QT/I88VQPQI3kKXBtDJgCxQjFII9AkOsiDg692kv66FaWvJOHK6s7om2oFRLjPgY4oKXlFtU1aErs8EC9FoltiQfBtu+192Swb974S+RGtNcOottwETBtQiHncfPtIHtg/KVdfnQX05bQKWjm9uCWEK+qOH0zMisX4MBbbz/7c/Q2/vmtxtZpKe9VYtOJzhotAljME/6tkh4jqdKBd7pwuQJUVhSrkNh+7brfGneb78uFBCbmjbBm5itD8c1k5aXY61JfFcTKjIowYWB3asdPg1PzvhxJ/MSniee5HMms0tEPPOugl+Ca87LOPb8o7L90xd+U5+JoZEdDebpyNfrn13rTb4wvqjQGxy+1HJ28eTt1l6d2L1/b4dNwnRRb5A+3DwhZmXy7jBH91a1X6AP6pa0vl36uihGXoB1MwmB8uTCwqge/FO7/JndW5GlZP+PqZHjmsk3owuTYNZ4+V+K15xKp4PPj8wOuTgCkF7xIO4jeA4aCkHRFxmJ6vNu+O0T/cVe/KdJXUvI5aimJEnyc3bmTNrNHqW7eeeGjp8CvVXEFfq/jDECib3KDkCDAyUSkmiT/aMsTfnFXDHtkMFZh4uWiBsIPZwG9o6dAK8Wo3z6g326uEIcMWHtf28BVhiGqWe7y8aAIN7kJmH/qk45NaLOQ8W74HkMLzNoMbbuQglQo+o4fADPNTzjODie7PRAVTGcEA+Lu5VEE6NIV4wmZPY71ganPVaCZQupMABan+wBFbOYD9gIXDICfcRU4DKc0MNawEXhwLg1HwjSLmZdhr7HHfMKz6WPAS5Wc3URbpEbM1mtbf+N92c6qlBj0ZJ3svBQlXlXJzjUrWm2yna7SwyU7+ftTpmidMh2Mz/Frae3P7fSqPMImWWpEZrtyimguWSzjSPhGyVx9KlSr9t522H4BTIfehREQQS4C4Ytgt36N+fu+6hTSpUtr0vdaSvhWRCTcSQ3tvYNrCphBFsrcJV7V24V+OFgm/TsA3tUVrMMmHAgDGSJ2Vr/B9A16YrjV7kAd6wc8Rcl2avC/9lvxUE0xMHiAO4FL4zlgGALXoljrEGkWLDVtUp3zAY8IzGWACCBnRFzGGRQeu8CS4haH2dP//eQdDPCkoLosmwQfE2IEkMFEhtmbpGWaQPmwBLMPUmUR8DmAzmXuEARegzcL81I3v7R1hz6iXyjzO0AhLpXTlgixYs6ONzv6vFxNXLl65VWJqzFdjk+cA99E+0/KYrVNpIdeYrxssigrVlfL88re5/zyJggDaHngihPfy7NXEvmaLN58gw3utvaOZ0I5TQXBxwCMYD8NaE8xLLXCPvfFouAy9WL/E3R7KHsdFWvvOqibANeQYTK0rcL0ulp1O+Z2DiCr/V4GZjdwyAo5soJEq8bkSNYEqHY0Pv34C3ebJn2cme279yP0FWCbHA25G9MVpleWJDpIVNqgcdhg5tTS0OfYQ7cWmSRWTBsahwAok8A1e2C8QjrwckuZAJoK7EgBIyBtLzVEhb4tfLZLXHnidQH+OK4tjDzwhk8IMCSJU8qXC44MIjOKs/Z0dAAwYMmI7Xzfp0sd/IVnv0NO6a9ufWHrPy1tfVpWIIrSMGY5T9eoZ7WOo5dOquIRq00IbbXchN3XsO1S2P3kxnpXWu16OeruhIBetI4d8AsXU/WOkZOy6r7I796+Ofdx21WwCiW7neS2LKbzRw+mLPNDJrvg7g3CseHFk3uPMxpT6iEahv0lUMhIpF4grkuWAdaqnx3eOPNdi0gj4ioqTJ+3LQzhmD661+pmeScojPA86jw8UM5/Ah54KK/PCYfPoD2VY4tw2BWtKI9EnfwB7fojbyiT8fZhrX40Eas4aGQhzTN/DpBEZu0hQnss9RMVTPqZvhoc7aeqP2+ejPi+sr1pszUKWsR15oBMDq+OD3gmXzzcjpPH/BDIjDjqCD/LdIPVJSOA8QDQWe2HprAqygRcGOMk+Pp7zuEj03U+3eN+6fN5kJHivHftxrOvM0p/ZesXt/678wofvgbDi+EGv5ZzW+pixds2CdOyB4Sved860Eo2mgq4aa3z53zwIhoGHzYWYcgv1Viujzw/Ll1slo/Gm0wiL0WusvR8E26gf1gf965M+MQOk36jH/Z3ItdilPtycnW6//CoZz0SNw52u9f/0kvJNE18Lw0B9sruZ3NQcR676qCjUULDnBWxl5/esZ24K/p1TF58/c5PfPThZ872r4/ffpHgfNQ9O7n/w2+PHx0cvvRIJzXSayaUsQfJh4uXf+StD//brzx8c2//MIkJGh+tfujjb//Mex/98Z/90KRfw0+3BrM8mht12PWmExsP8saVNE2sF4caDDqhKfF908f1F2/sz1u0pTPgfsAK8kIMQpz7vNNCaPzo8dHOiw9v3ltt319q0s7yAAidljtq5E11knl1kurZD3/8xDa7atbyw/Edu9Oee6efeOEzXzpbbOPWduPk4NN/93Ovf/J0f9md1BgOgqg+ZUmHbGfBPD/rypYa1HHe7y4Ojj9w68br733x27793zo53ml/4IMPzj7z4qv/xks7xTuxf+eo9tqLrVaT8Ua93UmCVjefxEcqXJjRqNMHmXrp2f9F/2f6z4DL/ZnL6QD9L8Ong4tisappcOwEZHDeC8EdALPYpfjBZowreFnhs+U35YKf31Dm+C7KdsdnVfltWUd4HnHFl8MSlyMUz4VkL4gdukwuF5dk9DxCUTK59cNFVX+PJVZLNfyJ5lS2a8SCM3GlR1LEe7fMlxf+EafgPqgKFHia9IUCvDAHJlMj4r4eTbcB3qm5dq03YIoKoG3wJfaB6oMzKZiInHNn1G/COyl5k0ctdc134XhKiZp+N93B+iXBG4FrbHOxL6D8mO9TQGWsQQEJRkKFnPmY1NoNuLgEw2mmrr0ViRQAklDHKnpK5MhFYBFpEpyguus9JClmPtyFmrR7HAH9VDrh+55ZmubeKmsOPZ+7MJQOFoCIpcpqghTWnbVMUSHGgkeR19DdJg+ZULDZRe8JwIta6CutMfhmwEGjHTHS/nVLh0ZnDRnfjRq79k5MCl7/ZHTQHAP+t31wH8YVlLvD5AooA5Jwm55ItbY+18WIBvcy3dLhFdWNSUN6cy37XE6Ob4qhGtsE2WuxSHxlC8LHDIbfR5/NX/KJhrGfMd5Rfi5lTL0JcE6hWOsn7j+eqWaSCi1d5gOAAqLc2yJbH332p/RF+utbf2vrf0AJeMw0f65DaZ0wdCmDcRlhGLgeHCf0fB1icNjnsHw5c2hntX5U7TwHqEo9LsCxnpSRUsCgVS3lBca9yCFU0RFynhMow27rI94oOwI3AY7hhJcG1ZlWvon0loUZgL+OL5QqWZ3r6UbiM55X3YjOLvOyl3ZVRTKq1PmY3nPiqRNvW8Z73kJFk0MfBaQu/WN+dC2JhqoZPujReOdEJ7taxXxI6y6JQ7lyyXENBNRVX4CAIcxlWR4ATqzZTgjJ+8Lf9n+8q2f603fo7dgcGnM6Co/awhNUkZpVOgiMP/Bopj3E1Q3GTCQGjUShp78PF8UUiAwIImsUYzP3s06R9Pqau0ZbcOGAtw0hOmzN43tRPI7BCPGACzpIW8QD2uIbyXfDT433em3MXfsb4FyJPMoJoHEsOjK5efyCq0OEWQf3Q9HP2knNqLdi/0hnYx25+3N5dY0It5tOYRflp7EfC4bNOLgT2zeYZVSSe98LTIw0mZzlqWTfw3hL+816440HXRuJyILMA2539M6zrj9eU+L5ZtJVhRI5Xb2yYzspFzNBjPRDFQ2Bfnms3alPBPpXxGAcA69WEQW1Gw1jLoUrbBKGh36NhT+Z2FOrRkqOC0IpS4IkIWbPeDvf+MKTu3yQAVYKGR2TBiGg09+FvXbh6aYevcBfyeehi52UjVx4SL1Q50SPNN11XOAWYIyA/vOtf3Me6QCWnZZlPwNxKRHxXPMF+VbNF+clQBeNF+d1QS5Ih6+h+arK01aNFA6ibkgAAMZyc5nMc48BH5wH/g7w8IB8qx6N51s0XN/5ukVjHR7EZT7k2OmnOzMDti1R1qfGxwPmXxt1zZ4X3PDUhH/bTofFrySHTdfKkQIL5y3hH4mEJyfU172mi0ETKilS0oCsnHdyeM0jwZd0ZVwvh+vOCrFZqlEfT3T+sXwo066aNgkYaZGRQCXG1dsK15QVvOC72QRIqkJFUuKdyP12KLejXtYw+/Hri7Ysez9oTim4nsutH3EdB9xXQGPj8BofXT05S9s093yiUoEKrz4VcqyC20ETfYSlgL7NXTEpmpwyZMHHxExqp3NN6tArGEPXKyIAg7JU+gOW0OhVFqTXP2+mZnx1Fskdz1zXDe3viGbuMWpYUBtw2sSJq5SU1FXbu9YysPpAu4DREOv1dHfAmn4EFIuIjHEKt+wyReByh3akegXJVFnMQqlVx7f6Yb4Qddm6418xxS3vanjeWNKqY8s0d012wscmZCk2wsq8nTe7oWACAeJfxyWePPsz+hf0v976ZVTbSPL7SlvXVr8KMI838YaB61QYlADIWX8w+5WVX1voRflusar4cMmOKjSzqEqXXI/3vFhVTmDu3EC+CXCU8GadGD5vy74EdkjGFpeUap1mAbU7cBcNnM6tipDzLF8ni3lZZLneun6sz+DU7fj5apt1cJx+DaZXI1QjpAfWCNEMLH1X9ZrW37M7ZHWL1QWNWO0jYtBScR1gBGt8Uu94yc6IIhc/uCodHHBLK1T1J9gVSAWumZ4aly51zd4FH6bUREcpbwj/ZvFe9mLTrc4AeMOfe+CbTKOtDhA+8ViDy6SrMxZcof5YhLAdcBQ4eswBjDz9E99oDOD9Y7wjTFvlLdkQb80ALIRKuWo+LF1LACICKeQ6Krlr5gGldFIQNFhY54AF8mlX+vdZxnT/Q1MQa+DmIHq+C7o0vak8stGx0l0jYh63+l4nYbWQkgYGDl+uigCsDsyki9FJBNKteExDhhlYW4vit0LwIdHOkZ++nvORll2TvJV0bTp96bFOrPVafM9SP7QNKoD4g3hXCy7AtTpcBUNHneM0Ghig0AacoxoSNee2v+eJqCb9Pe73azP19qfnu1ftkffqbQramoMCwfXXsUvvR7bJaK59vStfrwWnQe9R8UFP3Q6i+940KtRU2iuenipQzLIGibpy0QHAPV6/fUt2FGhlBt7FqmtVne+fkN+m/wLBh1EJkcZVeVepDO517AJ5APczlzCZjKuVREoeSErtAOTtEs+gDZN1fW/1OEDLhavl3ACjKqt8UmqFq/iaV/GgtRSvO4k27KOq3HGnm2HLA9cdWZValBnpdTywKvxx5X8p6JJF1XXDZc5A3ou0jGjkVULbpZtcAMsliNxqOc6/lUVFw/E65VndWKlj5RGLUt9KCHV8uTypDIO4vchvCFOLZ3MrtnXyamY1+RxWIylyImYetqqvokZN6Y4XzwkKFAmlxgoQBuFuAQSQBvhQNTQzhieG8YyBEgWPUoBnqiVD1fvRdnBVfzdtiOAsCKxroNZYe3l3j0UeZUecuNVC/IT6U9aRqiaLKwgkj3nOjoPPKNFP195Li8muBbiBUYzqgOlCuAaKaBqPlDkJun+ny4V2FwI+hs9CFb6SqnHXspBGkwPjWkQwKLivJl3Zm/FcHzLV496xN2OGw81QLiWMwLB4tyabsjaIltbUPObT6ZGgEhAMejudM+chXHwbmBLwLeJYFWiAq56SqU7dYhKc6tfM9rae2k9N+bT+7dlu9Ll9GhIgva2/1vLaPiAzzVyVLXbV27is3EZl0Tduy4n0pqp51yanzHrK1mOhrAOCiLrycFwGDwFpseSvZJ9u6ISFBH4PPA9sDjgkVAOUKXNvwnHSC611mo/BMdZTCSgBlaSiPCdG/S4ZWVp4qQbvNdjJXWs3cs3aiDZutukATeTE7sxmKbhh33ErTy6lK+gu2I0Cy/CuDadl/PXRs0PycfobW09LblL6qE3ZUlluPRZZVfe2qa4vFz7YlMqVdNYtHJJX/XK8euXOcVRZUhBtd4y0XBnIpYJKPrGuWLrEo1lZ4zQW/PkqJafii029piud2hCgSkfhGhalgpfR4QN0To+AFW2a++YuHOhgmHODTpFcb9Om3u5dAANKBlb7NJ5HrAiaNn+Uq4lMpRtR4KCuEj/Eigjq8u+FWkW13cOgGXvDTuhJt8wIMGPQJJiMOGHNVrSUmewHHyzrpF103CoXMQY2XYCw05oSSU0EVynxuceBKgJHsGL+Af1tDQHmp3DhkbDVVZSzVgjSiFylOfg9HxB8Vdvpii/BO3BmwPVgA8adc+DGWuxwHfoHyfyzrm2qZ5v+adCVA1W87i/rFi4RzPCh6YWZEKC+EQ0fhKwVeKU/BdlxyaGEm5mIFpEcyDvdYSjHDGsns1SIsAmy4xMceXlP+o048LI+62AFGp0FxrlkpLBsJw2j/wvte5zXtZfV4W7kdCCPfB3F3DSdMAsQf2HhxhCfi7sBwFFSLgHCGA9YTFw83T8Jb/q8lkg1VcG+qR2nr6S8aayXNaK+kFmgeJ2KsfbH2hx5Epwf04zaLgNO4SKhrk7eFRTAFfd50Cjl/Mmzr9Nn9J+j2EUvvxWup0PXfX2pgLwM3JzjenoRdM7PU3nIrXC2IemgNsPSNh9XdKLkytdQXvbwVY4DHrxcpYcXFbNJx0N+OeHxHLNB35LZLDZkpop1lS+baGm5vsh8XSr1/09s6J/otr1t9USITlhTocQ5MUsOop949Dgat6xoJPrl63UdCDAvGVh4a8C6xBibVDdZ0pjVVM2rd/Xoxs6LSZ+0Q9e9gmD8wRA6OG2P3WpGVGYAP3pMn+qTOolVAGDfbcUly8Wwu0vXe2aCh6Nxz9tX4XVPxrn4tp2WiJ8ks55KGd9VoiGTGWCkdAGEaVQAzpKgDFgKR4lRn+huhj1gP0tCT2Wn0DwnD/TQLNR4wLKIFx9PW0E4VjtNSmKiYsD5sSGgupKQfyAdH8AKuVWzBsAHBhnopXQ1o8yVKuzfa2Wdva6KbteOVesGO4v2eun2rNFVnWIM3Nm1zpiQZjgMtOnWQ9Jhrc/WvQNv0Mqlhe3M1fC5RwkMQ5sRVnA25d6s5+Mu1jP1KbabtjgTxFehiCkQIvAoG0bku7UwwGXzROZ1x4deUmjw6Hu9HdO9PY2BD6liJHrKn8hGEaCSEI0IaRGtOTAirUo+VMbBJDcVIzI9NezwRsWIeO5048Gzr9G/R/8AhS4KS3aRs8GulL6ys3iTTh2Mq5cSk63LANewqdILYZ0SAYBxi8SVDRbjqvIdpPY8mHWyAWYni00UtopcFVUtTimv67WiLoWeqpOQ0u24amuw6J1yLZ3xJZu/qJwE+K6yc2jVddmiclELOIJzT+tWsbJLw7WQcVfXf+k8HUJ/iQS2Rms/fCcOynynS9C5QIyfU7bL5bhj+YgHoz09SF/1RUk5qVsSBp5CWhXH+4XtU71n9NWs2ypRN5EhKquOwUp6rngawArwXpdIAtjloQkjYGg594d7ZjHGbi0ay/h2zbF8xBSYN1zmWassbEmRl6Nwt730mGXmau8gieCADr2AfzBugScP7HZeT0Q6PCIR/2zabdDybKApZTWgQyOuQ8CFgDlx1hJuoVUDMw/KYA3p9A69evzhWJzqxXakJOitgPug7hncz57/wVAf2NznhzzeHnDMBGAzL+AuDkxRCKDMSPXE8B5r3HqSiMUMHBF7PB62Xmvr60oecnvjHZ8Dm+E0Bm0Gm+1Sda4njvqdG/7YxJnZM3Iowwdx/DiWrUwRD9iTJ8qImLuS0TTWXQ72JfyYVV1W/5ivZ1xlYRSrsIaAZxjjnZgRvR5xm/Dso3VvJsIPhKMb/F3ObcTjuyYDeKwn2n8AiBZ7HolKX3H47M/QL9Pf3PpsmZUYn9cClOtZVgZ/UurGel3LQ7RYC3q5+mBlqJdrqnGcVQLHs845iqrqZjfvOgT9bdFuB6ctPeLyAGChs48IV0R3vbKlWxeOlYsaudIbt7Yl5+Xilm8mqQsT8jK3TlwdFXxiREVMukMoQgYtG4JEuS48OGzA9VFwFtZ+YaZPY2mPTFGsV7bEYSQ/KWjAvGbc4eXKlkrwamlLgdrjv75zLecfzs1uXoSnYfxGVtfhUbKYqYkCwjj1/FRWOf3lswP8IfpPtv7WevzKXKFzdMMSz00uZ2hIuUAoDBiMX7n4gnuzWHdkXu7PPDkgZXnO2FG3ysWVpevnuuveX2w4f5NacMFptcEtj4ffsMv9uhkGrvKaMk5Wjx7eFDakHBAEeCrbE7SHyiCl63YGnOX6BcCGc8FcIFgYAcjYGX4Hi6hruFNSxzkjCaASNVSvfEdQqgkFWAJ6YxXMB3Am362FhrUUgI24i0xRt4gh50LodEdOC+aFZA/0EAAnxbtHR9ixk6AndGb5DvMOIhZrwFvDMJbzgLe5OovETa6G3s4e0A7RFuEja/zup3t8InMlOuBHMfNwO6RKKI9LyoYeTZgaC3Ok9UzDj6JYD1T6JJIHLHs5NcfGHCuaWXDmC5S8FbFGXchy7Ztn3yC/RX9967933Lwq2R6W2Ok89L/GKOUKsFX3G6uWAwVQA/uWNRwlJXd4aVFFtUpuvvERi3V1cV4tCVpUNHvtWtZ93ZsqcpdhnpfBLS6eXyLtYg3aSzm8Sw/ym9gklHuhKoi3aI2NBU9OuzAq17VZaL3kxtcWtE8j7koJSzUEpqeJMt1kn7JOWLgyCjDAxtli0DPfJfqVa3JgwgOzi1FL4BqI0o4ZPKAq4xnosJbgHKK8GRUquFbYNIP5ayVyTLn1EjIb3skVU4ttlltKDxBectKi4lDibepW8GvtanLkqTMldqRcKrEvAEAgr++qOOBawEgYG06u+HzaCdPbYXI7CMEO+izV1muw3rfzsT+IOmmjMDxWUlQG3CgyIuFj/+AxehfJK4OAASf/+W3vXtpProb2DWDPE8FaRvvglkD/h9uLPTPE0WeidLKrJUqSBtc3NC+GcsAa17IzC5AMWBA1oi4m4BQio21QXAM0RdUsYYEXHvnZ9Miyl/LkcRGdBtFRaA5jf+ZhVuLzZ+SH2H+w9btOxiqc7IgjHwj3MigXhhy7tj6HLqqKLlcONL54OMtcLjF8hko2uDhZbL5blMJXpgpKrHHedLNBG+s6vk33HqpsC9CxUgjdYlFtNFhH+UsckRfPp8WKrMoi55sKMbDqnHw/+DXGbLHInqRqILv21LKW9K/LnvjQvZi3PCuBYM5cRAKDiMB7AxTJY4yV5NHVTxnY6ETNLdxku2CHqeq0ItWt+yo3mai/Gb18lSQBBbopPAlEdW65q03JWEpQylDmUkjCrZks3GHB07t1yMCgeRhcnnWLaZTrwlFeAKMKP2hty6/j8ChikZeB5QAV+Lv3ct6vsXJB03I5U4cnXUoM1ZVlrsRcyrHwD43e8fRUkAJ4aKb0OO/6ZElfnC5T/yCQUymzOje37fVQCURSbp09davg1XhGg9veVXfTDOywVqB8vOEBeNf2SI3HahGR/UD7bm0QOIP0GmGf45PrpH6owrpKnqS9PdmX/g1fjS0HDMYVdevnUmJMH0cvRrTQwmN+Ypqlf7qztcU+Tb+KPrG1lRSr62hVLim8KiuXSqhZ/a1XMLyFzhtYzruJK5Far+24cIulwtxfx7krRst4eZwyQO4kJnUhQFcuepy5w4tqYxngS8sO+CKrsk1u5dMq4gjG1aV6l1U9L5xpuYnvl7hiOV7D6JtocbJcVJ005GLVS+EqKJYXkfx1MJ8X6fkFVEGcMryYVq2P7qVcFG4sXCoa0P+yiqqW2TRA1jeR0yl3BWUZXYXhy+twTZCryU2ndkPYWgYr/zaO8pG9qkUNLIILWSAmfJgOrn/o/rDoN9rSNyxs0QSBnWr0FUsjVcs81xbeDKVy60AKv/H5pss8TlPuAYECmSsrq5grdECuGABcuGugYm49DpDLbfe7LNGhyu57N2MQACVK+O5QE/wQpB9Qr3bBb+LUDT4XnVGQmsI2mD0JihYDQ2Ux9RUvcMoYoM+MqH7L9clmHe3q3x3UAtV07AzErJVHxK/LiTJ3skzGzRElkjFe5ifK4KDTLVpWWEr4kXBxeMMalEtw9Dr3avQfY7dwLMGuYn0y5XXeBhTizZT+y48P+mnQ1rrupTVax7oIu2OPt1JZG8aRTGtiz0pXH+G7sJ+roWAqaWwXy65vicJ5txU1u3pf7m9nGgZGBVbBb5tK8Vc52wdOqe4nvndtB7gzUyW3gDGa3jOZtwu30hHSAJiZyGYO4DzSrpDE6zQnNjIkxpZzQHzqIIu8droj0jeyfosVLGZeA/BMgSPOcpa0qd7tGmLzML6t0sKGh81iuzNoqEbAO80QgG2Et0OvcAt6urNzHuLUHzSiBU646zPQWo48kye6bmy7H+MAFx7v+nzvzTem47Y5xq/PsM00zIPnvGCp25Nnf0J/hf6Oy7yNnCKVK5i7wApI7cnl0OL7Fu4jVZ4L9FKk87VhB71Mz7svnVq67Nuy8ipLl42bVB8dLThZrLNmVZw/r1Yofx8YYZeqMlbnpHVT6HFOLsrFyVbr63JLUMxL5wKMl2VphYnyyhOV1ZYVr3WGJr/ELPLCBTnpP+wsREeLnrXSxuIIcItfF7WHsUuoDTFvERFHnmrQCfUXGfV1yKUsmQdgG+KqikFejwlPWp8M7Dt1GTvuRavIpku3wfcJoCJKAzP4sW3WgFkLqWs5lsgtQMQLGe37tSe2FdaN7Pk8oXq2HXNHrV1JBbz4rIxos0pJ4ZVxE4MbwICTEfbTsE7lMkhfNMhyF5px8IUwFZU0qGosL5eScECtXKyUBOB+GBo5mapWYQU8N7x5a4blTGTvxgBS7DZRbSJriZY7bI+aR5bEFih5PRly+0Y9zdJbafFWcgf3357ligCbd53wOAKnZoqD+KXwrNX47sa334EL+MjRh2NgsDcetpscbIunI6JpuWI6+ER5VclxXYq+DG74tU+Hw7SpgeDxJvWORq4qr3gr430JJIu+OzIDo7KG4ICumpJmuqDp9sRzq68roSnYw4r5OU7IJQsfJkp5Ut2xtr4NqDJ4cfcofilODsfAyvxjP34QdqXfcJAgYmGVl7737E/ZO/S3tn566/+o8tLpxmuc1zKsN4AhLwvoL637fbnSYjFenXyrRayeW+Vy839wuLx0ykV3ExeTMqF9eWknp0AC/E/Z3bf2ZsPBpZWgNhGci9WcqjdnaL46XtcSr84L/9jb4F3KGD7hqPFym9ZmozDYjf2hLZhuyte+8CoCBJTtshvXYt2XfCRjcIXAf3BAkrDMMPNyqVeMXWAay6FblTKn4Uybne34rrGL8Xu23vJOvBVr3TjOwwPx6ul2CvgfKAEQOQx/z5zzU6lLWGPpy5EZb6tuK2agGepK39KQ+Lk6sGFdR0DjAjBou25NCGCcIzhVW2a1w0JkYpom+a4RDZ6PX+8Ph0ZaJjXQFI4/EF9ntObFPucJeeflNt9u1AntMdyBC4ALB9QBR0u0i4KZWImebjZlL2lbkdPBa7zJxbwb+kvptbTXgiug4SlvhyKWo7qUvQJMuiwiA5ZAYR+JosbINp2/dnTEZpEsZDgyB0buJFxEuSgO7/jMElOf6sPkesbaFmXE1R0Tt1wFycdEnEjeJensQ/v54zy4Gxx9yO7pU69WO9SwV8xYWWAfda7soGuJbgnTPGT5h0F2bz/7NPka/W+2fm7r91wEP3//Wt+DavVrse7vKS3iheA4vFZipnIh7jI9VCaLSiNchh/WZRVuNeyLFT5XFVtwcfRVvo5SXmaULuyZATsQi/L/O3GpRqhc8KHkEVVWrEoPb8zzptnw+KIqjvwZYZwLHKai8M3DvPVyOLjKb3ZvFgEHduJABYAGeNJ54XXF3lFsPI3cKh8Kux4LB+idZQSjV/pSXJlT1+JhUopzgC3gwKeSjU0cxK/GzQdXB7eadt8Ldv1w32tc9/PMlXPSP05JAwWNmq5zOvXqU0abYjdSISJl7AkYDXGlay41ZaMOr92WI/DTuk5qKtSOr87IoZn79pq8Vog9Ja/7KaiW9F1MpNsO+I46+i45bds44GTImtuxVc2R99o0aow/OEY7ZuqlQ++tzLexZrfkvvGmGicg4Cx5KdJ59loqPYcSuYqIcGZZOafhyhJcfCsmtKBkxu0HTXqXeIrpnn/3xufCbSvzPUlcBoC7MnwKxNVEw4VX3zlK6nPVFvwmtjM7vO+HjGEpXcWFjHDIrVUg5e+U9vPx0wfs5+g/3fo/0UeBQaQButz7BfYS3pQ9ZKXwrDaycnLGXE+7A+8rZ1cnrmzZiSWduAXK3C/c1gtUIjdx8cUEzCOAC5CPaiGycZXtQZPK5uarSy1JLiZ2XPr8efmoTi7ydB0Ku9zLT8RzNczYxcV4GYIbT1aXi5jLWxFglSeDA+fO3XWDbd4sqBpUZf3VemzPt3nD1TgFcbzo7LmlkMsFU9jPbQvcJnAA3dZ20loqMfD8haRHHshR7f9j702AJE3T8rD6v/v47zPvszKz7vvoa7q6q7tneqZn59yLnZ3d2cMLCwu77C7YGOQFYbRBABIGhQwGJLBkYweHwqDAROCAMBivMEYSEmEs2xgIWyYIy/IGxjLi6PH7fn9mVXXv7CIsQsKa2umdqerKyj8z/++9n+d56WSb0a0Hz5EBJU9WfBh10lJ5hminiwbloTSNK9ebt7mOSLCllx/+wf5uX2u9raKZ5U/xVe6PGetxgjgEw7A7rxTLLAqQaA+nPYzGHAI+5AptQ1qeThnfIzIgey1/sGb0lrVr7VksOvwrjrZX/a2Qbyfpqw25Jr0hpjcREoAgNMeeZ1E5nBXBDLd30JKatKIihdJaQh3KH/49p23Zwba49UhMdcvnzYmyhyVJpUn0sOj6LGNNHm2apCPSVQ7BnUvfZ91QJCj6pYa6oH5GecdX15jKlNpUtwe8w0U7l/u34GNkE2GkIW1L1o8+xMKJD/kz69GwHTaZVyA4HMlXjGgvvDa7uzUZ+JHyNpFrK1WoPEstM1JzXgby2vZTiCNHHbHuisDGvPI1g/Qw8n2+wuxIo02owIS+pG1qt6aZ6LJgu1HQblhIDUXSSKiIBweBalnapOk69WJvS/uhz2WsaKjAxUOk6pE2Xcne1o5vpXQzZl2hB77ZM/1GesXw4xBCX7JSHCCsQoWMx10mppI3Mp0sBzvkQ0ot67ff5FwR3RBibNSuRgAX3eVehNohcIMNJpclIStUXOfcDwIsme6dFs/kZb6pT5+a9izUe2yVpsuUZBRhSg66zSUPb5kGV4cpH3J1mpXvRttfff0hW2G/tPTbXmcxFRi7gdjonBS+GNM6ghPY0Ahtruvlorw4xprD7vI53AHzLCyka6wSGv3o0KkRni1smGIV7nYm1fhpsEUyO5gd7h3VVPO9BcbPLXVwEtT1Uq16+HyWLF3I8cQZLpycKb+cG693npG5HhxqLfS8IiSLdlht0XSuic3GLO+IoxdVk4Wb06iFMpNlOBSkSf1umTkIQcMzKN8kFE6JITD5OKoQtf5zNyNBNN0OZ+3gncaGHPeD1IgkF9GIAz0YUguPRgLiG21aVvq+BxU56z3AVQK3I3WgRArFzFjtWRGkAnJgeMuJDQW/E9MxDdJWVN1v3LwCBaxikdJINYvphsYNYipgwUDkggUqhpNDkyGz20aShx8jGaGtuKLDLLYzYxtt5JDhS8G1LpBe9boTfX2VhUozq+HFmomFQ+Rj+0mFB0FL7oRr237PDpc7KyyNFG8ZGXlSsSG7pzZ7oe6FZmii7VBvap5F8N6MzZQmbiCmDB1LNf4GnkPs5I3XmmnCEvC4AWm8lPgbYXgz5iW7PUxeqURH2xzDIVRGLCapxhSgXo3jtkLhq8U2IqNFRKyqWrO7H/noeNRlmDdgo0KWfile7Jm2r3ET1TV/w8oizE3VMIFPuKK0oH87gLc/Ka0XKAQSUqriYkWHh+32QZ6epkmMbXM6ZRbK92RDr8ueq8mfeP2f0a9mv7L0M+e7Ch5J38biDPZzEdjtosbFxURzIuHx0VxT6UwJtv528QTk4KbrlZ1vdkEVRwhH+3uP7x06i3IXNw9dLC8o/QSRePiUx9dEeks0hTlK96sbZStTO1at2igP+rJN2a5EpVVdTWnb6pESlQ2i94z1cmgPVVfcvRqXNAkbbBXO5zCjXZm384IHQjPRl4aSbdvJsFvsyXin21HDsNlSE9rgw7hVmFDdTbsnwczfiGho05M8uhKBdw/VTJjemuVtlvZys05kdW8rebG6dnPyUdOEmkB732s2zLRJMxltRdub4M/5hEcMVdytoAHXlAyhAqE9JAwnpvK9KPU832P6ZU3angeZp8ff1r3uV2HFdgZyHWKML5uxSbmGmBEGJCZ0N15ZkVEWVLpF7u53Q9oj2Dxzg2APcSFpi09FOoIiiHWhCiDE+qGKbRRanHQK1qg2J/7mLLyWH0wa79abaorEfW+p8/ofQeT+O0u/4DTfF60NcU7ProdOCxflRPvOB6vFhVkr+l1s5UDF6zTZQuKc6NzlzsX75j63nkLW3JqDE28+qALHPEWxDjHnqNa6BfN2D+rIwcl0YkX7RzVaE11z3dfNS/rQeQzJ0PchEJf2sKavDO/EQSN/tcFQsRlH6wihUZDtK4YAdhmgCKznwWMPKCWI+zces1yL7PnZBHt4TgKKua04CKaUtbG7XS4OpezWrmHiLk0a39rLi2m+zIOR9hNNKQ/Aw8RXowG/v1p9rCnezWVO41M/uZuZqYmeOmjqCOlX3wiH2fpTA5VD0bQ0IH6oV/W6L65rU48CmPY37cjq97FwNX0Qh5sbG/eW9ThoPRCQm6yLYGM5FHmCME0msF8pnTohakiK8ArqUqs7sppsp3IEyUFA2p2jUO/4cCCfbE66IaumyY1IdZUeN6AKAseop50bqhERBW6mN3nNbyA2QqPaEfZnMX9xNTQlnOQaknjnh/Ze/yN+i/360u/XMyYnM+QOj4MTnnFLIKyvueVoC99QixLhXrP6uCzkYueDSyclORXYBsSIfAyZF+Li80W497C37ohURV6e8a4uLEI7HxudkRSnC+3auiSdV6dzNiuthXH3Haqx7Ho1yXpOfHUGMO8FFm74jZrXx7qY3qrg4/XvWb/ASNDKr2f2dnxjOz7eyGnBb4ON6jXJbMCGlY4iFZMtiI/UDUBdHKEIhzEOTsTiSGZQEsrgmz42JolA0J2TCHB1p8J1YphlK8IhARyV4Cy8QagyFr4Us0QkTHZMsmntRLR8HLLDgYgY/Bp1fUNsVqBYTZMWReRxuXprWfvpYTeI3etADgBz2QFBNBlH8QzsGgbN/jN9P0XADhGC5v6gbaS/oliuOg5CIYwnfKj8wPm1NAtyv8teTFaHfM2P3lIER5HcC2djXenZ988EZO8i7BvIUQxrB15IUQFBh6MgVaexvwLFaBYehcVzmd2PqwdJtKviRk+35PLWBnhI1ELAep24PUGkAHtnkD3n07Qfm45M35bLro1W/e66PQihfHp+T5fmiVcho4miBs99hJ7m/nM3A9PoqOY7J3HYWVHZM/Fsv3P6dKUGUm+otebQlpTjfpM/fP3/Yv8D+8zSr82VCRcY8rNNJ+QxuULx+N6aOoU9PHicV3VR62jP0Uog2dxzDBJ6gR/b9xbfzg/0uezbI+vI5upvCxkAd66PkU5Y62EeXVyWQtgva8uzMReb8ZV0FdM+XUIiVATYioPUXPSor0SnW3We8jnKIyulNckYpBMMbgZJNzwvo2aMvAsthEcn1AuIODgULIVSzTM0f5CqLXtYmchwSXhmQwYVixjzgrMGi6jkRigfSsdiAs5bJ46HEUB5RNMM/h7hI1q4dgREzLhMqBExsZ2pjqVXfiVBSkiQ8OCKFcOcBxOZ5O0GTSz93QQyUNdG77+8Izvh9pq56m9OEt3VyVuK5tvMcho8t6kD1jabluexUtt8Fuf3S785fk224+JGFjTU7ESvaJ7YSDaeLyV8z3ijqRHLjrkp5BF+gwVbnZXUn4bL982yMdvhpij8SKgVnXXurcG5JBp1vvYLpX2key0HG5CgKtmFk76jxbK90upvSoS842I+qKQLnPY64BhxDX5dPBfMNHJvONRI7SUi/w/2y0vc+1bcuDQeHed8Lq+NXCcXOnNxRoFykfhRvPfFlUr4ZyzO9/pd1AVB4vcWn+s5P/KL9CJY9kJO6IoZF/L3HQ8DIb3F4/v9Hvt60bi4oFxYj2fYbEsuhj1uMIMh/4z650Rd87oB2FsI2F0U9jqTOIA8daEFWq+dWcjXXbC90fRw5jqQzgT3Lj4Ffw9yNr7di/TKsvQTuj2rOnAGV/D++xm7lzEbswGlcVHpzZCMfVb4cKc11Du9ANwglFrWSpPkjJgwinUf5WSZibYsBVfbD7kJwfOMsd/CcEmryHWTQZykvhgwlKOTMoISAJ4S6RyMFKLFZWYTzuDqysAZGTUkM2r5Y8vycBQpizgaeP4KasGYBROoxKiMVSYlnXkk8XRDRxanjRAvIJB0sBZX4K8VFPXgfxPZJLjC1YHy7fGIgUdffydk5P5O6LdaZYqvjUmW2SpUk9ILo5aVkPj4CHqgNgxoi5IuSugFKgDjYrSlfARLClp64ME8XD/i0UxUUMV4sefz1Noki2ljS1pi1kr4HN9R0VFQinBZshxH2y+wX4Sk+tdlRuEZIQ7dnL2khvHLDduV8XjV/sI9/PxetcZCNOyy91TqRqBXjdqSwZ0EPqp13wxbNh5taz5Lae/LSNjVy6Zx8Bc2ghUlvqRl17tOewfCMgs8su3fCKepaVAx1Ts9G0MWbRLm7wfRXnVdNTS/bqcquBN3iqi9rHIEMKnApALnYJyaXPe8FVWVrdUiHcjGBxqipZPNpGXX7F4StMzIQhVog+capi99RT4omrk0O9Z06cSPRtVKsAWuF14LrhjkMi11RZUD2yOmJGBdE0s+CDOIzyYKG5Ac6CxPKsUtHILWqjw1dhzMCtnU4aZ/LTeW8wo+R1+zaDuODgJZCKiiZ9vJzaRD5cEwlKtGXzWKJNQqlsFpdVMVGV7XfBg0RIq4oRJi30P2X3k/WvPGxiOx7jmE8uiRbbXz/555hxHmVYdbVIxCEpE58KfIL+7YPBP5XghDuB6+HC/8GU6XXQitn3s0xzFj9+Xiystz7fGz6Iqv4vAIfu3wYJs8UvTC9+65HGAO2Wn4/2q/Nvo5HqXvlY+yONnx/gKb4nbLHD0Sbg+O3IqTbSd2hins8d4J9ocdTGNvHr7nblDW5DXHtl5QIOYbPeeuES9a5D2Cv5L3SVmc+6O8LOon2mO/zyLDwJV8pdk0+812KjYlURBH+QiCnpZN3iCKK6F9qELTmefEEhz+ANmOiFnXYMbxkGCtIIjlAiEKKEIkmnCMjUTx+u5EpZ5sfBXjyOGn4bGlmZ8EzIyN8JN22YL6WzT7zK4HV8KZwic3FcRnMuKmGUoOhuVTPuY0MqnMUEQ3V7VItafG3NKcsWVMfDWhO17hJ7iZURMWsI+JHf/Zfig2Ubgi9viIcpFGIuMITZFcQxJhCQ+KvGncbmp8S1aYlEmBo0gf53aQiUDsFaEgGlKI3LRXGSTFXvvLce0p5LD+FZ8NKmEhaIZhOhgIE7I0arB47zBegazUFjqmVcB4L2QjL8gi1AH1oXDyMqjFCOTuAvPdMVMo3Tymboe13LjWNQmOhNr+nQJ+xONsAzyD5n2xQQOOzEwWRtO2W+/jwI9YP6G0VwFmygqTzLivScxoxkViKk6hqs5KuFXWsV8RgwJRRaCOKk6LEC+GSg9bRkGcINZG3O3Ejnfb3Cg+rGSH0Z1wMCjCcGgCFmi7FopIlWaZ8MTYWAS4PBR3qyfrvMVyP9yOcKilRYyQNcXhU6Uebdq7uYGnFekGVM9pIYdQJ8P5QjkTyBhN3vZ5kKQIFGHEGh5mhQohSeQ0YzLrCVrI0EcNLxoKDb8puOdTH6WR5++Cc7ujcH87HLYA/RDLNoaZ6bZMl/VKU6w17H14TeUE6oYgM21GMh9OMK78xJ1WcIzzGYdTb4OtyM3llMhpvU9q8Pq38yXI3X/10dz9MVTrfHzo4Fq1QcLDwLkdHU7nIEfn6R7hb/+xGfzZIJPOkSmQtx8sch3qiObwyNItSlok7NOjw+OylgB5w5z995TPsxEL1vzrET3eZ+SA8p4Q3Vr6zRE1N+PEP4QPfowbjlDtQjjGFo3A+SdUXIEbsz3d6ELOzj12nUJM17vHDBW6Iat5LGdXT0jSIHxdJO0oD6g1qangzEoVU+3BS2GUBqWJ9BEBZwGnGRJ3ZmRMTHtFw8eaxys7FnMoEUQ8vGrFIAejMVXcLlni09+N8kWeLp57qTIvqej5qvGyz0ImovLFQLcK0zl4Fu5JvBp6AYuPg4FuysanKpVYvh5Hal2thcWTRVSenr7viKcmktXzlcvVWbNhHs3Vi9c6dhYWN4PxgI2mpogbtslICR+QpAE5zKQOZW+gxxPvg+FejRBo7kNyHpA6OecFfpyPpufps+mqrNNzOGt3Xv9/2Cn7jaX/s96V4oS3xojjHk1HF5QIavryfHHZurdf1cJtx/P2x8UlphezY4r7L7w6NxejBR4cro4LuHFw6fhE8xiJeXOxN5ZzRZmjOZsUu73I1b45p81dgORe/G/IenVj2Jur3ZN5/HPzzzqOl+yqUnE+CUhHd4q9sLy124Bb6d8JwYSKG2F+K/eHpq37WmRNyvOBAauHu52Du6PMNli33Iv8vo22wmA5qK5/zYrqJZgrQi0kbMDzyW4Ub4xT5pPrr0xvlCKJjE0Zh0QLhZ9texKoJlt7Rno2kHfvdj3uBbciWUj/Sb9x1x8Ge4nd6wUQ3EKiN0+zYAQ5ERuGwSac76Cr9LGmoTKU+FYVIp+Ve7a8U0U77VnWXR6VIobLabdLneb7feXYXXCYfB8OBippCpRqrJmdSMqjGqMol5CVRWI0fKJKrsbl0yV8CtNXfvLUH3ZT2UxSS1DRAPuJ2L4drcQfyXhl/aQvRVNVL7f7yuIeNw+Se5QcpSESQJHEp1HYzjMssN1yxa7eutctTvIv6ojbWX5oT5LiVhSetOUg72WZVjjBcVNYOKHBzknGC98THFJS1RTlW51ffP23XyfkB/jPLX0nfDOaF4mOgO8mzYVIF0h/3KVanTPl3cly7tHpBiCetd4bhWoWTlXp4KJkQE0prkUD6OEcAfJ5RQPQ44FHlOSunCjZp+UrH8Bl4NR6huLA0RFzEXDGhTF8yD5T5Td2CLvX/8EbsqJmZiB5po6RXxnTN+keDTQL9ZyQ7za2ICE/8hzTp+bj84qzUthnkY+vejJRndtvb53084R/QymgUIFIXKXfDHV9Ippr9uGvJKMfzzUkx0+l0cPfiNVV7q/ujktIyo2usjD2AjgwCj2CROo7XE7lukBorGO+j6Z2LZA/+zdKPW18sFhPvI848nuPd769Y3vYCcA7Td2iKazE8D0PMlXHsuuvfxM95c8sfRrREWfp43qxv7sejHZHiMbEtPixhcmLPuvhDW+xiRKqXDRr4TbuPCrDdpHNcYqVRqqzrk6783khqf/nFj5QtZC9r3+gj6uX6D5V04aCYm/1imVGmLboCoV7ZXS4mtjNDgl8v5NPTLLjD/PbORzvhgdZxp1bbKRlJnlP8USmz+Kyd5JvepGvI1+4rAZey7ifX3/L6pPPLMc3885BtJvmV4PsfmvlW7a6T51M42GrbbSo91kRb3Pf382S7sj/zA+bd3azkzx8th0dp7v/bh6sQnXqbECQ7+efme+cntX4cDE7QD0MxMnhsa5bwUdzZiVSIBwp/hi/BYecHjr+5eGWa2iLeofaqIbKgQOd62DUWz9RsHzPkWpQxhM1vArkSCZIk0TTSrGPXTeWcfPd99Pd9FA22im40IjaFckq1f6FzgtC3FgP2z8LSRiq5XDUO6FO8Imhd6S2zqmY/OArxVioiYQIN+5Omm8/7SjX4p/o8lktCwYH3xfeFE6r51RSPRSdhvJf41BDGj5S0d8tFMetiAIPAha70qNFlkfI4C2z2fY41ltR4i2beLzhZxnNfxY8+C2+2lFpW1bvLvMyUCIQvPDCLIYwyeCJ6sEu4tWVlwZDPfsLHZGGnCZcRAl/+B12O/myop+2Hv5Q7q/4O039sjaMFnj+f8RL2e+yX0DeG6LQRnK+ZX18sZ86/5o5ZL04j2rUOTSwijMcDalpg9LRX2ptRFcZbnkXdanxVtZLrs53XZKLXSz2WYYyzMwUz6AMs78X+Im0RN0QVFO6zpNOlEO6i+3wRZMTSixOQ0icjHdIIJhgKVDEzIAptKc6FvnKA7gNIvQ1FCq08iFXahcqW0/owQ7zDnBrAB+hXKD20i/++MBn4pizdGuy0Yeqag1SOiL2j7zXOhgDiJtOhyGkoO9to3D1iVkestHMlq1owLwK8x8oPo4jA65gpMbL8r3BrpPB8IbrOkjr1qRGkR2GW2cQL1BrFoi1vY3O6Ui++NbKvCiz5/Lig1AuxCnZy++c9lLXT719+tqVSdzcnjdQ690Yaw9/nw5e/ztLy0tPL30UbO/A9Q4p3AbcTVh/sPs1BxkFaeHP5F/wIaiKDo/xFJgYY7GJxMYzXhYSqGpanJhCZ1C9Ej8EP+XJz/eYHG3Dj5hou+fhFx5jCWteeIwHCWznuxobPtTXUECdrmdrPhS6ODlDeA7YXXvl//tPO3D8vR7PyLPiR5fa8E2vPtiuAyNrIkrP8073vv5wTLxuwETiWSiEjQ7k0fopVQX/7Mtfq8WkeHWtcTgkFU8FFmZlY3A7yLs1lvlSO/RSO/RSO/RSO/RSO/RSO/RSO/RSO/RSO/RSO/RSO/TNrR2a/RnXDp23LstaD3SuIOqdKYjW7RVUBPUeUQStx7HVuXrVv1pZ0In805AFBZfqdhM3qlF4p0BpUJJ7JIVib4o3GzVz/OWRGGzwhlkXeqC2qw1ct+PwiOCHKf//meCn69BWG+EVv3Abzpzsp4V3QZqQH8qGWdaNI96KM4uCnoXLv/CKrHW30vDJP1WEm5E+En+sqifi7b+Nfgf7zNKv1Bt5LqY8WCqMnNrJmTsuqwL72vtnThdh8kS4h7g24Hzzoauwx9hNd3/nzqKbSbqJy7zZiztgHxtL1gZWQ1oPUJdijmZdAGdn0xPX861XvC6g0/sLFv18zOiw+7mg38Z5mPYzOZThUBzlcfb+OySVEeQCFiHPOO7A/mKyeRIPWUPu5d0GG0Ul1gCQGeNog9Iw7i/bdh6tXQvDU7/JqOOkMKfPBl9s5oFKJwSSzdGjI0oh58BTRBeTWhwIM+0I8o1IltEHqii3W/ZeEE61eRUCDlGryoC3GkqVxdYs2zIwmrA/N/pA2qOyo7s6Ldi6QCkK5LSLZH3aUF21ckc0MjHMtDsDNi1C0oY34+cm6kDh2qtsQqlfMj+HWhdeTuAHh3L/pq3aunrBTSX91rJ4trSxTdoktjQ+hlymqaqvr2Ti8/vZFxeTpjejw/GdOFixve6h2g7UUFURZCttqPR9ZAG47WDcMfMR/QWfoHbCjXBaWRI2LjU1LzU1LzU1LzU1LzU1LzU1LzU1LzU1LzU1LzU1LzU1/0xpaj54/Q/pJ9gvLv0wnDGs6D6PqmbN0Jl7jqM5jXGKKmTzbMWr5TVnBzfnucUiiZm6fgj8fx/OE6QQ83nPIs1ArGqtTPaIYKY7SGeCBXO1TIicH/XcGgEUzDzMn8v1WPXCo5i3dXA9f/9Tg5UM7I2tCXAjkJVhIU4ttvEw4BpVT82cYgCmDxLrlRbPAlZVyXFaxE9kRqVB5fuIeJJQ/gs4cAFkvCH+pl+LYaL3QoFLqNgbIx2/I8xaUy/Yy3hsCm0giP+w7sYN/3PUMD3kQTgxTJHaBu18skUTX4o+It0Y8Q/i3ZkOlFYftyd9RFTn6wfhtGt2zLFAPnAn0vUTUbdfWa0KdU3db1zpmVXVPXkmOZnoLAnT5woncxldifQ0lFWM9EoEfLJw04sepE7kUpT+8qXG5aXG5Z9ZjcuVlX9JGpd0+197jcv8T6JxSWZvdoFLs7w/ffOJW5qt/da/1sKWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qWl7qW/1J0LZcOHn4Wnva7lz6ztJTBsULIK7K6booTTyx4iBeP49HnpFuLb8taEgRLJ3SwW2fIWIEDfOe76mIUKR0XcHmiKi/+Ay4PHZ07kY941se+rsEj/NO2G/kcoa44c9GhKlSbKsEla3ExCghpIbmKRBIyhg5kwQGjhl6bDtt6K06jcNPKjonXYt0LU5boQPTuRtPxRp6vrx3PygjyftohpIdI2pixrlijbIWinTcYSyFNyQgfBI123JyJVn/7ykq43BjYMgxE2hJ63+5rBR7umcZ+VQa7SreEndimaB5CGk8RIEEp1EhJMSIxkVRxP2eibXOjI18aZnC66gW2p/Ssl/nD0CSlOirbYTnelIj18dlxlfgslRpn4/X4yeEFq5MQ4irjSb69UTaj66vmRhmtxGErhgN87F8pey8UdhokG0pPWknjqeLqUbM3C5s5CwIdBZbYfLuSCMkKCA718YhbZcA+RMlN1xSy80C1OycHM93IbHQy3Gk34Sx95PUV76v49y69srRU/bFsqi3vnE4Ff7V3gUd1RqNKH6dRleIPvzB/itXwGWym2m6jUOyP505lB79Yc6bsbvxEtOBM/VFwkTOl/+Mvm0Ae40hTt18camz0z9lSX/uZBVnq4W8+zpa657Dvr3/44WfpFbCxX4JvjrAj4YFhsQM8v/ICAIQ6TPdFlJ538Yv58Rc1eG/kwOQ3vfPxct/reYtaaoH9Oycdl2elRp3WCKeG4pIKerz3iMSJdxFi6EIJJ79lepF19G+vHhaDjUW8ZG3M21CNw8RcVD44m6YHiTGEUGdu1KcxPVzfiKItW/jhmjUdGa+lYG0JT7XPh092prfK/mDj6jImt9qZm9cjHhTVcQzWJlYp3rWmszaaEN5jwxVardFef/t4NdltVY04FVFHmJ0AMS0qvd/c7HQkW/FNi/tTmwbtHROETHOmma+SHG1NgZf2oX72hRFaQj6kQm3B1ox7fzHREdhUJ+lEc6MbbJwZXcwOm5WQCVQuF20OkRDF7VRG4GmLnTWRhjq8gWYXr0RpZ0VPemh1L+ZmFiRrBq2ueqp8Yk9t79GqJBFYnZcpGx8WzupCgiRPMDoN9QhJlKgYWF0U9O/bBlpda5LcGG93kPPehRfyv4rx0gM3uzsTlZqbH5wVvNmjMxWp8/HHBWC00+yo7zkkroL+enZrtC27VjVkJ7O9WA/MqyfpO/futVffFWLO8ySUJzaKpU4NT2R+tHInSG6m/krf6lyogU6TZTvZrA7S3BOkfas3413JKh5CFob01EgSSNuD1FJiH/COwDAvJ5ImVHkQpSmSZzAyMuqEVsly4oc1rvbXvG9nv7r08tJXLC2dH9Xav9ysJ0ZOOs6lzagWUeBcRpbOAhC6PRf7cbjz2kYiT9Tkz4PMdQaPnO2IYi4egcn4XZI7lxIhcZXyIML+Num3bapaq1Jd3yU5x6mKEj7yrd1UDCEAFFVhl6HSyRuvtot/R+uR0vlYXd9HvQ3hqZTEfdlJyli0yOTfWw2PA/+lQr5NxQfp4bcsq6kNK1sFUP0KRvROciPaembv6N1pF32SCAJqrqVdksigP9HyiUkoDZ49JHIKLxDsy7Ijm3t+X22GsqAyqkgFZhrYWR33/42ln6Fvpc8s/S3sIJe5U+VwjYiz1s10+wI+xaUCh0d1G/WEoDjoPjryveOb8/KmFgM70xFFpz2XYED8zgE8mXRO7DzJnAuizSH/dT+378Q5XaYLmWwFT7p3jLkmnIp18C15dOgfBNHuYDeyGzpoyaQLuUxfNEzlF2GjAbmZKD1VQmTe7R4Ly9KMBOtBsBtHB5aGlLdlOGbE9xiEhhYEyiBRY8VKXjbbQrjggdBLFkfpnSiNimOjAsj2IbOQhgpqQwbFv2LKMqV6fP32KoGqwTtZbrIo4C0oqW0ces8ycGN5wyNW5h5qWQpHZfa04anIRO63s+Vrb53lhrUgEw4LklhL2HqQChRNQEkZhjh7NACRshQxdqRRaU7dnN9LGkwLlFRyuFN4dihEhNlIgiu64dFAQF098qeyLZshD5VF0UkPkdlBFCoehmqUI01GRlEYwzn4wOt/wP4J+2VPfj7NDPKoOlxdjbph/Jk4i0MAo3XldWBZiLOMZqOLBP95bw1+fflsEOuYdkWOT3GRDThic410FCrAbtmcEHh0fDA7U0OaIhrApYII2tryLkSvC1J59IJU3tzlvbFgxm99rnhcMdmenRyPnz8aUd/i3LRqDaLpFpwM0RRHcbtFRlHDATDQWVGtkv6yaZbx+nEUHUQ5wbaxV5P4PALxkahlbb3vqcJ2CN5wN+NJzeNzRDtIzR3RsAA/UTz8z1V0HI5kerT94f1UdGyIZMNVKRgjSKNiApHi2KUXWNx6WkEcIFpZFLoYUL/vVPR0M14WkOXtW5TRU/9Wr3hvwZNQn6nn6axWz9OKSUJ/7HFFuZs6NCzNN083eLUHJ6q6/86BcKMBCJRxUPlepy+Hfhq3J77uNaAssyUzTWQCQlVc7Tb+fYrswFnIu0I4qTEPcnU/7PHo6ZRVVhpZhiOuugmSGCvMeD2HQoPqDmHG7jfaUPpA5AWLm8pg29dr/pBTk8VywJ5drZ46vpGLFRtcFbJlgqnsVJYzy/wqaLMwQR4BgcQ1UFJLqCnPhPSm7XMhPaexfIGz4a2+GVgbs/KRaZ94tMBC9P6JNy/45liKPim78s1B9vhJ5vkk4MyIREDJePdp0/dyyFOo8DMoHphMc6VNKw6u3VZhJFpQHgqoBd8EFBHwNKWA0hoSP3yyzSaJPcPhAxdxpwzTZlhB1SVMBH6jxZRPC4+Hvmo2HCuZqHkv9qPYi/XWXH9s3npaFDcoG7xFR1OEfyEB8NyW4DxWRzhLcpDgx7oP1cG/4pZs9QW7ysV+uXc0T7AvADJRYU9e+BF92H83+CcpEpmkujSsK+IXipjRtm7aMsjDRA5uS0ifd6iSpuQykvn4HpcH5Wo/6t8VktotZqTfFIFkEWttyD9TnV72BbvWJLRd2Zxk09yX/XezSvEMx6MkDGxXNybpJA9eOnw3zeC4VSxER4BDiRDTG0TnESZZzuDc3WAtrgomh/Bq4r0YO2BaJz5Pr3H4QVMMBY1JIHEI8mejZ8y/UP/blPgyhnGpD9/N2gLeuhIlb4fgfskwyrEuKl7/J/R72E8t/ToycL1H1IUltgWYrFGbj0CT3lB+7Bx+MYcC7895+mdYYDob4Sx1Xhu4zsXBharyxLswBK5zrvOGQnU8rxHII+Dg+vIupCIKpU/OwCJU3vTmmMARPKlrfSwcxSiqMc75fE5bOpE++l2SYS3Gp8ze6JJoTSessFh4QgYOfz3h9olO1evcernsZOAu9UyLHT9PaUDJvuF5A27sRMq+LLmqoMR9X09DcrGuVVvcXbcFTcImna6Y9cYkUaFdht9tQlryBCQaPiTiKMlobs/EKA7XQ4FUCiY7/UMuHJGXmjsrsh+Fm0HRerEb+bfS8pmMZZHcTlWUpE/k/pV4eSZWdfi0x9t8pT9mJfnoV0Q3rx9+MGqwbmB/AhNFKEE9eWSg/BS6ykyEUc48J2lDQ6Gh+3JMCrJ2N3lrY+VEduVt8mPrUQtOUjDS1Y71eAGfSOZnmR3ZVsQiGgxsY9NAPhXjO5hT2YQMHDMgUdzEhQ5CyuC5Pc8QyjeIF6EsBr0WDISvAtIoWGGgoBcCf4+0SNUSE8ttaBKZk9m9CBwKFJ+EQZAEx5gcchvpnPn+7G5M4e9LSlEEDQzDKKIFwlM6YIOMFpRVVCqrsCQykd/J2PqGbGfxNriMZtT6S1QooSFrtD2ehijpxix4OEyoPd9z+yAivxuLsCv7Ni8EAVt5md8m/1gsLw2XTrFjwmTInYNf1AoI98E073P+1rtPItQ7J6UsdGZiG3DRjXgMt6EN7mDv2OfeXySZyfTne8SRz/l30dIkuB/B7XQhXHEJ7j57NmCZ9Yk9idZy0vNT9gUeUO8E+beX1viQfefS9tIrSz+CNTyYk7xo+qPQm54r97gWa1WmcoFHHIf0PAweO9TTI9mqzMFLYJ8k5CO33wc3VR1joXWOeoCIelTz2nIsGqH0w/wYR6jY5GRg6nwYesyqQg/Nhry9A47fztLwgzfsyWA7S166Xfq3g+efpd5H/uZvfuVHv/Ev/2cP6Jd/Ea1infzg/vv/6+95r0fedSJ2dfG1uRl9ePXthb+sg6nJrgeiPL75k8K3WBMTSQ3zyeQ/3fjOv0eVooH/l3Z4n7P1bTb81NBvtEIaifshz9gA/OX1vbd8xNP0k1+5uR+bVqf1AfKJ8im/uTlYydbCQ/WMTzuMDghZBncslWr0GuF29uG/+iWf/O+/+z3k+ImH//SvfvnfvQq3mbKb3ls//dMffNvfPhZj0xgm4NXh16CqajG2BbH7+IffhSsrAtFEXJfDW9zz6C/95bUY5cYP1z+OzBHCmdfyNq/A3VYqRtfVGI5Kz/uO53VLfPV3e15nMm15VOI9Z0tPeDfYL7PNpR/0nvV+3Ps1d9dr/HHdThlfROuP3A4G8I+yVsVzewwKxI+cd9NdxeBg9k4BxRXVT3jzEvuwVknF9v3B0eH+/AfTbe9MQXM0R2fDwTiqlyks0PnIkERMTQXZDmJ4xvNVKAcuNNTQIXFeu5Ru3l6vQBnjIw/OGIyHb1xLLaqoxRvexkZ1BZmUYwrTN1h2cqHEcmCavpcvvufnCdl05GILPu24lqet/zOqATrTw4uQH/fH8cAQ37PntudUc0oofhRzqph7oeXEvdKDOf730BWKs7EThZGOuYbyyyXOQdgztQKBWxVmBWpnY6taSr5iCHf4nVpUiNSbq5xUHtbKnGgoMKjVQu0EQc1MRmVg6jYvUNcvQlyI4p1MmRjlkBnDZWGQjbAGxCfWjfWmJhNiid+A4FEd+ZBmPPw01VC0H5iYhEpDAU922dtZylHCkNVeKtQ+PAaB35XIEX5CCyRLcyYcsIVg6e2hhIQmc8p0LCAgw3WkhYwGavRkLaNtTnxsLygkWWfYCPAc8x6bE/AYAxmt54I7SVFxiVKaM+n9gX9EoOY3XEcqUSITx08GV6Jpci95/2a1HpxGh+v6anslaGyDMy0xlEAcwiYfOI7sqabBwLD6wmz2ntN0Fqnt/C1psGfGRBiTCBnlPC90Lwr/6BjbhxBWkCSCyHsmwgjqQY8KSK9Nwbd9A1UQPCahTNHc6ctAoskSSSvKnDov3AOoi3wmRjxCNTeo0mQ7ZCH3O6gxlrMpbopDBR0Bla0ooeAcrivqQ93kxUMoyZgVMx9ZpNHEFzTE9QCQPkbLcEqYSBBptBvWiH08EHizkY1KH85QJJQ3Uy9oxPUuPyq6gluqfLiDyjEFmdIMAf/wEiRJA3jlvOQk5jymsi0TXzQFrjo7skmkeMVDhW1KgQNpXM4BN01BWOvwjuJwZgria+KzgglfG8im4HPx4XzxhohZTCIs4dn+9ItoQ9CM+m6CQuoD74Sx4WtrS+opFmxznjMO6QWH64dQ9jqZK4+R+eOdALaH03TZCRkN/gv4XA0VCVY2XMOHnThp7q1BO6UppAjOCjzmcBrfuvSUvM6+1ztwfDk3Zcxd6XZR8246wyjoRmuPPcK7UGSKWufuDI+/2BOw0LQrHUmlqAkqonCK1xcQkOdT8f1zeujxkRTHO2dSWEgNf+wq567QJSmLS6DoaTFfkHN2CXo+eF8wUetLSHG+1+PQlcmVU9K6incWUadEydW99c6dsXj5ba44eaEcjdCusVWNrJD6Ad3TMfmPevBzqFjpV/vG9PeK27fHfvFUEcMXrx3zGGusnUpWOi3gNge+LlDFH+7zvMzK3tvFjWuncjygo6mOM1tKyB3Ls51ryoRyunNVvs8eW/Ro3U0TRoimpklG8HJ5O79fBI3Tk/cfDovGDliYnmDv1eqmQWUZuFLoD2n5agcvdEu7C4WjdMVVcxrxAVdCk8neWC8vy9fstlvZ6PHmzhyer+DEl6jgLry7PIh5cOyzTpzxdqnStZjubzCyT3lHKN+saBSUF0Es7JWA9oKMtSuVrsfee4W3R6Dw9ZYpp3nyoY8PodDDKn1nttWnBqp0vk49sJJhmSSQHStMFaQqHqRyxzb354X6icMAbLKkGxYBVYHKRAWfo1QRuE2tOXLvJxFcyRRoKEXKbUGgFJDKw0saLa5wnu5Mt3olY+vMC4neiUzDEreeT6j8QWq2THvHz2Tg6SfgaoRvcnc1VkTL7IyqARbOsCkQariYCtG406rmaDR3CG7ne5pYrFOXIYkZs19a+k0vAYtzZ3Q8R4bM5VPdpkfU73BS2gUKBOf1uS3egM1da7kfzGWBca3k7GDfiTyNXRq6QNWei7TBP6Op65vO15Jc2KbjatVz66IXeK/TR2bj17xaF37/aL9HznahoeG46sEJO9z0zjYk1rzbcyHleWm74HQbz/cL5jfB9+JC2XqmDLHU0cBqXrETchPdlPjRdCecdv13GGNQhBg1i3yn44RTaMVZqqX2mhjPSVZ2DWsTMQwLnvKkFc62QtZULx7xdgGZgjTblg0TqKBYwvCTHwSV4ClVWxQ3wFBdMZkw/8rNxv0qakE8GNPklIvQJrKswp1wPdhR4yTFHW27Ojo1UGE+26Hy4U/h64ecj3ca1kxtnC17VZwakhFUPPPgmPZXr5tJF94NZgLsP2Ek0VBZktzqjqheSYa3Wcnjm2G44UdvbRAIpDmBrKL5WoP3JcaCB/cgdmtTyovk7Wt6Q8GrMkNjRyrsbSpIaLtCSS+SpsVVlLKVzmRge/72WritWsEB6iN43AeDsboAE4PUIzCdzORybDf8a3E79Num9TZR+qV0OZchrDsaf/Qjd2etSlkSFa77hJvkFsRv4nh5OiXx77Xbh6FeKWKFnD7pqdCWrYS3g0FHruu1zG9PUV7Di5P0NM1dT/Su9z/RhIZLL2As4o/N8V08wix9y3u07enG+LVPr3W1946O927yupdoZB53/BETOXbSklRWFhKOYGeWmCeHB1kfG4l2C7IN2ZGBhBsYrjWv8eaGOLQQkXglYjUQ3Bjh09CLVnNLfjsaNqbxmoCIzts84E5zg+DuJRIyFeZewKqnxIDLgZopcCOa8hSqKI8rcEZIY/dwiIobX5pYz3zN0hbUsN+3tLX0rqW/vvTjb1TFikcoS+nyMRacf6IyFk3dhXPhxv+lRBkWrHcgnKIaxMEMl9POjopt73jsursu/iKrWY5qIilK4TpgsIPKfL6atn38IMq/tVVXtOSnvNF3TV/dPf6T1bR/68vfbfR34SgQWcpwa1geea2QH69sxprjztlugJ0BReSyeO3Gh+7cCtvr9MPtNvkrgq91/m/yLcKrRTvv3fy8hS0mS9msU9e1/4GX/jXqVVn1Jypt/3ACZUMSQuBnex2xG+Xrw8hqP4yoLLO9nzz6h0etSJAC0fCqABMQkCq/f/SBq75g+mGLBlBJvJimVy0fdvupdw/O/yt8Rn5aZEtf4vZz5k7GM3dgDQePdTtrUSRzJnARjbt/2HJwSvXTxQ6qeeG64J7t478Wmh3n6zzgq5uM/Jijmnoo7dTEPdZPQQzXbGJxRUHJIR8UjQxePRVxymlsQuMUKLVxzFgIs/lTmeyISc7WmGorCPaWq5aGYjIVImKZgQIBASEo/ttsgX9lI6rq8otiM6123k55A9wLVAh+fCXlJ0q5TBglN93KbUx0CQrmuAV6goVRQJxG0sfIXyQ/z35uaXXp5bndkAt2M5duno9BDqe1SJKc6w2Rxc5XcrbzdZ6wosmQnweDLdJusy8KOH+aHfZFL660HOQtzUdiNqM/+9Ubb3n6iz66MvB8rkft8Ok/5w0rt4JtXfJ4HPUUUr+4KKkGQ6I/ZsdyuFuNRhoxNKHn5a4ukZERlT548eCTP0RIt/9NL608XXoW8kLpffSp/v0c3hAUKOCjsO9oCGQSENVuwln5xtf/O/rt7B8v/SPELJyLBS94fOORG8AIt77oYuV/NildYBnynnIAgAsfwGLnnutQQwISskeEXrHp/LkIvXongcugZwdnjF+nWHlR1NqlFfWrcU3rxb6Rkn6zuX/r+nIjoCkDE7H3mhsefPZxpxiFwkgETXmQg5HYZmn0oGUkFs5PGDbqMxlDKhpgKwCZ10oL00zGGj62AkzRT/V4DCYXspx27x/cezpAAQN3Lk3o99NtTQe+KfRWKJP19jV/sFx0umVWmkqEjn1G4d0H1G51vA6kC4l2y4zh1UCZ6/uqGQSTpLdV2M3GuBsyEu6YvlrVy3Ert1HYgSeQdP/tndZG4/k101Sj8fJTk1CjIHsSCT8yqapEh26vk1yuFIM8Hk/CUlc871u+syGDTWHStR3a4IXEvSI+knMcBx1KZMgID2adtYFqmleP14vmO+SBVK0sz4JCQh00SlYU6eLGDa6kD58kkYnKkjzpBOu6CHWpB/GO3cihwODZaNhur6xnupUHdlk8y3q6IVQhkHUw9oOWTXJOQ/gUjSMpWTaQvbDRjIrGXmoPtpc8b8Az8hbxQ0utue4KDs/xXgs8RlAwemR1+xsPR14ngI+dGK6lDdX+9h2qM/7Zl75Oi3HxymbzepuXOjFW06wY3gqKlssLbj78R+x32K96Gs+6a92FBDVI8YSzCxYfeWJ8YayDLNwu6quWj69CwvVG9RGv1/AdzL88PpdqP1M+uO7dJPUejflGsRF+Nxf8mGutUikudtsgRB6V53Jp5Az1gNaAqt1wxfF0sfz1gqTDwVzTAV6rM9qFpkPJPrvoD9CIxyX2PcJY5yOGOz81n7LbvJFvXIn2ria3guwJIxNNCNsOUpUPRcbksOTCLcRgjiOGaTOCDxBi4lbvoU8OKloWCQTc1dtxexgedCLqVilQJ3eMm5OI2+QESRIK8kAuawd84uudFEIHi2XMkhdiUxjIM6lmJmmTtYiiNIPSnrIYZpwIk4frYZyggzZ//pNjGiBzwG2Jok5X1a06+0V/3waHYfF8Y53PxvFgzRfNKIOj06ZWGekLArEFAWIUqkkuZ5wetr5bUUixT+5DoDFpg4cBjY+jHk/T6//z9VVf9nXcnwRXJzc62dPJF0FZqNdEWzbllQ/4kMnGJSstosny0N+J95tm0wxfGw6Jf+Sv9IM1KNMzmb8thTSyEL18nLMppz3iZa5Zg90V7PJZ4lnK4z690pOtO4HejYr7eXxg8ucKHxOS2Q+sWBvqoK8Zaj3k1nqBm5gZJbsNG9yI/FWefyrTTb1R76v5OP1n7BeWfru2qRrCXPewoRjszIspxx8o5iIcdXvG6T5exLMgPmy+4OtMSh5VZw7rkvHAyWnLcbF4fgdjq2vPxSXgBXyBS5DzS9SaJRcllmqp+sdWeXvHCzUxhL3vu2049HcgX2KFRWS5621J5hyw63RpJ7GCy7UQG4gKfbbc3eSjoCohGGCblQnpKJ1I28bGK/E4p7yTrYnF8zn5D6Sx1DtCXB8QdT0WT2pxW976Ph8GSRRLSetnpUrH98PqgQ6asokCmRLRYWAXcWWvtux6HKxHejMcXQn+Rpg8lySxHeu4O7Ip+16c0BuryheyyiQPsgEEIbHuB5vqhJs418WL0Tg362bFO7yvCpM1Vl60szzWwXILik0epEFvVX/prp7J+K8psz2M/U3LbgrR0zvt5egZZV9TZeKrVvV81sTnp6GhIqcoM7K4RFlt+k+adbXMj/ESUcddIrTBoMuQThr6YXdFf9muXuXqCgtaKrgu1JrsHtpjP96M2HWFnceTyn9HLDdwJElywgXK1zkmHZXS+eiXyWvey/R0afj5JorefS+WUfD5Zof7Rz4nP0Ea6o0ng7n2ib0ZreO1PPnwQ+TO0k8sdZeWeFpLH3g1dBJn41VZg2e9KTlhm41Jm7Ugl4WXFG2u7iTTrc3TceNOBbXYZ72DZ1Y2By/efe8s3B9GsWkHQW9rI4C89m7Qypfe9DnmX1m6JlfZt3n7zv+ML5LikJhUa6EdYaNn6mZlh2/441rv6hDJ4A56NJeoKA/3IOruOQEXeqGed58cRxmk87KXzVVz3QKA+cTpIlrwguRFTVeNvBrV2ncr1t01SP2npvItnvXiRfjZFeCfx5//HJgoxG+BaUIQfF+ZPlfIF3T18ot8dNrdOFgTOKTH9Xw4hhKkVRRvydQLqnr5JXhAe2NvXWL7x0HKqEBVT8NK3J+pjKZRqHdbqKVV2sR/jS+P1aCncp0cMhSF8dAvtoJGXJr+wOh+z79VBtJ231ewhp84sA2CRdGbFbbB5VQ1sMucTI/ff3ra9vOni2F0ei/ZXebwwuF0oLS5XB9CimfS4H1sqzNYVr5WOp9BeKdKUg+MvB+3K38wsLrftbfLUNje+3I2QGWkGplq2vMrlTuNeHbltTunvKHKB3nch0t5P+kl8E7HQvQFPSZs55Amm5nJWyyNm8JeiZivLKLQ44nhYijIoXtMuplr95g296+ELA4EHMuTg1x5kVxtW5r6LM0YoisJ/IaJbIl7anyNyvKRxpZBaVIDxzgOwyrg6w7teh0X2RjIng98tWXHz1EI1IpoRdnhgcAV1auMFN21yWZK+SG3ovexL85S3BQWpmAMhsYFcughUBx5QdxOMWBAlaE9EmvcjgSfr091HEZwwVW8oLyOGI60AZfbtqPnmO8xkTNxuKdQV2CV0rK7OtmiMYGr0aD3lV8MfuYHXv/79C77maVPL/3A0tJxzRlzhuEYUQdHC10ZMS/MFrue61KOztu8RW1ae3PBzPM6ruMtdoTWmnJoy5Enzoq4Glr7ufQP8GD4HP+hO9WS+6T9zqfvx7SDwEipVb+XnahyZf/+vVXWz4Tqp1ikkUzqxnP3nslxexTHzdBxPDwUZSShJoIPhxc0oc2bO9dPApTy8tqhts102XRDnvDOkN2/2xjPWKOofL+IMKL/l440cnPnjDQSjMRK2lLNnxDdYBoMIT7rjK0fFsfb+jANO1lCqzzYV5iudSbE22DdwkYrw0JfDXe2wmi03z6c6KSQxh+stTvjsIc9TOwtjK9Nt+C3ntleTvL7ga0kX/bZfgNue9zRTQWPMZwFEYtyAvc7jHABjtL0u5FoQnRXbYaqJppAEkyCcMPhVB68/ln2G+JHl35+6ffcfggsn8VsDgc4VyBywkUj+MjPOUxOVg3N1cEC5lqArqY4fCydIo+2RC/iAtzJcfjQvQuIzfNl4d4FmZ+LvQJSPaLcDD/wzur6i8LNbsfLYpHovMnkJvnHR641uzhest4F0/PYP+RZaJQef6q9qroNGoInxKivZLpx4v/AQbArWGos02DRROR3KipxSXDaoPKemawuWxnofUMDBWeNV0xxlB0OlEv4Ki4TFglcr9eWCD4RbZF09LUA5whQMejVj7AVYh5I0YqwNUdVQKUNiNhkWOO0WBiRROpY8IDQRrcFLy4jcJlVPCGehPRNSr2nk4dUTQSKmNM2JZnXdCRocJoBvAs96w7gmAqocDKxaf1Dv71xVLQfvmvv6w/HxOsGTCSQampudCCP1k+pKsY2EDjUNdHBkcyVLhqSViG+IsSFoipEdD+xLdNvi5hLTXHnN4rTUdaIAw0OD8UOEzFZkRMTXA/Z2DdFS6WnSWs9vJ3SSjQ/mGy1p2V4EA4hc/fdrkx4mlJDJehBQmGtzI0JA2GqCYvuFqZj4h3dT2lL2X2jIFTM9p6QYz0NMy+8BnWl1WFFxZTDrQm8D5cPAshzZbDGITcNSqVSZmdGa6l551P3nl7T7SyXxoke11uhLHvXy1+rxaR4da1xOCQVTwUKYpSNwe0g7y5dsJsfcXaTvqnshl5sofBFC+VNajc7Z42jiFpuTayPN06pzt6MNnPWKbvSE02bwc0uKrAYbJQt7OUFZy933lz2ci7Eh19F3vm426mMuNd1Qb3hqHz8tbgUavomtbC3MUFUN90WM4tIO6s8zZnQQ9nFrCi8q0S1bUhXmqxwkvqzT/Yo1IwzeF32hZz4xPPKqC3lOG68+YySfgVUcX43Xxd9H5FASpMSyoNopqcWiqmq301bHZ/0bDAdx8bzxSTbZnCRGbXUf6FPQ6kNatoSg8o553Y8dnZ8982VL/4p0fffpHbsffoR1YL+QrVg91579ZW5akFwploQy/x4djeI30C14DDNvTdheP3IP7dOA4u/oE4DW3rh9d9l/6NoL7WXriz9ytLrS0vI3yaH7uAyOKI4voJCfPi5f8uk8EbTubLkOZ/PKWXViomLJhuKIxZ5/bfwbydM8LhdnyMkneIyisA6FmC9Wn6hIPsGlNnzaRZewxvNZ8b5/Bfn/75GbtLD8xU+Hnmpn9NGTmySsFZUFXZ0VzlCyNHD+4//5J6q2SRH9H9nEdtvf7zbNM0OSUgYo6WW/XAvbLxWTb+UNkNuYsmEqjrVIEhuR8mTyfrTnPrKAwNVOdPM7ZoWaKBmW2Qmun7akNujZ1rRzUhUQrZldoNSLdKFKbaeAwuUATIGWMBSQq9RqZtgemq9G//RC5HvLMwPLUuZbAlecDVU3qix1u3F1xnbJV6D8Ak/zWkYUBG96NNMB+LWOAscdyX/3L+vWS/57/+3TEWrt2XFixWUVbSca4+L6JlI9WMZpioyQUuoXtbgaEE0k9OZmqrwWiiWNVrQ6jfEr5SDn261P5GDC0niCEJ0Mw4apsvmhvKJd4N9+OOk139BjdWyjl9OJ+kQDYP4uS3pZPKpe8+sytUyFY5fDgE/+KoofibyK1W9o+ZZ1DHo0y4GTbzn3lRRKMtFEYpHiESLLeDefFfb3rzNjzrPiN/Mz1U/9h3+DN9OLc76Zi3bNhiyUX2W0LxgEWeh5OOK50Eiea+SvMG6Hc/71retbx7dfE8zV4xXqd55ARJJhBn2GTGVzhjlNRIUDnkQvQkj0qaspEkSnYiCNdxaL4s7U+ABRFsFb2Z6dfry15G8fO/15q6viObkqa18BxX6uGS4/QIn6iRizF9186zrr/+O+G/YP/C+2fubtYoxYonnAaTGlCFPacsDwy3EVK57bjn04XQXrWB2XkjN6iXNT3jMZWmjyJstJBRrhIZXP7MTL97yFvMX71yPpFYMPjP9w7FbjngM8QkVVcr9oz7uQNyv7bI6Lufq53sIanN+YSGqIsXCNMkiUNY7dtZIKCLPYTeche8583YXPnEaLDWg0ZtLETvhlTXU6XONcqfugug55HHt15uuFgtwcwczGddLIFHFcg6mKkVRz+Lx6/15WnrBvc1XrufeQb1J+/hw27sgB1RjrPbdToOp+DnpN9K1/VAum+z5IjL03/T0spLgHlYtCfVUC6GQ1ylM3+zIHAqzzKOx6KBsFmUP/zfUQ0D0DlErkfADXE3nGbAIybJYijZvfGfDxowlHU4/8efTqsvzfas6YHbRMosDRvuUCq84zVUTF8aQqWcgDEpPkrQKGz2TmqnSHRWrwdd1o6vGX5tAYJfhSRSFLBTK4Ch9sMETy/gO+IYCnEXGghXeU7qhql0vZBj8FOZOCGgxjX54N69m6yGEdeKlXhOF3nH3IyFZNtP+cdT/630hEaUBni1cj3T8llxP+yGPWDLb9rmjHkMeBinurK8Ga6IyW1wPhL9r17jv9GCFUvBpjqv3NFRbVaPkMPSblgdsFVywSoX6w5/BTQq4aoGQWHafYpnwe9pvRB1uZuZLR993HTzg2/N9juMQZEA4qo6Ep5Zu6bdj5CDuzsaIK0i3l+Xysl0N2nzORSL6aijinOv2RJsjJVYVc7g137DEWAs+91u/Ly6eYNHTvhr7qzra4nEk+SRAWb/itUKtKiJOx6YX8cAzxEpkKnm1DBLjqN8+xwl11UzZVd0+DfOrPAQ/1Eyl8Z1uMgLIGHFTSC40z765+OKWyXiMcy0IQrjTXBiv4QmuSjsTXj6Iw9Bx1+DDAU8NR4nVcCT3nro9FReBxyoUbfToaKVEqBBCOKjHWk902cibqVm4sraW5xLnaB636lDJmYI0+0ZFVHwaxpvey4Ho316+spqZ54TUrPEKawu7qU03n8ngKMQ9LzqqdbtOHm7DPf/7Xlbrdok6w0CL6pFarq8mHlxc0nBOU6pnYnM/dEEkiVwQSSLXvHqv3XwHwhuqJck31ooab9FHFXPEYkns2Si5RMWN+ulwAn7OPXISY3u1jJjzcG6oV7/HqZNKP0eFo1RZSX4XPHx+9+D+E7jJfmdlMwzhRPnHrD+Ittu66fHcj7joyGBXZiI7ZoEZtCkud2KKeVr5xHgDGvScVJJt70pxyI58VEqiyvKY+Id6MiQzU763HKszySRZ1JJJiEQg8nM1o+yx2uzGuOWjaPmb6YsHXWV9T4GhM6ilNKEi4cgA5l2eNkkkAh3IKI2viY5OFG8f38y7rLQB1XBgKttclWqqo1tR25fwJMWQgU8b8eDapO9v2OiG1TOh19pElQ//F9n0C3O3iFeG0yoOgraJo+ly40Pf5HuSh4iJIBJdTq6CEc9Y8jyP8utf46/606triVqx/nXTMsGKbJeWM59HjZFgbZIphjs9uZOLpxBVtTRnKkr90bmKEn9cPGpQ0UKjTYKnCPXeyTAuD2RTdW4HO351Yq/G68N8vK2Doew0CRQ5kNgxSBCIBtuKeU58GaqyW7b7yEdBCTYmOBRj0j+Vs6qNAokh5G4pV4Y5aon09/9BjVt5x+v/lP6K+FHvmvf2f544j+Fy3imtiXR1eMcRhNsKdTw7nJ6juw4XQXouenseoHGHwJ9ydK7eMDpXbxCeQ+Q1/wsHZ/HGQ0v6S4+E49DQryZ6AmUqlWsYjoc6aTW06dl0n3qRpjFEQG1wf7pDNBKuzf/b3pcHWXad9fU9+zn33H15+979Xu893f369YxmH0kz2jUaS/ImC8uWLWwcyrHBBmyHBNsscYJxqKIqoRIgEP4hpAoSGypFqgAHCAmuGEjihBBSlSJUCIQYYogCaCbnO/e91697esYjMxos9ZRmNN33vnfX8+3f9/uNmSaN8RhoyjJKSix4IHUXOJhR2f4QmNH3GBtqYtYZG9oqbOgmwwKmlY0NXRrb0GNgQ+kt2FCga0vjhakNVYUN5Ww5nBrR0BjRdTCiFsJjYkJztQEm1N063ISWrQktFyaUWxPqvPRNNy5zHmo6GdMKWlCpSFUKbaCMqMt6fl4t+e9YYkuVt2cr0QfWIONSl/VP1t0GTCEqasnC6IzlO2D3kuMTuyd95yuweyi5zu4VRAUTw9dp4QV/xuwh8rLN3hL9rptWQSdy/JNGjl93V45fphzPFlHJpIh6V45vUY6v/tJM3dXjfuTurEPZ9a4MH5ThT85WZZteqmmat8/7WWUqv5eN/H78rvy+TPm9TUXduxJ/qxL/y7evDnxXSxzQEuTv38YyMR7rlXmjV55xPnJXs7xcz+DWMc/uao9b9fs/f3NwuJFmXx4c7q7aOOhcbN4OtDx07U+uvej8BPuFuXfNfZut5fX3OixuzE/S36MnGQ8F74yVwZilJJ3SlOQHaUqauIijh4UNJxbY0gi784O80QiO12/OYcLpmMLEQQIIBFhWfrby5XlMcLfuX33nzrduj/1WFDDjt25tnpVpKAFqgxQ0J2ozOBNOaE429SzNiXiek6BgOckHq0brchZaRoEJ2Ql7Yz5hO7lykOzES0VOf/fJbxm7g7st2nIzl5ZKLeMO1iGe2zDv4XfYj5v38LE79R6SQ+dxX/H3EG98bBI+TOZ9R7Zv8869iV+dccwng8XTfkl07X9cexGts8vmXXz6Tr2LwxoVZ/jGbt2pfcVf3+IBX1AiDkNNU2fwXsnyDUXqY2cQqcH7m4BRv+cMYhbHVXAGS3fsjZP/PuNkSXPT5n0D2soBL4s0VOFlCWW8LOzPellCW3ziohkPX/t2s0ZabN6skU/M/eM7pjlfDibrK65P//VtAH29czL/zbfHXv7gtRfJn5FfnPt558zcXDLojxtThrZDBe1An2EJXqjl4wa+nQnGSsEUsD3hy53pRikaUnDDyff1lkwoygvszRluRHNCcOT52KHvW7Qvi89h2Q0L6IJR/yzgGczgIk3L7CM6exYHEFLTGSaS4iotC8PuPu4rPOkXGxxg+QR/u2s5s9LJwcY4CC0HUJdg7Zvn8Q+NF6V9O63tGFe3lxIdbaasyr3Tpeeyh2pAs8pT4W27LGO62pDrDtp1aZWJpKUyGhwjXp+HZjtlDDPPuF1m1fhATFXGuE1gnizryVpLtmu+t+ov4tFZWuEkouVneLcu4wqXA1p9Xi26yeICgclAfkJAH0ghFAXcwdfsdM4W2E+Kc6Up9zgOaBfN1d7CMsCKQhFwvgHSh1F3gkDtJajSsMJSrvKllvDupxlVnTcsmQUEasNBxoULPa1QGbe/hjW5bsi8Lqr8qWXZikNpqT+Q+WzBbRPIFtNlFYaD1EVfDNOlhx9Uie+7dbZqnPvQrxJOKEB+UksAwgEmFxAYgESHOcYfptRcNpFY9rDcZn5n1eVGCLxV5nXKy/Ld7pLY9KMtqVqaxyyud9xmQsshwVUksO8Adw7igIgJ/qtwBNS8YxJSRJMEwKmeCnnEo8VNL30iJ9SpzmdGKRXAVtpEKBbaKl3b/SBrAwyWcZ+9Sle5S1FJLgn/mKuWpBBA+cIcognCXQyMv+fOiqakNS9TasGX9wQvbK+c8Dfdx8+R2LjUwPHkORVzWZRGfo2SXHlqRTxRDo4HjU2EhdEdMkwqtr41uPYn5GfYkvHG3w0MCoOuBUa3caFZuLuzkFnT9q9xQbhYvykr8XQ7n4AAjxmYimYv4FwYjnYKEGALYTMofgWFvzscS0MRnUK/15iwZKb5jM6QO47hFiwpd3/Mzj02GyN7nPF1ATBOAYmwvdWkmcU1zkvTnpMs5QW7CbBF5TM2I7dMpPi61ml732yWQaLQDOR6yDRAK4YUuVEIjHymOeRNxdu+L/yYb1JNvAovX4pBknqI1TGPI1dWyYB4w4x4KjShoTU4xnRgo1UJ0XQLs6T+fOC/qSJiC/wOa14B4ggx+xPaDI0I6O6H543YY7MsOcHUUgIYEyiiNa/8mF8PK1q0PZYQtTwfswC+C6Bg1PEsni6iY+xT6lCmYxPIIteoCuSlYYWInSB9SMOYMxOYA+oIlZG1fsbOAXCIY/kWzPU6xurhQIUZdb4/OTtYge7pkqhmftM3QX393Zn7/PIDtfWnlMKlXeJPuqexEUCG0xOdxxl/o3tfIBPOW24ULbgiciOW4jIwvy1kxA58A0Kco3qnzy4jscyzZ2PzmP15LBtYlBMlFukq0Q/4OPZNkF1Jesy/Ukmz9Gxaeio5jzpPL+cS+x2wngxFUvV1aT1+ODxTr76n+vbz5pae2XxjTGJy6lKjxhBTroqwIgCtRUSfixNS9CuCd0Rwyiu/EPbSmjKeAqsRd3PBeOei9FTGOsIYWvLsgu5qmVU5W1EmyieZKpF0fuACTJfkikhVYCgL0KNM0PBSIqUr5Hnfr8zL4J7goZXN+OE42egby+xtefHF0CjKqitCFNGQ/lbtXGce2qvLxAM9CAfzsRNg4aXEpY1d2mTU9SnvcfN4ieW6iR3HhZYlwM6DpkOzioiHYkd7c3ucReyfz33n3O9bfKBb4SyypuxVS1p0fXk6a+JbpiTysjJ/FZMSvfTzW39jXFymMZJEMCgub26edbg52q1yD2Eu8auWfQj/yrRkvLpMEh4KzQXO8/Y5N3XzPZn4Z1Ym6JGQCXx9qddHR0UmPjNJtLgaBzyI3M3NC+aE8RERh1+cQY9jDS/RNM+7Z/20NmMfLltZOHE0ZOEvXDYFwEcf9Y+K/HzxkEzX/qrnbKKLsesSXY6SkR8xyHQdDZlDv3awlomz62uZ0yybrWXuz7IxyezE3CTPNpbTnpXT40dCTpMbz7pel8q52azrURHTLxxk5O6ot54cM3Jz5Tj7ZlvHjNww27rUcmXCREfG4XS29YiYxs/feJ4Vcl+3zjtO9sknc9pHI9Kyd9M/JAt/3cYjIoNXN3CkEtVu70as4bNAxbwaVvRo0yPOJ3HkJqrTGu3btbPp0SMibe+k1SAkWpEYCgrxwx5JtMbqTLiUkroXXbdHng6XrO176NqL9DL5t3OfnvuSc7KQrFnWjn1ZfD7GYW1ifrAUddrpQk/MzLjLTOazP5G50Y1EbrytP1ux2hpXrPwx3esEbHFWIkEStzac0T4uICv6vcOqXNtT+QIBWoBiGQBE7hdUnxY0QTPnsxwH2zv7a230MRRbfcVx/VGj5cJjKypcDr2epGUmqhIYuiC/16370YEyWSTiYDNcYruZ7EiyIFiFAVErCpw0oBaeEZigjF4EQL+20AEpkXApomut6JynNyluYSam1bTK21JbTZNYkLzJsntX6jqvigdO12u4hGHA28rn/wPxRjKzNPbCiUgt3azJRiNC19XgXP50nZfJILSyh43swXcBAVflLKzyaKCMAKcBCplrPg7sVV3iergu2x7NdaZ4wsWBSiC64C9hWomY1CdP4JDFFaO1yhilFoXfsqUJuSyhjhZcV7ATSAmskZtAqaTEeYWzRq5piCq7OiTzJVf0zBNnCVBEy77UMfWoed+44ouYMuDkYs48mlT1/Izaol7pkfUFaZQWjn2GZIA7J+rLrO6WSJCJruBVY8qjoLVqeX4iUidZuuwaHeT4e4XA5ImiELg8X6myGK/6CeVJjfn3/HsoKC7WNSWygsg8pTlKM5SLxI14sO7TDTU/4kFIF4yKwL5xYs3DervaTaAomVWKoiTUGrauvUTPsU/P/amTQ6cdtzSBUKVjRVlwyh7e7Q+WC1rY8fz6YMzcOhyNgZCL4TNL1zMsoMbH0N9j5G9bVUv3kL8LsixoaptKghW68VwapO7R/vF5OzPft0wAQyheFD19xczuBNN8ewQjZ3kD6P+Q7ZazINL2pzGQdOo79mSHD8PQXZn1z5Vi3tX3uzoDq1NNTybu+fDURri7muKMnqd9Jpe5WZKkU5JBIEK0zkOb8y04Hyy5j1nu0D5FwsBCgnPv4+/tIRNKIWJLdQVRHsz+AZA4EYjieKWbU0mcti8S4l8JScQiwusqWnPdBVbVwGnDHRwAQR22RQWwLOYwuoKzLHAoXzo3b1bnTgOQTC2TBQi6ZYyj0OnliKKk4FVaf/656SiLkbVptnHjXiyyh1ra2GmHAsNdqts1xfWiIKmo25I70ABqohin2GghL9UN8kS01AFg5kczbxTwLX/QkyU5+MEB87lmfstoKaZIzTNOB5BySL/rxeJCqBdp8nDij/zsscTdDksPR8GmCMtNWeXz66suAKhCWpwBrwZ0h2YObhK6SNJ+3AqNbYqfSo3PHCzpxoo7NNaUPb4lc3X6LVo7QVCmqYaetFQ/dsZT5bqovGEh9OuLInkoHGzXLzxYEm0uV8VypePmRsv+0DTzOGpPM4+lUuecn9ancvJDRk6yoycnNgM5mkHsy3x8RMTk6s7Gt40mE19IM9cN5Rak5EVwFKXkuyEhOR7pogDSp0mat8+pxMuK2cxCTi4bObl09OTktmUnj4hskUl2sq9vnJ3EjVvKTh5BaSQ/fptTlSZeK+R3zchv6qwfQUt3y1mRI+IlXrVJkWZ3mvlgNUiKHJsmRQ7u2jW7jqJlfHhfhiR6TEPLJVanw+X9GZLZPcZetq99D51j/2TuC3NfhOyIJUkvLAbalxcp5olYapnUbUrSfAz4nnb6Yz73PnCv7+tpnHB3jDlOoRFqDG8HXVVkltRp3NWVjwrUkILhGKQJiM7tnIPtzR1YjqddS4l+Zpw3GU2BP0Borc3rF4Aj07lk8qLQNOkSb1mfDPDuNkFDTJuMNWyjErIzOGthpHcSwns5I7BkFUOWhCUQkkTY0udu9FcbWDLqkJPYnEdu7hKeAf2NxunDsVh3d0pj7tzTHJURXWFRLUg97KpYlTCiXIRYOuZSCAY+20COkIAUC8JxQhQPkaotSnP9abh4zIWRJuYF1D/hQu5E9VQprOUk0ldPrn90lAcqTPFkCGO0Clxf+EtBKojtB2uxx65YKuXHS+XXaeITFuRPeMA4Vh8+Yh5JuOQ7Hgl3vbas8PK3lkTk0pUwECti2c8uZkF+4cJzIxoDn/LjJV4WA0IqZQVjQpYL1pIpZ2+tuwM/O+P12qTbV1lYdiuk4FLGHtpJuPR5sy17C87z/laRCK1sc495xk5wRBXN4DlTgmxPuG1Qk/Ej8RKH9lbq/NmVjyhc3ty5NzveLiY90tQEQ1nF+nnXfuTaC/hPyUtzT869aLN6ljMJFRNpW8XLtyp6aLljCtuwjnq2/7DHzBo2Xyn6duEvLO/AMRt5licWHmZvbRaJMmMYJthbM6k0p2sR+/rmmo3hAIaUaToc+pkHw/4OCIexEOa/gpQMft0ZjklX+sV8IEwHDrehc3E/73fRBWnOvzWRlpHzzWa5MOL4UZOVz8l5pYSq4LIMFSGCLOMUV5FfqaiK9hPmVpYoqXESkXKgOAeIOcivEugmNCqf0Sj+SHS25q+5wYoXrrnVk16eAWE2fJAZGxCmvOTpS3n9kbB7gp1tnC4FDNh0QW6Yyktui69uxtpV0FwIbWfcOFBWlUN2jEzMhx0TA25sJDhqEaM65AnRMqvSmSenLj22iTnl5pegq93akvOit+j17vdCIwBCQP+siFDIfF+KknjTI6c+EM77Ml+WuC44wwxYxJGKqzS5nLOkRlliCSdSr8RJomoa5UgRy7YWY1IieJn5T+v0ghFKqtpepLc9/4Q4WeKrUpz00o5gwsOEkFKvOkBiqeHHAcM9WpuPfVlbcJ37IiIXZP5Nuaf91mKmOoz12P1YaHdJoZSSEo0fiVQpvZxyeNI1L6bmwdJFFmaCt8GuOps7A4w5kQ5axpLQAnfpbVffRu4nv2J7itKmJUPaG12ZdLCD08PWEQAZ5bt7lJLgh+z5QM5ZtDXamslGjztkTxlPacOZKuheF9Zs4fj4zrjX3PyJzWLnBXCbiSAAgpKNlfcZcgpGLjYcPBqC4zMh2TN/7IkmXGfgoRRTrHuF1YkkjYtYPs6ne+AncgFGD81r1D03W3SHMlrYUk6EK6K6wkpZJQoxqS7JHRPoqRjJ0Nh1J6pFGldcVsn1s+sex1gl93cX4tRHLGKAbEYxh/50h1KakmRVb/mdam+rrGH6UTDr/0gHCNeJpARWvYtFcMyo22hxV8armgV8npiFiQueVGZUK2UCeNOA1hU6XB2z5o0+bPfvbzU4VsvqhfPkfKQ3tD7eDzYbQptgAtUiqfzA87ouyZRrxOYEpzrilW4mkO98FyvpOBD89bE+pmttFTEprAApcMAQdWNPIxhxpLGuY3dB0iV6+dwowAuclAJcIU5Juzs0CZIE61WzCo2/Z5wGzENpVqqSLV6vMMH9yvrauYWad4/HHr3yBK48KU8yVVP9qw8P1Gon4peWPQnr1dwrobGbcoqAx1MR7cTng8D5PawJJQKf+gBtUFyjYjlPRTM+x+kxsioee99utyB9c31HcGIEzvX0oKWqnGd495FFvwlkihxr4Znr6hi/36jzQW2B5Xc5XO5yuNzlcPmLcLj8qJWb/AhyuIwzwmKcET6iYrOw9rHdSde2AzVSyZXLdtZs2/YRlJvXPfFhVcjNxgAnLGSam2eWlSBLrPO7XC53uVzucrm8lrhcFqwcP3bEuVzGA4k+XUY363EtphKLHtfxSPGRJXR563gkUZag6bUdyLaqvasUvenYxRr3Qp2onFcQkwe7X5lldknOefTBUMWcNzyYTAxbYXJUqV2+fjJ7uNcKi0OMNObaqD9zVQcaYicELwQyQhzyrNBU6WjXh4bYPX6X75/7xbn/NnfVSParlrMF3yozjdlKfu7VStXyw9fRz8iCmMb5sNlTMXvig5Q1/lc5UwsKDrLMRMGN2GeK7bPcLp8Yc7s8csS4XbgvJr3qRgSntC5oZ4bWxW7o+ZAu38/rYv+MzjqjI2qQ+sxBFAujNwMUl4wuoL5ayHErEbRdEqRM0iRyPvF0e7Rz9plqZlQ9qcRy/QmU+chFtEGRylWOjXuEJPY4rx5BS7TpzAvfkx4NjC4zD941ehB5UHxQriAxqzc3q09+qKB0OebBU1AUXTqWrmkkx6QuHKAFXVY1/iXwufws+bzzbuc9zqemOJA9NsGB7DJrlcyCNj8wa6MmUJCw+KfRlJHfV5jRpWQHl7Z2T5KtAkrSWiMohEHnwR6apNFF5EaAkuBTGkvUQClLzVcytgctOTltgSxZygvIjPzGSJFFYWGKFwl12q0bI0b28KFULeZb22NkEHOJPy10OV4aKbnIY2BsSRaP+bssp7yrmC8BPoFJ5jfKUrUUqSYsYWPOFu0C0OErR9rCiF8zdqwXd/KkjFwi6h+t6FpXOu9Gznx4JpQ+IcZwa6RkxjxPecJDNDKmeoNhNyHES6hcBfTJkixt+ryiPABTxK6RIKxls+7fm6k3xyhFTozKDMy0A90SxHMHTdlecmO9RmSHupu6gJN0GLTVA8qiJB0Weip/tiIaolZPhp4uu8wj6+uEiIgz56VPo987nI3l2OL3xIC8iOiTFjUSOxRQI4t6OSLSDpVAzSYe07HwShCXk1eUkAXcHEDU4tAxZDVYqAFwciDr9/rQ2O/CYPqEj8XFBNAuC9hJzHxldH2HvI1lOmKVZX87UikNzG1h82RdygSqAPZkye0zb+jRapC6gCuZEQKgHHC3pHqmQTqOfijz1kI5Yn5/az7J4Y401K59sT3Gl7wnm8DSvu2lPz2ccYU4XMVAynK+tjThXVmwvCv+DXlX+jvdGaCdr27mla+MdYXnuGfWdvnC9oOnFMuiY4vrAVCusE2s40eTVyHnysKJr4BvpSGyq/+JA5LThTQctBdKoa9rMvT7vdLWP2gao8xfRWwr+uVTrSjnQ/t5VhJn46schXnPYs5gMc9YzBQsIWArO/sspl3/bNx8OGswX3sUKmZVKYcTXC51jUEDOGWUOihGJdoHEDPzn6/nu6y9Sstqhcm22CitUgmGBwa3ONiz1w45ijVCpVX/uM58sEEWAXlqhHhZzcvyiFbDpLBBmNr3YkSvep9xElhwKfPXAjBBfzEGlD0Z+zEjY2t3ZewAvcnsxMmrgd7kDsjY1c9vfHTUdZyGT3gA51aR3Fn56qMuuXMSBgMp89kzq+UTDdzgudA4ywqCkhn5umzk69m78nXk6EfuhES+ZolF7pQM31b2kLkpf0gJbKpz8a7U76cG2T/Ikh8y3JLflWrnqmPu0/NFuzMKZ/G+d4YN59tsBeXgnuGwcURNcJ9kbqjwPggQV2N5ankeN/QBbJBiR2GbNyxvx0/OvWvu43eWt2M/wCh65WHmf34aGdF4GhnBGPGd5O74wjQY2RhMgxHL5mbxBIv38Rt/GfwdozvN30GnQ90w9UOlcH2xtfGXQOAxARzIZSRdiUulMbfetf9w7UXUZO8y7+Kn7yx/x974y775s0Mcw+Kfon7ZcsY5yDvE4HGccCIr/opUPQWDBhqGahjAvssu60AHRHhB0fyYS6tCxZn5psP44jc0BZEtGvnrnQh55gLiuMZZ906SeFwlGQ0rwaJUDQXpPQGTPCk1d2m2rTDj11h/p+HSugrme6E5subG4QmY22ZhsLFQxgEX7j4ej0+ZtbLESlZuf+jO8XjQWccBjUdl+fUbX3n1+muOJlp6bGKTAx3TfjUYDjVxvtuRWFLJFT2wd8fsvXPS/vUo5eAnTcdAH/Fw3SfyVLSYOQH1OGRsD9kJevn7rv1fs2qeMprgD6E6McuqsQcEZ+fqBv3989hTWYYyAJ7UNC1u/3gadLQ1pmofnYKZ6d4EWH9KuTH+nz3OaGaUaDyQvUeNAfUD8DRbzrhJB1YLHU3mwMee636lstfjY461R9AxIqkwkZQKJVERYRENz8jBotqJ8JLGHlp54J5ogTDqlrjS0JNDKojUiLFnzLxLThXDPV/IhjSvWgbLgey5rMZoFkteF+uLxpXyWko9WZKXOjvJDFVGnWtuvLN5Xo+j3voLzb7Lm4INXe4zWmazrBas93TQrOUdxVRJUeuo0at/CFQamCqF/M17eueSIDZenYnyLDWao33jm4YB0/V1UceaznMcSU1Ym8fO5+bLfL2h05YbJlT0RHlDznPjZSLklTLzKEIHtRCSCVV13pThMMjekDWPD1LeTeqaDruCl7lRC8gxbnBqfUYHlynjLl5dRIkJQonw9zgu2saJNPFVk1U7iqZn/AhcZuOfEgBGxFMqCn3xnW63vXz8mJe9OXPzeSI6Xn5xZVDT2zp4MqXlhzlZalTN3UhaoqxiQl763DFvx1/vlvxODtU/LDjJVCqDC8n6lNei55Sd5+/yWhzOazGFSR30XwZM6tGltfjEQeDUtnrL2TFwqm++q89fD5wanYn1YsuVKRNtGUcWOPUuocVBQov/eGN8VRej8OIt46tO8I9/dO7b5/6nw28RXbX/6qexGH6FNBb01KuZxOJzW986LKgRvb0a4JoFzLplrFQne/Uipf7UlQ+pArL/RGMaZRfTTwVG1kQefsrKAzoK8rCPwgK/XAqLV7U8/P7GR8dMoR42cYC/ufXy+CtezaLwr6bsFScadFGblzdOb0xl4IqVgdGRkIH9QVnfHm+m8HaD1MrMlRaplSMiNuBzugGNN9S8smU1io3HqWSH2+xOcK9g2YbN7iRFdoctfkOTMzFgwn0sB4bWaXLnKMga+nckYwKavVZM3IsUsDEymrAgGEBWyZ/JKkEVDRlPDspoPlMDKbzHW1CCmSGHncjnmpXPE0dBPpMpUenNKQahwHeAYRAmJyB5DQyDR0M837/yzTQOJCupauY1Pbcl619Xcp9fvlRbe72SuL9ItYm6Ii4TWXPSE93HhL7i3u8DkWBbJUFfMU/6zCeRU956OZQVr2Zr+BtnnqORT3H1UILAlaU9gsCSdGiIkCq4AQFvysGIYYlcZ0wOOOGsKFv5JE7zSERVt5+y4lUthFfvtdiMM6wU+7AZ93NZ0MZ415GQtTeTmh9eV3guwBgP7MGZGoMxFrHZ3C/hiHTnLs+9G6qgRZVjn1lAhyXIJwm668wCtRm6Q5ducthGrHga1nWXsBSYmqOYl1xe4t6xQaQudoZJ63yRrpaQrvY48Ym/XLmHVlbZjs1Tl1go2owqxbSJuoKl1L36x4cuk+GWR+btnlZ357o96HeDTrkfLjPeAg5kjyI7SQwd+jabnDreTDaZJEhiGpsYH9LI4ywyBnJ634krV5en0JjM1zx+ZNwGcNZfQm+3u1xFIvs6HvVIqoCoPFwy7+KpOUY+S3527r1zn5n7c3gX+6lCijLIRJfw3gGGjj01NI48i7cFcxhTNxt+OjBkPHa6qUW67E+SOBZMsz89ZaFf09LUQ8fQvTNdD6g/YDdK7Pb3K9hJWheGP2bWjV015LOOjxBjAKe3tsgyxmqJl3aCNZ/P+7T5/tNJuMj1stFI3agdCc/I0oIOWJhBy4giFMVEiJZIzN8s1sQja23/CVVO9PYD242Tx8rp1rETzVodA+ImIcaLvnoVI4qbjHGzfoKU8czLvb/6rAoSupryEFdUzSfmkx1WKQe6w1Kd6G/5gC7JvhHFSAN3xdPpGRIwY9Ckz33OAnKflmvlnp+vEI6M8jB+qQixSzVSjXBAeEvSPKRUEhwyyVMSVb2yJ9GVZOiK7YjGdHRpyShB1gxF6Bv9QcwhSCqdCqaaxpVSWMllnPPsTJT57cu8O9zBlzqhnBdpuBH0VEtWU4kV7qVGhXswgqhoJdKq0x6tLJxjS6GqeYv3+OkGxm6PP3rRydOoE3upUWWNIJMPb1Mvpv2WbJKl7MQj6decXBg+FeysZ5G5edejo/e5TfcCa6iF4/5StfeRlYdISnCC5XgCK0COxEx6CqslhTPKUlKlAWIOcW0FFJMCCpg4VS+awU//iaPJMzCbNmXj5pyjArT8dzb/+rDn1H3Im2rsctcXkDaVR5KM4wde9+FpEhVXeGLcJ5yVGvd5SWMqI585mpw1sw1TvEBeOyoy8tIfrX18PPzAwhmC7HPGyz6KUvLDT3xkPPuwNT9Dlg2UNbX9XBwX73Jx3KyT7WYjDkdFtn7JjjHoERlYLg4tEKfQTtfhNY7oZI7BUgUHHnWQC2Qcdo5BYnk5g3Y6FsdVfrS5OLwt0tHmHRZcHCYACgayG+BgHxlHpaoc7s5MMbhPtIjHZxKwEx6OhpHdMtRHjpr0ApKaZRyYzeocuvGIuId/0KohE+bIRIUm7hi3MbJqWNbbI02cv92q3mD3ltl9FI3jqV3tmIgTOmCooJPsQuK6yD0TLCc33Tvl5fj03Bfm/vi1w8txHWLva4qX48rax3Yn3uF1QLyvKXIO5Fz5iKLz2ZtXy8ebsxi7jQtu6mbg+52z/By/Pve9c79p1u91xBl4zJvB0nyGMgNsA3RR9ouVa9S4DcZ3B1ad75r1tjNeuNB4CFre2JS8mHjbshksH01bxLctScLhRB57rCBjdBMYi+OWiReKAjASZ8WqdAixCLVWBb94kCFDt/O+PNkBiow0kHvkGFWfK4mL7nLKbSuhJPBUHeCcrWGUI8KYP3CcWK8z1nerx1U5y1joNzoYu2YdGy3Oa2cfT65j6mBmNf3xlPGDkaUx4cdKJEOgxQDtahQkh/mt/ZwhpIVTHggFsCnL6DFgwbgHWDBWChYMZk4qgQdDXThV3mPAKD2xdXLxIbwrajSk/O2c+JqqtVr+plJZbXtCrTXWWACNhzLC6nl8Ge+6zLeQIUYEwozHnlqRTVc2zWKxfe/RhJLj9ZaSQwIlx4VTHwh7Y4YPgmNL8GGsQ0lHvaFbWdxMKtuywdkZ5C/5vYsTmhAjv9g4gVSbhQ08IZBLL3TovNGhLzqV14gWxYf5IIdufU0p15fadujxgI8xmX00PgZ1PnndJ5rmEzrmFfjErqavLX6kH7CokweciKSobSD3bLCc3uADNB5/wOZ777v2J/zHyK87f9P5A+Plv7JF25Yz7O/c5vnlPZA6O7mMppPLVqKN4PhOMXdtApdls35LaTG4vFt04o+2SuaUIHEjsw9A7dIbo9rd0pBz6abT3vyQae8zTh+/4sVr8lfkK1+CNoHDTcatcZ0FZ/2XP26dM+yrcsu/L4VRa6wFcmKnwnokhAEuh6TxgtS7QeuHW4wrGFMmhLPlUIaPprLf8qkJjAbrGiqIQPHuyUFLtJdZrjaobDN9bAybx8h4KLv8bOkGQ9l4PJbO+rIYS/+gI+cFL9mxdM85dC6dOqz0Ctfh/x5/xevniOX09k2GZy9UVUJDCDFhJpwxCAHLAL+XuwOGknbo+9jGoYxUUqE9mGWH8Qs7w+F0WnjBJyU3VcCLtJjb+SZjkYybUD3dIF1nIAZfbmg8usVRebe86PzTV7RXYEYHv8P55Rvp4NnOza8+JXwnQSRebfrVy8r8q13DTgEt8p5/X1bq3xjQoqRWbwZo8VrRnZhL/NWqPe8UrsZXkYq8G8vdjeXuxnJfJpZz5v6I/C88YpfnHjK/3CaANfS9tw9djJLbirPlzDWoi3+b9eYeht682zPJjP/rlxnoFRdta/ktDfQydNMZ1llKlC8zw+rM3ef8pvmMP3f5tvWE3v5Oz9vZtHn3nu/e82v9nv/Lje65P3+ze54gn1x301+Y3LRRxfH0prOrv33Tmw6+4Io3G5UEGCP77npx5q5Ze/aujT9xk5smZexoechdw32/l9zvPMLwXDI3l5yZGhs2Kf+8H41GFemyVWJuobPzUN2cjvybD/7cVulrM29Yagwrq5jfo/MeHOsdZNG5RH8bjuWkbAo1M7IuU8qc+06MysLlq8RvtocPtM0V0be+/xe2Si/k/nbp4vwKw8dlJrv2ut55rek8MPcbcKyF647lO3vH8hpwLPDcn4ZjvROOdWHJHivVdZtTNfeIvoNxc6z+4Xe5sLftwI3zFbjx9sjeuLONdnfKrsuXSdiaPIxfLh5GuJ2Zh7GO8Ujn8/43fnar/M4sGObnV1aLTXAdX0f66EP0d8x1LB3+hOjetlGxEfkO+uDeY+tsP9immFz9nN3EVo3nkXS2L3ax5aZ+2/t+YRMe5jC/2IfTqtSv6m/4l1v51+bedt4clVcxOyH8SOUF3p55xuhH7DMeHP6U6U3f4t6Td57Z29bdspd42Mvg0233GafcbEv8KrzrTzl19BJ+49xZiCNsUqJozwIXYjAbGfR3hnse0t48rP0P0gMp+pJUAY7cGoD9uB4598LFeIu0hGiwhDUZlbrB6imtLrSSk68/XtnoaSNmJo5qQNC3ydKoIgZ+VTQF4QIvRBGto4izjpHazVal2a/3F3k9JWkWmcNVda/kRy4zwfHWvPkd2XmR1137z+Tb535zrjN3fO4KYG+RQ4MKm0oyDwEUiZ0WKDZBl/MY8qiUOw+gQHi+uIFjvg2O+XfzWuWZFSmME+O4OtuuZOVGLiLnk7xWvfc+s1VSZtx+hyXaK/cqD7ajyzhXEbA37fddYdJCauh2WElLtXB7W/fEStYqywhxTFXid1fN5n7fRJ2McE50Ja55fjl38KgL7/BvzT1KLpLvA7wx8+4sqE1qX6CxF92ZVJkzYAV01N5wxKwnWGCEQeMRoI2lecYyC1I6w0RTeMwz/jHEcLsjCC4LmgtUsGyYcLFU0HffB5kR8HCR4EtbK40LPecftdTrePpoij9g1C6OErSVnT+f1rIHUlU7f+9bjtM8kqVj5vsqzkxI4OlcO+bWpYk/IlnD+VvqLvdKF3ivjbt9aWL7nJcRzsxZBNHkuK9SvtBprJO362OQOXVoY035ARKCO0TRHGJ4ipzTTAfUO+7hpp+QWknEK+Fz1BkCeZQzD6G3kE70zvd1lGS7DGUbg5U2NuuBLGMUINzOo6iEeIIE4iJ7MFbrurItTbwoHXmGQ5S/RqKGn3lYeCJhJYQok4FtWlKc4LAauOZcyhwJkSymbobc6ir1MMuWHnQ4KezD982dJw+Q75j7u/a99mYhu8zbxTa6LoJ4aBAYDSBQLwhIMEB/7fR3tyy6WLGogVHsTNGXRuyfKbgThe60IUA0TZKLMz0Ce+M4jDBitJ1PnsuzRxNxWZRed4V2L9RXt5a5RBaux4HCAqSwaQY5MaEkMoEfH5aYSN3YexuZ74l204QL7knzqrhCKEO459dLut1SstXU53KPu43nMiNsgXX6CeSEeL1MxYIJQ8yyiPrH33rvhZpOH8z0/IX7I+cnncicucdYh6ERIsd2cLSeyLRK4rBK9XGfhB5DrnN2mAkTNi1VFQq5IklAHM+sypGjAjf3iYnnA+k4kWQE4YabaixDzy95dAXSkewkx4rF5aEW627vMeyaN4lSwnaGzNEOXiYoaywtrMeY7lDsN9/7gn1/9zsbWJHfcv6F+SWboPZZupdsqtztH/NyWZ/3GEBUscy2/mU295vN4P010O4sKAG89WEPBqpGpa2dk87W7klnVEBd8XTva2necCa54uICMpjkAGNrU9c9S9w1sABbw93TaAQNgzu7FqZr2B/u7pjtp53RsNefzFrZmNkoEkgc7czAg21g+Eg+6RQpbiYv7gbWVODAmfo91rVW/ow1bEVny+C0Y85UpKRgHdt+xdHQXMLOsL+B+qOS0S6lkblB6GJpOMwi26EWMisTvtTr2+vcsZ/fhavvA2a0OWJ/w2FALGgMwZhDEHCkhzbLv33GOo/mwNujIr0FGHzb8BB5hr4IaUnsEGgcqdrsJEAtMdTpzTtqSwkL7OZgQhD4Uo5xAqiDkVEsynEkkk0e8xBZuK6SkQFC3oAQ0XUJfFDGROMC1QvOAF91bOsjgYOIsi8iEsPjqzIWGGlybJIRMp+2uGM+K13sYb+0lhKzpjn00xgZISExW6lUiNYkt0lVewPmDBQyxw4RzDf+LuJpTbYkUSSsUNsYAylVyMXY4SdM4TLgL4OOmVB6mTYS7ca8R1uQsBXGelHMhKrzAla6IJ0rLs08EEHTtndGc0+61DXLURgrbbS/FjWhWfie2B0GaI34skfZvKQJJWfSc2XovvmkZpSyFGuGNXcJEYSyHJOE4AaUvCC3poypN/4BXVSiSVtaRW23WcEJdfskRFwJBg42klT3VIlW/DgxT1tERjuZh+6JqIkbvpNi2qFpR/YljUjCMmL+YR0iKiysMHPOSkh8X9heynRBr7hG6SPlrUsLwuYyP0QBND+aC9RI4IAERC88kOMKNu/BhDgE8o+BeaSIKN+cijO7kHSKTFxHF6i7LBgRxlzRmAgjrj7nFDJDRBi5Utgtsx73jFmkrKSZFk1OExwy8yQeyqvGT6CD2HJ+Idayy8HYj4SRRlVkDJrEXSF7PBE4gj6nc7xkTiU3/TISmTkSXFagocHWYVjJUBiroxHT0KW1dga6XS36JsDDwTqwKJ/I4xugy2DQ/bPks8bLmos6UYd89s9Ow1/ryz537UvkMfIzcz8w9wXz0abDZrv7janqFqLHgUSr1w8AEXWC5GeEdwMA/SAHt9OfAP31C7Q/EObCvAG4H3SwmcgOKmq7xjcBJWT1zZ5qg8qbrddtj5rGyWEzfJ7FT4CAOSncjVFf9iBVM0BStcW23anN7JMHQKyJjL15Vu6rLRn1t4zfGkS1lf59abAgVi52SOuZaFWp0AhIyYLsgdA71AXWOpA+YdPSMDkKO3G9mWJcrnpyMbx4quwuu8877aTdURzKtgxz82rMQo90rS3UQ4le7S1IVT1lNII8yahOeLycSBRc/d9RLTfBpCdZJdfv7qy2GyB+jhRGsH1hIlLsu2WzSkR0avM+lcrUgRlQ4nxKDnSink68IW+2VGwiXPO+JQBjaoAIJFCJIbEXCoHUQnwh0lewxsZ7xw+/g1U5rlG1mCduPb9H8iXzT/XJ+1t+yEJfUTKhuovdKsbcOLYdmvy1xD8RGNst+iVYtsw4aVhylSElo47xiVzqreeLLPvE5XPHTQDtUVIKcBnSfmFyMVEnuarK3qUr2WbMhdVP5kIXWOI2zdUptGbX3+PXXmQh+VUndSCDwAY9817NO+eTSioYu/64hGzTvahgFSjMzOSnwhbZ+A+MydBYBwsm2QKUV1jPuS2kpGCgi6KKbZnnLfCZhhOAyhss2a1dwJ88uGT3r9hdBhUVZ+LAmR+zr1CWRjswUOCM9ihri+WeTle7JW6GiYLrVjz60EPogecBUJJZdYBstwFN2BbjC279OB9UReTXu2aNQk2AU6OPmFk+0MiJsA1soD5mdKYMn8zS90QpY/NUMdvgb6wlmEujvcibHsnljq2a2uLvrGzUXLkUXjpZdtf4OzpJu2u+zEA0QLszFepaR3gXE//cQoaDRqs+EQwVypiVqQnbQWRF7PVptae2rcgayxNVVwaFyN5vRXZNyYB3zResyFLMpZQEfWvSQFpxXHH5WviO/mq7jkghVIFAEqrD0ICDeFPEIFeJijAPjFyhHmHGF0yTElXxSC1/5yA4HW0KEVh8ZVCnMshl4qkl2adqQQx242GoKsmVNBzG6f1uONj0/HvU/PcuClAcRvXSJGRGiPz+8XjQ8qiUOOwf80w4RN0oY95QApOvMalu4tbKJ8bS+JSVxsiXhTAalZAYYSRc86RL4r+WWmEMJ7KojXsqlBtORJEHKmO1HkuFXNSJ+1Ti7bBOfaIkLNHnnpKgkZuCsupHhZIgOHZOfiONr/6fh+9nnUySBU7mcW5uhAa9hwpJXjynNtohK3sxmxXn2KsRI84YxPn/A9Q37RwAeNpjYGRgYADif6IX/8Xz23xlkOdgAIFD0QVlIPoOe8DC/5n/VNnfsh0FcjkYmECqAWatDNcAAAB42mNgZGBg2/WPi4GBQ+p/5n8X9rcMQBEUcB8AibUGa3janVPPS1RRFP7ePffOixYhoRJWwyyCfi0Ca1bT6wc+LRsya/IHWUgTBtUshmhTuBtyYRLNQiEkVHA2Qq7a1DL6G3IxtHAhGhRCoG6C13feOJAxLuzBx/feefee757vnmN+IAQfswB4n4kqzpglPLEF9Ekz7pCH3SH0etMYMavImNVo3E6iX9IIGXu4zTkp4ZZrQ59Zx4A9gdeywtg6RsklW8GUPEWe/IYoc30/cdvtxwT3B+Qprpt0N3HetSJrp3HPdeKiC9BjD2JAvuCqu873DXTF53uGtD2ADOM9roLLdhnH3QxCm8Ul9w3d5JNSQWDP4ogroN0uR7/3teGwa0IrtVKsqcO8jb7zzBllxt7LaZyST16yof4Kz9hYP/u/+nIF55irYEajR7KFo14p9j6UDxhxKTzQfLqWeVrkMXL8fuGSCPxFTDD/MfWdseeSxxDfi+ozz5+i3gX+74rv5KXn6z//VezvnNb2D3qVExvIaL1a69/wqtGm1kteI8ZcEM3Wa22Aa1rrDmit2Wiefub3rq26sfZXoqw9tJt27AV7r7E+74TsbyH0f9Y8Zf5f6rncBRIfgTqbgHewSCRrwBJ5kDzMNemaTh22Ke77os6FzgFnpqhzIynOxDuUbRU53as9rv2teSWHTssZox/3Ex248QcZj7l0AHjalZB9aM1xFMY/57pY2rzM2FprjaZumowWS1M38xaTxYgsLRbLW1cbUfePyeJi1mgymrrlsi1rjSYLMUyWl0wtr5PrJWR33NmVqTWe7C9/+tXT99c5z3nOcx74+635F1YFjlQY3g5RzyEmCGOcQi6Mi4bYDojzwIQGoR8mhiBecwl+SNRMkuaTP0OKeJMjMEVzrkyYmgJp0psuTroXZkhr5gfIqINZRZAp3pwAzPWBuxmyxVnYBEtcsGws5KbByizIU311jqyqty4J1svDhjgo1L7NebBVOjvKwdMGxarvkr89JeCVp33aVabagVbwqXZInCN6j0q3olTQrcdUqwrDyRY4rdkzA+AvhLPqn6+EWu2p160NyqRRkV3sgmbxrkj7qjzekN9b4t+pgbuqt0vvgfw+1s5OaTxV7UU1vNLtXdJ+o+yC84fwVvrv1fso/S/KpycfwsqjVzf1qd+vbAe093cKRhzm0DssF3PmYCO6sJGZ2Kh0LFr/MYuFZmx0ExabhI3vx+LVSyzAkl3YpBCW2oC5yrBp4qZvwzIysNkRLEt6bi82z4llV2ILpLNI3KWqL8/DVhRhq0qwtdLNv44VJGAbW7BNQWxLFLa9HdspL8VhbHcrtlccr3RL07D9eg8+xA77sAppHVf/RCd2SvyaasxfjgXk41wbVqvb6uXjQj7WmIpd0r7L0mjRHdc6sJse7LZ2tUnnnm64rxseVWFPNNep/jN5f6mcXkv7nTx8kr9u3dQtD6Hg/6FHHr9q1zfphJVpb50gne9uQZ77tKcvgEXkL6Ksf4SH8FMzv3xDGJTPQQ8OwjicrX8AjjPpxgABAAAA3wHvAAUAAAAAAAIAAAABAAEAAABAAC4AAAAAeNp1kb1OwzAcxH8mBQkJVUwMnTwxIAFJ+SjtjIpAYoEKBsRAmhQiCoUkDGw8ASOPw8zHE/AGPAEzF8diQKr+sn2+3N3fdoAFXggwjXlgpFFjQ0u7Gs/Q5MnjgJBnjxus8OrxrDTfHs/J++PxG0tm0eN3QrPs8QdNc+Lxp3BS46+AlsnZJ6Kr2sZyQMaN1kMuyBnyQME6e0zEZlxrtQx45I6UNeFdsQWltBmx1KX4RHwsjeVM2lXaSj53iYX8Q67EVb5cTLU7kudS3rHrOV3X0zkjOqoum2wptaP3ma63/5JDVaRTh66m+07livU/JtzqPtZ7BspJ3Y1Tqaxu1dYcau5p7GjeUFV86EYi3UiJVffSvVeufql70f5f9jH3Yqreub6NfwEhnk4IAAAAeNptzkVvlGEUBeDnRVooUtzdnZmB4lakuLs7bXErrsE1EBJYQbANEFwDARZAcAsSYAFrNPwCgsy35Gye5CzuPfL5l18/NfC/fCLkC/nlV0BBKVIVUliaIooqprh0JZRUSmlllFVOeRVUVEllVVRVTXU11FRLbXXUVU/9P38aaqSxJppqprmYuIQWWsrQSmtttNVOex101ElnXWTqqpvuesjSUy+99dFXP/0NMNAggw0x1DDDjTDSKKONMdY4400w0SSTQwHHbLTJTfttttsOB51wPBS03Qcb7LPLAVvd8dEhJx112kP3nTHFVHtM89h0Dzzy3BNPPfPZDK+88NJZ2fZ667U3cnz13TYz5ZpljtnmOmyeBeZbaJE8iy2x1BfLrLDcSqutcs0Ra62xznrf/HDdOefd8M77kBJSQ6FQOKSFIqFoKBaKh/RQIpQMpUJpF1x0xVV3XXLZPVucCmXccjuUtTOUC+VDhZTs2cvn58STJFLz5ubGYpmxyO5/TcRisch4ZCKyRWTLyIzIVpGtI9tEto3MTBqP7sbjaTNys/MWTp82eVFOskpkJc1ImpHV7a9ZXZMT/pj4DdRYi6kAAA==) format('woff');
font-weight: normal;
font-style: normal;
}
[[To Do]]
[[Missing Tiddlers]]
1: Never bathes or changes clothes
2: Frets with hair or mustache
3: Speaks to someone who isn't there
4: Walks backward whenever possible
5: Never looks others in the eye
6: Gnashes teeth after each sentence
7: Spits out half of each mouthful of food and drink
8: Insults everyone when first addressing them
9: Touches whomever they speak to
10: Sees the spirits of the dead leaving their bodies
11: Faints when first subjected to bright light
12: Frequently licks their palms
13: Hears voices
14: Terrified of writing
15: Tastes objects
16: Stands too close to others
17: Breathes loudly
18: Drools constantly
19: Mumbles when speaking
20: Hops from place to place
1: Zoeyris
2: O'athga
3: Qualorem
4: Ingos
5: Moonscale
6: Schiroddra
7: Erosh
8: Baoldeneth
9: Kalari
10: Silverclaw
11: Quisulum
12: Grieves-At-Dusk
13: Zoslor
14: Kalkalenth
15: Sin'beldar
16: Aegariss
17: Needletooth
18: Tiachondan
19: Omat
20: Keeper-Of-Thought
21: Dragharoth
22: Essirise
23: Zyigetheld
24: Rey'orishi
25: Sliorithal
26: Vultsubai
27: Rhindani
28: Karaglen
29: Iluvira
30: Ishamakhas
31: Schaisos
32: Nyssyeran
.tooltip {
position: relative;
display: inline;
}
.tooltip .tooltiptext {
visibility: hidden;
position: absolute;
width: max-content;
max-width: 300px;
background-color: #555;
color: #fff;
display: inline;
font-style: normal;
font-size: 15px;
line-height: 22px;
font-weight: 400;
text-align: left;
padding: 5px 10px;
border-radius: 6px;
z-index: 1;
opacity: 0;
transition: opacity 0.3s;
}
.tooltip .tooltipwide {
visibility: hidden;
position: absolute;
width: 350px;
background-color: #555;
color: #fff;
font-style: normal;
font-size: 15px;
line-height: 22px;
font-weight: 400;
text-align: left;
padding: 5px 10px;
border-radius: 6px;
z-index: 1;
opacity: 0;
transition: opacity 0.3s;
}
.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
transition-delay: 1s;
transition-property: opacity;
}
.tooltip:hover .tooltipwide {
visibility: visible;
opacity: 1;
}
.tooltip-right {
top: -5px;
left: 125%;
}
.tooltip-right::after {
content: "";
position: absolute;
top: 50%;
right: 100%;
margin-top: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent #555 transparent transparent;
}
table.manager-table
{
table-layout: fixed;
width: 600px;
}
.dice-roller {
color: #007000;
font-weight: 600;
padding: 0;
}
.commas span:not(:last-child):after {content:", ";}
.lightweight {
font-weight: 300;
}
.xlightweight {
font-weight: 200;
color: #808080;
}
.big-text {
font-size: 1.1em;
}
.tc-site-subtitle, .tc-alert-subtitle {font-family: 'masoch-dirach'; font-size: 1.5em; font-variant: small-caps; font-weight:500;}
.tc-site-title, .tc-title {font-family: 'masoch-dirach'; font-variant: small-caps; font-weight:500;}
h1 {
font-family: 'masoch-dirach'; font-variant: small-caps; font-weight:500;
font-size: 2em;
border-bottom: 5px solid;
border-image-slice: 1;
border-width: 3px;
border-image-source: linear-gradient(to right, #c0c0c0, #ffffff);
}
h2 {
font-family: 'masoch-dirach'; font-variant: small-caps; font-weight:500;
font-size: 1.7em;
border-bottom: 3px solid;
border-image-slice: 1;
border-width: 3px;
border-image-source: linear-gradient(to right, #c0c0c0, #ffffff);
}
.tc-title, .tc-site-title {
border-bottom: none;
}
.alert-h1 {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-variant: normal;
border-bottom: none;
}
.alert-h2 {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-variant: normal;
border-image-source: linear-gradient(to right, #765f00, #ffe476);
}
.tc-sidebar-lists a.tc-tiddlylink {
color: <<colour sidebar-tiddler-link-foreground>>;
}
div.sidebar-map a.tc-tiddlylink {
color: black;
}
.graylink { text-decoration: none; font-weight: 600; color: #999; -webkit-user-select: inherit; }
.graylink:hover { text-decoration: underline; }
.blacklink { text-decoration: none; font-weight: 600; color: #182955; -webkit-user-select: inherit; }
.blacklink:hover { text-decoration: underline; }
.th-sticky {
position: -webkit-sticky;position: -moz-sticky;position: -o-sticky;position: -ms-sticky;position: sticky;top:76px; }
Unnamed forests on Argonnessen.
The following tiddlers were imported:
# [[$:/plugins/minrelevance.js]]
-44.12,-0.35,57.83,59,-18.63,14.49,32.34,44.16
\whitespace trim
<$scrollable fallthrough="none" class="tc-menubar-dropdown-sidebar">
<$list filter="[list<tv-story-list>]">
<$link/><br/>
</$list>
Unnamed mountains on Argonnessen.
{
"tiddlers": {
"$:/plugins/inmysocks/extrafilters/angreaterthan.js": {
"text": "/*\\\ntitle: $:/plugins/inmysocks/extrafilters/angreaterthan.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if an alphanumeric value is greater than an operand.\nHere greater than means comes after in an alphanumeric sort, so b > a and 2 > 10.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.angreaterthan = function(source,operator,options) {\n\tvar results = [],\n\tfieldname = (operator.suffix || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\tif(text.toLowerCase() <= operator.operand.toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\tif(text.toLowerCase() > operator.operand.toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n\n",
"title": "$:/plugins/inmysocks/extrafilters/angreaterthan.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/plugins/inmysocks/extrafilters/anlessthan.js": {
"text": "/*\\\ntitle: $:/plugins/inmysocks/extrafilters/anlessthan.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if an alphanumeric value is less than an operand. `lessthan` in this case means 'comes before in an alphabetical sort'.\nSo a < b and 10 < 2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.anlessthan = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\tif(text.toLowerCase() >= operator.operand.toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\tif(text.toLowerCase() < operator.operand.toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n\n",
"title": "$:/plugins/inmysocks/extrafilters/anlessthan.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/plugins/inmysocks/extrafilters/greaterthan.js": {
"text": "/*\\\ntitle: $:/plugins/inmysocks/extrafilters/greaterthan.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a numeric value is greater than an operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.greaterthan = function(source,operator,options) {\n\tvar results = [],\n\tfieldname = (operator.suffix || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\tif(Number(text) <= Number(operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\tif(Number(text) > Number(operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n\n",
"title": "$:/plugins/inmysocks/extrafilters/greaterthan.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/plugins/inmysocks/extrafilters/lessthan.js": {
"text": "/*\\\ntitle: $:/plugins/inmysocks/extrafilters/lessthan.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a numeric value is less than an operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lessthan = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\tif(Number(text) >= Number(operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\tif(Number(text) < Number(operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n\n",
"title": "$:/plugins/inmysocks/extrafilters/lessthan.js",
"type": "application/javascript",
"module-type": "filteroperator"
}
}
}
{"tiddlers":{"$:/plugins/kookma/commander/buttons/pagecontrol":{"title":"$:/plugins/kookma/commander/buttons/pagecontrol","caption":"{{$:/plugins/kookma/commander/images/file-alt}} {{$:/language/Buttons/Commander/Caption}}","created":"20190724145015836","description":"Open tiddler commander","list-after":"$:/core/ui/Buttons/advanced-search","modified":"20201002120203952","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\\define commander-button(class)\n<$button to=\"$:/Commander\" tooltip={{$:/language/Buttons/Commander/Hint}} aria-label={{$:/language/Buttons/Commander/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/kookma/commander/images/file-alt.svg}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Commander/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Commander]]\" emptyMessage=<<commander-button>>>\n<<commander-button \"tc-selected\">>\n</$list>\n"},"$:/plugins/kookma/commander/config/AutoFocus":{"title":"$:/plugins/kookma/commander/config/AutoFocus","created":"20190212055413944","modified":"20200324070652337","tags":"","type":"text/vnd.tiddlywiki","text":"yes"},"$:/plugins/kookma/commander/config/commonfields":{"title":"$:/plugins/kookma/commander/config/commonfields","created":"20200114192650891","modified":"20200324070652345","tags":"","type":"text/vnd.tiddlywiki","text":"created creator modified modifier revision bag"},"$:/plugins/kookma/commander/config/minlength":{"title":"$:/plugins/kookma/commander/config/minlength","created":"20200110122842113","modified":"20200324070652355","tags":"","type":"text/vnd.tiddlywiki","text":"3"},"$:/plugins/kookma/commander/config/relink":{"title":"$:/plugins/kookma/commander/config/relink","created":"20190911153159143","modified":"20200324070652362","tags":"","type":"text/vnd.tiddlywiki","text":"\\define relink-plugin-notExisted() Update title in //tags// and //list// fields of other tiddlers\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\">\n<$list filter=\"[[$:/plugins/flibbles/relink]] +[has[title]]\" emptyMessage=<<relink-plugin-notExisted>> >\nUse //Relink// to update title across all other tiddlers\n</$list>\n</$checkbox>"},"$:/plugins/kookma/commander/config/systemfields":{"title":"$:/plugins/kookma/commander/config/systemfields","created":"20200106164439016","modified":"20200324070652372","tags":"","type":"text/vnd.tiddlywiki","text":"title text tags \ncreated modified craetor modifier \ntype bag revision\nlist caption"},"$:/plugins/kookma/commander/field/macros/add":{"title":"$:/plugins/kookma/commander/field/macros/add","created":"20200112073000701","modified":"20200325055206697","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define add-new-field-bulk(datafieldsTid:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"add-new-field-bulk\">>\n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"newTitle\">\n<<add-bulk-fields>>\n<$wikify name=newFields text=<<getFieldsname>> >\n<$macrocall $name=\"log-add-single-operation\" msg={{{[<newFields>addprefix[new fields:]addsuffix[added]]}}} tidItem=<<newTitle>> />\n</$wikify>\n</$list>\n</$vars>\n</$list>\n\\end\n\n\\define getFieldsname()\n<$list filter=\"[<__datafieldsTid__>indexes[]prefix[fldn]]\" variable=item>\n{{{ [<__datafieldsTid__>getindex<item>trim[]lowercase[]split[ ]join[_]] }}} \n</$list>\n\\end"},"$:/plugins/kookma/commander/field/macros/bulkfields":{"title":"$:/plugins/kookma/commander/field/macros/bulkfields","created":"20200109104450902","modified":"20200913180532516","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define numfilter() [range[1,$(flt)$]]\n\\define id_fldName() fldn$(cnt)$\n\\define id_fldValue() fldv$(cnt)$\n\n\\define add-bulk-fields()\n<$set name=\"flt\" tiddler=<<datafieldsTid>> field=\"counter\" emptyValue=\"1\"><!-- when the datafieldsTid is not exist, there is at least one field row -->\n<$list filter=<<numfilter>> variable=\"cnt\">\n<$list filter=\"[<datafieldsTid>getindex<id_fldName>]\" variable=\"newField\">\n<$action-setfield $tiddler=<<newTitle>> \n $field={{{ [<newField>trim[]lowercase[]split[ ]join[_]] }}}\n $value={{{ [<datafieldsTid>getindex<id_fldValue>] }}} />\n</$list>\n</$list>\n</$set>\n\\end\n\n\\define getInputs()\n<$edit-text tiddler=<<datafieldsTid>> index=<<id_fldName>> tag=input default=\"\" placeholder=\"field name\" />\n<$edit-text tiddler=<<datafieldsTid>> index=<<id_fldValue>> tag=input default=\"\" placeholder=\"field value\"/>\n\\end\n\n\\define add-reset()\n<$button>insert\n<$action-setfield $tiddler=<<datafieldsTid>> counter={{{[<datafieldsTid>get[counter]add[1]]~[[2]]}}}/>\n</$button>\n<$button>reset\n<$action-setfield $tiddler=<<datafieldsTid>> counter=\"1\"/>\n<$action-setfield $tiddler=<<datafieldsTid>> text=\"\"/>\n</$button>\n\\end\n\n\\define create-field-inputbox()\n<$wikify name=flt text={{{ [<datafieldsTid>get[counter]]~[[1]] }}} >\n<$list filter=<<numfilter>> variable=cnt>\n\n<<getInputs>>\n</$list>\n</$wikify>\n\\end\n\n\\define add-more-fields-ui(datafieldsTid:\"\")\n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<<add-reset>>\n<<create-field-inputbox>>\n</$vars>\n\\end\n\n\\define add-more-fields-selective-ui(datafieldsTid:\"\", stateTiddler:\"$:/state/commander/tiddler-addfields-status\")\n<$checkbox \n tiddler=<<__stateTiddler__>>\n field=\"text\" \n checked=\"addfields\" unchecked=\"nofields\"\n default=\"nofields\" > \n Add fields\n</$checkbox>\n<$reveal type=\"match\" state=<<__stateTiddler__>> text=\"addfields\" default=\"nofields\" >\n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<<add-reset>>\n<div style=\"padding-left:88px;\">\n<<create-field-inputbox>>\n</div>\n</$vars>\n</$reveal>\n\\end"},"$:/plugins/kookma/commander/field/macros/remove":{"title":"$:/plugins/kookma/commander/field/macros/remove","created":"20200109083928203","modified":"20200325055328423","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define xx-add-new-field-bulk(newField:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__newField__>!is[blank]]\">\n<<create-log-tiddler \"add-new-field-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]+[!is[missing]]-[has:field[$newField$]]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-field\" $param=<<__newField__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"new field `$newField$` added\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\n\\define remove-old-field-bulk(oldField:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__oldField__>!is[blank]]\">\n<<create-log-tiddler \"remove-old-field-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]+[!is[missing]]+[has:field[$oldField$]]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-field\" $param=<<__oldField__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"old field `$oldField$` removed\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define set-field-value-bulk(fieldName:\"Empty\", fieldValue:\"Empty\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__fieldName__>!is[blank]]\" variable=null>\n<$list filter=\"[<__fieldValue__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"set-field-value-create-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]-[$fieldName$[$fieldValue$]]\">\n<$list filter=\"[<currentTiddler>has:field[$fieldName$]]\" variable=ignore \nemptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not `$fieldName$` field. Operation ignored//\" tidItem=<<currentTiddler>> />\"\"\" >\n<$action-setfield $field=<<__fieldName__>> $value=<<__fieldValue__>> />\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"field `$fieldName$` got a value\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/field/macros/rename":{"title":"$:/plugins/kookma/commander/field/macros/rename","created":"20200107051937869","modified":"20200325055328448","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define rename-field-bulk(oldField:\"\", newField:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore>\n<$list filter=\"[<__oldField__>!is[blank]]\" variable=null>\n<$list filter=\"[<__newField__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"rename-field-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"[<currentTiddler>has:field[$oldField$]]\" variable=ignore\n emptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not field `$oldField$`. Operation ignored.//\" tidItem=<<currentTiddler>> /> \"\"\">\n<$set name=oldValue tiddler=<<currentTiddler>> field=<<__oldField__>> >\t\n<$action-setfield $tiddler=<<currentTiddler>> $field=<<__newField__>> $value=<<oldValue>>/>\n</$set>\n<$action-deletefield $tiddler=<<currentTiddler>> $field=<<__oldField__>> />\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"fied `$oldField$` renamed to `$newField$`\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/field/macros/set":{"title":"$:/plugins/kookma/commander/field/macros/set","created":"20190212101155537","modified":"20200325055328470","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define set-field-value-bulk(fieldName:\"\", fieldValue:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__fieldName__>!is[blank]]\" variable=null>\n<$list filter=\"[<__fieldValue__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"set-field-value-create-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]-[$fieldName$[$fieldValue$]]\">\n<$list filter=\"[<currentTiddler>has:field[$fieldName$]]\" variable=ignore \nemptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not `$fieldName$` field. Operation ignored//\" tidItem=<<currentTiddler>> />\"\"\" >\n<$action-setfield $field=<<__fieldName__>> $value=<<__fieldValue__>> />\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"field `$fieldName$` got a value\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/field/ui":{"title":"$:/plugins/kookma/commander/field/ui","caption":"Field","created":"20190212061551615","list-after":"$:/plugins/kookma/commander/tag/ui","modified":"20200324070652439","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/FieldOps]!has[draft.of]]\"\ndefault:\"$:/plugins/kookma/commander/field/uicomp/add-fields\" \nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\"\n>>\n\n"},"$:/plugins/kookma/commander/field/uicomp/add-fields":{"title":"$:/plugins/kookma/commander/field/uicomp/add-fields","caption":"Add fields","created":"20200109083519146","modified":"20200325055328482","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<!-- create the interface-->\n<$macrocall $name=\"add-more-fields-ui\" datafieldsTid=\"$:/temp/commander/tiddler/datafields/addfield\" />\n\n\n<!-- call action macro -->\n<$button class=\"cmd-btn cmd-btn-wd\"> Add new fields\n<$macrocall $name=\"add-new-field-bulk\" \n datafieldsTid=\"$:/temp/commander/tiddler/datafields/addfield\" />\n</$button><br>\n,,Note: This will overwrite the existing fileds!,,"},"$:/plugins/kookma/commander/field/uicomp/remove-fields":{"title":"$:/plugins/kookma/commander/field/uicomp/remove-fields","caption":"Remove fields","created":"20190314051054548","list-after":"$:/plugins/kookma/commander/field/uicomp/add-fields","modified":"20200325055328489","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Old field</label><$select class=\"cmd-select-wd\" tiddler=\"$:/temp/commander/field-remove\" default=\"\">\n<$list filter=\"[subfilter<searchfilter>fields[]sort[]] -title -tags\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove old field\n<$macrocall $name=\"remove-old-field-bulk\" oldField={{$:/temp/commander/field-remove}} />\n</$button>"},"$:/plugins/kookma/commander/field/uicomp/rename-fields":{"title":"$:/plugins/kookma/commander/field/uicomp/rename-fields","caption":"Rename fields","created":"20200107052908832","list-after":"$:/plugins/kookma/commander/field/uicomp/remove-fields","modified":"20200325055328499","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Old field</label><$select class=\"cmd-select-wd\" \n tiddler=\"$:/temp/commander/rename-field/old\" default=\"\" >\n<$list filter=\"[subfilter<searchfilter>fields[]sort[]] -[<systemFieldsTid>get[text]split[ ]]\" > \n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n\n<label class=\"kk-cmd-label\">New field</label><$edit-text\ntiddler=\"$:/temp/commander/rename-field/new\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" new field name\"\n/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Rename field\n<$macrocall $name=\"rename-field-bulk\" \noldField={{$:/temp/commander/rename-field/old}} \nnewField={{{ [[$:/temp/commander/rename-field/new]get[text]lowercase[]trim[]split[ ]join[_]] }}} />\n</$button>\n\n<!-- new field name is checked to be lowecase and leading and trailing spaces are removed and space between words replaced by underscore (_).\n-->"},"$:/plugins/kookma/commander/field/uicomp/set-field-value":{"title":"$:/plugins/kookma/commander/field/uicomp/set-field-value","caption":"Set field value","created":"20190212120609737","list-after":"$:/plugins/kookma/commander/field/uicomp/rename-fields","modified":"20200325055328506","tags":"$:/tags/Commander/FieldOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Field name</label><$select class=\"cmd-select-wd\" \n tiddler=\"$:/temp/commander/field-name\" default=\"\" >\n<$list filter=\"[subfilter<searchfilter>fields[]sort[]] -[<systemFieldsTid>get[text]split[ ]]\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n\n<label class=\"kk-cmd-label\">Field value</label><$edit-text\ntiddler=\"$:/temp/commander/field-value\"\ntag=\"input\" default=\"\"\nclass=\"cmd-txt-area\" placeholder=\" field value\"/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Set field value\n<$macrocall \n $name=\"set-field-value-bulk\" \n fieldName={{$:/temp/commander/field-name}} \n fieldValue={{$:/temp/commander/field-value}} \n/>\n</$button>"},"$:/plugins/kookma/commander/filters/Drafts":{"title":"$:/plugins/kookma/commander/filters/Drafts","created":"20190214135512125","description":"{{$:/language/Filters/Drafts}}","filter":"[has[draft.of]sort[title]]","modified":"20200324070652476","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/geneal":{"title":"$:/plugins/kookma/commander/filters/geneal","created":"20190725091830350","description":"General filter","filter":"[all[shadows+tiddlers]search[your keywrods]]","modified":"20200324070652484","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/Missing":{"title":"$:/plugins/kookma/commander/filters/Missing","created":"20190214140029091","description":"{{$:/language/Filters/Missing}}","filter":"[all[missing]sort[title]]","modified":"20200324070652492","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/Orphans":{"title":"$:/plugins/kookma/commander/filters/Orphans","created":"20190214135426497","description":"{{$:/language/Filters/Orphans}}","filter":"[all[orphans]sort[title]]","modified":"20200324070652498","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/RecentSystemTiddlers":{"title":"$:/plugins/kookma/commander/filters/RecentSystemTiddlers","created":"20190214135950458","description":"{{$:/language/Filters/RecentSystemTiddlers}}","filter":"[has[modified]!sort[modified]limit[50]]","modified":"20200324070652508","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/RecentTiddlers":{"title":"$:/plugins/kookma/commander/filters/RecentTiddlers","created":"20190214135912493","description":"{{$:/language/Filters/RecentTiddlers}}","filter":"[!is[system]has[modified]!sort[modified]limit[50]]","modified":"20200324070652513","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/SessionTiddlers":{"title":"$:/plugins/kookma/commander/filters/SessionTiddlers","created":"20190214135831279","description":"Tiddlers modified since the wiki was loaded","filter":"[haschanged[]]","modified":"20200324070652525","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/StoryList":{"title":"$:/plugins/kookma/commander/filters/StoryList","created":"20190214135246552","description":"{{$:/language/Filters/StoryList}}","filter":"[list[$:/StoryList]] -$:/AdvancedSearch","modified":"20200324070652532","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/filters/temp-and-state":{"title":"$:/plugins/kookma/commander/filters/temp-and-state","created":"20190214141452091","description":"Temporary and state tiddlers","filter":"[prefix[$:/temp]] [prefix[$:/state]]","modified":"20200324070652542","tags":"$:/tags/Commander/Filter","type":"text/vnd.tiddlywiki"},"$:/plugins/kookma/commander/help/ui":{"title":"$:/plugins/kookma/commander/help/ui","caption":"Help","created":"20190314050052494","icon":"$:/core/images/help","list-after":"$:/plugins/kookma/commander/setting/ui","modified":"20200324070652550","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/Help]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/help/uicomp/quick-tutorial\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n\n\n"},"$:/plugins/kookma/commander/help/uicomp/quick-tutorial":{"title":"$:/plugins/kookma/commander/help/uicomp/quick-tutorial","caption":"Quick tutorial","created":"20190314050138754","modified":"20200325092740142","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"# Use ''Combo search'' to list possible tiddlers\n#* example: `concept` performs a standard search and find all matches in title, text, and tags\n#* example: `[tag[xx]]` finds all tiddlers tagged with //xx//\n#* example: `[prefix[tt]` finds all tiddlers have title started with //tt//\n#* example: `[has[draft.of]sort[title]]` finds all draft tiddlers\n\n# Use ''Select tiddlers'' for the resulting list to identify which specific tiddlers to do a batch operation on\n#* this step lets you to do a batch operation on selected tiddlers NOT all items by ''Combo search''!\n#* it is possible to select/deselect all tiddlers from ''Combo search'' result at once! Note that, by default all tiddlers are considered for bulk operation until selective operation is activated!\n# From ''Batch operations tabs'' select the batch operation you wish to perform on selected tiddlers\n#* example: title, tag, and field operations\n#* example: Snr operation\n#* Inspect tab can be used to inspect tiddlers before or after performing operations\n\n* Notes:\n** Multiple batch operations can be done on the same set (unless you change something in the search criteria)\n** Sometimes it is useful to use an intermediate batch to help, like tag tiddlers with a \"working\" tag, using multiple searches, then then use the \"working\" tag to apply a batch operation to\n\n<div class=\"commander-alert\">''Note'': For good operation a tiddler width of 800px is recommended. You can also use //Sidebar layout// as `Fluid story`.</div>\n\n\nFor detailed docummention go to [[Demo page|https://kookma.github.io/TW-Commander/]]\n\n!!! Footenote\n# [[Use filter expression|https://tiddlywiki.com/prerelease/#Filters:Filters%20%5B%5BFilter%20Expression%5D%5D%20%5B%5BFilter%20Syntax%5D%5D%20%5B%5BFilter%20Operators%5D%5D%20%5B%5BFilter%20Parameter%5D%5D%20%5B%5BFilter%20Run%5D%5D%20%5B%5BFilter%20Step%5D%5D%20%5B%5BFilter%20Whitespace%5D%5D]]"},"$:/plugins/kookma/commander/help/uicomp/regular-expression":{"title":"$:/plugins/kookma/commander/help/uicomp/regular-expression","caption":"Regular expressions","created":"20190314084511720","list-after":"$:/plugins/kookma/commander/help/uicomp/snr","modified":"20200325093450357","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"!! Regular Expressions Quick Reference\n\n|''FLAGS'' |<|<|h\n| i |ignore case|case insensitive matching|\n| |whole words|match strings of a-z, 0-9 and _|\n| g |global|field start=^, field end=$, all matches|\n| m |multi-line|line start=^, line end=$, first match|\n| |first match|field start=^, field end=$, first match|\n|''MATCH'' |<|<|h\n|''Anchors''|<|<|\n| ^ |start of scope|see Flags, match is zero length|\n| $ |end of scope|see Flags, match is zero length|\n| \\b |word boundary|anchor to edge of word, zero length|\n| \\B |not word boundary|anchor inside word, zero length|\n|''Character Classes''|<|<|\n| [c] |class of characters|any one matches, e.g. [abc123]|\n| [^c] |negated class of characters|any one doesn't match, e.g. [^abc123]|\n|''Shorthand Character Classes''|<|<|\n| . |any character except newline|same as [^\\n]|\n| \\d |decimal|same as [0-9]|\n| \\D |not decimal|same as [^0-9]|\n| \\s |white-space|same as [\\ \\t\\n]|\n| \\S |not white-space|same as [^\\ \\t\\n]|\n| \\t |tab|same as [\\t]|\n| \\n |newline|same as [\\n]|\n| \\w |word character|same as [a-zA-Z0-9_]|\n| \\W |not word character|same as [^a-zA-Z0-9_]|\n|''Capturing Groups''|<|<|\n| (match) |match placed in variable $x|can be used in Replace|\n| (\\x) |repeats match pattern of $x|can be used in Replace|\n|''Quantifiers''|<|<|\n| ? |single match|match 0 or 1 time|\n| * |greedy match 0+|match 0 or as many times as possible|\n| *? |lazy match 0+|match 0 or as few times as possible|\n| + |greedy match 1+|match 1 or as many times as possible|\n| +? |lazy match 1+|match 1 or as few times as possible|\n| {x} |match x times|match x times|\n| {x,y} |match x to y times|match x times to exactly y times|\n| {x,} |match x or more times|match x times or as many as possible|\n|''Escapes''|<|<|\n| \\ |escape special characters|add to \\ [ ] ( ) { } ^ $ . ? * + for literals|\n|''REPLACE'' |<|<|h\n| $& |return the full match|<|\n| $x |return $x where x is the numeric index of a Capturing Group|<|\n|''NOTE'' |<|<|h\n|This Reference supports most ordinary uses of regular expressions.<br> For advanced options: [[MDN Reference|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Using_simple_patterns]]; examples: [[regular-expressions.info|https://www.regular-expressions.info/tutorial.html]].|<|<|\n\n"},"$:/plugins/kookma/commander/help/uicomp/relink":{"title":"$:/plugins/kookma/commander/help/uicomp/relink","caption":"Relink on rename","created":"20190912052826269","list-after":"$:/plugins/kookma/commander/help/uicomp/regular-expression","modified":"20200325093202388","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"!! Relink on rename\nWhen Tiddler Commander is used to rename bulk tiddlers in operation like\n\n* Title operation\n** add/remove prefix\n** add/remove suffix\n** remove chars from the begining or end of title\n* ~SnR\n** Search and replace in tiddlers title\n\nIt is possible to update all links to title. This includes //tags// and //list//. If [[Relink|https://flibbles.github.io/tw5-relink/]] plugin is installed, then not only title will be updated in //tags// and //list// field, but also in all filters, transclusions, text field and evrywhere.\n\n<div class=\"commander-alert\"> ''Note'': Relink does not update all forms of title e.g those created from different segments, but it will update any occurances</div>\n\n\n!! How to integrate with ''Relink''?\n\nSimply install the [[Relink|https://flibbles.github.io/tw5-relink/]] plugin and it will be appeared as an option when Tiddler Commander title operations including ~SnR are performed!\n"},"$:/plugins/kookma/commander/help/uicomp/snr":{"title":"$:/plugins/kookma/commander/help/uicomp/snr","caption":"Search-n-Replace","created":"20190307104654008","list-after":"$:/plugins/kookma/commander/help/uicomp/quick-tutorial","modified":"20200925143424505","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":"!! Search and replace using Snr\nSnr stands for search and replace, is a powerful tool uses regular expression for searching all fields and lets replace chars, words, phrases with new values.\n\n!! How to use\n* Enter a search filter or keywords in ''Combo search'' box like `[tag[myTag]]` or `concept`\n* Use ''Select tiddlers'' for the resulting list to identify which specific tiddlers to do a Snr operation on\n** If selective operation is unchecked, all tiddlers from step one will be included in Snr operation.\n* From ''Tiddler title'' drop down menu select a tiddler\n* From ''Field name'' drop down menu select a tiddler field like `text`\n** all fileds even `title` can be selected\n* In the ''Search text'' type the search term for example `this`\n* In the ''Replace with'' type the term you want to replace with like `that`\n* Check the ''Differences'' and if you are satisfied with the result, press the `Replace?` button\n* You can press `Replace all?` if you want to search and replace in all selected tiddlers\n\n;Remarks\n: The `Replace all?` lets you to search and replace in all selected tiddlers at once! It is possible to search and replace even in `title` field!\n\n<$list filter=\"[[snr.png]is[tiddler]]\"><<image-pretty img:\"snr.png\" width:\"60%\" align:\"center\" caption:\"Fig 1. Search and replace using regular expression\">></$list>\n\n!! Special characters\n<<<\nAs `SNR` uses ''regexp'' pattern to make search and replace, when special characters are used in the ''Search text'' box, they shall be escaped among them are `*`, `+`, `[]`, `?` ...\nTo use these characters do like below\n\n```\n\\[ \\] \\( \\) \\{ \\} \\. \\* \\+ \\? \\^ \\$ \\\\ \\|\n```\n<<<\n\n!! Warning\n<<<\n* SNR replace the contents of tiddlers.<br> ''//The action can not be undone//''. So always make a backup before performing any replace action\n<<<"},"$:/plugins/kookma/commander/help/uicomp/warning":{"title":"$:/plugins/kookma/commander/help/uicomp/warning","caption":"Warning","created":"20200325092841002","list-after":"$:/plugins/kookma/commander/help/uicomp/relink","modified":"20200325093538187","tags":"$:/tags/Commander/Help","type":"text/vnd.tiddlywiki","text":";Note i\n:Tiddler Commander is a very powerful tool, it can change any field in any tiddler.// Make sure what you are doing//!\n\n;Note ii\n:Tiddler Commander uses two steps tiddler selection. It uses a combo search box to screen (using standard or filter search) possible tiddlers and then uses a selective list of tiddlers from first step for batch operation!\n:# If selective operation is unchecked, then all tiddlers from step one are used for batch operation\n:# If selective operation is checked, then user has to manually select among tiddlers, and the selected ones are used for batch operation \n\n;Note iii\n://Commander do not perform operation on shadow tiddlers//, unless they are overriden. Because shadow tiddlers aren’t stored as ''real'' tiddlers. They are intentionally excluded from most operations by default so that they don’t clutter filters made by users unless explicitly required. \n\n<div class=\"commander-alert\">''Warning''\nBefore using Tiddler commander for bulk operation on your own valuable, irreplaceable data, ''backup them''.\n</div>"},"$:/plugins/kookma/commander/history":{"title":"$:/plugins/kookma/commander/history","created":"20200324061906253","modified":"20200325105816374","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Commander/#ChangeLog\n\n* ''2.1.0'' -- 2020.03.25 -- stable release\n* ''0.1.0'' -- 2019.02.12 -- mature public release\n"},"$:/plugins/kookma/commander/images/file-alt.svg":{"title":"$:/plugins/kookma/commander/images/file-alt.svg","caption":"file-alt (Regular)","created":"20190724144859943","modified":"20201002120229934","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-image-file-alt tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 384 512\"><path d=\"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\"/></svg>"},"$:/plugins/kookma/commander/inspect/comp/edit-fileds":{"title":"$:/plugins/kookma/commander/inspect/comp/edit-fileds","created":"20190313061511585","modified":"20200325055328517","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}] \n\\end\n\n\\define new-field()\n<$vars name={{$:/temp/newfieldname}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button class=\"cmd-btn\">\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button class=\"cmd-btn\">\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\n\\define compInspect-edit-fileds(commonFields:\"\")\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n\n\n<$list filter=\"created creator modified modifier -[enlist<__commonFields__>]\" variable=\"currentField\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n\n\n\n\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span>\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"$:/temp/newfieldname\">\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n\\end"},"$:/plugins/kookma/commander/inspect/comp/edit-preview":{"title":"$:/plugins/kookma/commander/inspect/comp/edit-preview","created":"20200115050859257","modified":"20200325055328524","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compInspect-edit-preview(tiddler, commonFields:\"\")\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<tr class=\"tc-edit-field\"><td class=\"tc-edit-field-name\">title:</td>\n<td class=\"tc-edit-field-value\"><$link to=<<__tiddler__>> ><$text text=<<__tiddler__>> /></$link></td>\n</tr>\n<tr class=\"tc-edit-field\"><td class=\"tc-edit-field-name\">tags:</td>\n<td class=\"tc-edit-field-value\">{{$tiddler$||$:/core/ui/EditTemplate/tags}}</td>\n</tr>\n<tr class=\"tc-edit-field\"><td class=\"tc-edit-field-name\">text:</td>\n<td class=\"tc-edit-field-value\"><$macrocall $name=compInspect-get-field tiddler=<<__tiddler__>> field=\"text\" tag=\"textarea\" /></td>\n</tr>\n</tbody>\n</table>\n</div>\n\n<$tiddler tiddler=<<__tiddler__>> >\n<$macrocall $name=\"compInspect-edit-fileds\" commonFields=<<__commonFields__>> />\n</$tiddler>\n\\end\n\n\\define compInspect-get-field(tiddler, field, tag:\"input\") \n<$edit-text class=\"tc-edit-texteditor\" tiddler=<<__tiddler__>> field=<<__field__>> tag=<<__tag__>> default=\"\" placeholder={{$:/language/EditTemplate/Body/Placeholder}}/>\n\\end"},"$:/plugins/kookma/commander/inspect/comp/main":{"title":"$:/plugins/kookma/commander/inspect/comp/main","created":"20190308151331101","modified":"20200325055328536","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compInspect(filter, stateTiddler:\"thisTiddler\")\n<$set name=\"state\" \n value={{{ [[$:/state/compInspect/]addsuffix<__stateTiddler__>] }}} >\n<$vars\n slStateTid={{{ [<state>addsuffix[/]addsuffix[selectState-tiddler]] }}}\n rvStateTid={{{ [<state>addsuffix[/]addsuffix[revealState-tiddler]] }}}\n chStateTid={{{ [<state>addsuffix[/]addsuffix[checkboxState-tiddler]] }}} >\n\nSelect tiddler <$macrocall $name=compSelect filter=<<__filter__>> stateTiddler=<<slStateTid>> />\n \n<$macrocall $name=\"check-common-fields\" stateTiddler=<<chStateTid>> />\n \n<$reveal stateTitle=<<rvStateTid>> type=\"nomatch\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<<rvStateTid>> setTo=\"edit\" tooltip=\"edit tiddler\">{{$:/core/images/edit-button}}</$button>\n<$macrocall $name=compInspect-show-preview tiddler={{{ [<slStateTid>get[text]]+[subfilter<__filter__>] }}} commonFields={{{ [<chStateTid>get[text]] }}}/>\n</$reveal>\n<$reveal stateTitle=<<rvStateTid>> type=\"match\" text=\"edit\">\n<$button class=\"tc-btn-invisible\" setTitle=<<rvStateTid>> setTo=\"\" tooltip=\"confirm changes\">{{$:/core/images/done-button}}</$button>\n<$macrocall $name=compInspect-edit-preview tiddler={{{ [<slStateTid>get[text]]+[subfilter<__filter__>] }}} commonFields={{{ [<chStateTid>get[text]] }}}/>\n</$reveal>\n\n</$vars>\n</$set>\n\\end\n\n\\define check-common-fields(stateTiddler)\n<$vars commonFields={{{[<commonFieldsTid>get[text]]}}}>\n<$checkbox \n tiddler=<<__stateTiddler__>>\n field=\"text\" \n checked=<<commonFields>>\n unchecked=\"\"\n default=\"\"\n> Exclude common fields?</$checkbox>\n</$vars>\n\\end"},"$:/plugins/kookma/commander/inspect/comp/select":{"title":"$:/plugins/kookma/commander/inspect/comp/select","created":"20190308070713468","modified":"20200325055328546","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compSelect(filter:\"\", stateTiddler:\"\", default:\"\", class:\"\", showButtons:\"show\")\n<$select tiddler=<<__stateTiddler__>> default=<<__default__>> class=<<__class__>> >\n<option value=\"\">None</option>\n<$list filter=<<__filter__>> variable=item>\n<option value=<<item>>><$text text=<<item>> /></option>\n</$list>\n</$select>\n<$reveal type=\"match\" text=\"show\" default=<<__showButtons__>> >\n<$vars myfilter=<<__filter__>> mystateTiddler=<<__stateTiddler__>> myitem={{{ [<__stateTiddler__>get[text]] }}} >\n<$button actions=<<cs-prev-item>> class=\"cmd-btn\"> prev </$button>\n<$button actions=<<cs-next-item>> class=\"cmd-btn\"> next </$button>\n</$vars>\n</$reveal>\n\\end\n\n\\define cs-prev-item()\n<$list filter=\"[subfilter<myfilter>] +[before<myitem>]\" variable=\"prev-item\" >\n<$action-setfield $tiddler=<<mystateTiddler>> text=<<prev-item>> />\n</$list>\n\\end\n\n\\define cs-next-item()\n<$list filter=\"[subfilter<myfilter>] +[after<myitem>]\" variable=\"next-item\" >\n<$action-setfield $tiddler=<<mystateTiddler>> text=<<next-item>> />\n</$list>\n\\end\n\n<!-- used by\n - $:/plugins/kookma/commander/compInspect/main\n-->"},"$:/plugins/kookma/commander/inspect/comp/show-preview":{"title":"$:/plugins/kookma/commander/inspect/comp/show-preview","created":"20190308070953891","modified":"20200325055328553","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compInspect-show-preview(tiddler, commonFields:\"\")\n<$vars mainFields=\"title tags text\">\n<table class=\"cmd-ci-table\">\n<tr><td class=\"leftcol\">title</td>\n<td class=\"rightcol\"><$link to=<<__tiddler__>> ><$text text=<<__tiddler__>> /></$link></td>\n</tr>\n\n<tr><td class=\"leftcol\">tags</td>\n<td style=\"padding:3px;\"><$macrocall $name=showTags tiddler=<<__tiddler__>> /></td>\n</tr>\n<tr><td class=\"leftcol\">text</td>\n<td><$transclude tiddler=<<__tiddler__>> field=\"text\" mode=\"block\"/></td>\n</tr>\n<$list filter=\"[<__tiddler__>fields[]] -[enlist<mainFields>] -[enlist<__commonFields__>]\" variable=\"otherFld\">\n<tr><td class=\"leftcol\"><<otherFld>></td>\n<td class=\"rightcol\"><$transclude tiddler=<<__tiddler__>> field=<<otherFld>> mode=\"inline\"/></td>\n</tr>\n</$list>\n</table>\n</$vars>\n\\end\n\n\\define showTags(tiddler)\n<$list filter=\"[<__tiddler__>tags[]]\" variable=tagItem >\n<$macrocall $name=tag tag=<<tagItem>> />\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/inspect/ui":{"title":"$:/plugins/kookma/commander/inspect/ui","caption":"Inspect","created":"20190313075823496","list-after":"$:/plugins/kookma/commander/field/ui","modified":"20200325055328564","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/InspectOps]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/inspect/uicomp/Inspection\"\nclass:\"tc-vertical cmd-tab-wd\">>\n"},"$:/plugins/kookma/commander/inspect/uicomp/Inspection":{"title":"$:/plugins/kookma/commander/inspect/uicomp/Inspection","caption":"Inspect","created":"20190313080119081","modified":"20200325055328571","tags":"$:/tags/Commander/InspectOps","type":"text/vnd.tiddlywiki","text":"<$macrocall \n $name=compInspect\n filter=<<searchfilter>>\n stateTiddler=\"commander\"\n/>"},"$:/plugins/kookma/commander/license":{"title":"$:/plugins/kookma/commander/license","created":"20200324061906254","modified":"20200324061959559","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2018-2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/commander/log/ui":{"title":"$:/plugins/kookma/commander/log/ui","caption":"Log status","created":"20190221152805807","modified":"20200324070652656","tags":"","type":"text/vnd.tiddlywiki","text":"<div class=\"commander-alert\" style=\"padding:5px;font-size:0.90em;\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" actions=<<delete-all-log-tiddlers>>>Clear log</$button>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[tag[$:/tags/Commander/LogOps]]\" />\"\"\">\n<div class=\"tc-search-results\">\n<span class=\"kk-commander-log-note\">Recent number of operations: <<resultCount>></span><br>\n<$list filter=\"[tag[$:/tags/Commander/LogOps]] +[!sort[created]]\" variable=\"logTid\">\n<b><$view tiddler=<<logTid>> field=\"created\" format=\"date\" template=\"YYYY-0MM-0DD 0hh:0mm:0ss\"/> \n<$view tiddler=<<logTid>> field=\"caption\">\n <$view tiddler=<<logTid>> field=\"title\"></$view>\n</$view>\n</b>\n<ol><$list filter=\"[<logTid>indexes[]]\" variable=\"item\">\n<li><$link to=<<item>>><<item>></$link>\n<$set name=\"myItem\" tiddler=<<logTid>> index=<<item>> >\n<$list filter=\"[<myItem>!search[existed]]\" variable=\"ignore\" \n emptyMessage=\"\"\"<span style=\"color:red;\"><<myItem>></span>\"\"\" >\n<span class=\"kk-commander-log-item\"><<myItem>></span>\n</$list>\n</$set>\n</li>\n</$list></ol>\n</$list>\n</div>\n</$set>\n</div>"},"$:/plugins/kookma/commander/macros/compConfirmAction":{"title":"$:/plugins/kookma/commander/macros/compConfirmAction","created":"20190301145916990","modified":"20200324070652662","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define compConfirmAction(\nbtnLabel:\"Delete these tiddlers\", \nconfirmMessage:\"Are you sure you wish to delete\", \nstateTiddler:\"\"\ncountFilter:\"\", \nactionMacro:\"\")\n<$set name=resultCount value={{{ [subfilter<__countFilter__>count[]] }}} >\n<$reveal type=\"gt\" text=\"0\" default=<<resultCount>> >\n<$button popup=<<qualify \"\"\"$stateTiddler$\"\"\">> class=\"cmd-btn\">$btnLabel$</$button>\n</$reveal>\n<$reveal state=<<qualify \"\"\"$stateTiddler$\"\"\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n$confirmMessage$ <<resultCount>> tiddler(s)?\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"cmd-btn\"> $btnLabel$\n<$macrocall $name=<<__actionMacro__>> />\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end"},"$:/plugins/kookma/commander/macros/definition":{"title":"$:/plugins/kookma/commander/macros/definition","created":"20200102195320611","description":"some macro are not used REMOVE THEM","modified":"20200325055328579","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define tempPath() $:/temp/commander\n\n\\define searchboxTid() $(tempPath)$/search-box\n\\define selectiveOpsTid() $(tempPath)$/selective-operation\n\n\n\\define workingTag() $:/tags/Commander/Working\n\\define exportTagTid() $:/temp/commander/exportTag\n\\define systemFieldsTid() $:/plugins/kookma/commander/config/systemfields\n\\define commonFieldsTid() $:/plugins/kookma/commander/config/commonfields"},"$:/plugins/kookma/commander/macros/logging":{"title":"$:/plugins/kookma/commander/macros/logging","created":"20190221163406469","modified":"20200325055356563","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define set-title() $:/temp/commander/logs/tid-{{{[tag[$:/tags/Commander/LogOps]count[]add[1]]}}}\n\n\\define create-log-tiddler(msg)\n<$wikify name=\"myTitle\" text=\"\"\"<<set-title>>\"\"\">\n<$wikify name=\"myCaption\" text=\"\"\"<$macrocall $name=\"set-caption\" msg=<<__msg__>> />\"\"\">\n<$action-createtiddler $basetitle=<<myTitle>>\n$savetitle=\"$:/state/commander/log-tiddler\"\ntags=\"$:/tags/Commander/LogOps\"\ntype=\"application/json\"\ncaption=<<__msg__>>\n/>\n</$wikify>\n</$wikify>\n\\end\n\n\\define log-add-single-operation(msg:\"commander operation\", tidItem:\"no item\")\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=<<__tidItem__>> $value=<<__msg__>> />\n\\end\n\n\n\\define delete-all-log-tiddlers()\n<$action-deletetiddler $filter=\"[tag[$:/tags/Commander/LogOps]]\" />\n\\end"},"$:/plugins/kookma/commander/macros/remove-workingtag":{"title":"$:/plugins/kookma/commander/macros/remove-workingtag","created":"20200103172259595","modified":"20200325055328597","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define remove-working-tag(oldTag)\n<$list filter=\"[all[shadows+tiddlers]tag<workingTag>limit[1]]\" variable=ignore>\n<<create-log-tiddler \"remove-workingTag\">>\n<$list filter=\"[all[shadows+tiddlers]tag<workingTag>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<__oldTag__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"working tag `$oldTag$` removed\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n\\end\n\n\n"},"$:/plugins/kookma/commander/macros/slider":{"title":"$:/plugins/kookma/commander/macros/slider","created":"20200105085554618","modified":"20200325065829776","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define commander-slider(title, default:\"closed\")\n<$set name=\"revealState\" value=<<qualify \"$:/state/commander/reveal/$title$\">>>\n<h2>\n <$reveal type=\"nomatch\" state=<<revealState>> text=\"open\" default=\"$default$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"open\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$default$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"closed\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <$view tiddler=\"$title$\" field=\"caption\">\n <$view tiddler=\"$title$\" field=\"title\"></$view>\n </$view>\n \n</h2>\n\n<$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$default$\">\n<$transclude tiddler=\"$title$\" mode=\"block\" />\n</$reveal>\n</$set>\n\\end"},"$:/plugins/kookma/commander/macros/utility":{"title":"$:/plugins/kookma/commander/macros/utility","created":"20190315092752816","modified":"20200325055356631","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define display(label,text)\n<$set name=\"stateTid\" value=\"$:/temp/commander/display/popup/$label$\" >\n<$button popup=<<stateTid>> class=\"tc-btn-invisible\"><span style=\"text-decoration: underline\">$label$</span></$button>\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<stateTid>> animate=\"yes\">\n<span style=\"color:blue;\"><$text text=<<__text__>> /></span></$reveal>\n</$set>\n\\end\n\n\\define is-filterSeearch-newer-than-selectedTitles(TidA, TidB)\n<$set name=\"tidAMod\" value={{{ [[$TidA$]get[modified]] }}}>\n<$set name=\"tidBMod\" value={{{ [[$TidB$]get[modified]] }}}>\n<$set name=\"tidAText\" value={{{ [[$TidA$]get[text]] }}}>\n<$set name=\"tidBText\" value={{{ [[$TidB$]get[text]] }}}>\n<$list filter=\"[<__TidB__>get[text]minlength[1]]\" variable=ignore>\n<$reveal type=\"nomatch\" default=<<tidAText>> text=<<tidBText>>>\n<$list filter=\"[<tidAMod>] [<tidBMod>] +[nsort[]last[1]removesuffix<tidBMod>]\">\nA new filter search has been detected, click on the search button to apply it.\n</$list>\n</$reveal>\n</$list>\n</$set>\n</$set>\n</$set>\n</$set>\n\\end\n\n!!Remarks\n;is-filterSeearch-newer-than-selectedTitles\n* Checks `TidA` and `TidB` for modified date and text\n* If They are not empty, then\n** checks if the text of two are equal, if not\n** checks to see if `TidB` is newer or not\n** if newer shows a message, to apply the new search filter\n* Note\n** `TidA=\"$:/temp/commander\"`\n** `TidB=\"$:/temp/commander/search-box\"`\n* is-filterSeearch-newer-than-selectedTitles is called from $:/plugins/kookma/commander/search/ui\n\n;display\n* gets a label and a text\n* create an inline label\n* on click label, the text is displayed as temporary popup\n* losing focus, the text goes hidden\n* this macro is used in customized compSelective to show the active filter"},"$:/plugins/kookma/commander/readme":{"title":"$:/plugins/kookma/commander/readme","created":"20200324061906254","modified":"20201002120229880","tags":"","type":"text/vnd.tiddlywiki","text":"<style>\n.cmd-doc svg{\nwidth: 1.2em;\nheight: 1.2em;\nvertical-align: middle;}\n</style>\n; Tiddler Commander\nTiddler Commander, in short ''Commander'' is a unique tool for batch operations on tiddlers. Commander has the below features\n\n* Bulk tiddler creation/deletion\n* Combo search to filter and select tiddlers\n* Title operation: add, remove prefixes and suffixes, also remove cahras form begining and end of title (on renaming tiddlers, [[relink|$:/plugins/kookma/commander/help/uicomp/relink]] can be used to update title in other tiddlers)\n* Tag operation: add, remove, replace\n* Field operation: add, remove, rename, and set field value\n* SNR, search and replace in all fields including text, tags, //title//, and common fields\n* Inspect, to review and inspect tiddlers in one place, scroll among them and edit all fields (including common fields), tags, text (title is an exception!)\n* Log, create logs of all operations\n* Search, //save and load// any combination of filter search\n\n; Start Commander\n* Normally Commander adds its icon: <span class=\"cmd-doc\">{{$:/plugins/kookma/commander/images/file-alt.svg}}</span> to page controls.\n* Open the right sidebar and click on the <span class=\"cmd-doc\">{{$:/plugins/kookma/commander/images/file-alt.svg}}</span> Commander is started\n* In standard Tiddlywiki, control buttons are shown on the right sidebar under site title.\n\n; Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Commander/\n* Code: https://github.com/kookma/TW-Commander\n"},"$:/plugins/kookma/commander/search/filter-button/clear":{"title":"$:/plugins/kookma/commander/search/filter-button/clear","created":"20190214132946159","list-after":"$:/plugins/kookma/commander/search/filter-button/search","modified":"20200325055356645","tags":"$:/tags/Commander/Search/FilterButton","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n\n<$reveal type=\"nomatch\" stateTitle=<<searchboxTid>> stateField=\"text\" text=\"\">\n<$button class=\"tc-btn-invisible\" tooltip=\"clear search box and selected tiddlers\">\n<$action-setfield $tiddler=<<searchboxTid>> $field=\"text\" $value=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/commander\" $field=\"text\" $value=\"\"/>\n<$action-setfield $tiddler=\"$:/state/commander/snr/select-tiddler\" $field=\"text\" $value=\"\"/><!-- SNR selection -->\n<$action-setfield $tiddler=\"$:/state/compInspect/temp/commander/selectState-tiddler\" $field=\"text\" $value=\"\"/> <!-- Inspect selection -->\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n\n<!--\nthere is extra action should be removed\n-->"},"$:/plugins/kookma/commander/search/filter-button/dropdown":{"title":"$:/plugins/kookma/commander/search/filter-button/dropdown","created":"20190214133424013","modified":"20200325055328632","tags":"$:/tags/Commander/Search/FilterButton","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/commander/filterDropdown\">> class=\"tc-btn-invisible\" tooltip=\"select a search filter\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/commander/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<searchboxTid>> >\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Commander/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>"},"$:/plugins/kookma/commander/search/filter-button/save":{"title":"$:/plugins/kookma/commander/search/filter-button/save","created":"20190214141644228","list-after":"$:/plugins/kookma/commander/search/filter-button/clear","modified":"20200325055356657","tags":"$:/tags/Commander/Search/FilterButton","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n\n<$reveal type=\"nomatch\" stateTitle=<<searchboxTid>> stateField=\"text\" text=\"\">\n<$button class=\"tc-btn-invisible\" tooltip=\"save current search\" popup=<<qualify \"$:/state/commander/SaveDropdown\">> >\n{{$:/core/images/file}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/commander/SaveDropdown\">> type=\"popup\" class=\"tc-popup-keep\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\nSave new search filter<br><br>\n<$edit-text\ntiddler=\"$:/temp/commander/save-new-filter\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\"description for new filter\"\n/> <br><br>\n\n<$button class=\"tc-btn\"> Save new filter\n<$macrocall $name=\"create-new-filter\" \n description={{$:/temp/commander/save-new-filter}} \n\tbasetitle=\"$:/plugins/kookma/commander/filters/yourFilter\" \n\tfilter={{{[<searchboxTid>get[text]]}}} \t/>\n<$action-deletetiddler $tiddler=\"$:/temp/commander/save-new-filter\"/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/commander/SaveDropdown\">> />\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n\n<!-- ToDO\ncorrect classes for textbox\n-->"},"$:/plugins/kookma/commander/search/macros/create-new-filter":{"title":"$:/plugins/kookma/commander/search/macros/create-new-filter","created":"20190214142032323","modified":"20200325055356665","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define create-new-filter(description:\"\", basetitle:\"\", filter:\"\")\n<$list filter=\"[<__description__>!is[blank]]\" variable=\"ignore\">\n<$action-createtiddler \n $basetitle=\"\"\"$basetitle$\"\"\"\n tags=\"$:/tags/Commander/Filter\"\n description=<<__description__>>\n filter=\"\"\"$filter$\"\"\"\n /> \n</$list>\n\\end\n"},"$:/plugins/kookma/commander/search/macros/select-deselect":{"title":"$:/plugins/kookma/commander/search/macros/select-deselect","created":"20200106121946448","modified":"20200325055328657","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define select-all()\n<$list filter=\"[subfilter<filtertext>!is[missing]!tag<workingTag>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<workingTag>> />\n</$fieldmangler>\n\\end\n\n\\define deselect-all()\n<$list filter=\"[tag<workingTag>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<workingTag>> />\n</$fieldmangler>\n\\end"},"$:/plugins/kookma/commander/search/macros/warning":{"title":"$:/plugins/kookma/commander/search/macros/warning","created":"20200106143244633","modified":"20200325055328672","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define warn-for-selectedTids-from-previous-operation()\n<$list filter=\"[tag<workingTag>]-[subfilter<filtertext>]+[count[]!match[0]] \">\n<span style=\"color:red;font-size:0.85em\">There are remained selected tiddlers from previous search! Remove them by pressing ''deselect all''!</span>\n</$list>\n\\end"},"$:/plugins/kookma/commander/search/selection":{"title":"$:/plugins/kookma/commander/search/selection","caption":"Select tiddlers","created":"20190725144912018","modified":"20200325055328684","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n<$checkbox tiddler=<<selectiveOpsTid>> field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\" uncheckactions=<<deselect-all>> > Selective operation?</$checkbox>\n\n<$reveal type=\"nomatch\" stateTitle=<<selectiveOpsTid>> stateField=\"text\" text=\"yes\" tag=\"div\" class=\"kk-commander-tiddler-list kk-commander-columns3\">\n<$list filter=\"[subfilter<filtertext>!prefix[$:/temp/commander]!is[missing]]\"><$link/><br></$list>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<selectiveOpsTid>> stateField=\"text\" text=\"yes\" tag=\"div\">\n<$button actions=<<select-all>> > Select all</$button> <$button actions=<<deselect-all>> > Deselect all</$button>\n<small style=\"margin-left:10px;\">Number of tiddlers selected: <$count filter=\"[tag<workingTag>]\" /></small><br>\n<<warn-for-selectedTids-from-previous-operation>>\n</$reveal>\n\n\n<$reveal type=\"match\" stateTitle=<<selectiveOpsTid>> stateField=\"text\" text=\"yes\" tag=\"div\" class=\"kk-commander-tiddler-list kk-commander-columns3\">\n<$list filter=\"[subfilter<filtertext>!prefix[$:/temp/commander]!is[missing]]\">\n<$checkbox tag=<<workingTag>>> <$link/></$checkbox><br>\n</$list>\n</$reveal>\n\n<!-- Description\nThis tiddler implement interface to selectivly add tiddlers for commander operations.\nEach selected tiddler gets a working tag\n-->"},"$:/plugins/kookma/commander/search/ui":{"title":"$:/plugins/kookma/commander/search/ui","caption":"Commander filter search","created":"20190212055219117","modified":"20200325055356672","type":"text/vnd.tiddlywiki","text":"\\import $:/plugins/kookma/commander/macros/definition\n<!-- above statement is not required and only prevent this tiddler overwritten when this is opened by its own -->\n<div class=\"tc-search tc-advanced-search\" style=\"margin-bottom:-12px;\"><!-- negative margin for displaying matches -->\nCombo search <$edit-text tiddler=<<searchboxTid>> type=\"search\" tag=\"input\" default=\"\" placeholder=\"enter keywords or make a filter search e.g. [tag[myTag]]\" focus={{$:/plugins/kookma/commander/config/AutoFocus}}/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Commander/Search/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>"},"$:/plugins/kookma/commander/setting/ui":{"title":"$:/plugins/kookma/commander/setting/ui","caption":"Setting","created":"20190214140835173","icon":"$:/core/images/options-button","list-after":"$:/plugins/kookma/commander/inspect/ui","modified":"20200324070652760","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/Setting]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/setting/uicomp/snr\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n"},"$:/plugins/kookma/commander/setting/uicomp/delete-all-temp-tiddlers":{"title":"$:/plugins/kookma/commander/setting/uicomp/delete-all-temp-tiddlers","caption":"Temporary tiddlers","created":"20190301184304348","list-after":"$:/plugins/kookma/commander/setting/uicomp/relink","modified":"20200325055328690","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"\\define delete-all-temps()\n<$action-deletetiddler $filter=\"[search:title[$:/temp/commander/]]\" />\n\\end\n\n<$set name=numTids value={{{ [search:title[$:/temp/commander/]count[]] }}}>\n<$reveal type=\"match\" text=\"0\" default=<<numTids>> >\nNo temporary tiddlers is existed to delete!\n</$reveal>\n<$reveal type=\"gt\" text=\"0\" default=<<numTids>> >\nNumber of temporary tiddlers (including log tiddlers): <<numTids>><br>\n</$reveal>\n</$set>\n\n<$macrocall $name=\"compConfirmAction\"\nbtnLabel=\"Delete temp tiddlers\" \nconfirmMessage=\"Are you sure you wish to delete\"\nstateTiddler=\"$:/state/commander/setting/delete-temps\"\ncountFilter=\"[search:title[$:/temp/commander/]]\"\nactionMacro=\"delete-all-temps\"/>"},"$:/plugins/kookma/commander/setting/uicomp/minlength":{"title":"$:/plugins/kookma/commander/setting/uicomp/minlength","caption":"Search minimum length","created":"20200110132540295","modified":"20200324070652774","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"Controls the minimum length of a search string before results are displayed.\n\n<label class=\"kk-cmd-label\">Minlength</label><$edit-text tiddler=\"$:/plugins/kookma/commander/config/minlength\" field=text default=3 placeholder=\"enter a number\" tag=input/>"},"$:/plugins/kookma/commander/setting/uicomp/search-filters":{"title":"$:/plugins/kookma/commander/setting/uicomp/search-filters","caption":"Search filter","created":"20200116114041370","modified":"20200325055328703","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"The below list shows the Commander search filter. To edit click on the link and edit tiddler for filter syntax or description\n\n<details>\n<summary>Commander saved filter search</summary>\n<dl>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Commander/Filter]]\" >\n<dt><$link/></dt>\n<dd><span style=\"display:inline-block;font-weight:700;width:100px\">Description:</span><$view field=\"description\"/></dd>\n<dd><span style=\"display:inline-block;font-weight:700;width:100px\">Filter:</span><$view field=\"filter\"/></dd>\n</$list>\n</dl>\n</details>"},"$:/plugins/kookma/commander/setting/uicomp/snr":{"title":"$:/plugins/kookma/commander/setting/uicomp/snr","caption":"Snr setting","created":"20190324051157188","modified":"20200324070652789","tags":"$:/tags/Commander/Setting","type":"text/vnd.tiddlywiki","text":"<<snr-difftext-cleanup>>\n<div style=\"padding-left:25px;font-size:0.9em\">\n\nThe cleanup attribute determines which optional post-processing should be applied to the diffs:\n\n* none: no cleanup is performed\n* semantic (default): rewrites the diffs for human readability\n* efficient: rewrites the diffs to minimise the number of operations for subsequent processing\n</div>"},"$:/plugins/kookma/commander/snr/macros/actions":{"title":"$:/plugins/kookma/commander/snr/macros/actions","created":"20190307164924193","modified":"20200325055328711","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define regexp-flags()\n{{$:/state/commander/snr/gm}}{{$:/state/commander/snr/case-sensitive}}{{$:/state/commander/snr/unicode}}\n\\end\n\n\\define snr-ui-show-diffs()\n<form class=\"cmd-snr-form\" style=\"width:100%;\">\n <fieldset>\n <legend style=\"color:#FF0000;\">Differences</legend>\nTiddler: <$link to={{$:/state/commander/snr/select-tiddler}}><$text text={{$:/state/commander/snr/select-tiddler}}/></$link>\n\n<$wikify name=flags text=<<regexp-flags>> >\n\n<$macrocall $name=\"replace-text-diff\" \n tiddler={{$:/state/commander/snr/select-tiddler}} \n field={{$:/state/commander/snr/select-tiddler/field}} \n replace={{$:/state/commander/snr/replace-text}} \n replaceWith={{$:/state/commander/snr/replace-text-with}} \n flags=<<flags>> \n wholeWords={{$:/state/commander/snr/whole-words}}\n/>\n\n</$wikify>\n</fieldset>\n</form>\n\\end\n\n\\define snr-check-diffs(tiddler:\"\", field:\"\")\n\\whitespace trim\n<$wikify name=flags text=<<regexp-flags>> >\n<$wikify name=\"result\" text=\"\"\"\n<$macrocall $name=\"replace-text\" \n tiddler=<<__tiddler__>>\n field=<<__field__>>\n replace={{$:/state/commander/snr/replace-text}} \n replaceWith={{$:/state/commander/snr/replace-text-with}} \n flags=<<flags>> \n wholeWords={{$:/state/commander/snr/whole-words}}\n/>\"\"\">\n<$reveal type=\"match\" text={{{ [<__tiddler__>get<__field__>] }}} default=<<result>> >\nsame\n</$reveal>\n<$reveal type=\"nomatch\" text={{{ [<__tiddler__>get<__field__>] }}} default=<<result>> >\ndifferent\n</$reveal>\n</$wikify>\n</$wikify>\n\\end\n\n\\define search-replace-in-tiddler-field(tiddler:\"\",field:\"\",replace:\"\",replaceWith:\"\")\n<$wikify name=ss text=<<snr-check-diffs \"\"\"$tiddler$\"\"\" \"\"\"$field$\"\"\">> >\n<$list filter=\"[<ss>] -same\" variable=ignore>\n<$list filter=\"[<__tiddler__>has[title]]\" variable=\"ignore\">\n<$wikify name=flags text=<<regexp-flags>> >\n<$macrocall $name=\"replace-text-button\" \n tiddler=<<__tiddler__>> \n field=<<__field__>>\n replace=<<__replace__>>\n replaceWith=<<__replaceWith__>> \n flags=<<flags>> \n wholeWords={{$:/state/commander/snr/whole-words}}\n/>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"`$field$` field has been changed\"\"\" tidItem=<<__tiddler__>> />\n<$macrocall $name=\"clear-select-tiddler-if-field-is-title\" tiddler=<<__tiddler__>> field=<<__field__>> />\n</$wikify>\n</$list>\n</$list>\n</$wikify>\n\\end\n\n\\define clear-select-tiddler-if-field-is-title(tiddler, field)\n<$list filter=\"[<__field__>] +[search[title]]\" variable=\"ignore\">\n<$action-setfield $tiddler=\"$:/state/commander/snr/select-tiddler\" text=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/commander/selected-titles\" $index=<<__tiddler__>> />\n</$list>\n\\end\n\n\\define search-replace-in-field-bulk()\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"SNR operation\">>\n<$list filter=\"[subfilter<searchfilter>!is[missing]]\" >\n <$macrocall \n $name=\"search-replace-in-tiddler-field\"\n tiddler=<<currentTiddler>> \n field={{$:/state/commander/snr/select-tiddler/field}} \n replace={{$:/state/commander/snr/replace-text}} \n replaceWith={{$:/state/commander/snr/replace-text-with}} \n />\n</$list>\n</$list>\n\\end\n\n\\define search-replace-in-field-single-tiddler()\n<<create-log-tiddler \"SNR operation\">>\n <$macrocall \n $name=\"search-replace-in-tiddler-field\"\n tiddler={{$:/state/commander/snr/select-tiddler}}\n field={{$:/state/commander/snr/select-tiddler/field}} \n replace={{$:/state/commander/snr/replace-text}} \n replaceWith={{$:/state/commander/snr/replace-text-with}} \n />\n\\end\n\n\\define snr-actions()\n<$button actions=<<search-replace-in-field-single-tiddler>> tooltip=\"search and replace in a single tiddler\" class=\"cmd-btn\">\nReplace?\n</$button> \n<!-- replace in bulk tiddler with confirmation -->\n<$macrocall $name=\"compConfirmAction\"\ncountFilter=<<searchfilter>>\nactionMacro=\"search-replace-in-field-bulk\"\nstateTiddler=\"$:/state/commander/SelectiveReplaceAllDropdown\"\nconfirmMessage=\"Are you sure you wish to replace text in\" \nbtnLabel=\"Replace all?\"/>\n\\end"},"$:/plugins/kookma/commander/snr/macros/inputs":{"title":"$:/plugins/kookma/commander/snr/macros/inputs","created":"20190306203626597","modified":"20200325055328720","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define snr-ui-inputs()\n<form class=\"cmd-snr-form\">\n <fieldset>\n <legend>Search and Replace</legend>\n\n<div class=\"item\">\n<label>Tiddler title</label>\n<$select tiddler=\"$:/state/commander/snr/select-tiddler\" default=\"\" class=\"cmd-snr-textbox\">\n<option value=\"\">None</option>\n<$list filter=\"[subfilter<searchfilter>]\" >\n<option value=<<currentTiddler>>><$text text=<<currentTiddler>>/></option>\n</$list>\n</$select>\n</div>\n\n<div class=\"item\">\n<label>Field name</label>\n<$select tiddler=\"$:/state/commander/snr/select-tiddler/field\" default=\"text\">\n<$list filter=\"[subfilter<searchfilter>fields[]]\">\n<option value=<<currentTiddler>>><$text text=<<currentTiddler>>/></option>\n</$list>\n</$select>\n</div>\n\n<div class=\"item\">\n<label>Search text</label>\n<$edit-text \n tiddler=\"$:/state/commander/snr/replace-text\" \n tag=\"input\" \n default=\"\" \n placeholder=\" text to replace\"\n class=\"cmd-snr-textbox\"/>\n</div>\n\n<div class=\"item\">\n<label>Replace with </label>\n<$edit-text \n tiddler=\"$:/state/commander/snr/replace-text-with\" \n tag=\"input\" \n default=\"\" \n placeholder=\" new text\"\n class=\"cmd-snr-textbox\"/>\n</div>\n<!-- Use relink to update titles -->\n<$list filter=\"[[$:/state/commander/snr/select-tiddler/field]get[text]match[title]]\" variable=ignore>\n<div class=\"item-relink\">{{$:/plugins/kookma/commander/config/relink}}</div>\n</$list>\n</fieldset>\n</form>\n\n\n\\end"},"$:/plugins/kookma/commander/snr/macros/regexp-flags":{"title":"$:/plugins/kookma/commander/snr/macros/regexp-flags","created":"20190306182052441","modified":"20200325055328730","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define snr-regexp-flags()\n\n<form class=\"cmd-snr-form\">\n<fieldset>\n<legend>Search flags</legend>\n\n<$checkbox \n tiddler=\"$:/state/commander/snr/case-sensitive\" \n field=\"text\" \n checked=\"i\" \n unchecked=\"\"\n/> ignore case<br>\n\n<$checkbox \n tiddler=\"$:/state/commander/snr/whole-words\" \n field=\"text\" \n checked=\"words\" \n unchecked=\"characters\"\n/> whole words<br>\n\n<$checkbox \n tiddler=\"$:/state/commander/snr/unicode\" \n field=\"text\" \n checked=\"u\" \n unchecked=\"\"\n/> unicode<br>\n\n<br>\n\n<$radio\n tiddler=\"$:/state/commander/snr/gm\" \n field=\"text\" \n value=\"\"> first match \n</$radio><br>\n\n<$radio\n tiddler=\"$:/state/commander/snr/gm\" \n field=\"text\" \n value=\"g\"> global match\n</$radio><br>\n\n<$radio\n tiddler=\"$:/state/commander/snr/gm\" \n field=\"text\" \n value=\"m\"> multiline mode\n</$radio><br>\n\n<$radio\n tiddler=\"$:/state/commander/snr/gm\" \n field=\"text\" \n value=\"mg\"> global multiline mode\n</$radio>\n\n</fieldset>\n</form>\n\\end"},"$:/plugins/kookma/commander/snr/macros/regexpsub.js":{"title":"$:/plugins/kookma/commander/snr/macros/regexpsub.js","text":"/*\\\ncreated: 20190214160253135\ntype: application/javascript\ntitle: $:/plugins/kookma/commander/snr/macros/regexpsub.js\nmodified: 20200307092210323\nmodule-type: macro\n\nMake regular expression substitutions\nDeveloped by Mark S\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n\"use strict\";\n\nexports.name = \"regexpsub\";\n\nexports.params = [\n\t{name: \"searchValue\"},\n\t{name: \"replaceValue\"},\n\t{name: \"sourceText\"},\n\t{name: \"flags\"},\n {name: \"wholeWords\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(searchValue, replaceValue, sourceText, flags = \"gi\", wholeWords = \"characters\") {\n \n try {\n \n\tvar searchText;\n if(wholeWords.toLowerCase() === 'words'){\n searchText = \"\\\\b\" + searchValue + \"\\\\b\";\n } else{\n searchText = searchValue;\n }\n\t\t\n searchText = new RegExp(searchText, flags);\n return sourceText.replace(searchText,replaceValue);\n\n } \n catch(err) { \n return \"ERROR IN REG EXPRESSION. YOU MAY NEED TO ESCAPE VALUES\"; \n }\n \n };\n\n})();\n","created":"20190214160253135","type":"application/javascript","modified":"20200324070652819","module-type":"macro"},"$:/plugins/kookma/commander/snr/macros/replace-text":{"title":"$:/plugins/kookma/commander/snr/macros/replace-text","created":"20190227134610136","modified":"20200325055328737","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define nothing-to-replace(tiddler, field:\"text\") \n<$diff-text source={{{ [<__tiddler__>get<__field__>] }}} dest={{{ [<__tiddler__>get<__field__>] }}} />\n\\end\n\n\\define replace-text(tiddler:\"\",field:\"text\",replace:\"\",replaceWith:\"\",flags:\"\", wholeWords:\"\")\n\\whitespace trim\n<$wikify name=\"source\" text=\"\"\"<$view tiddler=<<__tiddler__>> field=<<__field__>> mode=\"block\" format=\"text\"/>\"\"\">\n<$wikify name=\"result\" \n text=\"\"\"<$macrocall $name=\"regexpsub\" $type=\"text/plain\" \n sourceText=<<source>> \n searchValue=<<__replace__>> \n replaceValue=<<__replaceWith__>> \n flags=<<__flags__>> \n wholeWords=<<__wholeWords__>> />\"\"\" \n >\n<$text text=<<result>>/>\n</$wikify>\n</$wikify>\n\\end\n\n\\define replace-text-diff(tiddler:\"\", field:\"text\", replace, replaceWith, flags:\"\", wholeWords:\"\")\n<$list filter=\"[<__tiddler__>get<__field__>minlength[1]]\" variable=null emptyMessage=\"No tiddler is selected, or tiddler is empty.\">\n<$list filter=\"[<__replace__>minlength[1]]\" variable=null emptyMessage=<<nothing-to-replace \"\"\"$tiddler$\"\"\" \"\"\"$field$\"\"\">> >\n\n<$wikify name=\"result\" \n text=\"\"\"<$macrocall $name=\"replace-text\" \n tiddler=<<__tiddler__>> field=<<__field__>> \n replace=<<__replace__>> \n replaceWith=<<__replaceWith__>> \n flags=<<__flags__>>\n wholeWords=<<__wholeWords__>> />\"\"\"\n >\n<$diff-text source={{{ [<__tiddler__>get<__field__>] }}} dest=<<result>> cleanup={{$:/state/commander/snr/setting/cleanup}}/>\n</$wikify>\n\n</$list>\n</$list>\n\\end\n\n\\define replace-text-button(tiddler:\"\", field:\"text\", replace:\"\", replaceWith:\"\", flags:\"\", wholeWords:\"\")\n\\whitespace trim\n<$list filter=\"[<__tiddler__>get<__field__>minlength[1]]\" variable=null>\n<$list filter=\"[<__replace__>minlength[1]]\" variable=null>\n<$wikify name=\"result\" \n text=\"\"\"<$macrocall $name=\"replace-text\" \n tiddler=<<__tiddler__>> \n field=<<__field__>> \n replace=<<__replace__>> \n replaceWith=<<__replaceWith__>> \n flags=<<__flags__>>\n wholeWords=<<__wholeWords__>> />\"\"\"\n >\n<$reveal type=\"nomatch\" default=\"title\" text=<<__field__>> >\n <$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value=<<result>>/>\n</$reveal>\n<$reveal type=\"match\" default=\"title\" text=<<__field__>> >\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<__tiddler__>> to=<<result>> />\n</$reveal>\n</$wikify>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/snr/ui":{"title":"$:/plugins/kookma/commander/snr/ui","caption":"Snr","created":"20190220210055713","icon":"$:/core/images/gitter","list-after":"$:/plugins/kookma/commander/inspect/ui","modified":"20200324070652833","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"Search and replcae in tiddler fields!\n\n<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/SnrOps]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/snr/uicomp/replace-text\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n\n"},"$:/plugins/kookma/commander/snr/uicomp/replace-text":{"title":"$:/plugins/kookma/commander/snr/uicomp/replace-text","caption":"Search and replace","created":"20190220211138573","icon":"$:/core/images/gitter","modified":"20200325055328748","tags":"$:/tags/Commander/SnrOps","type":"text/vnd.tiddlywiki","text":"<div class=\"cmd-snr-row\">\n<div class=\"cmd-snr-double-column\">\n<<snr-ui-inputs>>\n</div>\n<div class=\"cmd-snr-column\">\n<<snr-regexp-flags>> \n</div>\n</div>\n<<snr-ui-show-diffs>>\n<<snr-actions>>"},"$:/plugins/kookma/commander/stylesheet/alert":{"title":"$:/plugins/kookma/commander/stylesheet/alert","text":".commander-alert {\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px dotted gray;\n border-radius: 0.25rem;\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n\t\n}","created":"20190725161822490","modified":"20200325092557277","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/buttons":{"title":"$:/plugins/kookma/commander/stylesheet/buttons","text":"/**\n.cmd-btn{\n font-size:0.85em;\n font-size:300;\n color: #666666;\n background-color: #d8d8d8;\n padding: 3px 8px 3px 8px;\n border: 1px solid #a1a1a1;\n}\n**/\n\n.cmd-btn-wd{\n\twidth:20ch;\n}","created":"20190317080436103","modified":"20200324070652859","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/compInspect/table":{"title":"$:/plugins/kookma/commander/stylesheet/compInspect/table","text":"/*compInspect table*/\n.cmd-ci-table\n{border-collapse: collapse;}\n\n.cmd-ci-table .leftcol{\nwidth:20%;\nvertical-align: top;\ntext-align: right;\nbackground-color:#f0f0f0;\n}\n.cmd-ci-table .rightcol{\nwidth:650px;\n}\n","created":"20190308134702363","modified":"20200324070652871","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/new":{"title":"$:/plugins/kookma/commander/stylesheet/new","text":".kk-commander-log-note{\n\tfont-style:italic; font-size:small;\n}\n.kk-commander-log-item {\n\tcolor:green;\n}\n\n/* This is missing and I added it */\n.cmd-txt-area{\n\tmin-width:25ch;\n}\n\n.cmd-txt-area2{\n\tmin-width:50ch;\n}\n\n/* Correct this later*/\n.kk-cmd-label{\n\tdisplay:inline-block;\n\twidth:85px;\n}\n\n.kk-cmd-label2{\n\tdisplay:inline-block;\n\twidth:120px;\n}","created":"20200105140038538","modified":"20200324070652878","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/select-width":{"title":"$:/plugins/kookma/commander/stylesheet/select-width","text":".cmd-sl{\n width:8ch;\n}\n\n.cmd-select-wd{\n min-width:25ch;\n}\n","created":"20190218214027079","modified":"20200324070652887","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/snr/flexbox":{"title":"$:/plugins/kookma/commander/stylesheet/snr/flexbox","text":".cmd-snr-row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n width: 100%;\n}\n.cmd-snr-column {\n display: flex;\n flex-direction: column;\n flex-basis: 100%;\n flex: 1\n}\n\n.cmd-snr-double-column {\n display: flex;\n flex-direction: column;\n flex-basis: 100%;\n flex: 2\n}\n\n@media screen and (min-width: 800px) {\n .cmd-snr-column {\n flex: 1\n }\n\n .cmd-snr-double-column {\n flex: 2\n }\n}","created":"20190306203517655","modified":"20200324070652893","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/snr/form":{"title":"$:/plugins/kookma/commander/stylesheet/snr/form","text":".cmd-snr-form{\n width:100%;\n}\n\n.cmd-snr-textbox {\n width:100%;\n box-sizing: border-box;\n max-width:40ch;\n }\n\n.cmd-snr-form select, .cmd-snr-form input{\n margin: 0.2rem;\n}\n.cmd-snr-form legend{\n background: #f5f5f5;\n padding: 3px 6px;\n}\n\n.cmd-snr-form { padding:20px; }\n.cmd-snr-form .item { padding: 2px; margin:2px; }\n.cmd-snr-form .item label { display:inline-block; width:100px; margin-left:5px; }\n.cmd-snr-form .item input { display:inline-block; }\n.cmd-snr-form .item select { display:inline-block; }\n\n/* only for relink checkbox on renaming tiddler */\n.cmd-snr-form .item-relink { padding: 2px; margin:2px; }\n\n ","created":"20190306191714819","modified":"20200324070652907","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/stylesheet/tiddler-list":{"title":"$:/plugins/kookma/commander/stylesheet/tiddler-list","text":".kk-commander-tiddler-list {\n font-size:small; \n\tborder-left:0.5px \n\tdotted grey;\n\tpadding-left:10px;\n\toverflow-y:auto;\n\tmax-width:100%;\n\tmax-height:$(height)$;\n}\n\n.kk-commander-columns1 { display:block; column-count:1; column-gap:1em; }\n.kk-commander-columns2 { display:block; column-count:2; column-gap:1em; }\n.kk-commander-columns3 { display:block; column-count:3; column-gap:1em; }\n.kk-commander-columns4 { display:block; column-count:4; column-gap:1em; }\n.kk-commander-columns5 { display:block; column-count:5; column-gap:1em; }","created":"20200103165931672","modified":"20200324070652922","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/commander/tag/macros/add-remove-replace":{"title":"$:/plugins/kookma/commander/tag/macros/add-remove-replace","created":"20190212063435548","modified":"20200325055328754","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define add-new-tag-bulk(newTag:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__newTag__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"add-new-tag-bulk\">>\n<$list filter=\"[subfilter<searchfilter>!tag<__newTag__>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__newTag__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"new tag `$newTag$` added\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define remove-old-tag-bulk(oldTag:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore>\n<$list filter=\"[<__oldTag__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"remove-old-tag-bulk\">>\n<$list filter=\"[subfilter<searchfilter>tag<__oldTag__>]\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<__oldTag__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"old tag `$oldTag$` removed\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n\\end\n\n\n\\define replace-tag-bulk(oldTag:\"\", newTag:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore>\n<$list filter=\"[<__oldTag__>!is[blank]]\" variable=null>\n<$list filter=\"[<__newTag__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"replace-tag-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"[<currentTiddler>tag<__oldTag__>]\" variable=ignore\n emptyMessage=\"\"\"<$macrocall $name=\"log-add-single-operation\" msg=\"//has not tag `$oldTag$`. Operation ignored.//\" tidItem=<<currentTiddler>> /> \"\"\">\n<$fieldmangler>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__newTag__>> />\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<__oldTag__>> />\n</$fieldmangler>\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"tag `$oldTag$` replaced with `$newTag$`\"\"\" tidItem=<<currentTiddler>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/tag/ui":{"title":"$:/plugins/kookma/commander/tag/ui","caption":"Tag","created":"20190212051852003","list-after":"$:/plugins/kookma/commander/title/ui","modified":"20200325055328765","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/TagOps]!has[draft.of]]\" default:\"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags\" \nclass:\"tc-vertical cmd-tab-wd\">>\n\n"},"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags":{"title":"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags","caption":"Add remove tags","created":"20190212063924640","modified":"20200325055328771","tags":"$:/tags/Commander/TagOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">New tag</label><$edit-text\ntiddler=\"$:/temp/commander/tag-add-remove/new\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" new tag\"/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Add new tag\n<$macrocall $name=\"add-new-tag-bulk\" newTag={{$:/temp/commander/tag-add-remove/new}} />\n</$button>\n\n<label class=\"kk-cmd-label\">Old tag</label><$select class=\"cmd-select-wd\" tiddler=\"$:/temp/commander/tag-add-remove/old\" default=\"\" >\n<$list filter=\"[subfilter<searchfilter>!is[missing]tags[]sort[]]-[<workingTag>]\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove old tag\n<$macrocall $name=\"remove-old-tag-bulk\" oldTag={{$:/temp/commander/tag-add-remove/old}} />\n</$button>\n\n"},"$:/plugins/kookma/commander/tag/uicomp/replace-tags":{"title":"$:/plugins/kookma/commander/tag/uicomp/replace-tags","caption":"Replace tags","created":"20190212080523588","list-after":"$:/plugins/kookma/commander/tag/uicomp/add-remove-tags","modified":"20200325055328782","tags":"$:/tags/Commander/TagOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Old tag</label><$select class=\"cmd-select-wd\" tiddler=\"$:/temp/commander/replace-tags/old\" default=\"\">\n<$list filter=\"[subfilter<searchfilter>!is[missing]tags[]sort[]]-[<workingTag>]\" >\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>\n\n<label class=\"kk-cmd-label\">New tag</label><$edit-text\ntiddler=\"$:/temp/commander/replace-tags/new\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" new tag\"\n/>\n<$button class=\"cmd-btn cmd-btn-wd\"> Replace tag\n<$macrocall $name=\"replace-tag-bulk\" \noldTag={{$:/temp/commander/replace-tags/old}} \nnewTag={{$:/temp/commander/replace-tags/new}} />\n</$button>\n\n"},"$:/plugins/kookma/commander/template/base":{"title":"$:/plugins/kookma/commander/template/base","caption":"base","created":"20190213200622605","modified":"20200324070652960","tags":"$:/tags/Commander/Template","type":"text/vnd.tiddlywiki","text":"This is a simple one!"},"$:/plugins/kookma/commander/template/doc":{"title":"$:/plugins/kookma/commander/template/doc","caption":"documentation","created":"20190213200338381","modified":"20200324070652969","tags":"$:/tags/Commander/Template","type":"text/vnd.tiddlywiki","version":"beta","text":"!! Introduction\n<<<\nshort introduction\n<<<\n\n!! Content and parameters\n<<<\nThe content, attributes and parameters\n\n|!Parameter |!Description |\n|par1 |description |\n|par2 |description |\n<<<\n\n!! Example i\n<<<\nexample here\n<<<\n\n!! Example ii\n<<<\nanother example here\n<<<\n\n!! References\n<<<\n# one\n# Two\n<<<"},"$:/plugins/kookma/commander/template/simple":{"title":"$:/plugins/kookma/commander/template/simple","caption":"simple","created":"20190213200258460","modified":"20200324070652975","tags":"$:/tags/Commander/Template","type":"text/vnd.tiddlywiki","version":"beta","text":"! Heading one\nThis is sunsection i\n\n!! Heading two\nThis is subsection ii.\n\n* one\n* two\n* three\n\n!!! Heading three\nThis is subsction iii\n\n```\nA sample code\n```\n\n!! Sample table\n|Table 1. This is caption|c\n|Heading one|Heading Two|Heading Three|h\n|r1|100|200|\n|r2|02|03|\n|r3|-1|-2|\n"},"$:/plugins/kookma/commander/tiddler/macros/create":{"title":"$:/plugins/kookma/commander/tiddler/macros/create","created":"20190212125920722","modified":"20200325055328790","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-create(msg:\"Tiddler existed, operation ignored\")\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=\"$(newTitle)$\" $value=\"$msg$\" />\n\\end\n\n\\define bulk-tiddler-creator(baseTitle, baseTags, datafieldsTid, numberTiddler:\"1\")\n<$list filter=\"[<__baseTitle__>!is[blank]]\" variable=ignore>\n<<create-log-tiddler \"bulk-tiddler-creator\">>\n<$list filter=\"[range[9]addprefix[00]] [range[10,99]addprefix[0]] [range[100,500]] +[limit<__numberTiddler__>]\" variable=\"L1\">\n<$list filter=\"[<__baseTitle__>addsuffix<L1>]\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>] -[has[title]]\" variable=\"ignore\" emptyMessage=<<log-create>> >\n<$action-createtiddler $basetitle=<<newTitle>> tags=<<__baseTags__>> /> \n<$vars datafieldsTid=<<__datafieldsTid__>> >\n<<add-bulk-fields>>\n</$vars>\n<<log-create \"Tiddler created\">>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define oneTid-with-template()\n<$tiddler tiddler=<<newTitle>> >\n <$action-setfield $tiddler=<<myTemplate>> title=<<currentTiddler>> /> \n <$fieldmangler>\n <$list filter=\"[enlist<myTags>]\" variable=newTag>\n <$action-sendmessage $message=\"tm-add-tag\" $param=<<newTag>> />\n </$list><!--next remove extra tag used by template from new created tiddler-->\n <$action-sendmessage $message=\"tm-remove-tag\" $param=\"$:/tags/Commander/Template\" />\n</$fieldmangler>\n</$tiddler>\n\\end\n\n\n\\define bulk-tiddler-with-template-creator(baseTitle, baseTags, datafieldsTid, numberTiddler:\"1\", template:\"\")\n<$list filter=\"[<__baseTitle__>!is[blank]]\" variable=ignore>\n<<create-log-tiddler \"bulk-tiddler-creator with template\">>\n<$vars datafieldsTid=<<__datafieldsTid__>>\n myTags=<<__baseTags__>> \n myTemplate=<<__template__>> >\n<$list filter=\"[range[9]addprefix[00]] [range[10,99]addprefix[0]] [range[100,500]] +[limit<__numberTiddler__>]\" variable=\"L1\">\n<$list filter=\"[<__baseTitle__>addsuffix<L1>]\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>!has[title]]\" variable=\"ignore\" emptyMessage=<<log-create>> >\n <<oneTid-with-template>>\n <<add-bulk-fields>>\n <<log-create \"Tiddler created\">>\n</$list>\n</$list>\n</$list>\n</$vars>\n</$list>\n\\end\n\n"},"$:/plugins/kookma/commander/tiddler/macros/delete":{"title":"$:/plugins/kookma/commander/tiddler/macros/delete","created":"20190215195221625","modified":"20200325055328801","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-delete-selectively(item, msg:\"Tiddler deleted\")\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=<<__item__>> $value=\"$msg$\" />\n\\end\n\n\\define delete-tiddlers-selective-bulk()\n<$list filter=\"[subfilter<searchfilter>limit[1]]\" variable=\"ignore\"><!-- at least searchfilter shall return one tiddler-->\n<<create-log-tiddler \"delete-tiddler-selectively\">>\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"Item\">\n<$action-deletetiddler $tiddler=<<Item>> />\n<$macrocall $name=\"log-delete-selectively\" item=<<Item>> />\n</$list>\n</$list>\n\\end"},"$:/plugins/kookma/commander/tiddler/macros/export":{"title":"$:/plugins/kookma/commander/tiddler/macros/export","created":"20200113101003510","modified":"20200325055328808","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define add-export-tag()\n<$list filter=<<searchfilter>> >\n<$fieldmangler>\n<$list filter=\"[enlist{$(exportTagTid)$}]~[[exported]]\" variable=\"exportTag\" ><!-- add all export tags-->\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<exportTag>> />\n</$list>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<workingTag>> />\n</$fieldmangler>\n</$list>\n\\end\n\n\\define remove-export-tag()\n<$list filter=<<searchfilter>> >\n<$fieldmangler>\n<$list filter=\"[<selectiveOpsTid>get[text]match[yes]]\" variable=ignore>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<workingTag>> />\n</$list>\n<$list filter=\"[enlist{$(exportTagTid)$}]~[[exported]]\" variable=\"exportTag\" ><!-- remove all export tags-->\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<exportTag>> />\n</$list>\n</$fieldmangler>\n</$list>\n\\end\n\n\\define log-export-selectively(msg:\"Tiddler exported\")\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"item\">\n<$action-setfield $tiddler={{$:/state/commander/log-tiddler}} $index=<<item>> $value=\"$msg$\" />\n</$list>\n\\end\n\n\n\\define commander-exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<<create-log-tiddler \"exportButton: bulk tiddlers exported\">>\n<$macrocall $name=\"log-export-selectively\"/><!--log any tiddler exported-->\n<<add-export-tag>><!-- by Mohammad-->\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n<<remove-export-tag>><!-- by Mohammad-->\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end"},"$:/plugins/kookma/commander/tiddler/ui":{"title":"$:/plugins/kookma/commander/tiddler/ui","caption":"Tiddler","created":"20190212125319261","list-before":"$:/plugins/kookma/commander/title/ui","modified":"20200325055328821","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/TiddlerOps]!has[draft.of]]\"\ndefault:\"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n"},"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers":{"title":"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers","caption":"Create tiddlers","created":"20190213193004029","modified":"20200325055328832","tags":"$:/tags/Commander/TiddlerOps","type":"text/vnd.tiddlywiki","text":"<label class=\"kk-cmd-label\">Base title</label>\n<$edit-text \n tiddler=\"$:/temp/commander/tiddler-base-title\" \n tag=\"input\" default=\"\"\n placeholder=\" base title\" \n class=\"cmd-txt-area\"/><br>\n\n<label class=\"kk-cmd-label\">Tags</label>\n<$edit-text \n tiddler=\"$:/temp/commander/tiddler-base-tags\" \n tag=\"input\" default=\"\"\n placeholder=\" tags\" \n class=\"cmd-txt-area\"\n/> \n\n<!-- add interface for adding fields -->\n<$macrocall $name=\"add-more-fields-selective-ui\"\n datafieldsTid=\"$:/temp/commander/tiddler/datafields/createTiddler\"\n stateTiddler=\"$:/state/commander/tiddler-addfields-status\" />\n\n\n<$checkbox \n tiddler=\"$:/state/commander/tiddler-template-status\" \n field=\"text\" \n checked=\"use-template\" unchecked=\"no-template\"\n default=\"no-template\"> \n Use template?\n</$checkbox>\n\n<$reveal type=\"match\" state=\"$:/state/commander/tiddler-template-status\" text=\"use-template\" default=\"no-template\" >\nTemplate\n<$select tiddler=\"$:/temp/commander/template-newtiddler\" \n default=\"$:/plugins/kookma/commander/template/base\">\n<$list filter='[all[shadows+tiddlers]tag[$:/tags/Commander/Template]]'>\n<option value=<<currentTiddler>> >\n<$view field=\"caption\"><$view field=\"title\"/></$view>\n</option>\n</$list>\n</$select>\n<$button class=\"tc-btn-invisible\"> {{$:/core/images/edit-button}}\n <$action-sendmessage $message=\"tm-edit-tiddler\" \n $param={{{ [[$:/temp/commander/template-newtiddler]get[text]]~[[$:/plugins/kookma/commander/template/base]] }}} />\n</$button>\n\n</$reveal>\n\nNumber of tiddlers \n<$select tiddler=\"$:/temp/commander/tiddler-base-number\" default='1'>\n<$list filter='[range[1,19, 1]] [range[20,50, 5]] [range[60,100,10]] [range[200,500,100]]'>\n<option value=<<currentTiddler>>><$view field='title'/></option>\n</$list>\n</$select>\n\n<!-- call macros for create tiddlers -->\n<$reveal type=\"nomatch\" state=\"$:/state/commander/tiddler-template-status\" text=\"use-template\" default=\"no-template\">\n <$button class=\"cmd-btn cmd-btn-wd\"> Create tiddlers\n <$macrocall $name=\"bulk-tiddler-creator\"\n baseTitle={{$:/temp/commander/tiddler-base-title}}\n baseTags={{$:/temp/commander/tiddler-base-tags}}\n datafieldsTid=\"$:/temp/commander/tiddler/datafields/createTiddler\"\n numberTiddler={{$:/temp/commander/tiddler-base-number}} />\n </$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/state/commander/tiddler-template-status\" text=\"use-template\" default=\"no-template\">\n <$button class=\"cmd-btn cmd-btn-wd\"> Create tiddlers\n <$macrocall $name=\"bulk-tiddler-with-template-creator\"\n baseTitle={{$:/temp/commander/tiddler-base-title}}\n baseTags={{$:/temp/commander/tiddler-base-tags}}\n datafieldsTid=\"$:/temp/commander/tiddler/datafields/createTiddler\"\n numberTiddler={{$:/temp/commander/tiddler-base-number}}\n template={{$:/temp/commander/template-newtiddler}}/>\n </$button>\n</$reveal>\n"},"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers":{"title":"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers","caption":"Delete tiddlers","created":"20190301144408502","list-after":"$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers","modified":"20200325055328839","tags":"$:/tags/Commander/TiddlerOps","type":"text/vnd.tiddlywiki","text":"<$set name=numTids value={{{[subfilter<searchfilter>!is[missing]count[]] }}}>\n<$reveal type=\"match\" text=\"0\" default=<<numTids>> >\nNo tiddlers is selected for deleteion!\n</$reveal>\n<$reveal type=\"gt\" text=\"0\" default=<<numTids>> >\n\nNumber of tiddlers selected for deletion: <<numTids>><br>\nNote that, the delete operation cannot be undone!!\n<br>\n\n<$macrocall $name=\"compConfirmAction\"\ncountFilter=\"[subfilter<searchfilter>]\"\nactionMacro=\"delete-tiddlers-selective-bulk\"\nstateTiddler=\"$:/state/commander/SelectiveDeleteDropdown\"\n/>\n\n</$reveal>\n</$set>\n\n\n"},"$:/plugins/kookma/commander/tiddler/uicomp/export-tiddlers":{"title":"$:/plugins/kookma/commander/tiddler/uicomp/export-tiddlers","caption":"Export tiddlers","created":"20200112093148417","list-after":"$:/plugins/kookma/commander/tiddler/uicomp/delete-tiddlers","modified":"20200325055328851","tags":"$:/tags/Commander/TiddlerOps","type":"text/vnd.tiddlywiki","text":"\\define export-tiddler-ui(baseFilename)\n<$set name=\"exportList\" filter=<<searchfilter>> ><!-- without this $SetWidget the exportButton does not work -->\n<$vars tv-config-toolbar-text=\"yes\" tv-config-toolbar-class=\"tc-button tt-button\">\n<$macrocall $name=\"commander-exportButton\" exportFilter=<<exportList>> lingoBase=\"$:/language/Buttons/ExportTiddlers/\" baseFilename=\"\"\"$baseFilename$\"\"\"/>\n</$vars>\n</$set>\n\\end\n\n\\define exportFileName-and-Tags-ui() \n<label class=\"kk-cmd-label2\">Export filename</label><$edit-text tiddler=\"$:/temp/commander/exportFilename\" tag=input default=\"tiddlers\" placeholder=\"tiddlers\" class=\"cmd-txt-area\"/>\n<br>\n\n<label class=\"kk-cmd-label2\">Export tags</label><$edit-text tiddler=\"$:/temp/commander/exportTag\" tag=input default=\"exported\" placeholder=\"exported\" class=\"cmd-txt-area\"/><br>\n\\end\n\n<$set name=numTids value={{{[subfilter<searchfilter>!is[missing]count[]] }}}>\n<$reveal type=\"match\" text=\"0\" default=<<numTids>> >\nNo tiddlers is selected for export!\n</$reveal>\n\n<$reveal type=\"gt\" text=\"0\" default=<<numTids>> >\n\nNumber of tiddlers selected for export: <<numTids>><br>\n\n<<exportFileName-and-Tags-ui>>\n<$macrocall $name=\"export-tiddler-ui\" baseFilename={{{[[$:/temp/commander/exportFilename]get[text]]~[[tiddlers]]}}} />\n</$reveal>\n</$set>\n\n"},"$:/plugins/kookma/commander/title/macros/prefix":{"title":"$:/plugins/kookma/commander/title/macros/prefix","created":"20190212122742891","modified":"20200325055328857","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-changePrefix(message, oldTitle, newTitle)\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"$message$. New title [[$newTitle$]]\"\"\" tidItem=<<__oldTitle__>> />\n\\end\n\n\\define addPrefix-to-tiltle-bulk(prefix:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__prefix__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"addPrefix-to-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>addprefix[$prefix$]] -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>] -[has[title]]\" variable=\"ignore\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n <$macrocall $name=log-changePrefix message=\"title prefix: `$prefix$` added\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define removePrefix-from-tiltle-bulk(prefix:\"\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__prefix__>!is[blank]]\" variable=null>\n<<create-log-tiddler \"removePrefix-from-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>removeprefix[$prefix$]] -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>] -[has[title]]\" variable=\"ignore\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n <$macrocall $name=log-changePrefix message=\"title prefix: `$prefix$` removed\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list> \n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/macros/remove-cahrs-end":{"title":"$:/plugins/kookma/commander/title/macros/remove-cahrs-end","created":"20190218190318901","modified":"20200325055328869","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define suffix-actions2()\n<$list filter=\"[subfilter<searchfilter>]+[prefix<sfx>]\" variable=\"item\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<item>> to=<<sfx>> />\n <$macrocall $name=\"log-add-single-operation\" msg=\"\"\"characters removed from end. New title [[$(sfx)$]]\"\"\" tidItem=<<item>> />\n</$list>\n\\end\n\n\n\\define makelink2() [[$(newTitle)$]]\n\n\\define generate-suffixes2(n:\"0\")\n<$list filter=\"[<__n__>] -0\" variable=null>\n<$list filter=\"[subfilter<searchfilter>]\" variable=\"item\">\n<$list filter=\"\"\"[<item>split[]butlast[$n$]join[]trim[]]\"\"\" variable=\"newTitle\">\n<$text text=<<makelink2>>/>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define remove-chars-from-end-tiltle-bulk(num:\"0\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__num__>] -0\" variable=null>\n<<create-log-tiddler \"remove-chars-from-end-tiltle-bulk\">>\n<$vars n=<<__num__>> >\n<$wikify text=\"\"\"<<generate-suffixes2 n:\"$num$\">>\"\"\" name=\"outputs\">\n <$list filter=\"[subfilter<outputs>]\" variable=\"sfx\">\n<$list filter=\"[subfilter<searchfilter>]+[prefix<sfx>limit[2]count[]regexp[2]]\" emptyMessage=<<suffix-actions2>> variable=\"cnt\">\n</$list>\n</$list>\n</$wikify>\n</$vars>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/macros/remove-cahrs-start":{"title":"$:/plugins/kookma/commander/title/macros/remove-cahrs-start","created":"20190218214608685","modified":"20200325055328877","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define suffix-actions()\n<$list filter=\"[subfilter<searchfilter>]+[suffix<sfx>]\" variable=\"item\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<item>> to=<<sfx>> />\n <$macrocall $name=\"log-add-single-operation\" msg=\"\"\"characters removed from start. New title [[$(sfx)$]]\"\"\" tidItem=<<item>> />\n</$list>\n\\end\n\n\n\\define makelink() [[$(newTitle)$]]\n\n\\define generate-suffixes(n:\"0\")\n<$list filter=\"[<__n__>] -0\" variable=null>\n<$list filter=\"[subfilter<searchfilter>has[title]]\" variable=\"item\">\n<$list filter=\"\"\"[<item>split[]rest[$n$]join[]trim[]]\"\"\" variable=\"newTitle\">\n<$text text=<<makelink>>/>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define remove-chars-from-begining-tiltle-bulk(num:\"0\")\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<$list filter=\"[<__num__>] -0\" variable=null>\n<<create-log-tiddler \"remove-chars-from-begining-tiltle-bulk\">>\n<$vars n=<<__num__>> >\n<$wikify text=\"\"\"<<generate-suffixes n:\"$num$\">>\"\"\" name=\"outputs\">\n <$list filter=\"[subfilter<outputs>]\" variable=\"sfx\">\n <$list filter=\"[subfilter<searchfilter>]+[suffix<sfx>limit[2]count[]regexp[2]]\" \n emptyMessage=<<suffix-actions>> variable=\"cnt\">\n </$list>\n </$list>\n</$wikify>\n</$vars>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/macros/suffix":{"title":"$:/plugins/kookma/commander/title/macros/suffix","created":"20190212143639636","modified":"20200325055328886","tags":"$:/tags/Commander/Macro","type":"text/vnd.tiddlywiki","text":"\\define log-changeSuffix(message, oldTitle, newTitle)\n<$macrocall $name=\"log-add-single-operation\" msg=\"\"\"$message$. New title [[$newTitle$]]\"\"\" tidItem=<<__oldTitle__>> />\n\\end\n\n\\define addSuffix-to-tiltle-bulk(suffix:\"\")\n<$list filter=\"[<__suffix__>!is[blank]]\" variable=null>\n<$list filter=\"[subfilter<searchfilter>limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"addSufffix-to-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>addsuffix[$suffix$]] -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>] -[has[title]]\" variable=\"ignore\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n <$macrocall $name=log-changeSuffix message=\"title suffix: `$suffix$` added\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n\n\\define removeSuffix-from-tiltle-bulk(suffix:\"\")\n<$list filter=\"[<__suffix__>!is[blank]]\" variable=null>\n<$list filter=\"[subfilter<searchfilter>!is[missing]limit[1]]\" variable=ignore><!--check if filter is empty -->\n<<create-log-tiddler \"removeSuffix-from-tiltle-bulk\">>\n<$list filter=\"[subfilter<searchfilter>]\">\n<$list filter=\"\"\"[<currentTiddler>removesuffix[$suffix$]] -[<currentTiddler>]\"\"\" variable=\"newTitle\">\n<$list filter=\"[<newTitle>] -[has[title]]\" variable=\"ignore\">\n <$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to=<<newTitle>> />\n <$macrocall $name=log-changeSuffix message=\"title suffix: `$suffix$` removed\" oldTitle=<<currentTiddler>> newTitle=<<newTitle>> />\n</$list>\n</$list>\n</$list>\n</$list>\n</$list>\n\\end\n"},"$:/plugins/kookma/commander/title/ui":{"title":"$:/plugins/kookma/commander/title/ui","caption":"Title","created":"20190212051704536","list-after":"$:/plugins/kookma/commander/tiddler/ui","modified":"20200324070653068","tags":"$:/tags/Commander","type":"text/vnd.tiddlywiki","text":"<<tabs \ntabsList:\"[all[shadows+tiddlers]tag[$:/tags/Commander/TitleOps]!has[draft.of]]\" \ndefault:\"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix\"\nclass:\"tc-vertical cmd-tab-colorful cmd-tab-wd\">>\n\n<!-- relink checkbox for renaming title -->\n{{$:/plugins/kookma/commander/config/relink}}"},"$:/plugins/kookma/commander/title/uicomp/add-remove-chars":{"title":"$:/plugins/kookma/commander/title/uicomp/add-remove-chars","caption":"Remove chars","created":"20190217092719245","list-after":"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix","modified":"20200325055328894","tags":"$:/tags/Commander/TitleOps","type":"text/vnd.tiddlywiki","text":"\\define rngcat() [range[0,$(minchars)$]] -0 \n\n<label style=\"width:30ch;\">Number of chars</label>\n<$select tiddler=\"$:/temp/commander/title-remove-chars\" default=\"0\" class=\"cmd-sl\">\n<$list filter=\"[subfilter<searchfilter>length[]minall[]subtract[1]] -Infinity\" variable=\"minchars\">\n<$list filter=<<rngcat>> >\n<option value=<<currentTiddler>>><$view field='title'/></option>\n</$list>\n</$list>\n</$select><br>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> First n characters\n<$macrocall \n $name=\"remove-chars-from-begining-tiltle-bulk\" \n num={{$:/temp/commander/title-remove-chars}} />\n</$button>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Last n characters\n<$macrocall \n $name=\"remove-chars-from-end-tiltle-bulk\" \n num={{$:/temp/commander/title-remove-chars}} />\n</$button>\n\n\n"},"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix":{"title":"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix","caption":"Add remove prefix","created":"20190212141758567","modified":"20200325055328903","tags":"$:/tags/Commander/TitleOps","type":"text/vnd.tiddlywiki","text":"<$edit-text\ntiddler=\"$:/temp/commander/title-prefix\"\ntag=\"input\"\ndefault=\"\"\nclass=\"cmd-txt-area\"\nplaceholder=\" prefix\"\n/> <br>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Add prefix\n<$macrocall \n $name=\"addPrefix-to-tiltle-bulk\" \n prefix={{$:/temp/commander/title-prefix}} \n/>\n</$button>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove prefix\n<$macrocall \n $name=\"removePrefix-from-tiltle-bulk\" \n prefix={{$:/temp/commander/title-prefix}} \n/>\n</$button>\n\n"},"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix":{"title":"$:/plugins/kookma/commander/title/uicomp/add-remove-suffix","caption":"Add remove suffix","created":"20190212143434676","list-after":"$:/plugins/kookma/commander/title/uicomp/add-remove-prefix","modified":"20200325055328912","tags":"$:/tags/Commander/TitleOps","type":"text/vnd.tiddlywiki","text":"<$edit-text\ntiddler=\"$:/temp/commander/title-suffix\"\ntag=\"input\" default=\"\"\nclass=\"cmd-txt-area\" placeholder=\" suffix\" /><br>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Add suffix\n<$macrocall \n $name=\"addSuffix-to-tiltle-bulk\" \n suffix={{$:/temp/commander/title-suffix}} />\n</$button>\n\n<$button class=\"cmd-btn cmd-btn-wd\"> Remove suffix\n<$macrocall \n $name=\"removeSuffix-from-tiltle-bulk\" \n suffix={{$:/temp/commander/title-suffix}} \n/>\n</$button>\n\n"},"$:/Commander":{"title":"$:/Commander","created":"20190212051316149","icon":"$:/plugins/kookma/commander/images/file-alt","modified":"20200324074719052","type":"text/vnd.tiddlywiki","text":"\\import [all[shadows+tiddlers]tag[$:/tags/Commander/Macro]]\n{{$:/plugins/kookma/commander/search/ui}}\n<!-- Create the search filter based on searchbox and selective operation (if active) -->\n<$vars searchTerms={{{ [<searchboxTid>get[text]minlength{$:/plugins/kookma/commander/config/minlength}]~[[$:/errorCode:-23500]] }}} pattern=\"^\\[\"><!-- this part checks the combo search and selective ops-->\n<$set name=\"filtertext\" filter=\"[<searchTerms>regexp<pattern>]\" value=\"[subfilter<searchTerms>]\" emptyValue=\"[!is[system]search<searchTerms>]\">\n<$set name=\"searchfilter\" filter=\"[<selectiveOpsTid>get[text]match[yes]]\" \n\tvalue=\"[subfilter<filtertext>!prefix[$:/temp/commander]]+[tag<workingTag>]\" emptyValue=\"[subfilter<filtertext>!prefix[$:/temp/commander]]\" >\n<small style=\"margin-left:17ch;\"><i><$count filter=\"[subfilter<filtertext>!prefix[$:/temp/commander]!is[missing]]\" /> matches </i></small>\n\n<!-- Display search results and let selective operation -->\n<<commander-slider title:\"$:/plugins/kookma/commander/search/selection\" default:\"open\">>\n\n<!-- Display operation UIs-->\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/Commander]!has[draft.of]]\" default:\"$:/plugins/kookma/commander/tiddler/ui\">>\n\n</$set>\n</$set>\n<$vars>\n\n---\n\n<<commander-slider title:\"$:/plugins/kookma/commander/log/ui\">>\n"},"$:/language/Buttons/Commander/Hint":{"title":"$:/language/Buttons/Commander/Hint","created":"20190725032106026","modified":"20200324080437905","tags":"","type":"text/vnd.tiddlywiki","text":"Tiddler Commander"},"$:/language/Buttons/Commander/Caption":{"title":"$:/language/Buttons/Commander/Caption","created":"20190725032131129","modified":"20200324080437929","tags":"","type":"text/vnd.tiddlywiki","text":"commander"}}}
\whitespace trim
\define commander-button(class)
<$button to="$:/Commander" tooltip={{$:/language/Buttons/Commander/Hint}} aria-label={{$:/language/Buttons/Commander/Caption}} class="""$(tv-config-toolbar-class)$ $class$""">
<$list filter="[<tv-config-toolbar-icons>match[yes]]">
{{$:/plugins/kookma/commander/images/file-alt.svg}}
</$list>
<$list filter="[<tv-config-toolbar-text>match[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Commander/Caption}}/></span>
</$list>
</$button>
\end
<$list filter="[list[$:/StoryList]] +[field:title[$:/Commander]]" emptyMessage=<<commander-button>>>
<<commander-button "tc-selected">>
</$list>
<$set name=numTids value={{{[subfilter<searchfilter>!is[missing]count[]] }}}>
<$reveal type="match" text="0" default=<<numTids>> >
No tiddlers is selected for deletion!
</$reveal>
<$reveal type="gt" text="0" default=<<numTids>> >
Number of tiddlers selected for deletion: <<numTids>><br>
Note that, the delete operation cannot be undone!!
<br>
<$macrocall $name="compConfirmAction"
countFilter="[subfilter<searchfilter>]"
actionMacro="delete-tiddlers-selective-bulk"
stateTiddler="$:/state/commander/SelectiveDeleteDropdown"
/>
</$reveal>
</$set>
/*\
title: $:/core/modules/filters/minrelevance.js
type: application/javascript
module-type: filteroperator
Filter operator for filtering out tiddlers that don't meet the minimum relevance in the operand
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
Export our filter function
*/
exports.minrelevance = function(source,operator,options) {
var results = [],
minLength = parseInt(operator.operand || "",0) || 0,
reverse = false;
if(operator.prefix === "!"){
reverse = true;
}
source(function(tiddler,title) {
var bl = options.wiki.getTiddlerBacklinks(title).length * 150;
var tl = 0;
if(options.wiki.getTiddlerText(title)){
tl = options.wiki.getTiddlerText(title).length;
}
if(!reverse){
if(bl+tl >= minLength) {
results.push(title);
}
}else{
if(bl+tl < minLength) {
results.push(title);
}
}
});
return results;
};
})();
{
"tiddlers": {
"GeoTiddler": {
"title": "GeoTiddler",
"created": "20151130173416239",
"modified": "20170115153450584",
"type": "text/vnd.tiddlywiki",
"text": "[[GeoTiddler]]s are tiddlers containing geographical data. [[geoSyntax|$:/plugins/sycom/leaflet/geoSyntax]] lists the available objects. [[geoJson|https://en.wikipedia.org/wiki/GeoJSON]] data are also accepted. You may specify a color for all objects displayed through `color` field.\n\n!! tiddler with geo TiddlerFields\nYou can upgrade your tiddler by putting some geo metadata ([[wgs 84 coordinates|https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84]]) in it's TiddlerFields. See [[geoSyntax|$:/plugins/sycom/leaflet/geoSyntax]] for the list of object types you can draw. Popup will show the first part of the tiddler. If the tiddler contains a leafmap widget, it will be rendered as `text/plain` in order to avoid crash...\n\n!! geoJSON tiddler\nYou can define a geoJson tiddler like [[tiddlyWikiFrCommunity|$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity]] and then display the data by calling it. Just put your geoJson data in the body and declare the tiddler as application/json. Any `application/json` tiddler called will be considered as geoJson. The popups will show\n\n* a title\n** the `name` or the `title` attribute in properties if exists,\n** if not, the firsts attributes of properties until they are 8 characters long\n* a description\n** the `description` attribute in properties if exists,\n** if not, the data stored in each feature as a bulleted list.\n\n!! tiddler grouping [[GeoTiddler]]s\nYou can use `tiddlers` or `filter` as TiddlerFields to make a group of tiddlers. You can apply some styling options to all the group using `style`, `color` or `marker` TiddlerFields and then call the tiddler in your map to render all those tiddler at the same time. This will be a good way to make thematic maps indeed...\n"
},
"$:/plugins/sycom/leaflet/devDiary": {
"title": "$:/plugins/sycom/leaflet/devDiary",
"created": "20151110173416000",
"modified": "20180531171500000",
"type": "text/vnd.tiddlywiki",
"text": "Some notes about coding this plugin. Might be useful to others...\n\n* 20180602\n** added a template that will display a map of embeded object for tiddlers containing one of the geoTiddlers fiels.\n** updtated leaflet and marker-cluster to 1.3.1 - the easy way. Just replaced with new version and no deprecation at all \\o/ !\n* 20180531\n** converting all `.svg.tid` files to `.svg` + `.svg.meta` pairs. Will allow git client to make svg viewable in web interface. Also compressed SVG as much as possible with great https://jakearchibald.github.io/svgomg/ tool.\n** tweak : for svg embedding local TiddlyWiki colors (eg `$primary$`), forced type to `text/vnd.tiddlywiki` to preserve them.\n* 20170317\n** lot of work around cluster size, cluster color when using filter. Cluster size depends on point % for the cluster, clusterRadius and zoom.\n* 20170311\n** added styling options and also the grouping tiddler capabilities. Discovered that direct styling in SVG ''does not always'' [[overwrite css styling|http://stackoverflow.com/questions/24293880/svg-why-does-external-css-override-inline-style-for-text]].\n* 20170129\n** adding some markers. And it's possible to create yours.\n* 20170115\n** darling birthday edit. Clustering by tiddler is on track. Will have to look for clustering direct passing object through widget.\n* 20161111\n** armistice edit! can now disable clustering or set clustering distance. Bug #9 fixed. may be cluster size will be too big for big databases\n* 20161106\n** color parameter is partially implemented. Note that direct styling like `fill` in svg element wont take on class styling through css...\n* 20161104\n** after many attemps, managed to include tiddler excerpt in popups for mapping geoTiddler. Had to include an escape rule for tiddler containing a leafmap widget. No larsen, but a big bug (map number probably).\n** also managed to give the marker the color of the primary color. Note for later there is probably a bug if primary color is defined with `<<colour>>` macro.\n* 20161102\n** ok, when importing some library, don't forget to use `require()` in order to conclude. Silly guy. Still some polishing needed, but clustering know works...\n* 20161101\n** fighting with markercluster capabilities. At this point seems I can add the script but the MarkerClusterGroup class is not recognized when called...\n* 20161031\n** gave up inserting external layers.svg in stylesheet. Issues with `<$text />` and `{{ }}`... Created svg in a separate tiddler for the record but inserting directly an \"escaped\" version in [[mapCss.css|$:/plugins/sycom/leaflet/mapCssTweaks.css.tid]]\n* 20161030\n** working on different markers. Not so good at designing them though ;-) Putted default leaflet svg marker. Using Inkscape to edit svg easily and SVGO extension in atom to compress them. First attempt to put layers icon as svg. Issues...\n* 20161029\n** trying to put svg marker instead of png ones. Will be better for changing colors, content... using data:image/svg+xml. Svg has to bring xmlns ~~and xmlns:xlink~~ with it in order to work...\n* 20161025\n** after big fight, managed to call images as embeded through css without writing full base64 code. Had to add `html` to the \"rules only\" list at the beginning of the css code\n* 20161024\n** geojson implemented. Will need to add cluster soon. Some question about geojson attributes to create the popup...\n* 20161021\n** updated leaflet.js to 1.0.1 moved base64 image to mapCss.css in order to avoid problems when updating leaflet.\n** Updated tileLayer list. min/max checked for this time. Detect if tile id is wrong to alert user and display osm instead.\n* 20160314\n** corrected caption errors for example and roadmap. Have to write an install process in demo site (gh-page) since writing this in plugin is nonsense.\n* 20151124\n** wondering the best way to release plugin code in gitlab (or github). Can't be a fork of TiddlyWiki. Don't want to lose .git history.\n** ok I'm dumb. All is written in the dev TiddlyWiki : http://tiddlywiki.com/dev/#Developing%20p lugins%20using%20Node.js%20and%20GitHub . Lost .git history since cuting tree is bad. But history was still short...\n* 20151123\n** not able to use directly tiddler stored images as css background.\n** decided to use base64 form in css. Not so elegant as I wished, but works.\n* 20151121\n** fighting with parameters : not imported from widget with `this.getAttribute()`\n** solved by adding the parameter computation before : `this.computeAttributes();`\n* 20151115\n** some problems to declare leaflet.js library : fail during build since there is no window, no document.\n** solved by creating the tiddlywiki.files importer.\n* 20151110\n** starting some tests. Inspiration from d3plugin (also creating widget and importing library)\n"
},
"$:/plugins/sycom/leaflet/geoSyntax": {
"title": "$:/plugins/sycom/leaflet/geoSyntax",
"created": "20151119173416239",
"modified": "20151211173250584",
"type": "text/vnd.tiddlywiki",
"caption": "geoSyntax",
"text": "Geographical objects can be stored\n\n* in a GeoTiddler by creating a ''//type// : // pattern//'' metadata field pair in any tiddler or by storing geoJson data in it and setting your tiddler to `application/JSON` type. Call it in the widget with ''places'' attribute : `places='{\"tiddler\":\"title of your tiddler\"}'`\n* in several [[GeoTiddlers|GeoTiddler]]. Call them in the widget with ''places'' attribute\n** via a space separated list of [[GeoTiddlers|GeoTiddler]] : `places='{\"tiddlers\":\"tiddler1 tiddler2 tiddler3\"}'`\n** via a [[filter|http://tiddlywiki.com/#Filters]] selection of [[GeoTiddlers|GeoTiddler]] : `places='{\"filter\":\"[[your filter]]\"}'`\n* straight in the widget with ''places'' attribute : `places='{\"object type\":\"coordinates pattern\"}'`\n\n!! Everything might be a GeoTiddler\n\nIn a very much tiddlywiki way, a tiddler may also refer to a list or a selection of tiddlers using `tiddlers` or `filter` metadata fields. You may add styling informations to all refered tiddler with `style`, `color` or `marker` metadata fields. Calling this tiddler with `<$leafmap />` will render all refered tiddlers.\n\n!! Tool for creating shapes\nAs not everyone has a GIS in his head, And the plugin does not implement yet any tool for creating geo shapes, there is (very basic) tool for that : [ext[Draw for TiddlyWiki leaflet plugin|http://sycom.github.io/TiddlyWiki-Plugins/leafletDraw.html]]\n\n!! Geographical objects you can display on your map\n\n| !type | !description | !pattern |\n|''point'' |a unique point defined by a comma separated latitude,longitude pair |`y,x` |\n|''points''|a points collection defined by a space separated ''point'' definition list |`y1,x1 y2,x2 y3,x3 ...` |\n|''polygon''|a closed surfacic place defined like an //ordered// ''points'' collection just above |`y1,x1 y2,x2 y3,x3 ...` |\n|''polygons''|a polygons collection defined by a pipe (`|`) separated list of ''polygon'' definitions |`y1,x1 y2,x2 y3,x3|y4,x4 y5...` |\n|''polyline''|an open path place defined like the ''polygon'' just above |`y1,x1 y2,x2 y3,x3 ...` |\n|''polylines''|a polylines collection defined by a pipe (`|`) separated list of ''polyline'' definitions |`y1,x1 y2,x2 y3,x3|y4,x4 y5...` |\n|''geojson''|a [[geojson|http://geojson.org/]] object. If set through a tiddler field, please crunch it to one single line|see [[rfc7946|https://tools.ietf.org/html/rfc7946]]|\n"
},
"$:/plugins/sycom/leaflet/markers": {
"title": "$:/plugins/sycom/leaflet/markers",
"created": "20170129172401910",
"modified": "20170129172401910",
"type": "text/vnd.tiddlywiki",
"caption": "Markers",
"text": "markers are used to display point(s) related informations. Default marker is [[marker|$:/plugins/sycom/leaflet/images/marker.svg]].\n\n!! Available markers\n\nfor now, available markers are those\n\n<$list filter='[all[shadows]has[marker_dim]has[caption]]'><span style=\"display:inline-block;text-align:center;margin:0 .5em;padding:.5em;border:.5px dotted\"><$tiddler tiddler={{!!title}}><$transclude/></$tiddler><br/><$link to={{!!title}}>{{!!caption}}</$link></span></$list>\n\n!! Create your own markers\n\nHave a look at existing ones above for inspiration and hack. Markers are svg pieces with some mandatory tweaks :\n\n* a marker is based upon ''two'' tiddlers, one for the marker and one for the shadow\n* add a `caption` field to the marker tiddler (not for the shadow svg).\n* the `title` of your marker tiddler will be `$:/plugins/sycom/leaflet/images/`''caption''`.svg`\n* and the `title` of the marker shadow tiddler will be `$:/plugins/sycom/leaflet/images/`''caption''`shadow.svg`\n* a `marker_dim` field wich defines //width// //height// //x-anchor// //y-anchors//. Please check that your //width// and //height// value are the same as in `<svg (...) width=\"15\" height=\"15\">`\n* don't forget to add `xmlns` attribute : `<svg xmlns=\"http://www.w3.org/2000/svg\" (...)`\n* if you want your marker to change color upon tiddlywiki or widget parameters, use `$primary$` for the color attribute of your svg\n"
},
"$:/plugins/sycom/leaflet/roadmap": {
"title": "$:/plugins/sycom/leaflet/roadmap",
"created": "20151209173416000",
"modified": "20180531171500000",
"type": "text/vnd.tiddlywiki",
"caption": "Roadmap",
"text": "Not really a roadmap just a list for future development ideas. You'd better take a look at [[issues|https://framagit.org/sycom/TiddlyWiki-Plugins/boards]] on the repo. And add yours if you dare ;-)\n\n* add a tool to draw shapes, lines and collect coordinates. Until this, You may use [[Draw for TiddlyWiki leaflet plugin|http://sycom.github.io/TiddlyWiki-Plugins/leafletDraw.html]]\n* add categories options\n* add text, title capabilities\n* try a tiddler template based upon field presence to render data for all geoTiddler\n* ...\n\n* ~~try to put other types of pins (svg? icons?)~~ ''0.8.0'' : you may change markers via the //marker// option and design your own markers\n* ~~add color(s) options~~ ''0.7.2'' : color can be set via //color// tiddler field or forced through //color// option\n* ~~add a clustering functionality (at least for points)~~ ''0.7.0'' : each data group is know clustering points\n* ~~add geoJSON tiddlers~~ ''0.6.0'' : added geojsontiddler rendering\n* ~~map tiddlers with the same tag(s)~~ ''0.5.0'' : added filter places request\n"
},
"$:/plugins/sycom/leaflet/tileLayers": {
"title": "$:/plugins/sycom/leaflet/tileLayers",
"created": "20151119173416239",
"modified": "20161020222250584",
"type": "text/vnd.tiddlywiki",
"caption": "tileLayers",
"text": "tileLayers are the //background// of the leaflet map. They will not be available offline and will not display at every zoom level.\n\n!! Available tile layers\n\nedit [[tileLayers.json|$:/plugins/sycom/leaflet/lib/tileLayers.json]] if you want to add / remove tile layers.\n\n| !id | !description | !zoom min/max |\n|''osm'' |[[OpenStreetMap|http://openstreetmap.org]] classic tile layer | 1/20 |\n|''osmfr'' |[[OpenStreetMap|http://openstreetmap.org]] with //baguette// smell | 1/20 |\n|''osmbw'' |Black and White version of [[OpenStreetMap|http://openstreetmap.org]] tiles by Wikimedia labs | 1/20 |\n|''sat'' |Satellite photographic layer provided by Esri | 1/18 |\n|''natgeo'' |National Geographic style layer provided by Esri| 1/12 |\n|''toner'' |Black and white styled OpenStreetMap data provided by [[Stamen|http://stamen.com]] | 1/20 |\n|''water'' |Watercolor styled OpenStreetMap data provided by [[Stamen|http://stamen.com]] | 1/20 |\n|''thunder'' |Pale styled OpenStreetMap data provided by [[Thunderforest|http://thunderforest.com]] | 1/20 |\n|''dark'' |\"Dark Matter\" styled OpenStreetMap data provided by [[CartoDB|https://cartodb.com/basemaps]] | 1/20 |\n|''positron'' |\"Positron\" styled OpenStreetMap data provided by [[CartoDB|https://cartodb.com/basemaps]] | 1/20 |\n"
},
"$:/plugins/sycom/leaflet/usage": {
"title": "$:/plugins/sycom/leaflet/usage",
"created": "20151119173416239",
"modified": "20170129153650584",
"type": "text/vnd.tiddlywiki",
"caption": "Usage",
"text": "The widget is called by using `<$leafmap />`. You may specify some options :\n\n!!! widget attributes\n|!Attribute |!Description |!Default |\n|''width'' |the width of the map (px or tiddler %)| `100%`|\n|''height''|the height of the map (px only)| `420px`|\n\n!!! leaflet map attributes\n|!Attribute |!Description |!Default |\n|''places'' |a json object with the geographical data you want to display. Can be stored in tiddlers as metadata fields. See [[geoSyntax|$:/plugins/sycom/leaflet/geoSyntax]] for more informations ||\n|''style'' |a json object containing styling information for your polygons and polylines objects in the map. Will overwrite GeoTiddler style if exists. Refer to [[leaflet documentation|http://leafletjs.com/reference-1.0.3.html#path]] for all options| `{ }`|\n|''color'' |a color for drawing that will apply to all objects in the map. Will also overwrite GeoTiddler color attributes and //style// (if defined) colors| `<<colour primary>>`|\n|''marker''|the name of the marker you want for points. See [[markers|$:/plugins/sycom/leaflet/markers]] for more informations| `marker`|\n|''tile'' |the //id// or the //number// of the tile layer you want to use. See [[tileLayers|$:/plugins/sycom/leaflet/tileLayers]] for more informations | `osm`|\n|''cluster''|set the clustering distance between points. also can disable clustering with no value or `0` or `\"\"`| `80`|\n|''clusterType''|set if points are clustered for whole map (`map`) or for each tiddler (`tiddler`) displayed.| `map`|\n|''tileControl'' |''if present'' add a control to select the tile layer you want ||\n|''lat'' |map center latitude. Will overwrite places auto-centering | `52.8`|\n|''long'' |map center longitude. Will overwrite places auto-centering | `-2.6`|\n|''zoom'' |zoom level as defined by leaflet : int value between `0` (world map) and `20` (ant view) | |\n"
},
"$:/plugins/sycom/leaflet/example": {
"title": "$:/plugins/sycom/leaflet/example",
"type": "text/vnd.tiddlywiki",
"caption": "Example",
"text": "Different ways to use the [[leaflet plugin|$:/plugins/sycom/leaflet]]\n\n{{$:/plugins/sycom/leaflet/example/leaflet_with_geotiddler}}\n\n{{$:/plugins/sycom/leaflet/example/leaflet_with_geojsontiddler}}\n\n{{$:/plugins/sycom/leaflet/example/leaflet_with_non-tiddler_geo_data}}\n\n{{$:/plugins/sycom/leaflet/example/leaflet_with_filter}}\n"
},
"$:/plugins/sycom/leaflet/example/leaflet_with_filter": {
"title": "$:/plugins/sycom/leaflet/example/leaflet_with_filter",
"created": "20151211173500000",
"modified": "20170317163500000",
"text": "!! a map of a filter\nthis one displays all tiddlers tagged with <<tag example>> (there's a //all shadow// tweak, since they are shadowed). There is also one cluster per tiddler. Some colors are set from within each tiddler with `color` field.\n\n```\n<$leafmap tile='toner'\n\tplaces='{\"filter\":\"[all[shadows]tag[example]]\"}' clusterType='tiddler'/>\n```\n<$leafmap tile='toner'\n\tplaces='{\"filter\":\"[all[shadows]tag[example]]\"}' clusterType='tiddler'/>\n"
},
"$:/plugins/sycom/leaflet/example/leaflet_with_geojsontiddler": {
"title": "$:/plugins/sycom/leaflet/example/leaflet_with_geojsontiddler",
"created": "20161025150936935",
"modified": "20170318235936935",
"tags": "example leaflet",
"text": "!! a map of a geoJson tiddler\nThis one displays [[tiddlyWikiFrCommunity|$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity]] (that has a color field set to red), which is an almost direct geojson data extraction from the umap [[Utilisateurs du forum TiddlyWiki FR|https://umap.openstreetmap.fr/fr/map/tiddlywikifr_65983#6/46.995/2.549]]. `color` is set to orange, `marker` to pin. Cluster distance is default (80) on the first, set to 30 on the second.\n\n```\n<$leafmap tileControl\n places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity\"}'\n style='{\"color\":\"orange\"}'\n marker='pin'/>\n<$leafmap tileControl cluster=\"30\"\n places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity\"}'\n marker='pin'/>\n```\n<$leafmap tileControl\n places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity\"}'\n style='{\"color\":\"orange\"}'\n marker='pin'/>\n<$leafmap tileControl cluster=\"30\"\n places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity\"}'\n marker='pin'/>\n"
},
"$:/plugins/sycom/leaflet/example/leaflet_with_geotiddler": {
"title": "$:/plugins/sycom/leaflet/example/leaflet_with_geotiddler",
"created": "20151207090936935",
"modified": "20161025222038568",
"tags": "example leaflet",
"text": "!! a map of a GeoTiddler\nthis one displays the tiddler [[placeTiddler|$:/plugins/sycom/leaflet/example/placeTiddler]]. Note the tileControl attribute that enables map background selection. As the tiddler has its `color` field set to pink, objects are rendered pink. The cat is know a panther ;-). The tiddler also have a `style` field to define dash and thickness of the stroke...\n\n```\n<$leafmap\n tileControl\n places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/placeTiddler\"}'/>\n```\n<$leafmap\n tileControl\n places='{\"tiddler\":\"$:/plugins/sycom/leaflet/example/placeTiddler\"}'/>\n"
},
"$:/plugins/sycom/leaflet/example/leaflet_with_non-tiddler_geo_data": {
"title": "$:/plugins/sycom/leaflet/example/leaflet_with_non-tiddler_geo_data",
"point": "6.5,19.72",
"created": "20151207090936935",
"modified": "20151211172038568",
"tags": "example leaflet",
"text": "!! a map with data on the go\nvery useful for fast mapping. All objects that might be embedded in GeoTiddler can be used here. Let's display a map with satellite imagery and\n\n* a ''point'' at `6.5,19.72`\n* a ''polyline'' at `6.4,19.7 6.6,19.74`\n\nnote this tiddler is also a geoTiddler with one point at `6.5,19.72`\n\n```\n<$leafmap tile='sat'\n\tplaces='{\"point\":\"6.5,19.72\",\"polyline\":\"6.4,19.7 6.6,19.74\"}'/>\n```\n\n<$leafmap tile='sat'\n\tplaces='{\"point\":\"6.5,19.72\",\"polyline\":\"6.4,19.7 6.6,19.74\"}'/>\n"
},
"$:/plugins/sycom/leaflet/example/placeTiddler": {
"title": "$:/plugins/sycom/leaflet/example/placeTiddler",
"points": "52.799933,-2.589812 52.799959,-2.590939",
"polygon": "52.800608,-2.591668 52.800225,-2.591829 52.799849,-2.591937 52.799603,-2.591990 52.799427,-2.591990 52.799187,-2.591894 52.798863,-2.591550 52.798727,-2.591357 52.798662,-2.591121 52.798636,-2.590853 52.798655,-2.590542 52.798668,-2.590467 52.798701,-2.590359 52.798649,-2.590113 52.798623,-2.589920 52.798610,-2.589716 52.798636,-2.589437 52.798694,-2.589136 52.798850,-2.588975 52.799051,-2.588793 52.799311,-2.588707 52.799525,-2.588707 52.799726,-2.588772 52.800018,-2.588857 52.800290,-2.588911 52.800511,-2.589040 52.800731,-2.589126 52.800816,-2.589211 52.800413,-2.589812 52.800446,-2.590166 52.800452,-2.590520 52.800433,-2.590810 52.800426,-2.591068 52.800751,-2.591550 52.800621,-2.591679",
"polylines": "52.799382,-2.590059 52.799641,-2.588321|52.799330,-2.590048 52.799447,-2.588342|52.799265,-2.590059 52.799181,-2.588342|52.799486,-2.590724 52.799706,-2.592301|52.799414,-2.590767 52.799525,-2.592366|52.799356,-2.590714 52.799278,-2.592355",
"created": "20151119173416000",
"modified": "20151211173153114",
"color": "#ff80c0",
"style": "{\"dashArray\":\"6, 10\",\"weight\":\"8\"}",
"type": "text/vnd.tiddlywiki",
"tags": "example leaflet geometry",
"text": "This tiddler contains\n\n* a two `points` list : 52.799933,-2.589812 52.799959,-2.590939\n* a `polygon` : 52.800608,-2.591668 52.800225,-2.591829 52.799849 (...)\n* a `polyline`s list : 52.799382,-2.590059 52.799641,-2.588321|52.799330,-2.590048 52.799447,-2.588342|52.799265,(...)\n\nIt has also some styling informations\n\n* `color` is set to pink\n* `style` defines a dashed 8px thick line\n\ngo to edit mode to see the full data fields\n"
},
"/usr/local/lib/node_modules/tiddlywiki/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity.old": {
"title": "/usr/local/lib/node_modules/tiddlywiki/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity.old",
"text": "created: 20161025143416000\nmodified: 20170317143416000\ntitle: $:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity\ntype: application/json\ntags: example leaflet geojson\ncolor: #dd0000\n\n{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"properties\":{\"name\":\"Aknar\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.4442090000000007,43.604652]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"CdriC\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.563166,47.478419]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Disanv Parean\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.4072784,49.1846226]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Fab13n\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[5.5867,45.1184]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Fabio\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.916515000000004,47.8664401]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Florent V.\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[0.156237,45.648377]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Joël\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[4.740042686462402,46.10446454226022]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Johanne\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-74.09016960000002,45.65189590000001]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Lakemp\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.19249,48.59338]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"LauDai\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.4750973000000158,43.5664556]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Lucivam\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[4.390278,45.434722]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Mikabi\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.44,43.604652]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Nico\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.2569674000000077,48.9899655]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Nicolas Friedli\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[6.8411643,46.9425711]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Phil\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[3.98337,50.36155]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Piwig\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-1.677793,48.117266]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Sylvain Comte\",\"description\":\"Créateur du leaflet map plugin\",\"url\":\"http://sylvain.comte.online.fr\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.08954,49.43584]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Sylvain Naudin\",\"description\":\"Admin du forum\",\"url\":\"http://sylvain.naud.in\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.155689,45.471894]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Thierry Pasquier\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[0.3333,46.5833]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Vincent Delcros\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[5.2788245000000416,50.5500944]}}]}\n",
"type": ".old"
},
"$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity": {
"title": "$:/plugins/sycom/leaflet/example/tiddlyWikiFrCommunity",
"text": "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"properties\":{\"name\":\"Aknar\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.4442090000000007,43.604652]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"CdriC\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.563166,47.478419]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Disanv Parean\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.4072784,49.1846226]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Emmanuel\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.3522219000000177,48.85661400000001]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Escrivant\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.3868,48.871958]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Fab13n\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[5.5867,45.1184]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Fabio\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.916515000000004,47.8664401]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Florent\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[0.156237,45.648377]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"François\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.478413899999964,43.543794]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Gub\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.4442090000000007,43.604652]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"jargenty\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.321621999999934,43.514707]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Jérôme\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-2.429759,47.328003]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Joël\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[4.740042686462402,46.10446454226022]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Johanne\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-74.09016960000002,45.65189590000001]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Lakemp\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.19249,48.59338]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"LauDai\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.4750973000000158,43.5664556]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"LongSlowBakery\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-2.4834849999999733,52.903552]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Lucivam\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[4.390278,45.434722]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"m4dz\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.3522219000000177,48.85661400000001]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Matthias\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.560016,47.470006]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Michel\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[7.261953199999994,43.7101728]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Mikabi\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.44,43.604652]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Nico\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.2569674000000077,48.9899655]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Nicolas\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[6.8411643,46.9425711]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"pariswiki\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.29,48.8]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Phil\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[3.98337,50.36155]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Piwig\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-1.677793,48.117266]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Ploum\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[0.1995560000000296,48.00611000000001]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Scapharnaum\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[7.74553,48.58392]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Solaine\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[8.227512,46.818188]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Sylvain Comte\",\"description\":\"Créateur du leaflet map plugin\",\"url\":\"http://sylvain.comte.online.fr\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[1.08954,49.43584]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Sylvain Naudin\",\"description\":\"Admin du forum\",\"url\":\"http://sylvain.naud.in\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-0.155689,45.471894]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Thierry\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[0.3333,46.5833]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Thomas Elmiger\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[8.541694,47.376887]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Vincent\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[5.2788245000000416,50.5500944]}},{\"type\":\"Feature\",\"properties\":{\"name\":\"Yan\",\"description\":\"\",\"url\":\"\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[2.0517,46.22475]}}]}\n",
"type": "application/json",
"created": "20161025143416000",
"modified": "20180602193416000",
"source": "https://umap.openstreetmap.fr/fr/map/tiddlywikifr_65983",
"tags": "example leaflet geojson",
"color": "#dd0000"
},
"$:/ext/modules/widgets/geolocation-widget.js": {
"text": "/*\\\ntitle: $:/ext/modules/wigets/geolocation-widget.js\ntype: application/javascript\nmodule-type: widget\n\nGeolocation widget\n\n\\*/\n(function() {\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n var Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n var GeolocationWidget = function(parseTreeNode, options) {\n this.initialise(parseTreeNode, options);\n };\n\n /* Inherit from the base widget class */\n GeolocationWidget.prototype = new Widget();\n\n /* Compute the internal state of the widget */\n GeolocationWidget.prototype.execute = function() {\n // Get attributes\n this.target = this.getAttribute(\"target\") || this.getVariable(\"currentTiddler\");\n this.icon = this.getAttribute(\"icon\") || \"$:/core/images/globe\";\n this.text = this.getAttribute(\"text\") || undefined;\n this.accuracy = this.getAttribute(\"accuracy\");\n this.type = this.getAttribute(\"type\") || \"point\";\n // Make child widgets\n this.makeChildWidgets();\n };\n\n /* Render this widget into the DOM */\n GeolocationWidget.prototype.render = function(parent, nextSibling) {\n var self = this;\n // Remember parent\n this.parentDomNode = parent;\n // Compute attributes and execute state\n this.computeAttributes();\n this.execute();\n // Create element\n var tag = \"button\";\n if (this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n tag = this.buttonTag;\n }\n var domNode = this.document.createElement(tag);\n // Add a click event handler\n domNode.addEventListener(\"click\", function(event) {\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n // success callback\n function(position) {\n /* to replace by field populating (point(s) polyline(s) or polygon(s)) */\n /* default : if tiddler has point field, will create a points field to store new data;\n if tiddler has points field, will add a new point to the tiddler field;\t*/\n var target = self.target;\n var accuracy = self.accuracy;\n var type = self.type;\n var newPoint = position.coords.latitude + \",\" + position.coords.longitude;\n /* check if tiddler has a geofield */\n var track = \"\";\n if (!$tw.wiki.getTiddler(target)) $tw.wiki.setText(target, \"text\", null, \"\", null);\n var flds = $tw.wiki.getTiddler(target).fields\n if (flds.points) {\n track = flds.points;\n $tw.wiki.setText(target, \"points\", null, track + \" \" + newPoint, null);\n infoLocation(\"new point \" + newPoint + \" added to \" + target);\n\n } else {\n if (flds.point && flds.point !== null) {\n track = flds.point;\n $tw.wiki.setText(target, \"points\", null, track + \" \" + newPoint, null);\n $tw.wiki.setText(target, \"point\", null, null, null);\n infoLocation(\"new point \" + newPoint + \" added to \" + target);\n } else {\n $tw.wiki.setText(target, \"point\", null, newPoint, null);\n infoLocation(\"new point \" + newPoint + \" added to \" + target);\n }\n }\n },\n // error callback\n function(error) {\n noLocation(error.message + \". You may not are connected via httpS://\")\n }\n );\n } else {\n noLocation(\"position disabled or not supported by your browser\");\n }\n }, false);\n /* dress up button */\n var buttonContent;\n // if text parameter, will use it for the button\n if (self.text) {\n buttonContent = self.text;\n } else {\n // if not, looking for an icon\n /* !todo: ?question: should the icon depend on \"type\" parameter? */\n buttonContent = $tw.wiki.getTiddler(self.icon).fields.text;\n }\n domNode.innerHTML = buttonContent;\n // Insert element\n parent.insertBefore(domNode, nextSibling);\n this.renderChildren(domNode, null);\n this.domNodes.push(domNode);\n };\n\n function noLocation(message) {\n /* !todo: ?question: replace by \"modal\" alert? */\n // create or update a temporary message tiddler \n $tw.wiki.setText(\"$:/temp/noLocationMessage\", \"text\", null, \"geolocation access denied: \" + message, null);\n // displays it in modal\n $tw.modal.display(\"$:/temp/noLocationMessage\");\n }\n\n function infoLocation(message) {\n // create or update a temporary message tiddler \n $tw.wiki.setText(\"$:/temp/viewLocationMessage\", \"text\", null, message, null);\n // displays it in modal\n $tw.notifier.display(\"$:/temp/viewLocationMessage\");\n }\n /*\n We don't allow actions to propagate because we trigger actions ourselves\n */\n GeolocationWidget.prototype.allowActionPropagation = function() {\n return false;\n };\n\n exports.geoloc = GeolocationWidget;\n\n})();",
"title": "$:/ext/modules/widgets/geolocation-widget.js",
"type": "application/javascript",
"module-type": "widget"
},
"geoLocationWidget": {
"caption": "action-createtiddler",
"created": "20180906130958091",
"modified": "20180906132645752",
"author": "Sylvain Comte",
"tags": "Widgets",
"title": "geoLocationWidget",
"type": "text/vnd.tiddlywiki",
"text": "! Introduction\nThe ''geolocation'' widget is used to collect geographic position of the browser running the wiki. For now position will be added the //point// (or //points// if there is more than one point) field of the target tiddler. Those fields may then be used with the [[Leaflet Map Plugin|https://sycom.github.io/TiddlyWiki-Plugins/#Leaflet%20plugin]], or whatever tool using geographic coordinates.\n\n* The widget is not dependant from Leaflet Map Plugin (but is bundled in it). You may install it alone\n* The widget will only work on //https// website, due to security limitation of the geolocation implemented in browsers\n\n! Content and Attributes\nThe [[geolocation widget|$:/ext/modules/widgets/geolocation-widget.js]] will create a button to collect your browser's position. Any content within it is ignored.\n\n| !Attribute | !Description | !Default |\n|target |The tiddler (title) in which data will be stored |//current tiddler// |\n|icon |The title of the icon used to dress up the button|$:/core/images/globe |\n|text |The text displayed in the button (will overwrite the icon)|`undefined` |\n\nMore options will come later (//accuracy//, //object type//...).\n\n! Examples\n\n```\n<$geoloc target=\"Geolocation Store\" />\n```\n\n<$geoloc target=\"Geolocation Store\" />\n\n! Source\nThe ''geolocation widget'' is developped aside Leaflet Map Plugin. Source code can be found on the same repository : https://framagit.org/sycom/TiddlyWiki-Plugins/tree/master/ext/modules/widget/geolocation\n\n"
},
"$:/plugins/sycom/leaflet/icon": {
"title": "$:/plugins/sycom/leaflet/icon",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-leaflet-map tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64 0L9.4 32v64L64 128l54.6-32V32zM48.8 32.4l30.8 7.8V95l-30.8-7.8zm57.2 2.4v54.7L82 95V40.2zm-59.8-2.2v54.7L21 92.8V38zm-10.4 5.9a5.2 5.2 0 0 0-5.1 5c0 1.1.6 2.6 1.1 3.6l4 7.6 3.9-7.6c.4-1 1.1-2.4 1.1-3.6 0-2.6-2.3-5-5-5zm-.2 3h.2c1 0 2 .9 2 2a2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1 .8-2 1.8-2zM64.2 44c-7 0-13 6.1-13 12.7 0 3 1.7 6.8 3 9.4l10 19.3L74 66c1.2-2.6 3-6.2 3-9.4C77 50.1 71.2 44 64 44zm0 7.7a5 5 0 0 1 5 5 5 5 0 0 1-10 0 5 5 0 0 1 5-5zM25.6 59a3.5 3.5 0 0 0-3.4 3.3c0 .8.5 1.8.8 2.5l2.6 5 2.6-5c.3-.7.8-1.7.8-2.5 0-1.7-1.5-3.3-3.4-3.3zm0 2a1.3 1.3 0 1 1 0 2.6 1.3 1.3 0 0 1-1.3-1.3 1.3 1.3 0 0 1 1.3-1.3zM92 66.8c-2.7 0-5 2.4-5 5 0 1.2.6 2.7 1.1 3.7l4 7.5 3.8-7.5c.5-1 1.2-2.4 1.2-3.7 0-2.6-2.3-5-5-5zm0 3c1.1 0 2 1 2 2a2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1 .9-1.9 2-2z\"/>\n <path d=\"M69-158h58v67H69z\" fill=\"#fff\"/>\n </g>\n</svg>\n"
},
"$:/plugins/sycom/leaflet/images/layers.svg": {
"title": "$:/plugins/sycom/leaflet/images/layers.svg",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"26\" width=\"26\"><path d=\"M0 17l13-8 13 8-13 8-13-8\" fill=\"#b9b9b9\"/><path d=\"M0 17v1l13 8 13-8v-1l-13 8z\" fill=\"#737373\"/><path d=\"M0 13l13-8 13 8-13 8-13-8\" fill=\"#cdcdcd\"/>\n <path d=\"M0 13v1l13 8 13-8v-1l-13 8z\" fill=\"#737373\"/><path d=\"M0 9l13-8 13 8-13 8L0 9\" fill-opacity=\".6\" fill=\"#e9e9e9\"/><path d=\"M0 9v1l13 8 13-8V9l-13 8z\" fill=\"#737373\"/></svg>\n",
"type": "image/svg+xml",
"created": "20161028202401905",
"modified": "20180531154011600",
"tags": "$:/tags/Image"
},
"$:/plugins/sycom/leaflet/images/marker.svg": {
"title": "$:/plugins/sycom/leaflet/images/marker.svg",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"40\" fill-rule=\"evenodd\"><path fill=\"none\" d=\"M6.279 4.463h12.625v14.5H6.279z\"/><path fill=\"$primary$\" fill-opacity=\".8\" stroke=\"#fff\" stroke-linecap=\"round\" d=\"M12.544.5C5.971.5.5 6.191.5 12.366c0 2.778 1.564 6.308 2.694 8.746L12.5 38.984l9.262-17.872c1.13-2.438 2.738-5.791 2.738-8.746C24.5 6.191 19.117.5 12.544.5zm0 7.155a4.714 4.714 0 0 1 4.679 4.71c0 2.588-2.095 4.663-4.679 4.679-2.584-.017-4.679-2.09-4.679-4.679a4.714 4.714 0 0 1 4.679-4.71z\" class=\"leaflet-marker-colored\"/><path fill=\"none\" stroke=\"#fff\" stroke-linecap=\"round\" stroke-opacity=\".9\" d=\"M12.531 1.607c-5.944 0-10.938 5.219-10.938 10.75 0 2.359 1.443 5.832 2.563 8.25l.031.031L12.5 36.607l8.25-15.969.031-.031c1.135-2.448 2.625-5.706 2.625-8.25 0-5.538-4.931-10.75-10.875-10.75zm0 4.969c3.168.021 5.781 2.601 5.781 5.781 0 3.18-2.613 5.761-5.781 5.781-3.168-.02-5.75-2.61-5.75-5.781 0-3.172 2.582-5.761 5.75-5.781z\"/></svg>\n",
"type": "text/vnd.tiddlywiki",
"created": "20161028202401905",
"modified": "20180531124011600",
"tags": "$:/tags/Image",
"marker_dim": "25 40 12.5 40",
"caption": "marker"
},
"$:/plugins/sycom/leaflet/images/markershadow.svg": {
"title": "$:/plugins/sycom/leaflet/images/markershadow.svg",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"50\" height=\"40\"><filter id=\"a\" width=\"200\" height=\"200\" x=\"-50\" y=\"-50\"><feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"1.5\"/></filter><path fill=\"none\" d=\"M47 0a52 52 0 0 0-34 21L0 40l30-19 13-9c7-6 9-12 4-12zm-9 7a3 8 58 0 1-2 5c-3 3-7 5-9 5-3 0-2-2 1-5a3 8 58 0 1 10-5z\" filter=\"url(#a)\"/></svg>\n",
"type": "image/svg+xml",
"created": "20161028202401905",
"modified": "20180531155500000",
"tags": "$:/tags/Image",
"marker_dim": "50 40 0 40"
},
"$:/plugins/sycom/leaflet/images/pin.svg": {
"title": "$:/plugins/sycom/leaflet/images/pin.svg",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"35\"><defs><linearGradient id=\"a\"><stop offset=\"0\" stop-color=\"#fff\"/><stop offset=\"1\" stop-color=\"#fff\" stop-opacity=\"0\"/></linearGradient><radialGradient id=\"b\" cx=\"7\" cy=\"7\" r=\"8\" fx=\"5\" fy=\"5\" gradientTransform=\"scale(1.12)\" gradientUnits=\"userSpaceOnUse\" href=\"#a\"/></defs><g fill-rule=\"evenodd\"><path d=\"M9 20h2v15H9z\"/><circle cx=\"10\" cy=\"10\" r=\"10\" class=\"leaflet-marker-colored\" fill-opacity=\".8\" fill=\"$primary$\"/><circle cx=\"10\" cy=\"10\" r=\"10\" fill=\"url(#b)\"/></g></svg>\n",
"type": "text/vnd.tiddlywiki",
"created": "20161028202401905",
"modified": "20180531154500000",
"tags": "$:/tags/Image",
"marker_dim": "20 35 10 35",
"caption": "pin"
},
"$:/plugins/sycom/leaflet/images/pinshadow.svg": {
"title": "$:/plugins/sycom/leaflet/images/pinshadow.svg",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\"><filter id=\"a\" width=\"200\" height=\"200\" x=\"-50\" y=\"-50\"><feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"1.5\"/></filter><ellipse cx=\"8\" cy=\"8\" style=\"stroke:none; fill-opacity:.3; filter: url(#a)\" rx=\"7\" ry=\"7\"/></svg>\n",
"type": "image/svg+xml",
"created": "20170129162401910",
"modified": "20180531155000000",
"tags": "$:/tags/Image",
"marker_dim": "15 15 5 7"
},
"$:/plugins/sycom/leaflet/images/point.svg": {
"title": "$:/plugins/sycom/leaflet/images/point.svg",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" fill-rule=\"evenodd\"><ellipse cx=\"7.5\" cy=\"7.5\" fill=\"none\" stroke=\"#fff\" stroke-opacity=\".8\" rx=\"7.5\" ry=\"7.5\"/><ellipse cx=\"7.5\" cy=\"7.5\" fill=\"$primary$\" fill-opacity=\".8\" stroke=\"#000\" stroke-opacity=\".8\" stroke-width=\".5\" class=\"leaflet-marker-colored\" rx=\"7\" ry=\"7\"/></svg>\n",
"type": "text/vnd.tiddlywiki",
"created": "20170129162401905",
"modified": "20180531165500000",
"tags": "$:/tags/Image",
"marker_dim": "15 15 7.5 7.5",
"caption": "point"
},
"$:/plugins/sycom/leaflet/images/pointshadow.svg": {
"title": "$:/plugins/sycom/leaflet/images/pointshadow.svg",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\"><filter id=\"a\" width=\"200\" height=\"200\" x=\"-50\" y=\"-50\"><feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"1.5\"/></filter><ellipse cx=\"7.5\" cy=\"7.5\" fill-opacity=\".3\" filter=\"url(#a)\" rx=\"7.2\" ry=\"7.2\"/></svg>\n",
"type": "image/svg+xml",
"created": "20170129162401910",
"modified": "20180531165600000",
"tags": "$:/tags/Image",
"marker_dim": "15 15 0 12"
},
"$:/plugins/sycom/leaflet/lib/tileLayers.json": {
"text": "[\n {\n \"id\": \"osmfr\",\n \"nom\": \"OSM France\",\n \"url\": \"http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png\",\n \"attrib\": \"fond par <a href='http://osm.org/copyright'>OSM</a>, licence <a href='http://creativecommons.org/licenses/by-sa/3.0'>CC BY SA</a>. Données ©Contributeurs <a href='http://openstreetmap.org'>OSM</a>, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n \"zMin\": 1,\n \"zMax\": 20\n },\n {\n \"id\": \"osm\",\n \"nom\": \"OpenStreetMap\",\n \"url\": \"http://{s}.tile.osm.org/{z}/{x}/{y}.png\",\n \"attrib\": \"Map tiles by ©<a href='http://osm.org/copyright'>OSM</a>, licence <a href='http://creativecommons.org/licenses/by-sa/3.0'>CC BY SA</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n \"zMin\": 1,\n \"zMax\": 20\n },\n {\n \"id\": \"osmbw\",\n \"nom\": \"OSM N&B\",\n \"url\": \"http://www.toolserver.org/tiles/bw-mapnik/{z}/{x}/{y}.png\",\n \"attrib\": \"Tiles hosted by wikimedia labs. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n \"zMin\": 1,\n \"zMax\": 20\n },\n {\n \"id\": \"sat\",\n \"nom\": \"Satellite Esri\",\n \"url\": \"http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}\",\n \"attrib\": \"©Map tiles by Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community\",\n \"zMin\": 1,\n \"zMax\": 20\n },\n {\n \"id\": \"natgeo\",\n \"nom\": \"National Geog.\",\n \"url\": \"http://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/tile/{z}/{y}/{x}\",\n \"attrib\": \"©Map tiles by Esri — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC\",\n \"zMin\": 1,\n \"zMax\": 12\n },\n {\n \"id\": \"toner\",\n \"nom\": \"Black Ink\",\n \"url\": \"http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png\",\n \"attrib\": \"Map tiles by <a href='http://stamen.com'>Stamen Design</a>, licence <a href='http://creativecommons.org/licenses/by/3.0'>CC BY 3.0</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n \"zMin\": 1,\n \"zMax\": 20\n },\n {\n \"id\": \"water\",\n \"nom\": \"Water painting\",\n \"url\": \"http://{s}.tile.stamen.com/watercolor/{z}/{x}/{y}.png\",\n \"attrib\": \"Map tiles by <a href='http://stamen.com'>Stamen Design</a>, licence <a href='http://creativecommons.org/licenses/by/3.0'>CC BY 3.0</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n \"zMin\": 1,\n \"zMax\": 20\n },\n {\n \"id\": \"thunder\",\n \"nom\": \"Thunderforest\",\n \"url\": \"http://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png\",\n \"attrib\": \"Map tiles by <a href='http://thunderforest.com/'>Thunderforest</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n \"zMin\": 1,\n \"zMax\": 20\n },\n {\n \"id\": \"dark\",\n \"nom\": \"Dark Matter\",\n \"url\": \"http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png\",\n \"attrib\": \"©Map tiles by <a href='https://cartodb.com/basemaps/' target='_blank'>CartoDB</a>, under <a href='https://creativecommons.org/licenses/by/3.0/' target='_blank'>CC BY 3.0</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n \"zMin\": 1,\n \"zMax\": 20\n },\n {\n \"id\": \"positron\",\n \"nom\": \"Positron\",\n \"url\": \"http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png\",\n \"attrib\": \"©Map tiles by <a href='https://cartodb.com/basemaps/' target='_blank'>CartoDB</a>, under <a href='https://creativecommons.org/licenses/by/3.0/' target='_blank'>CC BY 3.0</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.\",\n \"zMin\": 1,\n \"zMax\": 20\n }\n]\n",
"type": "application/json",
"title": "$:/plugins/sycom/leaflet/lib/tileLayers.json"
},
"$:/plugins/sycom/leaflet/lib/leaflet.css": {
"text": "/* required styles */\n\n.leaflet-pane,\n.leaflet-tile,\n.leaflet-marker-icon,\n.leaflet-marker-shadow,\n.leaflet-tile-container,\n.leaflet-pane > svg,\n.leaflet-pane > canvas,\n.leaflet-zoom-box,\n.leaflet-image-layer,\n.leaflet-layer {\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\t}\n.leaflet-container {\n\toverflow: hidden;\n\t}\n.leaflet-tile,\n.leaflet-marker-icon,\n.leaflet-marker-shadow {\n\t-webkit-user-select: none;\n\t -moz-user-select: none;\n\t user-select: none;\n\t -webkit-user-drag: none;\n\t}\n/* Safari renders non-retina tile on retina better with this, but Chrome is worse */\n.leaflet-safari .leaflet-tile {\n\timage-rendering: -webkit-optimize-contrast;\n\t}\n/* hack that prevents hw layers \"stretching\" when loading new tiles */\n.leaflet-safari .leaflet-tile-container {\n\twidth: 1600px;\n\theight: 1600px;\n\t-webkit-transform-origin: 0 0;\n\t}\n.leaflet-marker-icon,\n.leaflet-marker-shadow {\n\tdisplay: block;\n\t}\n/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */\n/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */\n.leaflet-container .leaflet-overlay-pane svg,\n.leaflet-container .leaflet-marker-pane img,\n.leaflet-container .leaflet-shadow-pane img,\n.leaflet-container .leaflet-tile-pane img,\n.leaflet-container img.leaflet-image-layer {\n\tmax-width: none !important;\n\tmax-height: none !important;\n\t}\n\n.leaflet-container.leaflet-touch-zoom {\n\t-ms-touch-action: pan-x pan-y;\n\ttouch-action: pan-x pan-y;\n\t}\n.leaflet-container.leaflet-touch-drag {\n\t-ms-touch-action: pinch-zoom;\n\t/* Fallback for FF which doesn't support pinch-zoom */\n\ttouch-action: none;\n\ttouch-action: pinch-zoom;\n}\n.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {\n\t-ms-touch-action: none;\n\ttouch-action: none;\n}\n.leaflet-container {\n\t-webkit-tap-highlight-color: transparent;\n}\n.leaflet-container a {\n\t-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);\n}\n.leaflet-tile {\n\tfilter: inherit;\n\tvisibility: hidden;\n\t}\n.leaflet-tile-loaded {\n\tvisibility: inherit;\n\t}\n.leaflet-zoom-box {\n\twidth: 0;\n\theight: 0;\n\t-moz-box-sizing: border-box;\n\t box-sizing: border-box;\n\tz-index: 800;\n\t}\n/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */\n.leaflet-overlay-pane svg {\n\t-moz-user-select: none;\n\t}\n\n.leaflet-pane { z-index: 400; }\n\n.leaflet-tile-pane { z-index: 200; }\n.leaflet-overlay-pane { z-index: 400; }\n.leaflet-shadow-pane { z-index: 500; }\n.leaflet-marker-pane { z-index: 600; }\n.leaflet-tooltip-pane { z-index: 650; }\n.leaflet-popup-pane { z-index: 700; }\n\n.leaflet-map-pane canvas { z-index: 100; }\n.leaflet-map-pane svg { z-index: 200; }\n\n.leaflet-vml-shape {\n\twidth: 1px;\n\theight: 1px;\n\t}\n.lvml {\n\tbehavior: url(#default#VML);\n\tdisplay: inline-block;\n\tposition: absolute;\n\t}\n\n\n/* control positioning */\n\n.leaflet-control {\n\tposition: relative;\n\tz-index: 800;\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\n\tpointer-events: auto;\n\t}\n.leaflet-top,\n.leaflet-bottom {\n\tposition: absolute;\n\tz-index: 1000;\n\tpointer-events: none;\n\t}\n.leaflet-top {\n\ttop: 0;\n\t}\n.leaflet-right {\n\tright: 0;\n\t}\n.leaflet-bottom {\n\tbottom: 0;\n\t}\n.leaflet-left {\n\tleft: 0;\n\t}\n.leaflet-control {\n\tfloat: left;\n\tclear: both;\n\t}\n.leaflet-right .leaflet-control {\n\tfloat: right;\n\t}\n.leaflet-top .leaflet-control {\n\tmargin-top: 10px;\n\t}\n.leaflet-bottom .leaflet-control {\n\tmargin-bottom: 10px;\n\t}\n.leaflet-left .leaflet-control {\n\tmargin-left: 10px;\n\t}\n.leaflet-right .leaflet-control {\n\tmargin-right: 10px;\n\t}\n\n\n/* zoom and fade animations */\n\n.leaflet-fade-anim .leaflet-tile {\n\twill-change: opacity;\n\t}\n.leaflet-fade-anim .leaflet-popup {\n\topacity: 0;\n\t-webkit-transition: opacity 0.2s linear;\n\t -moz-transition: opacity 0.2s linear;\n\t -o-transition: opacity 0.2s linear;\n\t transition: opacity 0.2s linear;\n\t}\n.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {\n\topacity: 1;\n\t}\n.leaflet-zoom-animated {\n\t-webkit-transform-origin: 0 0;\n\t -ms-transform-origin: 0 0;\n\t transform-origin: 0 0;\n\t}\n.leaflet-zoom-anim .leaflet-zoom-animated {\n\twill-change: transform;\n\t}\n.leaflet-zoom-anim .leaflet-zoom-animated {\n\t-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);\n\t -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);\n\t -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);\n\t transition: transform 0.25s cubic-bezier(0,0,0.25,1);\n\t}\n.leaflet-zoom-anim .leaflet-tile,\n.leaflet-pan-anim .leaflet-tile {\n\t-webkit-transition: none;\n\t -moz-transition: none;\n\t -o-transition: none;\n\t transition: none;\n\t}\n\n.leaflet-zoom-anim .leaflet-zoom-hide {\n\tvisibility: hidden;\n\t}\n\n\n/* cursors */\n\n.leaflet-interactive {\n\tcursor: pointer;\n\t}\n.leaflet-grab {\n\tcursor: -webkit-grab;\n\tcursor: -moz-grab;\n\t}\n.leaflet-crosshair,\n.leaflet-crosshair .leaflet-interactive {\n\tcursor: crosshair;\n\t}\n.leaflet-popup-pane,\n.leaflet-control {\n\tcursor: auto;\n\t}\n.leaflet-dragging .leaflet-grab,\n.leaflet-dragging .leaflet-grab .leaflet-interactive,\n.leaflet-dragging .leaflet-marker-draggable {\n\tcursor: move;\n\tcursor: -webkit-grabbing;\n\tcursor: -moz-grabbing;\n\t}\n\n/* marker & overlays interactivity */\n.leaflet-marker-icon,\n.leaflet-marker-shadow,\n.leaflet-image-layer,\n.leaflet-pane > svg path,\n.leaflet-tile-container {\n\tpointer-events: none;\n\t}\n\n.leaflet-marker-icon.leaflet-interactive,\n.leaflet-image-layer.leaflet-interactive,\n.leaflet-pane > svg path.leaflet-interactive {\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\n\tpointer-events: auto;\n\t}\n\n/* visual tweaks */\n\n.leaflet-container {\n\tbackground: #ddd;\n\toutline: 0;\n\t}\n.leaflet-container a {\n\tcolor: #0078A8;\n\t}\n.leaflet-container a.leaflet-active {\n\toutline: 2px solid orange;\n\t}\n.leaflet-zoom-box {\n\tborder: 2px dotted #38f;\n\tbackground: rgba(255,255,255,0.5);\n\t}\n\n\n/* general typography */\n.leaflet-container {\n\tfont: 12px/1.5 \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n\t}\n\n\n/* general toolbar styles */\n\n.leaflet-bar {\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.65);\n\tborder-radius: 4px;\n\t}\n.leaflet-bar a,\n.leaflet-bar a:hover {\n\tbackground-color: #fff;\n\tborder-bottom: 1px solid #ccc;\n\twidth: 26px;\n\theight: 26px;\n\tline-height: 26px;\n\tdisplay: block;\n\ttext-align: center;\n\ttext-decoration: none;\n\tcolor: black;\n\t}\n.leaflet-bar a,\n.leaflet-control-layers-toggle {\n\tbackground-position: 50% 50%;\n\tbackground-repeat: no-repeat;\n\tdisplay: block;\n\t}\n.leaflet-bar a:hover {\n\tbackground-color: #f4f4f4;\n\t}\n.leaflet-bar a:first-child {\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\t}\n.leaflet-bar a:last-child {\n\tborder-bottom-left-radius: 4px;\n\tborder-bottom-right-radius: 4px;\n\tborder-bottom: none;\n\t}\n.leaflet-bar a.leaflet-disabled {\n\tcursor: default;\n\tbackground-color: #f4f4f4;\n\tcolor: #bbb;\n\t}\n\n.leaflet-touch .leaflet-bar a {\n\twidth: 30px;\n\theight: 30px;\n\tline-height: 30px;\n\t}\n.leaflet-touch .leaflet-bar a:first-child {\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\t}\n.leaflet-touch .leaflet-bar a:last-child {\n\tborder-bottom-left-radius: 2px;\n\tborder-bottom-right-radius: 2px;\n\t}\n\n/* zoom control */\n\n.leaflet-control-zoom-in,\n.leaflet-control-zoom-out {\n\tfont: bold 18px 'Lucida Console', Monaco, monospace;\n\ttext-indent: 1px;\n\t}\n\n.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {\n\tfont-size: 22px;\n\t}\n\n\n/* layers control */\n\n.leaflet-control-layers {\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.4);\n\tbackground: #fff;\n\tborder-radius: 5px;\n\t}\n.leaflet-control-layers-toggle {\n\tbackground-image: url(images/layers.png);\n\twidth: 36px;\n\theight: 36px;\n\t}\n.leaflet-retina .leaflet-control-layers-toggle {\n\tbackground-image: url(images/layers-2x.png);\n\tbackground-size: 26px 26px;\n\t}\n.leaflet-touch .leaflet-control-layers-toggle {\n\twidth: 44px;\n\theight: 44px;\n\t}\n.leaflet-control-layers .leaflet-control-layers-list,\n.leaflet-control-layers-expanded .leaflet-control-layers-toggle {\n\tdisplay: none;\n\t}\n.leaflet-control-layers-expanded .leaflet-control-layers-list {\n\tdisplay: block;\n\tposition: relative;\n\t}\n.leaflet-control-layers-expanded {\n\tpadding: 6px 10px 6px 6px;\n\tcolor: #333;\n\tbackground: #fff;\n\t}\n.leaflet-control-layers-scrollbar {\n\toverflow-y: scroll;\n\toverflow-x: hidden;\n\tpadding-right: 5px;\n\t}\n.leaflet-control-layers-selector {\n\tmargin-top: 2px;\n\tposition: relative;\n\ttop: 1px;\n\t}\n.leaflet-control-layers label {\n\tdisplay: block;\n\t}\n.leaflet-control-layers-separator {\n\theight: 0;\n\tborder-top: 1px solid #ddd;\n\tmargin: 5px -10px 5px -6px;\n\t}\n\n/* Default icon URLs */\n.leaflet-default-icon-path {\n\tbackground-image: url(images/marker-icon.png);\n\t}\n\n\n/* attribution and scale controls */\n\n.leaflet-container .leaflet-control-attribution {\n\tbackground: #fff;\n\tbackground: rgba(255, 255, 255, 0.7);\n\tmargin: 0;\n\t}\n.leaflet-control-attribution,\n.leaflet-control-scale-line {\n\tpadding: 0 5px;\n\tcolor: #333;\n\t}\n.leaflet-control-attribution a {\n\ttext-decoration: none;\n\t}\n.leaflet-control-attribution a:hover {\n\ttext-decoration: underline;\n\t}\n.leaflet-container .leaflet-control-attribution,\n.leaflet-container .leaflet-control-scale {\n\tfont-size: 11px;\n\t}\n.leaflet-left .leaflet-control-scale {\n\tmargin-left: 5px;\n\t}\n.leaflet-bottom .leaflet-control-scale {\n\tmargin-bottom: 5px;\n\t}\n.leaflet-control-scale-line {\n\tborder: 2px solid #777;\n\tborder-top: none;\n\tline-height: 1.1;\n\tpadding: 2px 5px 1px;\n\tfont-size: 11px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\t-moz-box-sizing: border-box;\n\t box-sizing: border-box;\n\n\tbackground: #fff;\n\tbackground: rgba(255, 255, 255, 0.5);\n\t}\n.leaflet-control-scale-line:not(:first-child) {\n\tborder-top: 2px solid #777;\n\tborder-bottom: none;\n\tmargin-top: -2px;\n\t}\n.leaflet-control-scale-line:not(:first-child):not(:last-child) {\n\tborder-bottom: 2px solid #777;\n\t}\n\n.leaflet-touch .leaflet-control-attribution,\n.leaflet-touch .leaflet-control-layers,\n.leaflet-touch .leaflet-bar {\n\tbox-shadow: none;\n\t}\n.leaflet-touch .leaflet-control-layers,\n.leaflet-touch .leaflet-bar {\n\tborder: 2px solid rgba(0,0,0,0.2);\n\tbackground-clip: padding-box;\n\t}\n\n\n/* popup */\n\n.leaflet-popup {\n\tposition: absolute;\n\ttext-align: center;\n\tmargin-bottom: 20px;\n\t}\n.leaflet-popup-content-wrapper {\n\tpadding: 1px;\n\ttext-align: left;\n\tborder-radius: 12px;\n\t}\n.leaflet-popup-content {\n\tmargin: 13px 19px;\n\tline-height: 1.4;\n\t}\n.leaflet-popup-content p {\n\tmargin: 18px 0;\n\t}\n.leaflet-popup-tip-container {\n\twidth: 40px;\n\theight: 20px;\n\tposition: absolute;\n\tleft: 50%;\n\tmargin-left: -20px;\n\toverflow: hidden;\n\tpointer-events: none;\n\t}\n.leaflet-popup-tip {\n\twidth: 17px;\n\theight: 17px;\n\tpadding: 1px;\n\n\tmargin: -10px auto 0;\n\n\t-webkit-transform: rotate(45deg);\n\t -moz-transform: rotate(45deg);\n\t -ms-transform: rotate(45deg);\n\t -o-transform: rotate(45deg);\n\t transform: rotate(45deg);\n\t}\n.leaflet-popup-content-wrapper,\n.leaflet-popup-tip {\n\tbackground: white;\n\tcolor: #333;\n\tbox-shadow: 0 3px 14px rgba(0,0,0,0.4);\n\t}\n.leaflet-container a.leaflet-popup-close-button {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tpadding: 4px 4px 0 0;\n\tborder: none;\n\ttext-align: center;\n\twidth: 18px;\n\theight: 14px;\n\tfont: 16px/14px Tahoma, Verdana, sans-serif;\n\tcolor: #c3c3c3;\n\ttext-decoration: none;\n\tfont-weight: bold;\n\tbackground: transparent;\n\t}\n.leaflet-container a.leaflet-popup-close-button:hover {\n\tcolor: #999;\n\t}\n.leaflet-popup-scrolled {\n\toverflow: auto;\n\tborder-bottom: 1px solid #ddd;\n\tborder-top: 1px solid #ddd;\n\t}\n\n.leaflet-oldie .leaflet-popup-content-wrapper {\n\tzoom: 1;\n\t}\n.leaflet-oldie .leaflet-popup-tip {\n\twidth: 24px;\n\tmargin: 0 auto;\n\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)\";\n\tfilter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);\n\t}\n.leaflet-oldie .leaflet-popup-tip-container {\n\tmargin-top: -1px;\n\t}\n\n.leaflet-oldie .leaflet-control-zoom,\n.leaflet-oldie .leaflet-control-layers,\n.leaflet-oldie .leaflet-popup-content-wrapper,\n.leaflet-oldie .leaflet-popup-tip {\n\tborder: 1px solid #999;\n\t}\n\n\n/* div icon */\n\n.leaflet-div-icon {\n\tbackground: #fff;\n\tborder: 1px solid #666;\n\t}\n\n\n/* Tooltip */\n/* Base styles for the element that has a tooltip */\n.leaflet-tooltip {\n\tposition: absolute;\n\tpadding: 6px;\n\tbackground-color: #fff;\n\tborder: 1px solid #fff;\n\tborder-radius: 3px;\n\tcolor: #222;\n\twhite-space: nowrap;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\tpointer-events: none;\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.4);\n\t}\n.leaflet-tooltip.leaflet-clickable {\n\tcursor: pointer;\n\tpointer-events: auto;\n\t}\n.leaflet-tooltip-top:before,\n.leaflet-tooltip-bottom:before,\n.leaflet-tooltip-left:before,\n.leaflet-tooltip-right:before {\n\tposition: absolute;\n\tpointer-events: none;\n\tborder: 6px solid transparent;\n\tbackground: transparent;\n\tcontent: \"\";\n\t}\n\n/* Directions */\n\n.leaflet-tooltip-bottom {\n\tmargin-top: 6px;\n}\n.leaflet-tooltip-top {\n\tmargin-top: -6px;\n}\n.leaflet-tooltip-bottom:before,\n.leaflet-tooltip-top:before {\n\tleft: 50%;\n\tmargin-left: -6px;\n\t}\n.leaflet-tooltip-top:before {\n\tbottom: 0;\n\tmargin-bottom: -12px;\n\tborder-top-color: #fff;\n\t}\n.leaflet-tooltip-bottom:before {\n\ttop: 0;\n\tmargin-top: -12px;\n\tmargin-left: -6px;\n\tborder-bottom-color: #fff;\n\t}\n.leaflet-tooltip-left {\n\tmargin-left: -6px;\n}\n.leaflet-tooltip-right {\n\tmargin-left: 6px;\n}\n.leaflet-tooltip-left:before,\n.leaflet-tooltip-right:before {\n\ttop: 50%;\n\tmargin-top: -6px;\n\t}\n.leaflet-tooltip-left:before {\n\tright: 0;\n\tmargin-right: -12px;\n\tborder-left-color: #fff;\n\t}\n.leaflet-tooltip-right:before {\n\tleft: 0;\n\tmargin-left: -12px;\n\tborder-right-color: #fff;\n\t}\n",
"type": "text/css",
"title": "$:/plugins/sycom/leaflet/lib/leaflet.css",
"tags": "$:/tags/Stylesheet"
},
"$:/plugins/sycom/leaflet/lib/leaflet-markercluster.css": {
"text": ".leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {\n\t-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;\n\t-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;\n\t-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;\n\ttransition: transform 0.3s ease-out, opacity 0.3s ease-in;\n}\n\n.leaflet-cluster-spider-leg {\n\t/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */\n\t-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;\n\t-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;\n\t-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;\n\ttransition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;\n}\n",
"type": "text/css",
"title": "$:/plugins/sycom/leaflet/lib/leaflet-markercluster.css",
"tags": "$:/tags/Stylesheet"
},
"$:/plugins/sycom/leaflet/lib/leaflet.js": {
"text": "var L;if($tw.browser){\n/* @preserve\n * Leaflet 1.3.1, a JS library for interactive maps. http://leafletjs.com\n * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?i(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],i):i(t.L={})}(this,function(t){\"use strict\";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++){o=arguments[e];for(i in o)t[i]=o[i]}return t}function e(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}function n(t){return t._leaflet_id=t._leaflet_id||++ti,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function s(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function r(){return!1}function a(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function h(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}function u(t){return h(t).split(/\\s+/)}function l(t,i){t.hasOwnProperty(\"options\")||(t.options=t.options?Qt(t.options):{});for(var e in i)t.options[e]=i[e];return t.options}function c(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+\"=\"+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf(\"?\")?\"&\":\"?\")+n.join(\"&\")}function _(t,i){return t.replace(ii,function(t,e){var n=i[e];if(void 0===n)throw new Error(\"No value provided for variable \"+t);return\"function\"==typeof n&&(n=n(i)),n})}function d(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}function p(t){return window[\"webkit\"+t]||window[\"moz\"+t]||window[\"ms\"+t]}function m(t){var i=+new Date,e=Math.max(0,16-(i-oi));return oi=i+e,window.setTimeout(t,e)}function f(t,i,n){if(!n||si!==m)return si.call(window,e(t,i));t.call(i)}function g(t){t&&ri.call(window,t)}function v(){}function y(t){if(\"undefined\"!=typeof L&&L&&L.Mixin){t=ei(t)?t:[t];for(var i=0;i<t.length;i++)t[i]===L.Mixin.Events&&console.warn(\"Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.\",(new Error).stack)}}function x(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}function w(t,i,e){return t instanceof x?t:ei(t)?new x(t[0],t[1]):void 0===t||null===t?t:\"object\"==typeof t&&\"x\"in t&&\"y\"in t?new x(t.x,t.y):new x(t,i,e)}function P(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function b(t,i){return!t||t instanceof P?t:new P(t,i)}function T(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function z(t,i){return t instanceof T?t:new T(t,i)}function M(t,i,e){if(isNaN(t)||isNaN(i))throw new Error(\"Invalid LatLng object: (\"+t+\", \"+i+\")\");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function C(t,i,e){return t instanceof M?t:ei(t)&&\"object\"!=typeof t[0]?3===t.length?new M(t[0],t[1],t[2]):2===t.length?new M(t[0],t[1]):null:void 0===t||null===t?t:\"object\"==typeof t&&\"lat\"in t?new M(t.lat,\"lng\"in t?t.lng:t.lon,t.alt):void 0===i?null:new M(t,i,e)}function Z(t,i,e,n){if(ei(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function S(t,i,e,n){return new Z(t,i,e,n)}function E(t){return document.createElementNS(\"http://www.w3.org/2000/svg\",t)}function k(t,i){var e,n,o,s,r,a,h=\"\";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)a=r[n],h+=(n?\"L\":\"M\")+a.x+\" \"+a.y;h+=i?Xi?\"z\":\"x\":\"\"}return h||\"M0 0\"}function I(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}function A(t,i,e,n){return\"touchstart\"===i?O(t,e,n):\"touchmove\"===i?W(t,e,n):\"touchend\"===i&&H(t,e,n),this}function B(t,i,e){var n=t[\"_leaflet_\"+i+e];return\"touchstart\"===i?t.removeEventListener(Qi,n,!1):\"touchmove\"===i?t.removeEventListener(te,n,!1):\"touchend\"===i&&(t.removeEventListener(ie,n,!1),t.removeEventListener(ee,n,!1)),this}function O(t,i,n){var o=e(function(t){if(\"mouse\"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(ne.indexOf(t.target.tagName)<0))return;$(t)}j(t,i)});t[\"_leaflet_touchstart\"+n]=o,t.addEventListener(Qi,o,!1),se||(document.documentElement.addEventListener(Qi,R,!0),document.documentElement.addEventListener(te,D,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,N,!0),se=!0)}function R(t){oe[t.pointerId]=t,re++}function D(t){oe[t.pointerId]&&(oe[t.pointerId]=t)}function N(t){delete oe[t.pointerId],re--}function j(t,i){t.touches=[];for(var e in oe)t.touches.push(oe[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&\"mouse\"!==t.pointerType||0!==t.buttons)&&j(t,i)};t[\"_leaflet_touchmove\"+e]=n,t.addEventListener(te,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t[\"_leaflet_touchend\"+e]=n,t.addEventListener(ie,n,!1),t.addEventListener(ee,n,!1)}function F(t,i,e){function n(t){var i;if(Ui){if(!Pi||\"mouse\"===t.pointerType)return;i=re}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Ui){if(!Pi||\"mouse\"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type=\"dblclick\",i(r),s=null}}var s,r,a=!1,h=250;return t[ue+ae+e]=n,t[ue+he+e]=o,t[ue+\"dblclick\"+e]=i,t.addEventListener(ae,n,!1),t.addEventListener(he,o,!1),t.addEventListener(\"dblclick\",i,!1),this}function U(t,i){var e=t[ue+ae+i],n=t[ue+he+i],o=t[ue+\"dblclick\"+i];return t.removeEventListener(ae,e,!1),t.removeEventListener(he,n,!1),Pi||t.removeEventListener(\"dblclick\",o,!1),this}function V(t,i,e,n){if(\"object\"==typeof i)for(var o in i)G(t,o,i[o],e);else for(var s=0,r=(i=u(i)).length;s<r;s++)G(t,i[s],e,n);return this}function q(t,i,e,n){if(\"object\"==typeof i)for(var o in i)K(t,o,i[o],e);else if(i)for(var s=0,r=(i=u(i)).length;s<r;s++)K(t,i[s],e,n);else{for(var a in t[le])K(t,a,t[le][a]);delete t[le]}return this}function G(t,i,e,o){var s=i+n(e)+(o?\"_\"+n(o):\"\");if(t[le]&&t[le][s])return this;var r=function(i){return e.call(o||t,i||window.event)},a=r;Ui&&0===i.indexOf(\"touch\")?A(t,i,r,s):!Vi||\"dblclick\"!==i||!F||Ui&&Si?\"addEventListener\"in t?\"mousewheel\"===i?t.addEventListener(\"onwheel\"in t?\"wheel\":\"mousewheel\",r,!1):\"mouseenter\"===i||\"mouseleave\"===i?(r=function(i){i=i||window.event,ot(t,i)&&a(i)},t.addEventListener(\"mouseenter\"===i?\"mouseover\":\"mouseout\",r,!1)):(\"click\"===i&&Ti&&(r=function(t){st(t,a)}),t.addEventListener(i,r,!1)):\"attachEvent\"in t&&t.attachEvent(\"on\"+i,r):F(t,r,s),t[le]=t[le]||{},t[le][s]=r}function K(t,i,e,o){var s=i+n(e)+(o?\"_\"+n(o):\"\"),r=t[le]&&t[le][s];if(!r)return this;Ui&&0===i.indexOf(\"touch\")?B(t,i,s):!Vi||\"dblclick\"!==i||!U||Ui&&Si?\"removeEventListener\"in t?\"mousewheel\"===i?t.removeEventListener(\"onwheel\"in t?\"wheel\":\"mousewheel\",r,!1):t.removeEventListener(\"mouseenter\"===i?\"mouseover\":\"mouseleave\"===i?\"mouseout\":i,r,!1):\"detachEvent\"in t&&t.detachEvent(\"on\"+i,r):U(t,s),t[le][s]=null}function Y(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,nt(t),this}function X(t){return G(t,\"mousewheel\",Y),this}function J(t){return V(t,\"mousedown touchstart dblclick\",Y),G(t,\"click\",et),this}function $(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Q(t){return $(t),Y(t),this}function tt(t,i){if(!i)return new x(t.clientX,t.clientY);var e=i.getBoundingClientRect(),n=e.width/i.offsetWidth||1,o=e.height/i.offsetHeight||1;return new x(t.clientX/n-e.left-i.clientLeft,t.clientY/o-e.top-i.clientTop)}function it(t){return Pi?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/ce:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function et(t){_e[t.type]=!0}function nt(t){var i=_e[t.type];return _e[t.type]=!1,i}function ot(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}function st(t,i){var e=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,n=pi&&e-pi;n&&n>100&&n<500||t.target._simulatedClick&&!t._simulated?Q(t):(pi=e,i(t))}function rt(t){return\"string\"==typeof t?document.getElementById(t):t}function at(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||\"auto\"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return\"auto\"===e?null:e}function ht(t,i,e){var n=document.createElement(t);return n.className=i||\"\",e&&e.appendChild(n),n}function ut(t){var i=t.parentNode;i&&i.removeChild(t)}function lt(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function ct(t){var i=t.parentNode;i.lastChild!==t&&i.appendChild(t)}function _t(t){var i=t.parentNode;i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function dt(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=gt(t);return e.length>0&&new RegExp(\"(^|\\\\s)\"+i+\"(\\\\s|$)\").test(e)}function pt(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;n<o;n++)t.classList.add(e[n]);else if(!dt(t,i)){var s=gt(t);ft(t,(s?s+\" \":\"\")+i)}}function mt(t,i){void 0!==t.classList?t.classList.remove(i):ft(t,h((\" \"+gt(t)+\" \").replace(\" \"+i+\" \",\" \")))}function ft(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function gt(t){return void 0===t.className.baseVal?t.className:t.className.baseVal}function vt(t,i){\"opacity\"in t.style?t.style.opacity=i:\"filter\"in t.style&&yt(t,i)}function yt(t,i){var e=!1,n=\"DXImageTransform.Microsoft.Alpha\";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=\" progid:\"+n+\"(opacity=\"+i+\")\"}function xt(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function wt(t,i,e){var n=i||new x(0,0);t.style[pe]=(Oi?\"translate(\"+n.x+\"px,\"+n.y+\"px)\":\"translate3d(\"+n.x+\"px,\"+n.y+\"px,0)\")+(e?\" scale(\"+e+\")\":\"\")}function Lt(t,i){t._leaflet_pos=i,Ni?wt(t,i):(t.style.left=i.x+\"px\",t.style.top=i.y+\"px\")}function Pt(t){return t._leaflet_pos||new x(0,0)}function bt(){V(window,\"dragstart\",$)}function Tt(){q(window,\"dragstart\",$)}function zt(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Mt(),ve=t,ye=t.style.outline,t.style.outline=\"none\",V(window,\"keydown\",Mt))}function Mt(){ve&&(ve.style.outline=ye,ve=void 0,ye=void 0,q(window,\"keydown\",Mt))}function Ct(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=kt(t,e),t=St(t,e)}function Zt(t,i,e){return Math.sqrt(Rt(t,i,e,!0))}function St(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+\"\"?Uint8Array:Array)(e);n[0]=n[e-1]=1,Et(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}function Et(t,i,e,n,o){var s,r,a,h=0;for(r=n+1;r<=o-1;r++)(a=Rt(t[r],t[n],t[o],!0))>h&&(s=r,h=a);h>e&&(i[s]=1,Et(t,i,e,n,s),Et(t,i,e,s,o))}function kt(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;n<s;n++)Ot(t[n],t[o])>i&&(e.push(t[n]),o=n);return o<s-1&&e.push(t[s-1]),e}function It(t,i,e,n,o){var s,r,a,h=n?Se:Bt(t,e),u=Bt(i,e);for(Se=u;;){if(!(h|u))return[t,i];if(h&u)return!1;a=Bt(r=At(t,i,s=h||u,e,o),e),s===h?(t=r,h=a):(i=r,u=a)}}function At(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,u=n.min,l=n.max;return 8&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&e?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&e&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new x(s,r,o)}function Bt(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.max.y&&(e|=8),e}function Ot(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Rt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function Dt(t){return!ei(t[0])||\"object\"!=typeof t[0][0]&&void 0!==t[0][0]}function Nt(t){return console.warn(\"Deprecated use of _flat, please use L.LineUtil.isFlat instead.\"),Dt(t)}function jt(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o<u;o++)t[o]._code=Bt(t[o],i);for(r=0;r<4;r++){for(l=_[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=At(h,a,l,i,e))._code=Bt(c,i),n.push(c)):(h._code&l&&((c=At(h,a,l,i,e))._code=Bt(c,i),n.push(c)),n.push(a));t=n}return t}function Wt(t,i){var e,n,o,s,r=\"Feature\"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=i&&i.pointToLayer,l=i&&i.coordsToLatLng||Ht;if(!a&&!r)return null;switch(r.type){case\"Point\":return e=l(a),u?u(t,e):new Xe(e);case\"MultiPoint\":for(o=0,s=a.length;o<s;o++)e=l(a[o]),h.push(u?u(t,e):new Xe(e));return new qe(h);case\"LineString\":case\"MultiLineString\":return n=Ft(a,\"LineString\"===r.type?0:1,l),new tn(n,i);case\"Polygon\":case\"MultiPolygon\":return n=Ft(a,\"Polygon\"===r.type?1:2,l),new en(n,i);case\"GeometryCollection\":for(o=0,s=r.geometries.length;o<s;o++){var c=Wt({geometry:r.geometries[o],type:\"Feature\",properties:t.properties},i);c&&h.push(c)}return new qe(h);default:throw new Error(\"Invalid GeoJSON object.\")}}function Ht(t){return new M(t[1],t[0],t[2])}function Ft(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?Ft(t[s],i-1,e):(e||Ht)(t[s]),o.push(n);return o}function Ut(t,i){return i=\"number\"==typeof i?i:6,void 0!==t.alt?[a(t.lng,i),a(t.lat,i),a(t.alt,i)]:[a(t.lng,i),a(t.lat,i)]}function Vt(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?Vt(t[s],i-1,e,n):Ut(t[s],n));return!i&&e&&o.push(o[0]),o}function qt(t,e){return t.feature?i({},t.feature,{geometry:e}):Gt(e)}function Gt(t){return\"Feature\"===t.type||\"FeatureCollection\"===t.type?t:{type:\"Feature\",properties:{},geometry:t}}function Kt(t,i){return new nn(t,i)}function Yt(t,i){return new dn(t,i)}function Xt(t){return Yi?new fn(t):null}function Jt(t){return Xi||Ji?new xn(t):null}var $t=Object.freeze;Object.freeze=function(t){return t};var Qt=Object.create||function(){function t(){}return function(i){return t.prototype=i,new t}}(),ti=0,ii=/\\{ *([\\w_-]+) *\\}/g,ei=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},ni=\"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=\",oi=0,si=window.requestAnimationFrame||p(\"RequestAnimationFrame\")||m,ri=window.cancelAnimationFrame||p(\"CancelAnimationFrame\")||p(\"CancelRequestAnimationFrame\")||function(t){window.clearTimeout(t)},ai=(Object.freeze||Object)({freeze:$t,extend:i,create:Qt,bind:e,lastId:ti,stamp:n,throttle:o,wrapNum:s,falseFn:r,formatNum:a,trim:h,splitWords:u,setOptions:l,getParamString:c,template:_,isArray:ei,indexOf:d,emptyImageUrl:ni,requestFn:si,cancelFn:ri,requestAnimFrame:f,cancelAnimFrame:g});v.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},n=e.__super__=this.prototype,o=Qt(n);o.constructor=e,e.prototype=o;for(var s in this)this.hasOwnProperty(s)&&\"prototype\"!==s&&\"__super__\"!==s&&(e[s]=this[s]);return t.statics&&(i(e,t.statics),delete t.statics),t.includes&&(y(t.includes),i.apply(null,[o].concat(t.includes)),delete t.includes),o.options&&(t.options=i(Qt(o.options),t.options)),i(o,t),o._initHooks=[],o.callInitHooks=function(){if(!this._initHooksCalled){n.callInitHooks&&n.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=o._initHooks.length;t<i;t++)o._initHooks[t].call(this)}},e},v.include=function(t){return i(this.prototype,t),this},v.mergeOptions=function(t){return i(this.prototype.options,t),this},v.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e=\"function\"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var hi={on:function(t,i,e){if(\"object\"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if(\"object\"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var a=n[o];if(a.ctx===e&&a.fn===i)return a.fn=r,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=r;delete this._events[t]}},fire:function(t,e,n){if(!this.listens(t,n))return this;var o=i({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var h=s[r];h.fn.call(h.ctx||this,o)}this._firingCount--}}return n&&this._propagateEvent(o),this},listens:function(t,i){var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,n){if(\"object\"==typeof t){for(var o in t)this.once(o,t[o],i);return this}var s=e(function(){this.off(t,i,n).off(t,s,n)},this);return this.on(t,i,n).on(t,s,n)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[n(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[n(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,i({layer:t.target,propagatedFrom:t.target},t),!0)}};hi.addEventListener=hi.on,hi.removeEventListener=hi.clearAllEventListeners=hi.off,hi.addOneTimeEventListener=hi.once,hi.fireEvent=hi.fire,hi.hasEventListeners=hi.listens;var ui=v.extend(hi),li=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=li(this.x),this.y=li(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return\"Point(\"+a(this.x)+\", \"+a(this.y)+\")\"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t=\"number\"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.x<e.x,r=o.y>i.y&&n.y<e.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},T.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof M)i=t,e=t;else{if(!(t instanceof T))return t?this.extend(C(t)||z(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new M(i.lat,i.lng),this._northEast=new M(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,o=Math.abs(i.lng-e.lng)*t;return new T(new M(i.lat-n,i.lng-o),new M(e.lat+n,e.lng+o))},getCenter:function(){return new M((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new M(this.getNorth(),this.getWest())},getSouthEast:function(){return new M(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t=\"number\"==typeof t[0]||t instanceof M||\"lat\"in t?C(t):z(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof T?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lat<e.lat,r=o.lng>i.lng&&n.lng<e.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(\",\")},equals:function(t,i){return!!t&&(t=z(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}},M.prototype={equals:function(t,i){return!!t&&(t=C(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return\"LatLng(\"+a(this.lat,t)+\", \"+a(this.lng,t)+\")\"},distanceTo:function(t){return _i.distance(this,C(t))},wrap:function(){return _i.wrapLatLng(this)},toBounds:function(t){var i=180*t/40075017,e=i/Math.cos(Math.PI/180*this.lat);return z([this.lat-i,this.lng-e],[this.lat+i,this.lng+e])},clone:function(){return new M(this.lat,this.lng,this.alt)}};var ci={latLngToPoint:function(t,i){var e=this.projection.project(t),n=this.scale(i);return this.transformation._transform(e,n)},pointToLatLng:function(t,i){var e=this.scale(i),n=this.transformation.untransform(t,e);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var i=this.projection.bounds,e=this.scale(t);return new P(this.transformation.transform(i.min,e),this.transformation.transform(i.max,e))},infinite:!1,wrapLatLng:function(t){var i=this.wrapLng?s(t.lng,this.wrapLng,!0):t.lng;return new M(this.wrapLat?s(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,o=i.lng-e.lng;if(0===n&&0===o)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new T(new M(s.lat-n,s.lng-o),new M(r.lat-n,r.lng-o))}},_i=i({},ci,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),r=Math.sin((i.lng-t.lng)*e/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),di={R:6378137,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,n=Math.max(Math.min(e,t.lat),-e),o=Math.sin(n*i);return new x(this.R*t.lng*i,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var i=180/Math.PI;return new M((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:function(){var t=6378137*Math.PI;return new P([-t,-t],[t,t])}()};Z.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return i=i||1,t.x=i*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return i=i||1,new x((t.x/i-this._b)/this._a,(t.y/i-this._d)/this._c)}};var pi,mi,fi,gi,vi=i({},_i,{code:\"EPSG:3857\",projection:di,transformation:function(){var t=.5/(Math.PI*di.R);return S(t,.5,-t,.5)}()}),yi=i({},vi,{code:\"EPSG:900913\"}),xi=document.documentElement.style,wi=\"ActiveXObject\"in window,Li=wi&&!document.addEventListener,Pi=\"msLaunchUri\"in navigator&&!(\"documentMode\"in document),bi=I(\"webkit\"),Ti=I(\"android\"),zi=I(\"android 2\")||I(\"android 3\"),Mi=parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),Ci=Ti&&I(\"Google\")&&Mi<537&&!(\"AudioNode\"in window),Zi=!!window.opera,Si=I(\"chrome\"),Ei=I(\"gecko\")&&!bi&&!Zi&&!wi,ki=!Si&&I(\"safari\"),Ii=I(\"phantom\"),Ai=\"OTransition\"in xi,Bi=0===navigator.platform.indexOf(\"Win\"),Oi=wi&&\"transition\"in xi,Ri=\"WebKitCSSMatrix\"in window&&\"m11\"in new window.WebKitCSSMatrix&&!zi,Di=\"MozPerspective\"in xi,Ni=!window.L_DISABLE_3D&&(Oi||Ri||Di)&&!Ai&&!Ii,ji=\"undefined\"!=typeof orientation||I(\"mobile\"),Wi=ji&&bi,Hi=ji&&Ri,Fi=!window.PointerEvent&&window.MSPointerEvent,Ui=!(!window.PointerEvent&&!Fi),Vi=!window.L_NO_TOUCH&&(Ui||\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),qi=ji&&Zi,Gi=ji&&Ei,Ki=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Yi=!!document.createElement(\"canvas\").getContext,Xi=!(!document.createElementNS||!E(\"svg\").createSVGRect),Ji=!Xi&&function(){try{var t=document.createElement(\"div\");t.innerHTML='<v:shape adj=\"1\"/>';var i=t.firstChild;return i.style.behavior=\"url(#default#VML)\",i&&\"object\"==typeof i.adj}catch(t){return!1}}(),$i=(Object.freeze||Object)({ie:wi,ielt9:Li,edge:Pi,webkit:bi,android:Ti,android23:zi,androidStock:Ci,opera:Zi,chrome:Si,gecko:Ei,safari:ki,phantom:Ii,opera12:Ai,win:Bi,ie3d:Oi,webkit3d:Ri,gecko3d:Di,any3d:Ni,mobile:ji,mobileWebkit:Wi,mobileWebkit3d:Hi,msPointer:Fi,pointer:Ui,touch:Vi,mobileOpera:qi,mobileGecko:Gi,retina:Ki,canvas:Yi,svg:Xi,vml:Ji}),Qi=Fi?\"MSPointerDown\":\"pointerdown\",te=Fi?\"MSPointerMove\":\"pointermove\",ie=Fi?\"MSPointerUp\":\"pointerup\",ee=Fi?\"MSPointerCancel\":\"pointercancel\",ne=[\"INPUT\",\"SELECT\",\"OPTION\"],oe={},se=!1,re=0,ae=Fi?\"MSPointerDown\":Ui?\"pointerdown\":\"touchstart\",he=Fi?\"MSPointerUp\":Ui?\"pointerup\":\"touchend\",ue=\"_leaflet_\",le=\"_leaflet_events\",ce=Bi&&Si?2*window.devicePixelRatio:Ei?window.devicePixelRatio:1,_e={},de=(Object.freeze||Object)({on:V,off:q,stopPropagation:Y,disableScrollPropagation:X,disableClickPropagation:J,preventDefault:$,stop:Q,getMousePosition:tt,getWheelDelta:it,fakeStop:et,skipped:nt,isExternalTarget:ot,addListener:V,removeListener:q}),pe=xt([\"transform\",\"WebkitTransform\",\"OTransform\",\"MozTransform\",\"msTransform\"]),me=xt([\"webkitTransition\",\"transition\",\"OTransition\",\"MozTransition\",\"msTransition\"]),fe=\"webkitTransition\"===me||\"OTransition\"===me?me+\"End\":\"transitionend\";if(\"onselectstart\"in document)mi=function(){V(window,\"selectstart\",$)},fi=function(){q(window,\"selectstart\",$)};else{var ge=xt([\"userSelect\",\"WebkitUserSelect\",\"OUserSelect\",\"MozUserSelect\",\"msUserSelect\"]);mi=function(){if(ge){var t=document.documentElement.style;gi=t[ge],t[ge]=\"none\"}},fi=function(){ge&&(document.documentElement.style[ge]=gi,gi=void 0)}}var ve,ye,xe=(Object.freeze||Object)({TRANSFORM:pe,TRANSITION:me,TRANSITION_END:fe,get:rt,getStyle:at,create:ht,remove:ut,empty:lt,toFront:ct,toBack:_t,hasClass:dt,addClass:pt,removeClass:mt,setClass:ft,getClass:gt,setOpacity:vt,testProp:xt,setTransform:wt,setPosition:Lt,getPosition:Pt,disableTextSelection:mi,enableTextSelection:fi,disableImageDrag:bt,enableImageDrag:Tt,preventOutline:zt,restoreOutline:Mt}),we=ui.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Pt(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire(\"start\"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){var e=this._startPos.add(this._offset.multiplyBy(t));i&&e._round(),Lt(this._el,e),this.fire(\"step\")},_complete:function(){g(this._animId),this._inProgress=!1,this.fire(\"end\")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),Le=ui.extend({options:{crs:vi,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,i){i=l(this,i),this._initContainer(t),this._initLayout(),this._onResize=e(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(C(i.center),i.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this.callInitHooks(),this._zoomAnimated=me&&Ni&&!qi&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),V(this._proxy,fe,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,n){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(C(t),e,this.options.maxBounds),n=n||{},this._stop(),this._loaded&&!n.reset&&!0!==n&&(void 0!==n.animate&&(n.zoom=i({animate:n.animate},n.zoom),n.pan=i({animate:n.animate,duration:n.duration},n.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),s=(t instanceof x?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():z(t);var e=w(i.paddingTopLeft||i.padding||[0,0]),n=w(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o=\"number\"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(e).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,i){if(!(t=z(t)).isValid())throw new Error(\"Bounds are not valid.\");var e=this._getBoundsCenterZoom(t,i);return this.setView(e.center,e.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){if(t=w(t).round(),i=i||{},!t.x&&!t.y)return this.fire(\"moveend\");if(!0!==i.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new we,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire(\"movestart\"),!1!==i.animate){pt(this._mapPane,\"leaflet-pan-anim\");var e=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)}else this._rawPanBy(t),this.fire(\"move\").fire(\"moveend\");return this},flyTo:function(t,i,e){function n(t){var i=(g*g-m*m+(t?-1:1)*x*x*v*v)/(2*(t?g:m)*x*v),e=Math.sqrt(i*i+1)-i;return e<1e-9?-18:Math.log(e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function s(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/s(t)}function a(t){return m*(s(w)/s(w+y*t))}function h(t){return m*(s(w)*r(w+y*t)-o(w))/x}function u(t){return 1-Math.pow(1-t,1.5)}function l(){var e=(Date.now()-L)/b,n=u(e)*P;e<=1?(this._flyToFrame=f(l,this),this._move(this.unproject(c.add(_.subtract(c).multiplyBy(h(n)/v)),p),this.getScaleZoom(m/a(n),p),{flyTo:!0})):this._move(t,i)._moveEnd(!0)}if(!1===(e=e||{}).animate||!Ni)return this.setView(t,i,e);this._stop();var c=this.project(this.getCenter()),_=this.project(t),d=this.getSize(),p=this._zoom;t=C(t),i=void 0===i?p:i;var m=Math.max(d.x,d.y),g=m*this.getZoomScale(p,i),v=_.distanceTo(c)||1,y=1.42,x=y*y,w=n(0),L=Date.now(),P=(n(1)-w)/y,b=e.duration?1e3*e.duration:1e3*P*.8;return this._moveStart(!0,e.noMoveStart),l.call(this),this},flyToBounds:function(t,i){var e=this._getBoundsCenterZoom(t,i);return this.flyTo(e.center,e.zoom,i)},setMaxBounds:function(t){return(t=z(t)).isValid()?(this.options.maxBounds&&this.off(\"moveend\",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on(\"moveend\",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off(\"moveend\",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire(\"zoomlevelschange\"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire(\"zoomlevelschange\"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire(\"move\"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,\"moveend\"),200)):this.fire(\"moveend\")),this.fire(\"resize\",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire(\"viewreset\"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!(\"geolocation\"in navigator))return this._handleGeolocationError({code:0,message:\"Geolocation not supported.\"}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?\"permission denied\":2===i?\"position unavailable\":\"timeout\");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire(\"locationerror\",{code:i,message:\"Geolocation error: \"+e+\".\"})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)\"number\"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire(\"locationfound\",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error(\"Map container is being reused by another instance\");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ut(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this._loaded&&this.fire(\"unload\");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)ut(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=ht(\"div\",\"leaflet-pane\"+(t?\" leaflet-\"+t.replace(\"Pane\",\"\")+\"-pane\":\"\"),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=Ni?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return\"string\"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return tt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=rt(t);if(!i)throw new Error(\"Map container not found.\");if(i._leaflet_id)throw new Error(\"Map container is already initialized.\");V(i,\"scroll\",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Ni,pt(t,\"leaflet-container\"+(Vi?\" leaflet-touch\":\"\")+(Ki?\" leaflet-retina\":\"\")+(Li?\" leaflet-oldie\":\"\")+(ki?\" leaflet-safari\":\"\")+(this._fadeAnimated?\" leaflet-fade-anim\":\"\"));var i=at(t,\"position\");\"absolute\"!==i&&\"relative\"!==i&&\"fixed\"!==i&&(t.style.position=\"relative\"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane(\"mapPane\",this._container),Lt(this._mapPane,new x(0,0)),this.createPane(\"tilePane\"),this.createPane(\"shadowPane\"),this.createPane(\"overlayPane\"),this.createPane(\"markerPane\"),this.createPane(\"tooltipPane\"),this.createPane(\"popupPane\"),this.options.markerZoomAnimation||(pt(t.markerPane,\"leaflet-zoom-hide\"),pt(t.shadowPane,\"leaflet-zoom-hide\"))},_resetView:function(t,i){Lt(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire(\"viewprereset\");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire(\"viewreset\"),e&&this.fire(\"load\")},_moveStart:function(t,i){return t&&this.fire(\"zoomstart\"),i||this.fire(\"movestart\"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire(\"zoom\",e),this.fire(\"move\",e)},_moveEnd:function(t){return t&&this.fire(\"zoomend\"),this.fire(\"moveend\")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Lt(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error(\"Set map center and zoom first.\")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?q:V;i(this._container,\"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress\",this._handleDOMEvent,this),this.options.trackResize&&i(window,\"resize\",this._onResize,this),Ni&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,\"moveend\",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s=\"mouseout\"===i||\"mouseover\"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&(\"click\"===i||\"preclick\"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!ot(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!ot(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!nt(t)){var i=t.type;\"mousedown\"!==i&&\"keypress\"!==i||zt(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:[\"click\",\"dblclick\",\"mouseover\",\"mouseout\",\"contextmenu\"],_fireDOMEvent:function(t,e,n){if(\"click\"===t.type){var o=i({},t);o.type=\"preclick\",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];\"contextmenu\"===e&&s.listens(e,!0)&&$(t);var r={originalEvent:t};if(\"keypress\"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h<n.length;h++)if(n[h].fire(e,r,!0),r.originalEvent._stopped||!1===n[h].options.bubblingMouseEvents&&-1!==d(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on(\"load\",t,i),this},_getMapPanePos:function(){return Pt(this._mapPane)||new x(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return b([this.project(t.getSouthWest(),i)._subtract(n),this.project(t.getNorthWest(),i)._subtract(n),this.project(t.getSouthEast(),i)._subtract(n),this.project(t.getNorthEast(),i)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),s=new P(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,e,i);return r.round().equals([0,0])?t:this.unproject(n.add(r),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),n=new P(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(n,i))},_getBoundsOffset:function(t,i,e){var n=b(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new x(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,i){return t+i>0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=Ni?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire(\"move\")},_onPanTransitionEnd:function(){mt(this._mapPane,\"leaflet-pan-anim\"),this.fire(\"moveend\")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=ht(\"div\",\"leaflet-proxy leaflet-zoom-animated\");this._panes.mapPane.appendChild(t),this.on(\"zoomanim\",function(t){var i=pe,e=this._proxy.style[i];wt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on(\"load moveend\",function(){var t=this.getCenter(),i=this.getZoom();wt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on(\"unload\",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ut(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf(\"transform\")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName(\"leaflet-zoom-animated\").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,pt(this._mapPane,\"leaflet-zoom-anim\")),this.fire(\"zoomanim\",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&mt(this._mapPane,\"leaflet-zoom-anim\"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Pe=v.extend({options:{position:\"topright\"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return pt(i,\"leaflet-control\"),-1!==e.indexOf(\"bottom\")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(ut(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),be=function(t){return new Pe(t)};Le.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+\" \"+e+o;i[t+o]=ht(\"div\",s,n)}var i=this._controlCorners={},e=\"leaflet-\",n=this._controlContainer=ht(\"div\",e+\"control-container\",this._container);t(\"top\",\"left\"),t(\"top\",\"right\"),t(\"bottom\",\"left\"),t(\"bottom\",\"right\")},_clearControlPos:function(){for(var t in this._controlCorners)ut(this._controlCorners[t]);ut(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Te=Pe.extend({options:{collapsed:!0,position:\"topright\",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e<n?-1:n<e?1:0}},initialize:function(t,i,e){l(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on(\"zoomend\",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on(\"add remove\",this._onLayerChange,this);return this._container},addTo:function(t){return Pe.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off(\"zoomend\",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off(\"add remove\",this._onLayerChange,this)},addBaseLayer:function(t,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off(\"add remove\",this._onLayerChange,this);var i=this._getLayer(n(t));return i&&this._layers.splice(this._layers.indexOf(i),1),this._map?this._update():this},expand:function(){pt(this._container,\"leaflet-control-layers-expanded\"),this._form.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._form.clientHeight?(pt(this._form,\"leaflet-control-layers-scrollbar\"),this._form.style.height=t+\"px\"):mt(this._form,\"leaflet-control-layers-scrollbar\"),this._checkDisabledLayers(),this},collapse:function(){return mt(this._container,\"leaflet-control-layers-expanded\"),this},_initLayout:function(){var t=\"leaflet-control-layers\",i=this._container=ht(\"div\",t),e=this.options.collapsed;i.setAttribute(\"aria-haspopup\",!0),J(i),X(i);var n=this._form=ht(\"form\",t+\"-list\");e&&(this._map.on(\"click\",this.collapse,this),Ti||V(i,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=ht(\"a\",t+\"-toggle\",i);o.href=\"#\",o.title=\"Layers\",Vi?(V(o,\"click\",Q),V(o,\"click\",this.expand,this)):V(o,\"focus\",this.expand,this),e||this.expand(),this._baseLayersList=ht(\"div\",t+\"-base\",n),this._separator=ht(\"div\",t+\"-separator\",n),this._overlaysList=ht(\"div\",t+\"-overlays\",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&n(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,n){this._map&&t.on(\"add remove\",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:n}),this.options.sortLayers&&this._layers.sort(e(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;lt(this._baseLayersList),lt(this._overlaysList),this._layerControlInputs=[];var t,i,e,n,o=0;for(e=0;e<this._layers.length;e++)n=this._layers[e],this._addItem(n),i=i||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&o>1,this._baseLayersList.style.display=t?\"\":\"none\"),this._separator.style.display=i&&t?\"\":\"none\",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?\"add\"===t.type?\"overlayadd\":\"overlayremove\":\"add\"===t.type?\"baselayerchange\":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='<input type=\"radio\" class=\"leaflet-control-layers-selector\" name=\"'+t+'\"'+(i?' checked=\"checked\"':\"\")+\"/>\",n=document.createElement(\"div\");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement(\"label\"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement(\"input\")).type=\"checkbox\",i.className=\"leaflet-control-layers-selector\",i.defaultChecked=o):i=this._createRadioElement(\"leaflet-base-layers\",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),V(i,\"click\",this._onInputClick,this);var s=document.createElement(\"span\");s.innerHTML=\" \"+t.name;var r=document.createElement(\"div\");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;o>=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ze=Pe.extend({options:{position:\"topleft\",zoomInText:\"+\",zoomInTitle:\"Zoom in\",zoomOutText:\"−\",zoomOutTitle:\"Zoom out\"},onAdd:function(t){var i=\"leaflet-control-zoom\",e=ht(\"div\",i+\" leaflet-bar\"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+\"-in\",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+\"-out\",e,this._zoomOut),this._updateDisabled(),t.on(\"zoomend zoomlevelschange\",this._updateDisabled,this),e},onRemove:function(t){t.off(\"zoomend zoomlevelschange\",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=ht(\"a\",e,n);return s.innerHTML=t,s.href=\"#\",s.title=i,s.setAttribute(\"role\",\"button\"),s.setAttribute(\"aria-label\",i),J(s),V(s,\"click\",Q),V(s,\"click\",o,this),V(s,\"click\",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i=\"leaflet-disabled\";mt(this._zoomInButton,i),mt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&pt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&pt(this._zoomInButton,i)}});Le.mergeOptions({zoomControl:!0}),Le.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new ze,this.addControl(this.zoomControl))});var Me=Pe.extend({options:{position:\"bottomleft\",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=ht(\"div\",\"leaflet-control-scale\"),e=this.options;return this._addScales(e,\"leaflet-control-scale-line\",i),t.on(e.updateWhenIdle?\"moveend\":\"move\",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?\"moveend\":\"move\",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=ht(\"div\",i,e)),t.imperial&&(this._iScale=ht(\"div\",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+\" m\":i/1e3+\" km\";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+\" mi\",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+\" ft\",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+\"px\",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+\"\").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ce=Pe.extend({options:{position:\"bottomright\",prefix:'<a href=\"http://leafletjs.com\" title=\"A JS library for interactive maps\">Leaflet</a>'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=ht(\"div\",\"leaflet-control-attribution\"),J(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(\", \")),this._container.innerHTML=e.join(\" | \")}}});Le.mergeOptions({attributionControl:!0}),Le.addInitHook(function(){this.options.attributionControl&&(new Ce).addTo(this)});Pe.Layers=Te,Pe.Zoom=ze,Pe.Scale=Me,Pe.Attribution=Ce,be.layers=function(t,i,e){return new Te(t,i,e)},be.zoom=function(t){return new ze(t)},be.scale=function(t){return new Me(t)},be.attribution=function(t){return new Ce(t)};var Ze=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ze.addTo=function(t,i){return t.addHandler(i,this),this};var Se,Ee={Events:hi},ke=Vi?\"touchstart mousedown\":\"mousedown\",Ie={mousedown:\"mouseup\",touchstart:\"touchend\",pointerdown:\"touchend\",MSPointerDown:\"touchend\"},Ae={mousedown:\"mousemove\",touchstart:\"touchmove\",pointerdown:\"touchmove\",MSPointerDown:\"touchmove\"},Be=ui.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(V(this._dragStartTarget,ke,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Be._dragging===this&&this.finishDrag(),q(this._dragStartTarget,ke,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!dt(this._element,\"leaflet-zoom-anim\")&&!(Be._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Be._dragging=this,this._preventOutline&&zt(this._element),bt(),mi(),this._moving)))){this.fire(\"down\");var i=t.touches?t.touches[0]:t;this._startPoint=new x(i.clientX,i.clientY),V(document,Ae[t.type],this._onMove,this),V(document,Ie[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY).subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)<this.options.clickTolerance||($(t),this._moved||(this.fire(\"dragstart\"),this._moved=!0,this._startPos=Pt(this._element).subtract(e),pt(document.body,\"leaflet-dragging\"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),pt(this._lastTarget,\"leaflet-drag-target\")),this._newPos=this._startPos.add(e),this._moving=!0,g(this._animRequest),this._lastEvent=t,this._animRequest=f(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire(\"predrag\",t),Lt(this._element,this._newPos),this.fire(\"drag\",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){mt(document.body,\"leaflet-dragging\"),this._lastTarget&&(mt(this._lastTarget,\"leaflet-drag-target\"),this._lastTarget=null);for(var t in Ae)q(document,Ae[t],this._onMove,this),q(document,Ie[t],this._onUp,this);Tt(),fi(),this._moved&&this._moving&&(g(this._animRequest),this.fire(\"dragend\",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,Be._dragging=!1}}),Oe=(Object.freeze||Object)({simplify:Ct,pointToSegmentDistance:Zt,closestPointOnSegment:function(t,i,e){return Rt(t,i,e)},clipSegment:It,_getEdgeIntersection:At,_getBitCode:Bt,_sqClosestPointOnSegment:Rt,isFlat:Dt,_flat:Nt}),Re=(Object.freeze||Object)({clipPolygon:jt}),De={project:function(t){return new x(t.lng,t.lat)},unproject:function(t){return new M(t.y,t.x)},bounds:new P([-180,-90],[180,90])},Ne={R:6378137,R_MINOR:6356752.314245179,bounds:new P([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new x(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,u=.1;h<15&&Math.abs(u)>1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},je=(Object.freeze||Object)({LonLat:De,Mercator:Ne,SphericalMercator:di}),We=i({},_i,{code:\"EPSG:3395\",projection:Ne,transformation:function(){var t=.5/(Math.PI*Ne.R);return S(t,.5,-t,.5)}()}),He=i({},_i,{code:\"EPSG:4326\",projection:De,transformation:S(1/180,1,-1/180,.5)}),Fe=i({},ci,{projection:De,transformation:S(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});ci.Earth=_i,ci.EPSG3395=We,ci.EPSG3857=vi,ci.EPSG900913=yi,ci.EPSG4326=He,ci.Simple=Fe;var Ue=ui.extend({options:{pane:\"overlayPane\",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once(\"remove\",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire(\"add\"),i.fire(\"layeradd\",{layer:this})}}});Le.include({addLayer:function(t){if(!t._layerAdd)throw new Error(\"The provided object is not a Layer.\");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire(\"layerremove\",{layer:t}),t.fire(\"remove\")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?ei(t)?t:[t]:[]).length;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[n(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var i=n(t);this._zoomBoundLayers[i]&&(delete this._zoomBoundLayers[i],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,i=-1/0,e=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),i=void 0===o.maxZoom?i:Math.max(i,o.maxZoom)}this._layersMaxZoom=i===-1/0?void 0:i,this._layersMinZoom=t===1/0?void 0:t,e!==this._getZoomSpan()&&this.fire(\"zoomlevelschange\"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Ve=Ue.extend({initialize:function(t,i){l(this,i),this._layers={};var e,n;if(t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var i=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[i]&&this._map.removeLayer(this._layers[i]),delete this._layers[i],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke(\"setZIndex\",t)},getLayerId:function(t){return n(t)}}),qe=Ve.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Ve.prototype.addLayer.call(this,t),this.fire(\"layeradd\",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Ve.prototype.removeLayer.call(this,t),this.fire(\"layerremove\",{layer:t})):this},setStyle:function(t){return this.invoke(\"setStyle\",t)},bringToFront:function(){return this.invoke(\"bringToFront\")},bringToBack:function(){return this.invoke(\"bringToBack\")},getBounds:function(){var t=new T;for(var i in this._layers){var e=this._layers[i];t.extend(e.getBounds?e.getBounds():e.getLatLng())}return t}}),Ge=v.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){l(this,t)},createIcon:function(t){return this._createIcon(\"icon\",t)},createShadow:function(t){return this._createIcon(\"shadow\",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if(\"icon\"===t)throw new Error(\"iconUrl not set in Icon options (see the docs).\");return null}var n=this._createImg(e,i&&\"IMG\"===i.tagName?i:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,i){var e=this.options,n=e[i+\"Size\"];\"number\"==typeof n&&(n=[n,n]);var o=w(n),s=w(\"shadow\"===i&&e.shadowAnchor||e.iconAnchor||o&&o.divideBy(2,!0));t.className=\"leaflet-marker-\"+i+\" \"+(e.className||\"\"),s&&(t.style.marginLeft=-s.x+\"px\",t.style.marginTop=-s.y+\"px\"),o&&(t.style.width=o.x+\"px\",t.style.height=o.y+\"px\")},_createImg:function(t,i){return i=i||document.createElement(\"img\"),i.src=t,i},_getIconUrl:function(t){return Ki&&this.options[t+\"RetinaUrl\"]||this.options[t+\"Url\"]}}),Ke=Ge.extend({options:{iconUrl:\"marker-icon.png\",iconRetinaUrl:\"marker-icon-2x.png\",shadowUrl:\"marker-shadow.png\",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Ke.imagePath||(Ke.imagePath=this._detectIconPath()),(this.options.imagePath||Ke.imagePath)+Ge.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=ht(\"div\",\"leaflet-default-icon-path\",document.body),i=at(t,\"background-image\")||at(t,\"backgroundImage\");return document.body.removeChild(t),i=null===i||0!==i.indexOf(\"url\")?\"\":i.replace(/^url\\([\"']?/,\"\").replace(/marker-icon\\.png[\"']?\\)$/,\"\")}}),Ye=Ze.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new Be(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),pt(t,\"leaflet-marker-draggable\")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&mt(this._marker._icon,\"leaflet-marker-draggable\")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=L.DomUtil.getPosition(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),h=b(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=w((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);e.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),L.DomUtil.setPosition(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=f(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire(\"movestart\").fire(\"dragstart\")},_onPreDrag:function(t){this._marker.options.autoPan&&(g(this._panRequest),this._panRequest=f(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=Pt(i._icon),o=i._map.layerPointToLatLng(n);e&&Lt(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire(\"move\",t).fire(\"drag\",t)},_onDragEnd:function(t){g(this._panRequest),delete this._oldLatLng,this._marker.fire(\"moveend\").fire(\"dragend\",t)}}),Xe=Ue.extend({options:{icon:new Ke,interactive:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10,keyboard:!0,title:\"\",alt:\"\",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:\"markerPane\",bubblingMouseEvents:!1},initialize:function(t,i){l(this,i),this._latlng=C(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on(\"zoomanim\",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off(\"zoomanim\",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var i=this._latlng;return this._latlng=C(t),this.update(),this.fire(\"move\",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,i=\"leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\"),e=t.icon.createIcon(this._icon),n=!1;e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),\"IMG\"===e.tagName&&(e.alt=t.alt||\"\")),pt(e,i),t.keyboard&&(e.tabIndex=\"0\"),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(pt(o,i),o.alt=\"\"),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane(\"shadowPane\").appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ut(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ut(this._shadow),this._shadow=null},_setPos:function(t){Lt(this._icon,t),this._shadow&&Lt(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(i)},_initInteraction:function(){if(this.options.interactive&&(pt(this._icon,\"leaflet-interactive\"),this.addInteractiveTarget(this._icon),Ye)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Ye(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;vt(this._icon,t),this._shadow&&vt(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}}),Je=Ue.extend({options:{stroke:!0,color:\"#3388ff\",weight:3,opacity:1,lineCap:\"round\",lineJoin:\"round\",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:\"evenodd\",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return l(this,t),this._renderer&&this._renderer._updateStyle(this),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),$e=Je.extend({options:{fill:!0,radius:10},initialize:function(t,i){l(this,i),this._latlng=C(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=C(t),this.redraw(),this.fire(\"move\",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var i=t&&t.radius||this._radius;return Je.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),n=[t+e,i+e];this._pxBounds=new P(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}}),Qe=$e.extend({initialize:function(t,e,n){if(\"number\"==typeof e&&(e=i({},n,{radius:e})),l(this,e),this._latlng=C(t),isNaN(this.options.radius))throw new Error(\"Circle radius cannot be NaN\");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new T(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Je.prototype.setStyle,_project:function(){var t=this._latlng.lng,i=this._latlng.lat,e=this._map,n=e.options.crs;if(n.distance===_i.distance){var o=Math.PI/180,s=this._mRadius/_i.R/o,r=e.project([i+s,t]),a=e.project([i-s,t]),h=r.add(a).divideBy(2),u=e.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(i*o)*Math.sin(u*o))/(Math.cos(i*o)*Math.cos(u*o)))/o;(isNaN(l)||0===l)&&(l=s/Math.cos(Math.PI/180*i)),this._point=h.subtract(e.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-e.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(c).x}this._updateBounds()}}),tn=Je.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){l(this,i),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var i,e,n=1/0,o=null,s=Rt,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,i=h[u-1],e=h[u],!0);c<n&&(n=c,o=s(t,i,e))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error(\"Must add layer to map before using getCenter()\");var t,i,e,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(t=0,i=0;t<h-1;t++)i+=a[t].distanceTo(a[t+1])/2;if(0===i)return this._map.layerPointToLatLng(a[0]);for(t=0,n=0;t<h-1;t++)if(o=a[t],s=a[t+1],e=o.distanceTo(s),(n+=e)>i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return Dt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=Dt(t),n=0,o=t.length;n<o;n++)e?(i[n]=C(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new P;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t);var i=this._clickTolerance(),e=new x(i,i);this._bounds.isValid()&&t.isValid()&&(t.min._subtract(e),t.max._add(e),this._pxBounds=t)},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof M,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var i,e,n,o,s,r,a,h=this._parts;for(i=0,n=0,o=this._rings.length;i<o;i++)for(e=0,s=(a=this._rings[i]).length;e<s-1;e++)(r=It(a[e],a[e+1],t,e,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[e+1]&&e!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=Ct(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&Zt(t,a[o],a[n])<=h)return!0;return!1}});tn._flat=Nt;var en=tn.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error(\"Must add layer to map before using getCenter()\");var t,i,e,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,i=l-1;t<l;i=t++)e=u[t],n=u[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var i=tn.prototype._convertLatLngs.call(this,t),e=i.length;return e>=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){tn.prototype._setLatLngs.call(this,t),Dt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Dt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;o<s;o++)(n=jt(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,u=!1;if(!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>t.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||tn.prototype._containsPoint.call(this,t,!0)}}),nn=qe.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=ei(t)?t:t.features;if(o){for(i=0,e=o.length;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=Wt(t,s);return r?(r.feature=Gt(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=i({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer(function(i){this._setLayerStyle(i,t)},this)},_setLayerStyle:function(t,i){\"function\"==typeof i&&(i=i(t.feature)),t.setStyle&&t.setStyle(i)}}),on={toGeoJSON:function(t){return qt(this,{type:\"Point\",coordinates:Ut(this.getLatLng(),t)})}};Xe.include(on),Qe.include(on),$e.include(on),tn.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=Vt(this._latlngs,i?1:0,!1,t);return qt(this,{type:(i?\"Multi\":\"\")+\"LineString\",coordinates:e})}}),en.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=i&&!Dt(this._latlngs[0]),n=Vt(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),qt(this,{type:(e?\"Multi\":\"\")+\"Polygon\",coordinates:n})}}),Ve.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(e){i.push(e.toGeoJSON(t).geometry.coordinates)}),qt(this,{type:\"MultiPoint\",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if(\"MultiPoint\"===i)return this.toMultiPoint(t);var e=\"GeometryCollection\"===i,n=[];return this.eachLayer(function(i){if(i.toGeoJSON){var o=i.toGeoJSON(t);if(e)n.push(o.geometry);else{var s=Gt(o);\"FeatureCollection\"===s.type?n.push.apply(n,s.features):n.push(s)}}}),e?qt(this,{geometries:n,type:\"GeometryCollection\"}):{type:\"FeatureCollection\",features:n}}});var sn=Kt,rn=Ue.extend({options:{opacity:1,alt:\"\",interactive:!1,crossOrigin:!1,errorOverlayUrl:\"\",zIndex:1,className:\"\"},initialize:function(t,i,e){this._url=t,this._bounds=z(i),l(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(pt(this._image,\"leaflet-interactive\"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ut(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&ct(this._image),this},bringToBack:function(){return this._map&&_t(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=z(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t=\"IMG\"===this._url.tagName,i=this._image=t?this._url:ht(\"img\");pt(i,\"leaflet-image-layer\"),this._zoomAnimated&&pt(i,\"leaflet-zoom-animated\"),this.options.className&&pt(i,this.options.className),i.onselectstart=r,i.onmousemove=r,i.onload=e(this.fire,this,\"load\"),i.onerror=e(this._overlayOnError,this,\"error\"),this.options.crossOrigin&&(i.crossOrigin=\"\"),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;wt(this._image,e,i)},_reset:function(){var t=this._image,i=new P(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();Lt(t,i.min),t.style.width=e.x+\"px\",t.style.height=e.y+\"px\"},_updateOpacity:function(){vt(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire(\"error\");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),an=rn.extend({options:{autoplay:!0,loop:!0},_initImage:function(){var t=\"VIDEO\"===this._url.tagName,i=this._image=t?this._url:ht(\"video\");if(pt(i,\"leaflet-image-layer\"),this._zoomAnimated&&pt(i,\"leaflet-zoom-animated\"),i.onselectstart=r,i.onmousemove=r,i.onloadeddata=e(this.fire,this,\"load\"),t){for(var n=i.getElementsByTagName(\"source\"),o=[],s=0;s<n.length;s++)o.push(n[s].src);this._url=n.length>0?o:[i.src]}else{ei(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;a<this._url.length;a++){var h=ht(\"source\");h.src=this._url[a],i.appendChild(h)}}}}),hn=Ue.extend({options:{offset:[0,7],className:\"\",pane:\"popupPane\"},initialize:function(t,i){l(this,t),this._source=i},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&vt(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&vt(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(vt(this._container,0),this._removeTimeout=setTimeout(e(ut,void 0,this._container),200)):ut(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=C(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility=\"hidden\",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility=\"\",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&ct(this._container),this},bringToBack:function(){return this._map&&_t(this._container),this},_updateContent:function(){if(this._content){var t=this._contentNode,i=\"function\"==typeof this._content?this._content(this._source||this):this._content;if(\"string\"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire(\"contentupdate\")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),i=w(this.options.offset),e=this._getAnchor();this._zoomAnimated?Lt(this._container,t.add(e)):i=i.add(t).add(e);var n=this._containerBottom=-i.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+i.x;this._container.style.bottom=n+\"px\",this._container.style.left=o+\"px\"}},_getAnchor:function(){return[0,0]}}),un=hn.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:\"\"},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){hn.prototype.onAdd.call(this,t),t.fire(\"popupopen\",{popup:this}),this._source&&(this._source.fire(\"popupopen\",{popup:this},!0),this._source instanceof Je||this._source.on(\"preclick\",Y))},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire(\"popupclose\",{popup:this}),this._source&&(this._source.fire(\"popupclose\",{popup:this},!0),this._source instanceof Je||this._source.off(\"preclick\",Y))},getEvents:function(){var t=hn.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t=\"leaflet-popup\",i=this._container=ht(\"div\",t+\" \"+(this.options.className||\"\")+\" leaflet-zoom-animated\"),e=this._wrapper=ht(\"div\",t+\"-content-wrapper\",i);if(this._contentNode=ht(\"div\",t+\"-content\",e),J(e),X(this._contentNode),V(e,\"contextmenu\",Y),this._tipContainer=ht(\"div\",t+\"-tip-container\",i),this._tip=ht(\"div\",t+\"-tip\",this._tipContainer),this.options.closeButton){var n=this._closeButton=ht(\"a\",t+\"-close-button\",i);n.href=\"#close\",n.innerHTML=\"×\",V(n,\"click\",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,i=t.style;i.width=\"\",i.whiteSpace=\"nowrap\";var e=t.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),i.width=e+1+\"px\",i.whiteSpace=\"\",i.height=\"\";var n=t.offsetHeight,o=this.options.maxHeight;o&&n>o?(i.height=o+\"px\",pt(t,\"leaflet-popup-scrolled\")):mt(t,\"leaflet-popup-scrolled\"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();Lt(this._container,i.add(e))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,i=parseInt(at(this._container,\"marginBottom\"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(Pt(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire(\"autopanstart\").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Q(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Le.mergeOptions({closePopupOnClick:!0}),Le.include({openPopup:function(t,i,e){return t instanceof un||(t=new un(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Ue.include({bindPopup:function(t,i){return t instanceof un?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new un(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Q(t),i instanceof Je?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var ln=hn.extend({options:{pane:\"tooltipPane\",offset:[0,0],direction:\"auto\",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){hn.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire(\"tooltipopen\",{tooltip:this}),this._source&&this._source.fire(\"tooltipopen\",{tooltip:this},!0)},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire(\"tooltipclose\",{tooltip:this}),this._source&&this._source.fire(\"tooltipclose\",{tooltip:this},!0)},getEvents:function(){var t=hn.prototype.getEvents.call(this);return Vi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t=\"leaflet-tooltip \"+(this.options.className||\"\")+\" leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\");this._contentNode=this._container=ht(\"div\",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();\"top\"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):\"bottom\"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):\"center\"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):\"right\"===s||\"auto\"===s&&o.x<n.x?(s=\"right\",t=t.add(w(h.x+u.x,u.y-a/2+h.y,!0))):(s=\"left\",t=t.subtract(w(r+u.x-h.x,a/2-u.y-h.y,!0))),mt(e,\"leaflet-tooltip-right\"),mt(e,\"leaflet-tooltip-left\"),mt(e,\"leaflet-tooltip-top\"),mt(e,\"leaflet-tooltip-bottom\"),pt(e,\"leaflet-tooltip-\"+s),Lt(e,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&vt(this._container,t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(i)},_getAnchor:function(){return w(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});Le.include({openTooltip:function(t,i,e){return t instanceof ln||(t=new ln(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),Ue.include({bindTooltip:function(t,i){return t instanceof ln?(l(t,i),this._tooltip=t,t._source=this):(this._tooltip&&!i||(this._tooltip=new ln(i,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var i=t?\"off\":\"on\",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),Vi&&(e.click=this._openTooltip)),this[i](e),this._tooltipHandlersAdded=!t}},openTooltip:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._tooltip&&this._map&&(this._tooltip._source=t,this._tooltip.update(),this._map.openTooltip(this._tooltip,i),this._tooltip.options.interactive&&this._tooltip._container&&(pt(this._tooltip._container,\"leaflet-clickable\"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(mt(this._tooltip._container,\"leaflet-clickable\"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var i=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(i,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var i,e,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(i=this._map.mouseEventToContainerPoint(t.originalEvent),e=this._map.containerPointToLayerPoint(i),n=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(n)}});var cn=Ge.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:\"leaflet-div-icon\"},createIcon:function(t){var i=t&&\"DIV\"===t.tagName?t:document.createElement(\"div\"),e=this.options;if(i.innerHTML=!1!==e.html?e.html:\"\",e.bgPos){var n=w(e.bgPos);i.style.backgroundPosition=-n.x+\"px \"+-n.y+\"px\"}return this._setIconStyles(i,\"icon\"),i},createShadow:function(){return null}});Ge.Default=Ke;var _n=Ue.extend({options:{tileSize:256,opacity:1,updateWhenIdle:ji,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:\"tilePane\",className:\"\",keepBuffer:2},initialize:function(t){l(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ut(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(ct(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(_t(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=o(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement(\"div\")},getTileSize:function(){var t=this.options.tileSize;return t instanceof x?t:new x(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Li){vt(this._container,this.options.opacity);var t=+new Date,i=!1,e=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);vt(o.el,s),s<1?i=!0:(o.active?e=!0:this._onOpaqueTile(o),o.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),i&&(g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this))}},_onOpaqueTile:r,_initContainer:function(){this._container||(this._container=ht(\"div\",\"leaflet-layer \"+(this.options.className||\"\")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(ut(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=ht(\"div\",\"leaflet-tile-container leaflet-zoom-animated\",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n,n}},_onUpdateLevel:r,_onRemoveLevel:r,_onCreateLevel:r,_pruneTiles:function(){if(this._map){var t,i,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(i=this._tiles[t]).retain=i.current;for(t in this._tiles)if((i=this._tiles[t]).current&&!i.active){var n=i.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ut(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var o=Math.floor(t/2),s=Math.floor(i/2),r=e-1,a=new x(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?(u.retain=!0,!0):(u&&u.loaded&&(u.retain=!0),r>n&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){var i=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),i,i)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=this._clampZoom(Math.round(i));(void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom)&&(o=void 0);var s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();Ni?wt(t.el,o,n):Lt(t.el,o)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),n=i.getZoomScale(e,this._tileZoom),o=i.project(t,this._tileZoom).floor(),s=i.getSize().divideBy(2*n);return new P(o.subtract(s),o.add(s))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new P(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error(\"Attempted to load an infinite number of tiles\");for(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new x(l.x,l.y))||(this._tiles[u].current=!1)}if(Math.abs(e-this._tileZoom)>1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire(\"loading\"));var m=document.createDocumentFragment();for(_=0;_<r.length;_++)this._addTile(r[_],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+\":\"+t.y+\":\"+t.z},_keyToTileCoords:function(t){var i=t.split(\":\"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(Ci||i.el.setAttribute(\"src\",ni),ut(i.el),delete this._tiles[t],this.fire(\"tileunload\",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){pt(t,\"leaflet-tile\");var i=this.getTileSize();t.style.width=i.x+\"px\",t.style.height=i.y+\"px\",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&vt(t,this.options.opacity),Ti&&!zi&&(t.style.WebkitBackfaceVisibility=\"hidden\")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),Lt(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire(\"tileloadstart\",{tile:s,coords:t})},_tileReady:function(t,i,n){if(this._map){i&&this.fire(\"tileerror\",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(vt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(pt(n.el,\"leaflet-tile-loaded\"),this.fire(\"tileload\",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire(\"load\"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),dn=_n.extend({options:{minZoom:0,maxZoom:18,subdomains:\"abc\",errorTileUrl:\"\",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Ki&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),\"string\"==typeof i.subdomains&&(i.subdomains=i.subdomains.split(\"\")),Ti||this.on(\"tileunload\",this._onTileRemove)},setUrl:function(t,i){return this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement(\"img\");return V(n,\"load\",e(this._tileOnLoad,this,i,n)),V(n,\"error\",e(this._tileOnError,this,i,n)),this.options.crossOrigin&&(n.crossOrigin=\"\"),n.alt=\"\",n.setAttribute(\"role\",\"presentation\"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Ki?\"@2x\":\"\",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e[\"-y\"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute(\"src\")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=ni,ut(i),delete this._tiles[t]))}}),pn=dn.extend({defaultWmsParams:{service:\"WMS\",request:\"GetMap\",layers:\"\",styles:\"\",format:\"image/jpeg\",transparent:!1,version:\"1.1.1\"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Ki?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?\"crs\":\"srs\";this.wmsParams[i]=this._crs.code,dn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===He?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(\",\"),a=L.TileLayer.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?\"&BBOX=\":\"&bbox=\")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});dn.WMS=pn,Yt.wms=function(t,i){return new pn(t,i)};var mn=Ue.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&pt(this._container,\"leaflet-zoom-animated\")),this.getPane().appendChild(this._container),this._update(),this.on(\"update\",this._updatePaths,this)},onRemove:function(){this.off(\"update\",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=Pt(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);Ni?wt(this._container,a,e):Lt(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),fn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){mn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement(\"canvas\");V(t,\"mousemove\",o(this._onMouseMove,32,this),this),V(t,\"click dblclick mousedown mouseup contextmenu\",this._onClick,this),V(t,\"mouseout\",this._handleMouseOut,this),this._ctx=t.getContext(\"2d\")},_destroyContainer:function(){delete this._ctx,ut(this._container),q(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},mn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Ki?2:1;Lt(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+\"px\",i.style.height=e.y+\"px\",Ki&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire(\"update\")}},_reset:function(){mn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[L.stamp(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(t.options.dashArray){var i,e=t.options.dashArray.split(\",\"),n=[];for(i=0;i<e.length;i++)n.push(Number(e[i]));t.options._dashArray=n}},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||f(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var i=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new P,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var i=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,i.x,i.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,i=this._redrawBounds;if(this._ctx.save(),i){var e=i.getSize();this._ctx.beginPath(),this._ctx.rect(i.min.x,i.min.y,e.x,e.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!i||t._pxBounds&&t._pxBounds.intersects(i))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(this._drawnLayers[t._leaflet_id]=t,h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?\"lineTo\":\"moveTo\"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;this._drawnLayers[t._leaflet_id]=t,1!==o&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!==o&&e.restore(),this._fillStroke(e,t)}},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||\"evenodd\")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&!this._map._draggableMoved(i)&&(e=i);e&&(et(t),this._fireEvent([e],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var i=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,i)}},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(mt(this._container,\"leaflet-interactive\"),this._fireEvent([i],t,\"mouseout\"),this._hoveredLayer=null)},_handleMouseHover:function(t,i){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(pt(this._container,\"leaflet-interactive\"),this._fireEvent([n],t,\"mouseover\"),this._hoveredLayer=n)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i=t._order,e=i.next,n=i.prev;e&&(e.prev=n,n?n.next=e:e&&(this._drawFirst=e),i.prev=this._drawLast,this._drawLast.next=i,i.next=null,this._drawLast=i,this._requestRedraw(t))},_bringToBack:function(t){var i=t._order,e=i.next,n=i.prev;n&&(n.next=e,e?e.prev=n:n&&(this._drawLast=n),i.prev=null,i.next=this._drawFirst,this._drawFirst.prev=i,this._drawFirst=i,this._requestRedraw(t))}}),gn=function(){try{return document.namespaces.add(\"lvml\",\"urn:schemas-microsoft-com:vml\"),function(t){return document.createElement(\"<lvml:\"+t+' class=\"lvml\">')}}catch(t){return function(t){return document.createElement(\"<\"+t+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">')}}}(),vn={_initContainer:function(){this._container=ht(\"div\",\"leaflet-vml-container\")},_update:function(){this._map._animatingZoom||(mn.prototype._update.call(this),this.fire(\"update\"))},_initPath:function(t){var i=t._container=gn(\"shape\");pt(i,\"leaflet-vml-shape \"+(this.options.className||\"\")),i.coordsize=\"1 1\",t._path=gn(\"path\"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ut(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=gn(\"stroke\")),o.appendChild(i),i.weight=n.weight+\"px\",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=ei(n.dashArray)?n.dashArray.join(\" \"):n.dashArray.replace(/( *, *)/g,\" \"):i.dashStyle=\"\",i.endcap=n.lineCap.replace(\"butt\",\"flat\"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=gn(\"fill\")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?\"M0 0\":\"AL \"+i.x+\",\"+i.y+\" \"+e+\",\"+n+\" 0,23592600\")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){ct(t._container)},_bringToBack:function(t){_t(t._container)}},yn=Ji?gn:E,xn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=yn(\"svg\"),this._container.setAttribute(\"pointer-events\",\"none\"),this._rootGroup=yn(\"g\"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ut(this._container),q(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){mn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute(\"width\",i.x),e.setAttribute(\"height\",i.y)),Lt(e,t.min),e.setAttribute(\"viewBox\",[t.min.x,t.min.y,i.x,i.y].join(\" \")),this.fire(\"update\")}},_initPath:function(t){var i=t._path=yn(\"path\");t.options.className&&pt(i,t.options.className),t.options.interactive&&pt(i,\"leaflet-interactive\"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ut(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute(\"stroke\",e.color),i.setAttribute(\"stroke-opacity\",e.opacity),i.setAttribute(\"stroke-width\",e.weight),i.setAttribute(\"stroke-linecap\",e.lineCap),i.setAttribute(\"stroke-linejoin\",e.lineJoin),e.dashArray?i.setAttribute(\"stroke-dasharray\",e.dashArray):i.removeAttribute(\"stroke-dasharray\"),e.dashOffset?i.setAttribute(\"stroke-dashoffset\",e.dashOffset):i.removeAttribute(\"stroke-dashoffset\")):i.setAttribute(\"stroke\",\"none\"),e.fill?(i.setAttribute(\"fill\",e.fillColor||e.color),i.setAttribute(\"fill-opacity\",e.fillOpacity),i.setAttribute(\"fill-rule\",e.fillRule||\"evenodd\")):i.setAttribute(\"fill\",\"none\"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n=\"a\"+e+\",\"+(Math.max(Math.round(t._radiusY),1)||e)+\" 0 1,0 \",o=t._empty()?\"M0 0\":\"M\"+(i.x-e)+\",\"+i.y+n+2*e+\",0 \"+n+2*-e+\",0 \";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute(\"d\",i)},_bringToFront:function(t){ct(t._path)},_bringToBack:function(t){_t(t._path)}});Ji&&xn.include(vn),Le.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this.options.preferCanvas&&Xt()||Jt()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if(\"overlayPane\"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=xn&&Jt({pane:t})||fn&&Xt({pane:t}),this._paneRenderers[t]=i),i}});var wn=en.extend({initialize:function(t,i){en.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});xn.create=yn,xn.pointsToPath=k,nn.geometryToLayer=Wt,nn.coordsToLatLng=Ht,nn.coordsToLatLngs=Ft,nn.latLngToCoords=Ut,nn.latLngsToCoords=Vt,nn.getFeature=qt,nn.asFeature=Gt,Le.mergeOptions({boxZoom:!0});var Ln=Ze.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on(\"unload\",this._destroy,this)},addHooks:function(){V(this._container,\"mousedown\",this._onMouseDown,this)},removeHooks:function(){q(this._container,\"mousedown\",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ut(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),mi(),bt(),this._startPoint=this._map.mouseEventToContainerPoint(t),V(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ht(\"div\",\"leaflet-zoom-box\",this._container),pt(this._container,\"leaflet-crosshair\"),this._map.fire(\"boxzoomstart\")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();Lt(this._box,i.min),this._box.style.width=e.x+\"px\",this._box.style.height=e.y+\"px\"},_finish:function(){this._moved&&(ut(this._box),mt(this._container,\"leaflet-crosshair\")),fi(),Tt(),q(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire(\"boxzoomend\",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Le.addInitHook(\"addHandler\",\"boxZoom\",Ln),Le.mergeOptions({doubleClickZoom:!0});var Pn=Ze.extend({addHooks:function(){this._map.on(\"dblclick\",this._onDoubleClick,this)},removeHooks:function(){this._map.off(\"dblclick\",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;\"center\"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Le.addInitHook(\"addHandler\",\"doubleClickZoom\",Pn),Le.mergeOptions({dragging:!0,inertia:!zi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var bn=Ze.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Be(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on(\"predrag\",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on(\"predrag\",this._onPreDragWrap,this),t.on(\"zoomend\",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}pt(this._map._container,\"leaflet-grab leaflet-touch-drag\"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){mt(this._map._container,\"leaflet-grab\"),mt(this._map._container,\"leaflet-touch-drag\"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire(\"movestart\").fire(\"dragstart\"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire(\"move\",t).fire(\"drag\",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)<Math.abs(s+e)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var i=this._map,e=i.options,n=!e.inertia||this._times.length<2;if(i.fire(\"dragend\",t),n)i.fire(\"moveend\");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=e.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(e.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(e.inertiaDeceleration*r),_=l.multiplyBy(-c/2).round();_.x||_.y?(_=i._limitOffset(_,i.options.maxBounds),f(function(){i.panBy(_,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})})):i.fire(\"moveend\")}}});Le.addInitHook(\"addHandler\",\"dragging\",bn),Le.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Tn=Ze.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex=\"0\"),V(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),q(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,i=document.documentElement,e=t.scrollTop||i.scrollTop,n=t.scrollLeft||i.scrollLeft;this._map._container.focus(),window.scrollTo(n,e)}},_onFocus:function(){this._focused=!0,this._map.fire(\"focus\")},_onBlur:function(){this._focused=!1,this._map.fire(\"blur\")},_setPanDelta:function(t){var i,e,n=this._panKeys={},o=this.keyCodes;for(i=0,e=o.left.length;i<e;i++)n[o.left[i]]=[-1*t,0];for(i=0,e=o.right.length;i<e;i++)n[o.right[i]]=[t,0];for(i=0,e=o.down.length;i<e;i++)n[o.down[i]]=[0,t];for(i=0,e=o.up.length;i<e;i++)n[o.up[i]]=[0,-1*t]},_setZoomDelta:function(t){var i,e,n=this._zoomKeys={},o=this.keyCodes;for(i=0,e=o.zoomIn.length;i<e;i++)n[o.zoomIn[i]]=t;for(i=0,e=o.zoomOut.length;i<e;i++)n[o.zoomOut[i]]=-t},_addHooks:function(){V(document,\"keydown\",this._onKeyDown,this)},_removeHooks:function(){q(document,\"keydown\",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys){if(n._panAnim&&n._panAnim._inProgress)return;i=this._panKeys[e],t.shiftKey&&(i=w(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds)}else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Q(t)}}});Le.addInitHook(\"addHandler\",\"keyboard\",Tn),Le.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var zn=Ze.extend({addHooks:function(){V(this._map._container,\"mousewheel\",this._onWheelScroll,this),this._delta=0},removeHooks:function(){q(this._map._container,\"mousewheel\",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=it(t),n=this._map.options.wheelDebounceTime;this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(n-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(e(this._performZoom,this),o),Q(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=e?Math.ceil(o/e)*e:o,r=t._limitZoom(i+(this._delta>0?s:-s))-i;this._delta=0,this._startTime=null,r&&(\"center\"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Le.addInitHook(\"addHandler\",\"scrollWheelZoom\",zn),Le.mergeOptions({tap:!0,tapTolerance:15});var Mn=Ze.extend({addHooks:function(){V(this._map._container,\"touchstart\",this._onDown,this)},removeHooks:function(){q(this._map._container,\"touchstart\",this._onDown,this)},_onDown:function(t){if(t.touches){if($(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&\"a\"===n.tagName.toLowerCase()&&pt(n,\"leaflet-active\"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent(\"contextmenu\",i))},this),1e3),this._simulateEvent(\"mousedown\",i),V(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),q(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&\"a\"===e.tagName.toLowerCase()&&mt(e,\"leaflet-active\"),this._simulateEvent(\"mouseup\",i),this._isTapValid()&&this._simulateEvent(\"click\",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent(\"mousemove\",i)},_simulateEvent:function(t,i){var e=document.createEvent(\"MouseEvents\");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});Vi&&!Ui&&Le.addInitHook(\"addHandler\",\"tap\",Mn),Le.mergeOptions({touchZoom:Vi&&!zi,bounceAtZoomLimits:!0});var Cn=Ze.extend({addHooks:function(){pt(this._map._container,\"leaflet-touch-zoom\"),V(this._map._container,\"touchstart\",this._onTouchStart,this)},removeHooks:function(){mt(this._map._container,\"leaflet-touch-zoom\"),q(this._map._container,\"touchstart\",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),\"center\"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),V(document,\"touchmove\",this._onTouchMove,this),V(document,\"touchend\",this._onTouchEnd,this),$(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoom<i.getMinZoom()&&s<1||this._zoom>i.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),\"center\"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),$(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),q(document,\"touchmove\",this._onTouchMove),q(document,\"touchend\",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Le.addInitHook(\"addHandler\",\"touchZoom\",Cn),Le.BoxZoom=Ln,Le.DoubleClickZoom=Pn,Le.Drag=bn,Le.Keyboard=Tn,Le.ScrollWheelZoom=zn,Le.Tap=Mn,Le.TouchZoom=Cn;var Zn=window.L;window.L=t,Object.freeze=$t,t.version=\"1.3.1\",t.noConflict=function(){return window.L=Zn,this},t.Control=Pe,t.control=be,t.Browser=$i,t.Evented=ui,t.Mixin=Ee,t.Util=ai,t.Class=v,t.Handler=Ze,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=de,t.DomUtil=xe,t.PosAnimation=we,t.Draggable=Be,t.LineUtil=Oe,t.PolyUtil=Re,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=Z,t.transformation=S,t.Projection=je,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=ci,t.GeoJSON=nn,t.geoJSON=Kt,t.geoJson=sn,t.Layer=Ue,t.LayerGroup=Ve,t.layerGroup=function(t,i){return new Ve(t,i)},t.FeatureGroup=qe,t.featureGroup=function(t){return new qe(t)},t.ImageOverlay=rn,t.imageOverlay=function(t,i,e){return new rn(t,i,e)},t.VideoOverlay=an,t.videoOverlay=function(t,i,e){return new an(t,i,e)},t.DivOverlay=hn,t.Popup=un,t.popup=function(t,i){return new un(t,i)},t.Tooltip=ln,t.tooltip=function(t,i){return new ln(t,i)},t.Icon=Ge,t.icon=function(t){return new Ge(t)},t.DivIcon=cn,t.divIcon=function(t){return new cn(t)},t.Marker=Xe,t.marker=function(t,i){return new Xe(t,i)},t.TileLayer=dn,t.tileLayer=Yt,t.GridLayer=_n,t.gridLayer=function(t){return new _n(t)},t.SVG=xn,t.svg=Jt,t.Renderer=mn,t.Canvas=fn,t.canvas=Xt,t.Path=Je,t.CircleMarker=$e,t.circleMarker=function(t,i){return new $e(t,i)},t.Circle=Qe,t.circle=function(t,i,e){return new Qe(t,i,e)},t.Polyline=tn,t.polyline=function(t,i){return new tn(t,i)},t.Polygon=en,t.polygon=function(t,i){return new en(t,i)},t.Rectangle=wn,t.rectangle=function(t,i){return new wn(t,i)},t.Map=Le,t.map=function(t,i){return new Le(t,i)}});\n}\nexports.L = L;\n",
"type": "application/javascript",
"title": "$:/plugins/sycom/leaflet/lib/leaflet.js",
"module-type": "library"
},
"$:/plugins/sycom/leaflet/lib/leaflet-markercluster.js": {
"text": "if($tw.browser){\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e.Leaflet=e.Leaflet||{},e.Leaflet.markercluster=e.Leaflet.markercluster||{}))}(this,function(e){\"use strict\";var t=L.MarkerClusterGroup=L.FeatureGroup.extend({options:{maxClusterRadius:80,iconCreateFunction:null,clusterPane:L.Marker.prototype.options.pane,spiderfyOnMaxZoom:!0,showCoverageOnHover:!0,zoomToBoundsOnClick:!0,singleMarkerMode:!1,disableClusteringAtZoom:null,removeOutsideVisibleBounds:!0,animate:!0,animateAddingMarkers:!1,spiderfyDistanceMultiplier:1,spiderLegPolylineOptions:{weight:1.5,color:\"#222\",opacity:.5},chunkedLoading:!1,chunkInterval:200,chunkDelay:50,chunkProgress:null,polygonOptions:{}},initialize:function(e){L.Util.setOptions(this,e),this.options.iconCreateFunction||(this.options.iconCreateFunction=this._defaultIconCreateFunction),this._featureGroup=L.featureGroup(),this._featureGroup.addEventParent(this),this._nonPointGroup=L.featureGroup(),this._nonPointGroup.addEventParent(this),this._inZoomAnimation=0,this._needsClustering=[],this._needsRemoving=[],this._currentShownBounds=null,this._queue=[],this._childMarkerEventHandlers={dragstart:this._childMarkerDragStart,move:this._childMarkerMoved,dragend:this._childMarkerDragEnd};var t=L.DomUtil.TRANSITION&&this.options.animate;L.extend(this,t?this._withAnimation:this._noAnimation),this._markerCluster=t?L.MarkerCluster:L.MarkerClusterNonAnimated},addLayer:function(e){if(e instanceof L.LayerGroup)return this.addLayers([e]);if(!e.getLatLng)return this._nonPointGroup.addLayer(e),this.fire(\"layeradd\",{layer:e}),this;if(!this._map)return this._needsClustering.push(e),this.fire(\"layeradd\",{layer:e}),this;if(this.hasLayer(e))return this;this._unspiderfy&&this._unspiderfy(),this._addLayer(e,this._maxZoom),this.fire(\"layeradd\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons();var t=e,i=this._zoom;if(e.__parent)for(;t.__parent._zoom>=i;)t=t.__parent;return this._currentShownBounds.contains(t.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(e,t):this._animationAddLayerNonAnimated(e,t)),this},removeLayer:function(e){return e instanceof L.LayerGroup?this.removeLayers([e]):e.getLatLng?this._map?e.__parent?(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(e)),this._removeLayer(e,!0),this.fire(\"layerremove\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),e.off(this._childMarkerEventHandlers,this),this._featureGroup.hasLayer(e)&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow()),this):this:(!this._arraySplice(this._needsClustering,e)&&this.hasLayer(e)&&this._needsRemoving.push({layer:e,latlng:e._latlng}),this.fire(\"layerremove\",{layer:e}),this):(this._nonPointGroup.removeLayer(e),this.fire(\"layerremove\",{layer:e}),this)},addLayers:function(e,t){if(!L.Util.isArray(e))return this.addLayer(e);var i,n=this._featureGroup,r=this._nonPointGroup,s=this.options.chunkedLoading,o=this.options.chunkInterval,a=this.options.chunkProgress,h=e.length,l=0,u=!0;if(this._map){var _=(new Date).getTime(),d=L.bind(function(){for(var c=(new Date).getTime();h>l;l++){if(s&&0===l%200){var p=(new Date).getTime()-c;if(p>o)break}if(i=e[l],i instanceof L.LayerGroup)u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(i,e),h=e.length;else if(i.getLatLng){if(!this.hasLayer(i)&&(this._addLayer(i,this._maxZoom),t||this.fire(\"layeradd\",{layer:i}),i.__parent&&2===i.__parent.getChildCount())){var f=i.__parent.getAllChildMarkers(),m=f[0]===i?f[1]:f[0];n.removeLayer(m)}}else r.addLayer(i),t||this.fire(\"layeradd\",{layer:i})}a&&a(l,h,(new Date).getTime()-_),l===h?(this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)):setTimeout(d,this.options.chunkDelay)},this);d()}else for(var c=this._needsClustering;h>l;l++)i=e[l],i instanceof L.LayerGroup?(u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(i,e),h=e.length):i.getLatLng?this.hasLayer(i)||c.push(i):r.addLayer(i);return this},removeLayers:function(e){var t,i,n=e.length,r=this._featureGroup,s=this._nonPointGroup,o=!0;if(!this._map){for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):(this._arraySplice(this._needsClustering,i),s.removeLayer(i),this.hasLayer(i)&&this._needsRemoving.push({layer:i,latlng:i._latlng}),this.fire(\"layerremove\",{layer:i}));return this}if(this._unspiderfy){this._unspiderfy();var a=e.slice(),h=n;for(t=0;h>t;t++)i=a[t],i instanceof L.LayerGroup?(this._extractNonGroupLayers(i,a),h=a.length):this._unspiderfyLayer(i)}for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):i.__parent?(this._removeLayer(i,!0,!0),this.fire(\"layerremove\",{layer:i}),r.hasLayer(i)&&(r.removeLayer(i),i.clusterShow&&i.clusterShow())):(s.removeLayer(i),this.fire(\"layerremove\",{layer:i}));return this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds),this},clearLayers:function(){return this._map||(this._needsClustering=[],delete this._gridClusters,delete this._gridUnclustered),this._noanimationUnspiderfy&&this._noanimationUnspiderfy(),this._featureGroup.clearLayers(),this._nonPointGroup.clearLayers(),this.eachLayer(function(e){e.off(this._childMarkerEventHandlers,this),delete e.__parent},this),this._map&&this._generateInitialClusters(),this},getBounds:function(){var e=new L.LatLngBounds;this._topClusterLevel&&e.extend(this._topClusterLevel._bounds);for(var t=this._needsClustering.length-1;t>=0;t--)e.extend(this._needsClustering[t].getLatLng());return e.extend(this._nonPointGroup.getBounds()),e},eachLayer:function(e,t){var i,n,r,s=this._needsClustering.slice(),o=this._needsRemoving;for(this._topClusterLevel&&this._topClusterLevel.getAllChildMarkers(s),n=s.length-1;n>=0;n--){for(i=!0,r=o.length-1;r>=0;r--)if(o[r].layer===s[n]){i=!1;break}i&&e.call(t,s[n])}this._nonPointGroup.eachLayer(e,t)},getLayers:function(){var e=[];return this.eachLayer(function(t){e.push(t)}),e},getLayer:function(e){var t=null;return e=parseInt(e,10),this.eachLayer(function(i){L.stamp(i)===e&&(t=i)}),t},hasLayer:function(e){if(!e)return!1;var t,i=this._needsClustering;for(t=i.length-1;t>=0;t--)if(i[t]===e)return!0;for(i=this._needsRemoving,t=i.length-1;t>=0;t--)if(i[t].layer===e)return!1;return!(!e.__parent||e.__parent._group!==this)||this._nonPointGroup.hasLayer(e)},zoomToShowLayer:function(e,t){\"function\"!=typeof t&&(t=function(){});var i=function(){!e._icon&&!e.__parent._icon||this._inZoomAnimation||(this._map.off(\"moveend\",i,this),this.off(\"animationend\",i,this),e._icon?t():e.__parent._icon&&(this.once(\"spiderfied\",t,this),e.__parent.spiderfy()))};e._icon&&this._map.getBounds().contains(e.getLatLng())?t():e.__parent._zoom<Math.round(this._map._zoom)?(this._map.on(\"moveend\",i,this),this._map.panTo(e.getLatLng())):(this._map.on(\"moveend\",i,this),this.on(\"animationend\",i,this),e.__parent.zoomToBounds())},onAdd:function(e){this._map=e;var t,i,n;if(!isFinite(this._map.getMaxZoom()))throw\"Map has no maxZoom specified\";for(this._featureGroup.addTo(e),this._nonPointGroup.addTo(e),this._gridClusters||this._generateInitialClusters(),this._maxLat=e.options.crs.projection.MAX_LATITUDE,t=0,i=this._needsRemoving.length;i>t;t++)n=this._needsRemoving[t],n.newlatlng=n.layer._latlng,n.layer._latlng=n.latlng;for(t=0,i=this._needsRemoving.length;i>t;t++)n=this._needsRemoving[t],this._removeLayer(n.layer,!0),n.layer._latlng=n.newlatlng;this._needsRemoving=[],this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds(),this._map.on(\"zoomend\",this._zoomEnd,this),this._map.on(\"moveend\",this._moveEnd,this),this._spiderfierOnAdd&&this._spiderfierOnAdd(),this._bindEvents(),i=this._needsClustering,this._needsClustering=[],this.addLayers(i,!0)},onRemove:function(e){e.off(\"zoomend\",this._zoomEnd,this),e.off(\"moveend\",this._moveEnd,this),this._unbindEvents(),this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\"),this._spiderfierOnRemove&&this._spiderfierOnRemove(),delete this._maxLat,this._hideCoverage(),this._featureGroup.remove(),this._nonPointGroup.remove(),this._featureGroup.clearLayers(),this._map=null},getVisibleParent:function(e){for(var t=e;t&&!t._icon;)t=t.__parent;return t||null},_arraySplice:function(e,t){for(var i=e.length-1;i>=0;i--)if(e[i]===t)return e.splice(i,1),!0},_removeFromGridUnclustered:function(e,t){for(var i=this._map,n=this._gridUnclustered,r=Math.floor(this._map.getMinZoom());t>=r&&n[t].removeObject(e,i.project(e.getLatLng(),t));t--);},_childMarkerDragStart:function(e){e.target.__dragStart=e.target._latlng},_childMarkerMoved:function(e){if(!this._ignoreMove&&!e.target.__dragStart){var t=e.target._popup&&e.target._popup.isOpen();this._moveChild(e.target,e.oldLatLng,e.latlng),t&&e.target.openPopup()}},_moveChild:function(e,t,i){e._latlng=t,this.removeLayer(e),e._latlng=i,this.addLayer(e)},_childMarkerDragEnd:function(e){e.target.__dragStart&&this._moveChild(e.target,e.target.__dragStart,e.target._latlng),delete e.target.__dragStart},_removeLayer:function(e,t,i){var n=this._gridClusters,r=this._gridUnclustered,s=this._featureGroup,o=this._map,a=Math.floor(this._map.getMinZoom());t&&this._removeFromGridUnclustered(e,this._maxZoom);var h,l=e.__parent,u=l._markers;for(this._arraySplice(u,e);l&&(l._childCount--,l._boundsNeedUpdate=!0,!(l._zoom<a));)t&&l._childCount<=1?(h=l._markers[0]===e?l._markers[1]:l._markers[0],n[l._zoom].removeObject(l,o.project(l._cLatLng,l._zoom)),r[l._zoom].addObject(h,o.project(h.getLatLng(),l._zoom)),this._arraySplice(l.__parent._childClusters,l),l.__parent._markers.push(h),h.__parent=l.__parent,l._icon&&(s.removeLayer(l),i||s.addLayer(h))):l._iconNeedsUpdate=!0,l=l.__parent;delete e.__parent},_isOrIsParent:function(e,t){for(;t;){if(e===t)return!0;t=t.parentNode}return!1},fire:function(e,t,i){if(t&&t.layer instanceof L.MarkerCluster){if(t.originalEvent&&this._isOrIsParent(t.layer._icon,t.originalEvent.relatedTarget))return;e=\"cluster\"+e}L.FeatureGroup.prototype.fire.call(this,e,t,i)},listens:function(e,t){return L.FeatureGroup.prototype.listens.call(this,e,t)||L.FeatureGroup.prototype.listens.call(this,\"cluster\"+e,t)},_defaultIconCreateFunction:function(e){var t=e.getChildCount(),i=\" marker-cluster-\";return i+=10>t?\"small\":100>t?\"medium\":\"large\",new L.DivIcon({html:\"<div><span>\"+t+\"</span></div>\",className:\"marker-cluster\"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var e=this._map,t=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,n=this.options.zoomToBoundsOnClick;(t||n)&&this.on(\"clusterclick\",this._zoomOrSpiderfy,this),i&&(this.on(\"clustermouseover\",this._showCoverage,this),this.on(\"clustermouseout\",this._hideCoverage,this),e.on(\"zoomend\",this._hideCoverage,this))},_zoomOrSpiderfy:function(e){for(var t=e.layer,i=t;1===i._childClusters.length;)i=i._childClusters[0];i._zoom===this._maxZoom&&i._childCount===t._childCount&&this.options.spiderfyOnMaxZoom?t.spiderfy():this.options.zoomToBoundsOnClick&&t.zoomToBounds(),e.originalEvent&&13===e.originalEvent.keyCode&&this._map._container.focus()},_showCoverage:function(e){var t=this._map;this._inZoomAnimation||(this._shownPolygon&&t.removeLayer(this._shownPolygon),e.layer.getChildCount()>2&&e.layer!==this._spiderfied&&(this._shownPolygon=new L.Polygon(e.layer.getConvexHull(),this.options.polygonOptions),t.addLayer(this._shownPolygon)))},_hideCoverage:function(){this._shownPolygon&&(this._map.removeLayer(this._shownPolygon),this._shownPolygon=null)},_unbindEvents:function(){var e=this.options.spiderfyOnMaxZoom,t=this.options.showCoverageOnHover,i=this.options.zoomToBoundsOnClick,n=this._map;(e||i)&&this.off(\"clusterclick\",this._zoomOrSpiderfy,this),t&&(this.off(\"clustermouseover\",this._showCoverage,this),this.off(\"clustermouseout\",this._hideCoverage,this),n.off(\"zoomend\",this._hideCoverage,this))},_zoomEnd:function(){this._map&&(this._mergeSplitClusters(),this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds())},_moveEnd:function(){if(!this._inZoomAnimation){var e=this._getExpandedVisibleBounds();this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,Math.round(this._map._zoom),e),this._currentShownBounds=e}},_generateInitialClusters:function(){var e=Math.ceil(this._map.getMaxZoom()),t=Math.floor(this._map.getMinZoom()),i=this.options.maxClusterRadius,n=i;\"function\"!=typeof i&&(n=function(){return i}),null!==this.options.disableClusteringAtZoom&&(e=this.options.disableClusteringAtZoom-1),this._maxZoom=e,this._gridClusters={},this._gridUnclustered={};for(var r=e;r>=t;r--)this._gridClusters[r]=new L.DistanceGrid(n(r)),this._gridUnclustered[r]=new L.DistanceGrid(n(r));this._topClusterLevel=new this._markerCluster(this,t-1)},_addLayer:function(e,t){var i,n,r=this._gridClusters,s=this._gridUnclustered,o=Math.floor(this._map.getMinZoom());for(this.options.singleMarkerMode&&this._overrideMarkerIcon(e),e.on(this._childMarkerEventHandlers,this);t>=o;t--){i=this._map.project(e.getLatLng(),t);var a=r[t].getNearObject(i);if(a)return a._addChild(e),e.__parent=a,void 0;if(a=s[t].getNearObject(i)){var h=a.__parent;h&&this._removeLayer(a,!1);var l=new this._markerCluster(this,t,a,e);r[t].addObject(l,this._map.project(l._cLatLng,t)),a.__parent=l,e.__parent=l;var u=l;for(n=t-1;n>h._zoom;n--)u=new this._markerCluster(this,n,u),r[n].addObject(u,this._map.project(a.getLatLng(),n));return h._addChild(u),this._removeFromGridUnclustered(a,t),void 0}s[t].addObject(e,i)}this._topClusterLevel._addChild(e),e.__parent=this._topClusterLevel},_refreshClustersIcons:function(){this._featureGroup.eachLayer(function(e){e instanceof L.MarkerCluster&&e._iconNeedsUpdate&&e._updateIcon()})},_enqueue:function(e){this._queue.push(e),this._queueTimeout||(this._queueTimeout=setTimeout(L.bind(this._processQueue,this),300))},_processQueue:function(){for(var e=0;e<this._queue.length;e++)this._queue[e].call(this);this._queue.length=0,clearTimeout(this._queueTimeout),this._queueTimeout=null},_mergeSplitClusters:function(){var e=Math.round(this._map._zoom);this._processQueue(),this._zoom<e&&this._currentShownBounds.intersects(this._getExpandedVisibleBounds())?(this._animationStart(),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,this._getExpandedVisibleBounds()),this._animationZoomIn(this._zoom,e)):this._zoom>e?(this._animationStart(),this._animationZoomOut(this._zoom,e)):this._moveEnd()},_getExpandedVisibleBounds:function(){return this.options.removeOutsideVisibleBounds?L.Browser.mobile?this._checkBoundsMaxLat(this._map.getBounds()):this._checkBoundsMaxLat(this._map.getBounds().pad(1)):this._mapBoundsInfinite},_checkBoundsMaxLat:function(e){var t=this._maxLat;return void 0!==t&&(e.getNorth()>=t&&(e._northEast.lat=1/0),e.getSouth()<=-t&&(e._southWest.lat=-1/0)),e},_animationAddLayerNonAnimated:function(e,t){if(t===e)this._featureGroup.addLayer(e);else if(2===t._childCount){t._addToMap();var i=t.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else t._updateIcon()},_extractNonGroupLayers:function(e,t){var i,n=e.getLayers(),r=0;for(t=t||[];r<n.length;r++)i=n[r],i instanceof L.LayerGroup?this._extractNonGroupLayers(i,t):t.push(i);return t},_overrideMarkerIcon:function(e){var t=e.options.icon=this.options.iconCreateFunction({getChildCount:function(){return 1},getAllChildMarkers:function(){return[e]}});return t}});L.MarkerClusterGroup.include({_mapBoundsInfinite:new L.LatLngBounds(new L.LatLng(-1/0,-1/0),new L.LatLng(1/0,1/0))}),L.MarkerClusterGroup.include({_noAnimation:{_animationStart:function(){},_animationZoomIn:function(e,t){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this.fire(\"animationend\")},_animationZoomOut:function(e,t){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this.fire(\"animationend\")},_animationAddLayer:function(e,t){this._animationAddLayerNonAnimated(e,t)}},_withAnimation:{_animationStart:function(){this._map._mapPane.className+=\" leaflet-cluster-anim\",this._inZoomAnimation++},_animationZoomIn:function(e,t){var i,n=this._getExpandedVisibleBounds(),r=this._featureGroup,s=Math.floor(this._map.getMinZoom());this._ignoreMove=!0,this._topClusterLevel._recursively(n,e,s,function(s){var o,a=s._latlng,h=s._markers;for(n.contains(a)||(a=null),s._isSingleParent()&&e+1===t?(r.removeLayer(s),s._recursivelyAddChildrenToMap(null,t,n)):(s.clusterHide(),s._recursivelyAddChildrenToMap(a,t,n)),i=h.length-1;i>=0;i--)o=h[i],n.contains(o._latlng)||r.removeLayer(o)}),this._forceLayout(),this._topClusterLevel._recursivelyBecomeVisible(n,t),r.eachLayer(function(e){e instanceof L.MarkerCluster||!e._icon||e.clusterShow()}),this._topClusterLevel._recursively(n,e,t,function(e){e._recursivelyRestoreChildPositions(t)}),this._ignoreMove=!1,this._enqueue(function(){this._topClusterLevel._recursively(n,e,s,function(e){r.removeLayer(e),e.clusterShow()}),this._animationEnd()})},_animationZoomOut:function(e,t){this._animationZoomOutSingle(this._topClusterLevel,e-1,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e,this._getExpandedVisibleBounds())},_animationAddLayer:function(e,t){var i=this,n=this._featureGroup;n.addLayer(e),t!==e&&(t._childCount>2?(t._updateIcon(),this._forceLayout(),this._animationStart(),e._setPos(this._map.latLngToLayerPoint(t.getLatLng())),e.clusterHide(),this._enqueue(function(){n.removeLayer(e),e.clusterShow(),i._animationEnd()})):(this._forceLayout(),i._animationStart(),i._animationZoomOutSingle(t,this._map.getMaxZoom(),this._zoom)))}},_animationZoomOutSingle:function(e,t,i){var n=this._getExpandedVisibleBounds(),r=Math.floor(this._map.getMinZoom());e._recursivelyAnimateChildrenInAndAddSelfToMap(n,r,t+1,i);var s=this;this._forceLayout(),e._recursivelyBecomeVisible(n,i),this._enqueue(function(){if(1===e._childCount){var o=e._markers[0];this._ignoreMove=!0,o.setLatLng(o.getLatLng()),this._ignoreMove=!1,o.clusterShow&&o.clusterShow()}else e._recursively(n,i,r,function(e){e._recursivelyRemoveChildrenFromMap(n,r,t+1)});s._animationEnd()})},_animationEnd:function(){this._map&&(this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\")),this._inZoomAnimation--,this.fire(\"animationend\")},_forceLayout:function(){L.Util.falseFn(document.body.offsetWidth)}}),L.markerClusterGroup=function(e){return new L.MarkerClusterGroup(e)};var i=L.MarkerCluster=L.Marker.extend({options:L.Icon.prototype.options,initialize:function(e,t,i,n){L.Marker.prototype.initialize.call(this,i?i._cLatLng||i.getLatLng():new L.LatLng(0,0),{icon:this,pane:e.options.clusterPane}),this._group=e,this._zoom=t,this._markers=[],this._childClusters=[],this._childCount=0,this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._bounds=new L.LatLngBounds,i&&this._addChild(i),n&&this._addChild(n)},getAllChildMarkers:function(e){e=e||[];for(var t=this._childClusters.length-1;t>=0;t--)this._childClusters[t].getAllChildMarkers(e);for(var i=this._markers.length-1;i>=0;i--)e.push(this._markers[i]);return e},getChildCount:function(){return this._childCount},zoomToBounds:function(e){for(var t,i=this._childClusters.slice(),n=this._group._map,r=n.getBoundsZoom(this._bounds),s=this._zoom+1,o=n.getZoom();i.length>0&&r>s;){s++;var a=[];for(t=0;t<i.length;t++)a=a.concat(i[t]._childClusters);i=a}r>s?this._group._map.setView(this._latlng,s):o>=r?this._group._map.setView(this._latlng,o+1):this._group._map.fitBounds(this._bounds,e)},getBounds:function(){var e=new L.LatLngBounds;return e.extend(this._bounds),e},_updateIcon:function(){this._iconNeedsUpdate=!0,this._icon&&this.setIcon(this)},createIcon:function(){return this._iconNeedsUpdate&&(this._iconObj=this._group.options.iconCreateFunction(this),this._iconNeedsUpdate=!1),this._iconObj.createIcon()},createShadow:function(){return this._iconObj.createShadow()},_addChild:function(e,t){this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._setClusterCenter(e),e instanceof L.MarkerCluster?(t||(this._childClusters.push(e),e.__parent=this),this._childCount+=e._childCount):(t||this._markers.push(e),this._childCount++),this.__parent&&this.__parent._addChild(e,!0)},_setClusterCenter:function(e){this._cLatLng||(this._cLatLng=e._cLatLng||e._latlng)},_resetBounds:function(){var e=this._bounds;e._southWest&&(e._southWest.lat=1/0,e._southWest.lng=1/0),e._northEast&&(e._northEast.lat=-1/0,e._northEast.lng=-1/0)},_recalculateBounds:function(){var e,t,i,n,r=this._markers,s=this._childClusters,o=0,a=0,h=this._childCount;if(0!==h){for(this._resetBounds(),e=0;e<r.length;e++)i=r[e]._latlng,this._bounds.extend(i),o+=i.lat,a+=i.lng;for(e=0;e<s.length;e++)t=s[e],t._boundsNeedUpdate&&t._recalculateBounds(),this._bounds.extend(t._bounds),i=t._wLatLng,n=t._childCount,o+=i.lat*n,a+=i.lng*n;this._latlng=this._wLatLng=new L.LatLng(o/h,a/h),this._boundsNeedUpdate=!1}},_addToMap:function(e){e&&(this._backupLatlng=this._latlng,this.setLatLng(e)),this._group._featureGroup.addLayer(this)},_recursivelyAnimateChildrenIn:function(e,t,i){this._recursively(e,this._group._map.getMinZoom(),i-1,function(e){var i,n,r=e._markers;for(i=r.length-1;i>=0;i--)n=r[i],n._icon&&(n._setPos(t),n.clusterHide())},function(e){var i,n,r=e._childClusters;for(i=r.length-1;i>=0;i--)n=r[i],n._icon&&(n._setPos(t),n.clusterHide())})},_recursivelyAnimateChildrenInAndAddSelfToMap:function(e,t,i,n){this._recursively(e,n,t,function(r){r._recursivelyAnimateChildrenIn(e,r._group._map.latLngToLayerPoint(r.getLatLng()).round(),i),r._isSingleParent()&&i-1===n?(r.clusterShow(),r._recursivelyRemoveChildrenFromMap(e,t,i)):r.clusterHide(),r._addToMap()})},_recursivelyBecomeVisible:function(e,t){this._recursively(e,this._group._map.getMinZoom(),t,null,function(e){e.clusterShow()})},_recursivelyAddChildrenToMap:function(e,t,i){this._recursively(i,this._group._map.getMinZoom()-1,t,function(n){if(t!==n._zoom)for(var r=n._markers.length-1;r>=0;r--){var s=n._markers[r];i.contains(s._latlng)&&(e&&(s._backupLatlng=s.getLatLng(),s.setLatLng(e),s.clusterHide&&s.clusterHide()),n._group._featureGroup.addLayer(s))}},function(t){t._addToMap(e)})},_recursivelyRestoreChildPositions:function(e){for(var t=this._markers.length-1;t>=0;t--){var i=this._markers[t];i._backupLatlng&&(i.setLatLng(i._backupLatlng),delete i._backupLatlng)}if(e-1===this._zoom)for(var n=this._childClusters.length-1;n>=0;n--)this._childClusters[n]._restorePosition();else for(var r=this._childClusters.length-1;r>=0;r--)this._childClusters[r]._recursivelyRestoreChildPositions(e)},_restorePosition:function(){this._backupLatlng&&(this.setLatLng(this._backupLatlng),delete this._backupLatlng)},_recursivelyRemoveChildrenFromMap:function(e,t,i,n){var r,s;this._recursively(e,t-1,i-1,function(e){for(s=e._markers.length-1;s>=0;s--)r=e._markers[s],n&&n.contains(r._latlng)||(e._group._featureGroup.removeLayer(r),r.clusterShow&&r.clusterShow())},function(e){for(s=e._childClusters.length-1;s>=0;s--)r=e._childClusters[s],n&&n.contains(r._latlng)||(e._group._featureGroup.removeLayer(r),r.clusterShow&&r.clusterShow())})},_recursively:function(e,t,i,n,r){var s,o,a=this._childClusters,h=this._zoom;if(h>=t&&(n&&n(this),r&&h===i&&r(this)),t>h||i>h)for(s=a.length-1;s>=0;s--)o=a[s],e.intersects(o._bounds)&&o._recursively(e,t,i,n,r)},_isSingleParent:function(){return this._childClusters.length>0&&this._childClusters[0]._childCount===this._childCount}});L.Marker.include({clusterHide:function(){return this.options.opacityWhenUnclustered=this.options.opacity||1,this.setOpacity(0)},clusterShow:function(){var e=this.setOpacity(this.options.opacity||this.options.opacityWhenUnclustered);return delete this.options.opacityWhenUnclustered,e}}),L.DistanceGrid=function(e){this._cellSize=e,this._sqCellSize=e*e,this._grid={},this._objectPoint={}},L.DistanceGrid.prototype={addObject:function(e,t){var i=this._getCoord(t.x),n=this._getCoord(t.y),r=this._grid,s=r[n]=r[n]||{},o=s[i]=s[i]||[],a=L.Util.stamp(e);this._objectPoint[a]=t,o.push(e)},updateObject:function(e,t){this.removeObject(e),this.addObject(e,t)},removeObject:function(e,t){var i,n,r=this._getCoord(t.x),s=this._getCoord(t.y),o=this._grid,a=o[s]=o[s]||{},h=a[r]=a[r]||[];for(delete this._objectPoint[L.Util.stamp(e)],i=0,n=h.length;n>i;i++)if(h[i]===e)return h.splice(i,1),1===n&&delete a[r],!0},eachObject:function(e,t){var i,n,r,s,o,a,h,l=this._grid;for(i in l){o=l[i];for(n in o)for(a=o[n],r=0,s=a.length;s>r;r++)h=e.call(t,a[r]),h&&(r--,s--)}},getNearObject:function(e){var t,i,n,r,s,o,a,h,l=this._getCoord(e.x),u=this._getCoord(e.y),_=this._objectPoint,d=this._sqCellSize,c=null;for(t=u-1;u+1>=t;t++)if(r=this._grid[t])for(i=l-1;l+1>=i;i++)if(s=r[i])for(n=0,o=s.length;o>n;n++)a=s[n],h=this._sqDist(_[L.Util.stamp(a)],e),(d>h||d>=h&&null===c)&&(d=h,c=a);return c},_getCoord:function(e){var t=Math.floor(e/this._cellSize);return isFinite(t)?t:e},_sqDist:function(e,t){var i=t.x-e.x,n=t.y-e.y;return i*i+n*n}},function(){L.QuickHull={getDistant:function(e,t){var i=t[1].lat-t[0].lat,n=t[0].lng-t[1].lng;return n*(e.lat-t[0].lat)+i*(e.lng-t[0].lng)},findMostDistantPointFromBaseLine:function(e,t){var i,n,r,s=0,o=null,a=[];for(i=t.length-1;i>=0;i--)n=t[i],r=this.getDistant(n,e),r>0&&(a.push(n),r>s&&(s=r,o=n));return{maxPoint:o,newPoints:a}},buildConvexHull:function(e,t){var i=[],n=this.findMostDistantPointFromBaseLine(e,t);return n.maxPoint?(i=i.concat(this.buildConvexHull([e[0],n.maxPoint],n.newPoints)),i=i.concat(this.buildConvexHull([n.maxPoint,e[1]],n.newPoints))):[e[0]]},getConvexHull:function(e){var t,i=!1,n=!1,r=!1,s=!1,o=null,a=null,h=null,l=null,u=null,_=null;for(t=e.length-1;t>=0;t--){var d=e[t];(i===!1||d.lat>i)&&(o=d,i=d.lat),(n===!1||d.lat<n)&&(a=d,n=d.lat),(r===!1||d.lng>r)&&(h=d,r=d.lng),(s===!1||d.lng<s)&&(l=d,s=d.lng)}n!==i?(_=a,u=o):(_=l,u=h);var c=[].concat(this.buildConvexHull([_,u],e),this.buildConvexHull([u,_],e));return c}}}(),L.MarkerCluster.include({getConvexHull:function(){var e,t,i=this.getAllChildMarkers(),n=[];for(t=i.length-1;t>=0;t--)e=i[t].getLatLng(),n.push(e);return L.QuickHull.getConvexHull(n)}}),L.MarkerCluster.include({_2PI:2*Math.PI,_circleFootSeparation:25,_circleStartAngle:0,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(this._group._spiderfied!==this&&!this._group._inZoomAnimation){var e,t=this.getAllChildMarkers(),i=this._group,n=i._map,r=n.latLngToLayerPoint(this._latlng);this._group._unspiderfy(),this._group._spiderfied=this,t.length>=this._circleSpiralSwitchover?e=this._generatePointsSpiral(t.length,r):(r.y+=10,e=this._generatePointsCircle(t.length,r)),this._animationSpiderfy(t,e)}},unspiderfy:function(e){this._group._inZoomAnimation||(this._animationUnspiderfy(e),this._group._spiderfied=null)},_generatePointsCircle:function(e,t){var i,n,r=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+e),s=r/this._2PI,o=this._2PI/e,a=[];for(s=Math.max(s,35),a.length=e,i=0;e>i;i++)n=this._circleStartAngle+i*o,a[i]=new L.Point(t.x+s*Math.cos(n),t.y+s*Math.sin(n))._round();return a},_generatePointsSpiral:function(e,t){var i,n=this._group.options.spiderfyDistanceMultiplier,r=n*this._spiralLengthStart,s=n*this._spiralFootSeparation,o=n*this._spiralLengthFactor*this._2PI,a=0,h=[];for(h.length=e,i=e;i>=0;i--)e>i&&(h[i]=new L.Point(t.x+r*Math.cos(a),t.y+r*Math.sin(a))._round()),a+=s/r+5e-4*i,r+=o/a;return h},_noanimationUnspiderfy:function(){var e,t,i=this._group,n=i._map,r=i._featureGroup,s=this.getAllChildMarkers();for(i._ignoreMove=!0,this.setOpacity(1),t=s.length-1;t>=0;t--)e=s[t],r.removeLayer(e),e._preSpiderfyLatlng&&(e.setLatLng(e._preSpiderfyLatlng),delete e._preSpiderfyLatlng),e.setZIndexOffset&&e.setZIndexOffset(0),e._spiderLeg&&(n.removeLayer(e._spiderLeg),delete e._spiderLeg);i.fire(\"unspiderfied\",{cluster:this,markers:s}),i._ignoreMove=!1,i._spiderfied=null}}),L.MarkerClusterNonAnimated=L.MarkerCluster.extend({_animationSpiderfy:function(e,t){var i,n,r,s,o=this._group,a=o._map,h=o._featureGroup,l=this._group.options.spiderLegPolylineOptions;for(o._ignoreMove=!0,i=0;i<e.length;i++)s=a.layerPointToLatLng(t[i]),n=e[i],r=new L.Polyline([this._latlng,s],l),a.addLayer(r),n._spiderLeg=r,n._preSpiderfyLatlng=n._latlng,n.setLatLng(s),n.setZIndexOffset&&n.setZIndexOffset(1e6),h.addLayer(n);this.setOpacity(.3),o._ignoreMove=!1,o.fire(\"spiderfied\",{cluster:this,markers:e})},_animationUnspiderfy:function(){this._noanimationUnspiderfy()}}),L.MarkerCluster.include({_animationSpiderfy:function(e,t){var i,n,r,s,o,a,h=this,l=this._group,u=l._map,_=l._featureGroup,d=this._latlng,c=u.latLngToLayerPoint(d),p=L.Path.SVG,f=L.extend({},this._group.options.spiderLegPolylineOptions),m=f.opacity;for(void 0===m&&(m=L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity),p?(f.opacity=0,f.className=(f.className||\"\")+\" leaflet-cluster-spider-leg\"):f.opacity=m,l._ignoreMove=!0,i=0;i<e.length;i++)n=e[i],a=u.layerPointToLatLng(t[i]),r=new L.Polyline([d,a],f),u.addLayer(r),n._spiderLeg=r,p&&(s=r._path,o=s.getTotalLength()+.1,s.style.strokeDasharray=o,s.style.strokeDashoffset=o),n.setZIndexOffset&&n.setZIndexOffset(1e6),n.clusterHide&&n.clusterHide(),_.addLayer(n),n._setPos&&n._setPos(c);for(l._forceLayout(),l._animationStart(),i=e.length-1;i>=0;i--)a=u.layerPointToLatLng(t[i]),n=e[i],n._preSpiderfyLatlng=n._latlng,n.setLatLng(a),n.clusterShow&&n.clusterShow(),p&&(r=n._spiderLeg,s=r._path,s.style.strokeDashoffset=0,r.setStyle({opacity:m}));this.setOpacity(.3),l._ignoreMove=!1,setTimeout(function(){l._animationEnd(),l.fire(\"spiderfied\",{cluster:h,markers:e})},200)},_animationUnspiderfy:function(e){var t,i,n,r,s,o,a=this,h=this._group,l=h._map,u=h._featureGroup,_=e?l._latLngToNewLayerPoint(this._latlng,e.zoom,e.center):l.latLngToLayerPoint(this._latlng),d=this.getAllChildMarkers(),c=L.Path.SVG;for(h._ignoreMove=!0,h._animationStart(),this.setOpacity(1),i=d.length-1;i>=0;i--)t=d[i],t._preSpiderfyLatlng&&(t.closePopup(),t.setLatLng(t._preSpiderfyLatlng),delete t._preSpiderfyLatlng,o=!0,t._setPos&&(t._setPos(_),o=!1),t.clusterHide&&(t.clusterHide(),o=!1),o&&u.removeLayer(t),c&&(n=t._spiderLeg,r=n._path,s=r.getTotalLength()+.1,r.style.strokeDashoffset=s,n.setStyle({opacity:0})));h._ignoreMove=!1,setTimeout(function(){var e=0;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&e++;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&(t.clusterShow&&t.clusterShow(),t.setZIndexOffset&&t.setZIndexOffset(0),e>1&&u.removeLayer(t),l.removeLayer(t._spiderLeg),delete t._spiderLeg);h._animationEnd(),h.fire(\"unspiderfied\",{cluster:a,markers:d})},200)}}),L.MarkerClusterGroup.include({_spiderfied:null,unspiderfy:function(){this._unspiderfy.apply(this,arguments)},_spiderfierOnAdd:function(){this._map.on(\"click\",this._unspiderfyWrapper,this),this._map.options.zoomAnimation&&this._map.on(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.on(\"zoomend\",this._noanimationUnspiderfy,this),L.Browser.touch||this._map.getRenderer(this)},_spiderfierOnRemove:function(){this._map.off(\"click\",this._unspiderfyWrapper,this),this._map.off(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._map.off(\"zoomend\",this._noanimationUnspiderfy,this),this._noanimationUnspiderfy()\n},_unspiderfyZoomStart:function(){this._map&&this._map.on(\"zoomanim\",this._unspiderfyZoomAnim,this)},_unspiderfyZoomAnim:function(e){L.DomUtil.hasClass(this._map._mapPane,\"leaflet-touching\")||(this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._unspiderfy(e))},_unspiderfyWrapper:function(){this._unspiderfy()},_unspiderfy:function(e){this._spiderfied&&this._spiderfied.unspiderfy(e)},_noanimationUnspiderfy:function(){this._spiderfied&&this._spiderfied._noanimationUnspiderfy()},_unspiderfyLayer:function(e){e._spiderLeg&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow(),e.setZIndexOffset&&e.setZIndexOffset(0),this._map.removeLayer(e._spiderLeg),delete e._spiderLeg)}}),L.MarkerClusterGroup.include({refreshClusters:function(e){return e?e instanceof L.MarkerClusterGroup?e=e._topClusterLevel.getAllChildMarkers():e instanceof L.LayerGroup?e=e._layers:e instanceof L.MarkerCluster?e=e.getAllChildMarkers():e instanceof L.Marker&&(e=[e]):e=this._topClusterLevel.getAllChildMarkers(),this._flagParentsIconsNeedUpdate(e),this._refreshClustersIcons(),this.options.singleMarkerMode&&this._refreshSingleMarkerModeMarkers(e),this},_flagParentsIconsNeedUpdate:function(e){var t,i;for(t in e)for(i=e[t].__parent;i;)i._iconNeedsUpdate=!0,i=i.__parent},_refreshSingleMarkerModeMarkers:function(e){var t,i;for(t in e)i=e[t],this.hasLayer(i)&&i.setIcon(this._overrideMarkerIcon(i))}}),L.Marker.include({refreshIconOptions:function(e,t){var i=this.options.icon;return L.setOptions(i,e),this.setIcon(i),t&&this.__parent&&this.__parent._group.refreshClusters(this),this}}),e.MarkerClusterGroup=t,e.MarkerCluster=i});\n//# sourceMappingURL=leaflet.markercluster.js.map\n}\n",
"type": "application/javascript",
"title": "$:/plugins/sycom/leaflet/lib/leaflet-markercluster.js",
"module-type": "library"
},
"$:/plugins/sycom/leaflet/mapCssTweaks.css.tid": {
"title": "$:/plugins/sycom/leaflet/mapCssTweaks.css.tid",
"created": "20161028202401905",
"modified": "20161111151011600",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html\n\n/* add some styling tweaks to leaflet */\n.leaflet-right {\n\tmax-width:50%\n}\n.leaflet-popup-content h6 {\n\tfont-size:.7rem;\n\tmargin:0 0 .2rem 0\n}\n\n.leaflet-control-attribution {\n\theight:1.5em;\n}\n.leaflet-control-attribution:hover {\n\theight:auto;\n}\n\n.leaflet-top, .leaflet-bottom {\n z-index:999;\n}\n\n/* solve conflict between tw and leaflet */\n.leaflet-zoom-animated {max-width: initial !important}\n\n/* solve background image problem for layer control */\n.leaflet-control-layers-toggle {\n\tbackground-image: url('data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20height%3D%2226%22%20width%3D%2226%22%3E%3Cpath%20d%3D%22M.032%2017.056l13-8%2013%208-13%208-13-8%22%20fill%3D%22%23b9b9b9%22/%3E%3Cpath%20d%3D%22M.032%2017.056l-.032.93%2013%208%2013-8%20.032-.93-13%208z%22%20fill%3D%22%23737373%22/%3E%3Cpath%20d%3D%22M0%2013.076l13-8%2013%208-13%208-13-8%22%20fill%3D%22%23cdcdcd%22/%3E%3Cpath%20d%3D%22M0%2013.076v.91l13%208%2013-8v-.91l-13%208z%22%20fill%3D%22%23737373%22/%3E%3Cpath%20d%3D%22M0%208.986l13-8%2013%208-13%208-13-8%22%20fill-opacity%3D%22.585%22%20stroke%3D%22%23797979%22%20stroke-width%3D%22.1%22%20fill%3D%22%23e9e9e9%22/%3E%3Cpath%20d%3D%22M0%208.986v1l13%208%2013-8v-1l-13%208z%22%20fill%3D%22%23737373%22/%3E%3C/svg%3E') !important\n}\n\n/* default polygon stylin */\n.polyline {fill:none}\n.leaflet-popup-content ul {padding:0 1em}\n\n/* some styling for clusters */\n.marker-cluster div {\n min-width:16px;min-height:16px;\n border-radius:50%;border:none;\n vertical-align:middle;text-align:center;font-weight:bold\n }\n.marker-cluster div div{width:100%;height:100%}\n.marker-cluster div span {display:block;text-shadow:0px 0px 6px #ffffff}\n\npath.leaflet-clickable {fill:<<colour primary>>;fill-opacity: 0.5;stroke:<<colour primary>>}\n.leaflet-marker-colored {fill:<<colour primary>>}\n"
},
"$:/plugins/sycom/leaflet/mapWidget.tid": {
"title": "$:/plugins/sycom/leaflet/mapWidget.tid",
"text": "/*\\\ncreated: 20151028202401905\nmodified: 20170318234011605\ntitle: $:/plugins/sycom/leaflet/mapWidget.tid\ntype: application/javascript\nmodule-type: widget\n\nA widget for displaying leaflet map in TiddlyWiki\n\n\\*/\n\n(function() {\n /* ----------------------- */\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n var Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n L = require(\"$:/plugins/sycom/leaflet/lib/leaflet.js\"),\n markerClusterGroup = require(\"$:/plugins/sycom/leaflet/lib/leaflet-markercluster.js\");\n\n var mapWidget = function(parseTreeNode, options) {\n this.initialise(parseTreeNode, options);\n };\n\n // global vars\n var Map = [], // map collection\n map = 0, // map order number\n tn = 0, // tiddler number\n fCluster = [], // the clusters\n Colour = [], // the colors\n clusterRadius = [], // cluster radii\n clusterType = [], // clustering for whole map or for each tiddler\n lfltDefBounds = [\n [52.75, -2.55],\n [52.85, -2.65]\n ], // default bounds when nothing given\n bounds, // global bounds for map ?todo one per map?\n iter = [], // iteration indicator to avoid infinite loops\n setting = {}; // the map's settings\n\n /* Inherit from the base widget class */\n mapWidget.prototype = new Widget();\n\n /* Render this widget into the DOM */\n mapWidget.prototype.render = function(parent, nextSibling) {\n bounds = null;\n // Compute our attributes\n this.computeAttributes();\n // Get the base settings for rendering : width / height (default : 100% / 500px)\n // !todo : make a settings tidller in order to let user set it for the whole wiki (may be inspired from roadtree)\n // !todo what happens if windows is resized?\n var width = this.getAttribute(\"width\", \"100%\"),\n height = this.getAttribute(\"height\", \"420px\");\n // creating the div container\n var div = this.document.createElement(\"div\");\n div.setAttribute(\"id\", \"lfltMap-\" + map);\n div.setAttribute(\"style\", \"width:\" + width + \";height:\" + height);\n // Save the parent dom node\n this.parentDomNode = parent;\n // Compute our attributes\n // this.computeAttributes();\n // create the container\n parent.insertBefore(div, nextSibling);\n this.domNodes.push(div);\n // Create the map\n this.createMap();\n // Execute our logic\n this.execute();\n // increment map number indicator\n map += 1;\n };\n\n /* Create the map for the widget */\n mapWidget.prototype.createMap = function(parent, nextSibling) {\n // create the leaflet and push it to #lfltMap\n Map[map] = L.map('lfltMap-' + map);\n // Install base tile layer (if none provided, default is \"osm\")\n // get tilelayers from JSON\n var fonds = JSON.parse(this.wiki.getTiddlerText(\"$:/plugins/sycom/leaflet/lib/tileLayers.json\"));\n // create tile layers list object from json list\n var Tiles = []; // leaflet tile layers\n var tiles = {}; // tile identifier for control\n // look for tile parameter\n setting.tile = this.getAttribute(\"tile\", \"osm\");\n setting.marker = this.getAttribute(\"marker\", null);\n // create tile layer list\n for (var i in fonds) {\n if (i == setting.tile || fonds[i].id == setting.tile) {\n setting.tile = fonds[i].id;\n }\n var couche = new L.TileLayer(fonds[i].url, {\n attribution: fonds[i].attrib,\n minZoom: fonds[i].zMin,\n maxZoom: fonds[i].zMax,\n unloadInvisibleTiles: true\n });\n Tiles[fonds[i].id] = couche;\n tiles[fonds[i].nom] = couche;\n }\n // if user entered a wrong tile id\n if (Tiles[setting.tile] === undefined) {\n setting.tile = \"osm\";\n $tw.utils.error(\"Seems you entered a wrong tile id, displayed osm instead. Please refer to plugin documentation to avoid this - error : \" + error);\n }\n Tiles[setting.tile].addTo(Map[map]);\n // install tile layer control if needed\n setting.tileControl = this.getAttribute(\"tileControl\");\n if (setting.tileControl) {\n var tControl = L.control.layers(tiles);\n tControl.addTo(Map[map]);\n }\n /* !todo to come next (will have to implement leaflet.draw extension)\n // look for draw parameter\n setting.drawControl = this.getAttribute(\"drawControl\");\n if (setting.drawControl) {\n // Initialize the FeatureGroup to store editable layers\n var drawnItems = new L.FeatureGroup();\n Map[map].addLayer(drawnItems);\n // Initialize the draw control and pass it the FeatureGroup of editable layers\n var drawControl = new L.Control.Draw({\n edit: {\n featureGroup: drawnItems\n }\n }\n );\n Map[map].addControl(drawControl);\n }\n*/\n };\n\n /* Compute the internal state of the widget */\n mapWidget.prototype.execute = function() {\n // getting wiki primary color\n // check if you defined a tiddler name for palette but no tiddler with that\n if(this.wiki.getTiddlerData(this.wiki.getTiddlerText(\"$:/palette\"))) Colour.wiki = this.wiki.getTiddlerData(this.wiki.getTiddlerText(\"$:/palette\")).primary;\n // switch back to basic blue\n else Colour.wiki = \"#5778d8\";\n\n // switch back to basic tiddlywiki blue if primary is defined from another color\n /* notes to upgrade this process\n if primaire is <<colour xxxx>> set to default gray\n if primaire.match(\"<<\") primaire=\"#555\"; */\n if (Colour.wiki.match(/</g)) Colour.wiki = \"#5778d8\";\n\n // getting style parameters\n var style = this.getAttribute(\"style\", undefined);\n var st;\n // case style defined\n if(style !== undefined) {\n st = JSON.parse(style);\n // color parameter will overwrite style color and style fillColor parameter\n if(st.fillColor) Colour[map] = this.getAttribute(\"color\", st.fillColor);\n else Colour[map] = this.getAttribute(\"color\", st.color);\n }\n // case style undefined\n else {\n st = null;\n // checking if user defined a color if no color go undefined\n Colour[map] = this.getAttribute(\"color\", undefined);\n }\n // create default icon\n // ?todo: only if there are points to display?\n L.icon.default = lfltIcon(setColor(null, map), setting.marker, map);\n\n // create whole map cluster\n // getting cluster size parameter, if exists\n clusterRadius[map] = this.getAttribute(\"cluster\", 80);\n clusterType[map] = this.getAttribute(\"clusterType\", \"map\");\n if (clusterRadius[map] === 0 || clusterType[map] == \"tiddler\") {\n // if clusterRadius null or clustering by tiddler, no whole clustering\n fCluster[map] = L.featureGroup();\n } else {\n // creating a cluter group for whole map\n fCluster[map] = L.markerClusterGroup({\n name: \"Cluster\" + map,\n polygonOptions: {\"weight\":\"0.5\"},\n maxClusterRadius: clusterRadius[map],\n /* for the record. may be a function\n function() {return (clusterRadius - 50) / 9 * Map[map].getZoom() + 50 - (clusterRadius - 50) / 9 },*/\n iconCreateFunction: createCluster\n });\n }\n // Get the declared places from the attributes\n var places = this.getAttribute(\"places\", undefined);\n var feature = L.featureGroup();\n // Render the map\n if (places) mapPlaces(this,\n JSON.parse(places),\n Map[map],\n fCluster[map],\n null,\n Colour[map],\n this.getAttribute(\"marker\"),\n st\n );\n\n // set map to objects bounds\n if (bounds) {\n Map[map].fitBounds(bounds);\n } else {\n bounds = lfltDefBounds;\n Map[map].fitBounds(bounds);\n }\n // if lat long zoom settings, overwrite bounds\n setting.lat = this.getAttribute(\"lat\");\n setting.lg = this.getAttribute(\"long\");\n setting.zoom = this.getAttribute(\"zoom\");\n // overwrite lat and long center\n if (setting.lat && setting.lg) {\n Map[map].setView([setting.lat, setting.lg]);\n }\n // overwrite zoom\n if (setting.zoom) {\n Map[map].setZoom(setting.zoom);\n }\n };\n\n // mapping a places json object (parent object, places json object, destination feature, destination cluster, popup for base objects, ands style parameters : color, marker, json style)\n function mapPlaces(obj, plcs, feat, clust, pop, col, mark, style) {\n // create feature for this mapping turn\n var feature = L.featureGroup();\n // case 1 : data in a tiddler\n if (plcs.tiddler) {\n // if no tiddler is given (single space) map current Tiddler\n // !todo would be much better if so when no attribute at all...\n if (plcs.tiddler == \" \") {\n mapTiddler(obj, obj.getVariable(\"currentTiddler\"), feature, clust, pop, col, mark, style);\n }\n // else, map the given tiddler\n else {\n // get data fields in the tiddler, let's seek for geo data\n mapTiddler(obj, plcs.tiddler, feature, clust, pop, col, mark, style);\n }\n }\n // case 2 : data in multiple tiddlers\n if (plcs.tiddlers) {\n mapTiddlers(obj, plcs.tiddlers, feature, clust, pop, col, mark, style);\n }\n // case 3 : data in tiddlers following a filter\n if (plcs.filter) {\n mapFilter(obj, plcs.filter, feature, clust, pop, col, mark, style);\n }\n // case 4 : data are directly listed in places (point(s) - polygon - polyline - geojson)\n // for each we will\n // - use dedicated function to populate mapping turn layer\n // - add layer to map\n if (plcs.point) {\n // add the point to the cluster layer\n mapPoint(plcs.point, clust, pop, col, mark);\n // add the cluster layer to map\n feature.addLayer(clust);\n // set bounds\n }\n if (plcs.points) {\n // ?todo : create a cluster for those points if clusterType == \"tiddler\"\n mapPoints(plcs.points, clust, pop, col, mark);\n feature.addLayer(clust);\n }\n if (plcs.polygon) {\n var polygFeat = L.featureGroup();\n mapPolyg(plcs.polygon, polygFeat, pop, col, style);\n polygFeat.addTo(feature);\n }\n if (plcs.polygons) {\n var polygsFeat = L.featureGroup();\n mapPolygs(plcs.polygons, polygsFeat, pop, col, style);\n polygsFeat.addTo(feature);\n }\n if (plcs.polyline) {\n var polylFeat = L.featureGroup();\n mapPolyl(plcs.polyline, polylFeat, pop, col, style);\n polylFeat.addTo(feature);\n }\n if (plcs.polylines) {\n var polylsFeat = L.featureGroup();\n mapPolyls(plcs.polylines, polylsFeat, pop, col, style);\n polylsFeat.addTo(feature);\n }\n if (plcs.geojson) {\n // !todo : create a cluster for those points if clusterType == \"tiddler\"\n var geojsonFeat = L.featureGroup();\n mapGeoJson(plcs.geojson, geojsonFeat, clust, col, mark, style);\n geojsonFeat.addTo(feat);\n }\n // add feature to map\n feature.addTo(feat);\n extBounds(feature);\n }\n\n // add a marker for a point\n function mapPoint(coord, clust, pop, col, mark) {\n try {\n var location = coord.split(\",\");\n } catch (err) {displayError(\"point coord error\", err);}\n try {\n var marker = L.marker(location, {\n icon: lfltIcon(col, mark, map)\n });\n if (pop) marker.bindPopup(pop);\n\t\t\tif (clust.count) clust.count +=1;\n\t\t\telse clust.count = 1;\n clust.addLayer(marker);\n } catch (err) {displayError(\"point marker error\", err);}\n }\n // add a marker serie for a points list\n function mapPoints(list, clust, pop, col, mark) {\n var Points = list.split(\" \");\n for (var pt in Points) {\n mapPoint(Points[pt], clust, pop, col, mark);\n }\n }\n\n // add a polygon\n function mapPolyg(list, feat, pop, col, st) {\n var Coords = list.split(\" \");\n var Shape = [];\n try {\n for (var nd in Coords) {\n var location = Coords[nd].split(\",\");\n Shape.push(location);\n }\n } catch (err) {\n displayError(\"polygone\", err);\n }\n try {\n var polygon = L.polygon(Shape, {\n color: setColor(col, map)\n });\n if (st) polygon.setStyle(checkStyle(st, col));\n if (pop) polygon.bindPopup(pop);\n polygon.addTo(feat);\n } catch (err) {\n displayError(\"polygone\", err);\n }\n }\n // add a polygons collection\n function mapPolygs(collec, feat, pop, col, st) {\n var Polys = collec.split(\"|\");\n for (var pg in Polys) {\n mapPolyg(Polys[pg], feat, pop, col, st);\n }\n }\n // add a polyline\n function mapPolyl(list, feat, pop, col, st) {\n var Coords = list.split(\" \");\n var Line = [];\n try {\n for (var nd in Coords) {\n var location = Coords[nd].split(\",\");\n Line.push(location);\n }\n } catch (err) {\n displayError(\"polyline\", err);\n }\n try {\n var polyline = L.polyline(Line, {\n color: setColor(col,map)\n });\n if (st) polyline.setStyle(checkStyle(st, col));\n if (pop) polyline.bindPopup(pop);\n // add polyline class in order to make fill transparent\n polyline.setStyle({\n \"className\": \"polyline\"\n }).addTo(feat);\n } catch (err) {\n displayError(\"polyline\", err);\n }\n }\n // add a polylines collection\n function mapPolyls(collec, feat, pop, col, st) {\n var Lines = collec.split(\"|\");\n for (var ln in Lines) {\n mapPolyl(Lines[ln], feat, pop, col, st);\n }\n }\n\n // add a geojson set\n function mapGeoJson(geojson, feat, clust, col, mark, st) {\n try {\n var data = JSON.parse(geojson);\n var geoJson = L.geoJSON(data, {\n // adding style\n style: function (feature) {\n // get feature style only if style is not injected\n // ?todo : only overwrite injected values?\n if (st === undefined || st === null) {\n st = {};\n if(feature.properties.style !== undefined) st = feature.properties.style;\n }\n // get feature properties style if exists\n if(feature.properties.color !== undefined) {\n st.color = feature.properties.color;\n st.fillColor = st.color;\n }\n // color parameter overwrite style color if exists\n if (col !== undefined && col !== null) {\n st.color = col;\n st.fillColor = col;\n }\n // if no color is defined at the end, fallback\n if (st.color === undefined) {\n col = setColor(col, map);\n st.color = col;\n st.fillColor = col;\n }\n return st;\n },\n onEachFeature: function (feature, layer) {\n layer.bindPopup(jsonPop(feature));\n },\n // adding points\n pointToLayer: function(geoJsonPoint, latlng) {\n // working to get color (from properties)\n var cl;\n if(geoJsonPoint.properties.color !== undefined) cl = geoJsonPoint.properties.color;\n if(geoJsonPoint.properties.fillColor !== undefined) cl = geoJsonPoint.properties.fillColor;\n if(col !== undefined && col !== null) cl = col;\n // binding default icon\n var jsonPoint = L.marker(latlng, {\n icon: lfltIcon(cl, mark, map)\n });\n jsonPoint.bindPopup(jsonPop(geoJsonPoint));\n\t\t\t\t\tif (clust.count) clust.count +=1;\n\t\t\t\t\telse clust.count = 1;\n clust.addLayer(jsonPoint);\n }\n });\n\n // ?todo : should we add clust to feat or to geoJson? should we add clust even if it's already here?\n feat.addLayer(clust);\n feat.addLayer(geoJson);\n } catch (error) {displayError(\"there was an error when displaying geoJson. error : \", error);}\n }\n\n // map a tiddler\n function mapTiddler(obj, tid, feat, clust, pop, col, mark, style) {\n if(iter.map.tid === undefined) iter.map.tid = 1;\n else iter.map.tid +=1;\n if(iter.map.tid < 4242) {\n // get data fields in the tiddler, let's seek for geo data\n var flds = obj.wiki.getTiddler(tid).fields,\n feature = L.featureGroup(), // create the tiddler feature\n popup = \"\"; // create the popup text\n // setting marker, color, style\n // if no marker injected, trying to get from tiddler\n if(mark === null || mark === undefined) {\n if(flds.marker) mark = flds.marker;\n }\n // working style and color together\n var cl, st = {};\n // style\n if(flds.style) st = JSON.parse(flds.style);\n // overwrite with injected values\n if (style !== undefined && style !== null) {\n st = style;\n /* ?todo : should we overwrite only injected?\n \tfor (var v in st) {\n if(style.v !== undefined) st.v = style.v;\n }\n \tfor (var v in style) {\n \t}*/\n }\n // color\n if (flds.color) cl = flds.color;\n // overwrite with injected color style if exists\n if (style !== undefined && style !== null) {\n if (st.fillColor !== undefined) cl = st.fillColor\n }\n // overwrite with injected color also in style\n if (col !== undefined && col !== null) {\n cl = col;\n st.color = cl; st.fillColor = cl;\n }\n Colour[\"t\" + tn] = cl;\n // if clusterType is tiddler, creating a cluster group for tiddler\n // also will have to deal with the filter / tiddler distinction\n if (clusterType[map] == \"tiddler\") {\n // ?todo : automate cluster creation?\n fCluster[\"t\" + tn] = L.markerClusterGroup({\n name: \"Cluster\" + map + \"Cluster\" + tn,\n polygonOptions: {\"weight\":\"0.5\"},\n maxClusterRadius: clusterRadius[map],\n /* for the record. may be a function\n function() {return (clusterRadius - 50) / 9 * Map[map].getZoom() + 50 - (clusterRadius - 50) / 9 },*/\n iconCreateFunction: createCluster\n });\n } else {\n fCluster[\"t\" + tn] = fCluster[map];\n }\n\n // case 1 : data stored in a json tiddler\n if (flds.type == \"application/json\") {\n // for now, assuming any json stored data is geoJson...\n var data = obj.wiki.getTiddlerText(tid);\n mapGeoJson(data, feature, fCluster[\"t\" + tn], Colour[\"t\" + tn], mark, st);\n feat.addLayer(feature);\n }\n // case 2 if tiddler is not JSON data, display tiddler stored geodata as point(s), polygon, polyline...\n else {\n // create the popup for base objects\n popup = \"<h4><a href=\\\"#\" + encodeURIComponent(flds.title) + \"\\\">\" + flds.title + \"</a></h4>\";\n var content = \"\";\n if (flds.text !== \"\") {\n // if tiddler contains a widget, avoid html rendering\n if (flds.text.match(/<\\$leafmap/)) {\n content += \"<pre>\" + flds.text + \"</pre>\";\n }\n // else render\n else {\n content += obj.wiki.renderTiddler(\"text/html\", tid).substring(0, 420);\n }\n }\n // adding a link to the tiddler\n content += \"<br/>(<a href=\\\"#\" + encodeURIComponent(flds.title) + \"\\\" title=\\\"read more...\\\">...</a>)\";\n popup += content;\n\n // map recursively (!!! danger !!!)\n mapPlaces(obj,\n flds,\n feature,\n fCluster[\"t\" + tn],\n popup,\n cl,\n mark,\n st\n );\n feature.addTo(feat);\n }\n /*\n// check if anything was rendered before binding popup\n if (wasRendered == 0) console.log(\"tw-leaflet-map-plugin > non geotiddler was listed and not rendered : \" + flds.title);\n // add the layer to the feature\n feature.addLayer(subFeat);\n feature.addTo(Map[map]); // layer.addTo(Map[map]);\n } */\n // get layer bounds for automatic zoom\n extBounds(feature);\n tn++;\n }\n // it tiddler rendered two many times for same map. Stoping and error launch\n else $tw.utils.error(\"tiddler [[\" + tid + \"]] was rendered more than 4242 times in this map. Please double check circular dependencies...\");\n }\n\n // map a tiddler collection\n function mapTiddlers(obj, list, feat, clust, pop, col, mark, style) {\n var Tids = list.split(\" \");\n for (var td in Tids) {\n mapTiddler(obj, Tids[td], feat, clust, pop, col, mark, style);\n }\n }\n\n // map tiddlers with a filter\n function mapFilter(obj, filter, feat, clust, pop, col, mark, style) {\n try {\n var Tids = obj.wiki.filterTiddlers(filter);\n for (var td in Tids) {\n mapTiddler(obj, Tids[td], feat, clust, pop, col, mark, style);\n }\n } catch (error) {\n $tw.utils.error(\"sorry there was something wrong when trying to map your filter. error : \" + error);\n }\n }\n\n // icon url creator\n function iconUrl(col, tid, m) {\n var icone = escape($tw.wiki.renderTiddler(\"text/html\", tid).replace(\"$primary$\", setColor(col, m)).replace(\"</p>\", \"\").replace(\"<p>\", \"\"));\n return ('data:image/svg+xml;charset=UTF-8,' + icone);\n }\n\n // create marker\n // ?todo only if there are points to display;\n function lfltIcon(col, tid, m) {\n // checking if marker is defined. Fallback to default\n if(tid === undefined || tid === null) tid = \"$:/plugins/sycom/leaflet/images/marker.svg\";\n else tid = \"$:/plugins/sycom/leaflet/images/\" + tid + \".svg\";\n if($tw.wiki.getTiddler(tid) === undefined) tid = \"$:/plugins/sycom/leaflet/images/marker.svg\";\n // !todo create shadow from icon by transform matrix?\n var shad = tid.split(\".svg\")[0] + \"shadow.svg\",\n shadowUrl = 'data:image/svg+xml;charset=UTF-8,' + escape($tw.wiki.getTiddlerText(shad));\n // get dimensions in tiddler\n var MarkDim = $tw.wiki.getTiddler(tid).fields.marker_dim.split(\" \");\n var ShadDim = $tw.wiki.getTiddler(shad).fields.marker_dim.split(\" \");\n var theIcon = L.icon({\n iconUrl: iconUrl(col, tid, m),\n iconRetinaUrl: iconUrl(col, tid, m),\n iconSize: [MarkDim[0], MarkDim[1]],\n iconAnchor: [MarkDim[2], MarkDim[3]],\n popupAnchor: [0, -MarkDim[3]],\n shadowUrl: shadowUrl,\n shadowRetinaUrl: shadowUrl,\n shadowSize: [ShadDim[0], ShadDim[1]],\n shadowAnchor: [ShadDim[2], ShadDim[3]]\n });\n return theIcon;\n }\n\n // set color with fallback to map color or wiki...\n function setColor(col, m) {\n if(m === undefined) m = map;\n if (col === undefined || col === null) col = Colour[m];\n if (col === undefined || col === null) col = Colour.wiki;\n return col;\n }\n\n // set style with fallback to map color or wiki...\n function checkStyle(sty, col) {\n if (col === undefined || col === null) {\n if(sty.color === undefined) sty.color = setColor(col, map);\n if(sty.fillColor === undefined) sty.fillColor = setColor(col, map);\n }\n else {\n sty.color = col;\n sty.fillColor = col;\n }\n return sty;\n }\n\n // coordinate error message\n function displayError(objectType, error) {\n $tw.utils.error(\"there was an error when mapping a \" + objectType + \" - error : \" + error);\n }\n\n // adjust bounds to layer\n function extBounds(feat) {\n try {\n if (bounds) {\n bounds.extend(feat.getBounds());\n } else {\n if (feat.getBounds()._northEast) {\n bounds = feat.getBounds();\n }\n }\n } catch (error) {\n $tw.utils.error(\"there was an error when trying to zoom on bounds. error : \" + error);\n }\n }\n\n // cluster icon creation\n function createCluster(clust) {\n // getting back map number\n var m = this.name.split(\"Cluster\")[1],\n t = this.name.split(\"Cluster\")[2],\n zC = Map[m].getZoom(),\n z0,cTot,cCol,cOpa;\n // checking object density mean for the map\n if (t === undefined) {\n if (fCluster[m].z0 === undefined) fCluster[m].z0 = zC;\n z0 = fCluster[m].z0;\n if (fCluster[m].count === undefined) fCluster[m].count = 1;\n cTot = fCluster[m].count;\n cCol = setColor(Colour[m],m);\n cOpa = 0.85\n }\n else {\n if (fCluster[\"t\" + t].z0 === undefined) fCluster[\"t\" + t].z0 = zC;\n z0 = fCluster[\"t\" + t].z0;\n if (fCluster[\"t\" + t].count === undefined) fCluster[\"t\" + t].count = 1;\n cTot = fCluster[\"t\" + t].count;\n cCol = setColor(Colour[\"t\" + t],m);\n cOpa = 0.65\n }\n // cluster icon size will be based on item number and zoom\n // !todo: use density to get a more \"local\" percentage before calculating size\n var cC = clust.getChildCount(),\n cS = 20 * Math.log(clusterRadius[m]) * (1 + Math.log(cTot)/Math.max(cTot * Math.pow(2,zC-z0),Math.log(cTot))) * (1 - 1 / ((Math.log(cTot) / cTot) * Math.pow(2,zC-z0) * cC + 1));\n if (cS < 34) cS = 34;\n var cF; // font size of cluster text\n if (cC > 9999) cF = cS / 3;\n else {if (cC > 999) cF = cS / 3.5;\n else cF = cS / 2}\n if (cF < 12) cF = 12;\n // creating icon. Checking tiddler or whole clustering before\n return new L.DivIcon({\n html: '<div style=\"width:' + cS + 'px;height:' + cS + 'px;font-size:' + cF + 'px;background-color:' + cCol + ';border-color:' + cCol + ';opacity:'+cOpa+'\"><div><span style=\"line-height:' + cS + 'px;opacity:'+(cOpa+0.12)+'\">' + cC + \"</span></div></div>\",\n className: \"marker-cluster marker-cluster-\" + cC,\n iconSize: new L.Point(cS, cS)\n });\n }\n\n // popup function for Json\n function jsonPop(feat) {\n // extracting data to create popup (all non-null data!)\n var Prop = feat.properties,\n jsontitle = \"\",\n jsondesc = \"\",\n jsonhtml = \"\";\n // testing if properties title or name exists\n if (Prop.name) jsontitle += Prop.name + \" \";\n if (Prop.title) jsontitle += Prop.title + \" \";\n if (Prop.description) jsondesc += Prop.description + \"\";\n // populating other data\n // if we got a title\n if (jsontitle !== \"\") {\n jsonhtml += \"<h4>\" + jsontitle + \"</h4>\";\n // if we got a description let's give it\n if (jsondesc !== \"\") jsonhtml += jsondesc;\n else {\n jsonhtml+= \"<ul>\";\n for (var p in Prop) {\n if (Prop[p] !== null && Prop[p] !== \"\" && p != \"name\" && p != \"title\") jsonhtml += \"<li>\" + p + \" : \" + Prop[p] + \"</li>\";\n }\n jsonhtml += \"</ul>\";\n }\n }\n // if we have no title, giving one with first fields\n else {\n // in case we've got a description. Stop after title\n if (jsondesc !== \"\") {\n for (var pr in Prop) {\n // if title is really to short (as an id), taking next field\n if (jsontitle.length < 8) jsontitle += Prop[pr] + \" \";\n else break;\n }\n jsonhtml = \"<h4>\" + jsontitle + \"</h4>\" + jsonhtml;\n }\n else {\n for (var po in Prop) {\n // if title is really to short (as an id), taking next field\n if (jsontitle.length < 4) jsontitle += Prop[po] + \" \";\n else {\n if (Prop[po] !== null && Prop[po] !== \"\") jsonhtml += \"<li>\" + po + \" : \" + Prop[po] + \"</li>\";\n }\n }\n jsonhtml = \"<h4>\" + jsontitle + \"</h4><ul>\" + jsonhtml + \"</ul>\";\n }\n }\n return jsonhtml;\n }\n\n exports.leafmap = mapWidget;\n\n})();\n/*\nMISC NOTES for later\nJSON.parse(tiddler.fields.text);\nvar jsonData = this.wiki.getTiddlerAsJson(this.to),\n*/\n",
"created": "20151028202401905",
"modified": "20170318234011605",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/sycom/leaflet/readme": {
"title": "$:/plugins/sycom/leaflet/readme",
"text": "The [leaflet plugin](#$:/plugins/sycom/leaflet) is a work in progress integration of the [leaflet][leaflet] library in TiddlyWiki in order to display geographical purpose tiddlers.\n\nHave a look at [demo page on the web][plugindemo] or at integrated documentation which describes usage and examples.\n\nKeep in mind that the plugin might be buggy or imperfect. Please [report any comment or issue][issues] on main repo.\n\n## Sources / licenses\n* [leaflet][leaflet] library (_1.3.1_) - License 2-clause BSD\n * leaflet-[markerCluster][markercluster] extension - Licence MIT\n* [leaflet plugin][source] is released under similar [BSD 3-Clause license][license] as TiddlyWiki.\n!! Side projects\n\n[plugindemo]: https://sycom.gitlab.io/TiddlyWiki-Plugins/#Michel%20Strogoff%20from%20the%20sky\n[source]: https://framagit.org/sycom/TiddlyWiki-Plugins/plugins/sycom/leaflet\n[issues]: https://framagit.org/sycom/TiddlyWiki-Plugins/issues\n[leaflet]: http://leafletjs.com/\n[markercluster]: https://github.com/Leaflet/Leaflet.markercluster\n[license]: https://framagit.org/sycom/TiddlyWiki-Plugins/LICENSE.md\n",
"type": "text/x-markdown",
"created": "20151119173416000",
"modified": "20190332172200000",
"caption": "Readme"
},
"$:/plugins/sycom/leaflet/templates/geoTiddler": {
"title": "$:/plugins/sycom/leaflet/templates/geoTiddler",
"created": "20180602095702318",
"modified": "20180602105242971",
"tags": "$:/tags/ViewTemplate",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=\"[all[current]has[point]] [all[current]has[points]] [all[current]has[polyline]] [all[current]has[polylines]] [all[current]has[polygon]] [all[current]has[polygons]] [all[current]has[places]] [all[current]has[geojson]]\">\n <$leafmap places='{\"tiddler\":\" \"}' height='240px'/>\n</$list>\n"
}
}
}
/* required styles */
.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
position: absolute;
left: 0;
top: 0;
}
.leaflet-container {
overflow: hidden;
}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
-webkit-user-drag: none;
}
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
.leaflet-safari .leaflet-tile {
image-rendering: -webkit-optimize-contrast;
}
/* hack that prevents hw layers "stretching" when loading new tiles */
.leaflet-safari .leaflet-tile-container {
width: 1600px;
height: 1600px;
-webkit-transform-origin: 0 0;
}
.leaflet-marker-icon,
.leaflet-marker-shadow {
display: block;
}
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container .leaflet-overlay-pane svg,
.leaflet-container .leaflet-marker-pane img,
.leaflet-container .leaflet-shadow-pane img,
.leaflet-container .leaflet-tile-pane img,
.leaflet-container img.leaflet-image-layer {
max-width: none !important;
max-height: none !important;
}
.leaflet-container.leaflet-touch-zoom {
-ms-touch-action: pan-x pan-y;
touch-action: pan-x pan-y;
}
.leaflet-container.leaflet-touch-drag {
-ms-touch-action: pinch-zoom;
/* Fallback for FF which doesn't support pinch-zoom */
touch-action: none;
touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
-ms-touch-action: none;
touch-action: none;
}
.leaflet-container {
-webkit-tap-highlight-color: transparent;
}
.leaflet-container a {
-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
}
.leaflet-tile {
filter: inherit;
visibility: hidden;
}
.leaflet-tile-loaded {
visibility: inherit;
}
.leaflet-zoom-box {
width: 0;
height: 0;
-moz-box-sizing: border-box;
box-sizing: border-box;
z-index: 800;
}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
-moz-user-select: none;
}
.leaflet-pane { z-index: 400; }
.leaflet-tile-pane { z-index: 200; }
.leaflet-overlay-pane { z-index: 400; }
.leaflet-shadow-pane { z-index: 500; }
.leaflet-marker-pane { z-index: 600; }
.leaflet-tooltip-pane { z-index: 650; }
.leaflet-popup-pane { z-index: 700; }
.leaflet-map-pane canvas { z-index: 100; }
.leaflet-map-pane svg { z-index: 200; }
.leaflet-vml-shape {
width: 1px;
height: 1px;
}
.lvml {
behavior: url(#default#VML);
display: inline-block;
position: absolute;
}
/* control positioning */
.leaflet-control {
position: relative;
z-index: 800;
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto;
}
.leaflet-top,
.leaflet-bottom {
position: absolute;
z-index: 1000;
pointer-events: none;
}
.leaflet-top {
top: 0;
}
.leaflet-right {
right: 0;
}
.leaflet-bottom {
bottom: 0;
}
.leaflet-left {
left: 0;
}
.leaflet-control {
float: left;
clear: both;
}
.leaflet-right .leaflet-control {
float: right;
}
.leaflet-top .leaflet-control {
margin-top: 10px;
}
.leaflet-bottom .leaflet-control {
margin-bottom: 10px;
}
.leaflet-left .leaflet-control {
margin-left: 10px;
}
.leaflet-right .leaflet-control {
margin-right: 10px;
}
/* zoom and fade animations */
.leaflet-fade-anim .leaflet-tile {
will-change: opacity;
}
.leaflet-fade-anim .leaflet-popup {
opacity: 0;
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
transition: opacity 0.2s linear;
}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
opacity: 1;
}
.leaflet-zoom-animated {
-webkit-transform-origin: 0 0;
-ms-transform-origin: 0 0;
transform-origin: 0 0;
}
.leaflet-zoom-anim .leaflet-zoom-animated {
will-change: transform;
}
.leaflet-zoom-anim .leaflet-zoom-animated {
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
-o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
transition: none;
}
.leaflet-zoom-anim .leaflet-zoom-hide {
visibility: hidden;
}
/* cursors */
.leaflet-interactive {
cursor: pointer;
}
.leaflet-grab {
cursor: -webkit-grab;
cursor: -moz-grab;
}
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
cursor: crosshair;
}
.leaflet-popup-pane,
.leaflet-control {
cursor: auto;
}
.leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
cursor: move;
cursor: -webkit-grabbing;
cursor: -moz-grabbing;
}
/* marker & overlays interactivity */
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-image-layer,
.leaflet-pane > svg path,
.leaflet-tile-container {
pointer-events: none;
}
.leaflet-marker-icon.leaflet-interactive,
.leaflet-image-layer.leaflet-interactive,
.leaflet-pane > svg path.leaflet-interactive {
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
pointer-events: auto;
}
/* visual tweaks */
.leaflet-container {
background: #e8f0ff;
outline: 0;
}
.leaflet-container a {
color: #0078A8;
text-decoration: none;
}
.leaflet-container a.leaflet-active {
outline: 2px solid orange;
}
.leaflet-zoom-box {
border: 2px dotted #38f;
background: rgba(255,255,255,0.5);
}
/* general typography */
.leaflet-container {
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
}
/* general toolbar styles */
.leaflet-bar {
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
border-radius: 4px;
}
.leaflet-bar a,
.leaflet-bar a:hover {
background-color: #fff;
border-bottom: 1px solid #ccc;
width: 26px;
height: 26px;
line-height: 26px;
display: block;
text-align: center;
text-decoration: none;
color: black;
}
.leaflet-bar a,
.leaflet-control-layers-toggle {
background-position: 50% 50%;
background-repeat: no-repeat;
display: block;
}
.leaflet-bar a:hover {
background-color: #f4f4f4;
}
.leaflet-bar a:first-child {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.leaflet-bar a:last-child {
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom: none;
}
.leaflet-bar a.leaflet-disabled {
cursor: default;
background-color: #f4f4f4;
color: #bbb;
}
.leaflet-touch .leaflet-bar a {
width: 30px;
height: 30px;
line-height: 30px;
}
.leaflet-touch .leaflet-bar a:first-child {
border-top-left-radius: 2px;
border-top-right-radius: 2px;
}
.leaflet-touch .leaflet-bar a:last-child {
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
}
/* zoom control */
.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
font: bold 18px 'Lucida Console', Monaco, monospace;
text-indent: 1px;
}
.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
font-size: 22px;
}
/* layers control */
.leaflet-control-layers {
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
background: #fff;
border-radius: 5px;
}
.leaflet-control-layers-toggle {
background-image: url(images/layers.png);
width: 36px;
height: 36px;
}
.leaflet-retina .leaflet-control-layers-toggle {
background-image: url(images/layers-2x.png);
background-size: 26px 26px;
}
.leaflet-touch .leaflet-control-layers-toggle {
width: 44px;
height: 44px;
}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
display: none;
}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
display: block;
position: relative;
}
.leaflet-control-layers-expanded {
padding: 6px 10px 6px 6px;
color: #333;
background: #fff;
}
.leaflet-control-layers-scrollbar {
overflow-y: scroll;
overflow-x: hidden;
padding-right: 5px;
}
.leaflet-control-layers-selector {
margin-top: 2px;
position: relative;
top: 1px;
}
.leaflet-control-layers label {
display: block;
}
.leaflet-control-layers-separator {
height: 0;
border-top: 1px solid #ddd;
margin: 5px -10px 5px -6px;
}
/* Default icon URLs */
.leaflet-default-icon-path {
background-image: url(images/marker-icon.png);
}
/* attribution and scale controls */
.leaflet-container .leaflet-control-attribution {
background: #fff;
background: rgba(255, 255, 255, 0.7);
margin: 0;
}
.leaflet-control-attribution,
.leaflet-control-scale-line {
padding: 0 5px;
color: #333;
}
.leaflet-control-attribution a {
text-decoration: none;
}
.leaflet-control-attribution a:hover {
text-decoration: underline;
}
.leaflet-container .leaflet-control-attribution,
.leaflet-container .leaflet-control-scale {
font-size: 11px;
}
.leaflet-left .leaflet-control-scale {
margin-left: 5px;
}
.leaflet-bottom .leaflet-control-scale {
margin-bottom: 5px;
}
.leaflet-control-scale-line {
border: 2px solid #777;
border-top: none;
line-height: 1.1;
padding: 2px 5px 1px;
font-size: 11px;
white-space: nowrap;
overflow: hidden;
-moz-box-sizing: border-box;
box-sizing: border-box;
background: #fff;
background: rgba(255, 255, 255, 0.5);
}
.leaflet-control-scale-line:not(:first-child) {
border-top: 2px solid #777;
border-bottom: none;
margin-top: -2px;
}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
border-bottom: 2px solid #777;
}
.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
box-shadow: none;
}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
border: 2px solid rgba(0,0,0,0.2);
background-clip: padding-box;
}
/* popup */
.leaflet-popup {
position: absolute;
text-align: center;
margin-bottom: 20px;
}
.leaflet-popup-content-wrapper {
padding: 1px;
text-align: left;
border-radius: 12px;
}
.leaflet-popup-content {
margin: 13px 19px;
line-height: 1.4;
}
.leaflet-popup-content p {
margin: 18px 0;
}
.leaflet-popup-tip-container {
width: 40px;
height: 20px;
position: absolute;
left: 50%;
margin-left: -20px;
overflow: hidden;
pointer-events: none;
}
.leaflet-popup-tip {
width: 17px;
height: 17px;
padding: 1px;
margin: -10px auto 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
background: white;
color: #333;
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
}
.leaflet-container a.leaflet-popup-close-button {
position: absolute;
top: 0;
right: 0;
padding: 4px 4px 0 0;
border: none;
text-align: center;
width: 18px;
height: 14px;
font: 16px/14px Tahoma, Verdana, sans-serif;
color: #c3c3c3;
text-decoration: none;
font-weight: bold;
background: transparent;
}
.leaflet-container a.leaflet-popup-close-button:hover {
color: #999;
}
.leaflet-popup-scrolled {
overflow: auto;
border-bottom: 1px solid #ddd;
border-top: 1px solid #ddd;
}
.leaflet-oldie .leaflet-popup-content-wrapper {
zoom: 1;
}
.leaflet-oldie .leaflet-popup-tip {
width: 24px;
margin: 0 auto;
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
}
.leaflet-oldie .leaflet-popup-tip-container {
margin-top: -1px;
}
.leaflet-oldie .leaflet-control-zoom,
.leaflet-oldie .leaflet-control-layers,
.leaflet-oldie .leaflet-popup-content-wrapper,
.leaflet-oldie .leaflet-popup-tip {
border: 1px solid #999;
}
/* div icon */
.leaflet-div-icon {
background: #fff;
border: 1px solid #666;
}
/* Tooltip */
/* Base styles for the element that has a tooltip */
.leaflet-tooltip {
position: absolute;
padding: 6px;
background-color: #fff;
border: 1px solid #fff;
border-radius: 3px;
color: #222;
white-space: nowrap;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
pointer-events: none;
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
}
.leaflet-tooltip.leaflet-clickable {
cursor: pointer;
pointer-events: auto;
}
.leaflet-tooltip-top:before,
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
position: absolute;
pointer-events: none;
border: 6px solid transparent;
background: transparent;
content: "";
}
/* Directions */
.leaflet-tooltip-bottom {
margin-top: 6px;
}
.leaflet-tooltip-top {
margin-top: -6px;
}
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-top:before {
left: 50%;
margin-left: -6px;
}
.leaflet-tooltip-top:before {
bottom: 0;
margin-bottom: -12px;
border-top-color: #fff;
}
.leaflet-tooltip-bottom:before {
top: 0;
margin-top: -12px;
margin-left: -6px;
border-bottom-color: #fff;
}
.leaflet-tooltip-left {
margin-left: -6px;
}
.leaflet-tooltip-right {
margin-left: 6px;
}
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
top: 50%;
margin-top: -6px;
}
.leaflet-tooltip-left:before {
right: 0;
margin-right: -12px;
border-left-color: #fff;
}
.leaflet-tooltip-right:before {
left: 0;
margin-left: -12px;
border-right-color: #fff;
}
[
{
"id": "osmfr",
"nom": "OSM France",
"url": "http://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png",
"attrib": "fond par <a href='http://osm.org/copyright'>OSM</a>, licence <a href='http://creativecommons.org/licenses/by-sa/3.0'>CC BY SA</a>. Données ©Contributeurs <a href='http://openstreetmap.org'>OSM</a>, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
"zMin": 1,
"zMax": 20
},
{
"id": "osm",
"nom": "OpenStreetMap",
"url": "http://{s}.tile.osm.org/{z}/{x}/{y}.png",
"attrib": "Map tiles by ©<a href='http://osm.org/copyright'>OSM</a>, licence <a href='http://creativecommons.org/licenses/by-sa/3.0'>CC BY SA</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
"zMin": 1,
"zMax": 20
},
{
"id": "osmbw",
"nom": "OSM N&B",
"url": "http://www.toolserver.org/tiles/bw-mapnik/{z}/{x}/{y}.png",
"attrib": "Tiles hosted by wikimedia labs. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
"zMin": 1,
"zMax": 20
},
{
"id": "sat",
"nom": "Satellite Esri",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
"attrib": "©Map tiles by Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community",
"zMin": 1,
"zMax": 20
},
{
"id": "natgeo",
"nom": "National Geog.",
"url": "http://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/tile/{z}/{y}/{x}",
"attrib": "©Map tiles by Esri — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC",
"zMin": 1,
"zMax": 12
},
{
"id": "toner",
"nom": "Black Ink",
"url": "http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png",
"attrib": "Map tiles by <a href='http://stamen.com'>Stamen Design</a>, licence <a href='http://creativecommons.org/licenses/by/3.0'>CC BY 3.0</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
"zMin": 1,
"zMax": 20
},
{
"id": "water",
"nom": "Water painting",
"url": "http://{s}.tile.stamen.com/watercolor/{z}/{x}/{y}.png",
"attrib": "Map tiles by <a href='http://stamen.com'>Stamen Design</a>, licence <a href='http://creativecommons.org/licenses/by/3.0'>CC BY 3.0</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
"zMin": 1,
"zMax": 20
},
{
"id": "thunder",
"nom": "Thunderforest",
"url": "http://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png",
"attrib": "Map tiles by <a href='http://thunderforest.com/'>Thunderforest</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
"zMin": 1,
"zMax": 20
},
{
"id": "dark",
"nom": "Dark Matter",
"url": "http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png",
"attrib": "©Map tiles by <a href='https://cartodb.com/basemaps/' target='_blank'>CartoDB</a>, under <a href='https://creativecommons.org/licenses/by/3.0/' target='_blank'>CC BY 3.0</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
"zMin": 1,
"zMax": 20
},
{
"id": "positron",
"nom": "Positron",
"url": "http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
"attrib": "©Map tiles by <a href='https://cartodb.com/basemaps/' target='_blank'>CartoDB</a>, under <a href='https://creativecommons.org/licenses/by/3.0/' target='_blank'>CC BY 3.0</a>. Data by ©<a href='http://openstreetmap.org'>OSM</a> contributors, licence <a href='http://opendatacommons.org/licenses/odbl/'>ODbL</a>.",
"zMin": 1,
"zMax": 20
},
{
"id": "none",
"nom": "None",
"url": "",
"attrib": "",
"zMin": 1,
"zMax": 10
}
]
/*\
created: 20151028202401905
modified: 20170318234011605
title: $:/plugins/sycom/leaflet/mapWidget.tid
type: application/javascript
module-type: widget
A widget for displaying leaflet map in TiddlyWiki
\*/
(function() {
/* ----------------------- */
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var Widget = require("$:/core/modules/widgets/widget.js").widget,
L = require("$:/plugins/sycom/leaflet/lib/leaflet.js"),
markerClusterGroup = require("$:/plugins/sycom/leaflet/lib/leaflet-markercluster.js");
var mapWidget = function(parseTreeNode, options) {
this.initialise(parseTreeNode, options);
};
// global vars
var Map = [], // map collection
map = 0, // map order number
tn = 0, // tiddler number
fCluster = [], // the clusters
Colour = [], // the colors
clusterRadius = [], // cluster radii
clusterType = [], // clustering for whole map or for each tiddler
lfltDefBounds = [
[52.75, -2.55],
[52.85, -2.65]
], // default bounds when nothing given
bounds, // global bounds for map ?todo one per map?
iter = [], // iteration indicator to avoid infinite loops
setting = {}; // the map's settings
/* Inherit from the base widget class */
mapWidget.prototype = new Widget();
/* Render this widget into the DOM */
mapWidget.prototype.render = function(parent, nextSibling) {
bounds = null;
// Compute our attributes
this.computeAttributes();
// Get the base settings for rendering : width / height (default : 100% / 500px)
// !todo : make a settings tidller in order to let user set it for the whole wiki (may be inspired from roadtree)
// !todo what happens if windows is resized?
var width = this.getAttribute("width", "100%"),
height = this.getAttribute("height", "420px");
// creating the div container
var div = this.document.createElement("div");
div.setAttribute("id", "lfltMap-" + map);
div.setAttribute("style", "width:" + width + ";height:" + height);
// Save the parent dom node
this.parentDomNode = parent;
// Compute our attributes
// this.computeAttributes();
// create the container
parent.insertBefore(div, nextSibling);
this.domNodes.push(div);
// Create the map
this.createMap();
// Execute our logic
this.execute();
// increment map number indicator
map += 1;
};
/* Create the map for the widget */
mapWidget.prototype.createMap = function(parent, nextSibling) {
// create the leaflet and push it to #lfltMap
Map[map] = L.map('lfltMap-' + map);
// Install base tile layer (if none provided, default is "none")
// get tilelayers from JSON
var fonds = JSON.parse(this.wiki.getTiddlerText("$:/plugins/sycom/leaflet/lib/tileLayers.json"));
// create tile layers list object from json list
var Tiles = []; // leaflet tile layers
var tiles = {}; // tile identifier for control
// look for tile parameter
setting.tile = this.getAttribute("tile", "none");
setting.marker = this.getAttribute("marker", null);
// create tile layer list
for (var i in fonds) {
if (i == setting.tile || fonds[i].id == setting.tile) {
setting.tile = fonds[i].id;
}
var couche = new L.TileLayer(fonds[i].url, {
attribution: fonds[i].attrib,
minZoom: fonds[i].zMin,
maxZoom: fonds[i].zMax,
unloadInvisibleTiles: true
});
Tiles[fonds[i].id] = couche;
tiles[fonds[i].nom] = couche;
}
// if user entered a wrong tile id
if (Tiles[setting.tile] === undefined) {
setting.tile = "none";
$tw.utils.error("Seems you entered a wrong tile id, displayed none instead. Please refer to plugin documentation to avoid this - error : " + error);
}
Tiles[setting.tile].addTo(Map[map]);
// install tile layer control if needed
setting.tileControl = this.getAttribute("tileControl");
if (setting.tileControl) {
var tControl = L.control.layers(tiles);
tControl.addTo(Map[map]);
}
/* !todo to come next (will have to implement leaflet.draw extension)
// look for draw parameter
setting.drawControl = this.getAttribute("drawControl");
if (setting.drawControl) {
// Initialize the FeatureGroup to store editable layers
var drawnItems = new L.FeatureGroup();
Map[map].addLayer(drawnItems);
// Initialize the draw control and pass it the FeatureGroup of editable layers
var drawControl = new L.Control.Draw({
edit: {
featureGroup: drawnItems
}
}
);
Map[map].addControl(drawControl);
}
*/
};
/* Compute the internal state of the widget */
mapWidget.prototype.execute = function() {
// getting wiki primary color
// check if you defined a tiddler name for palette but no tiddler with that
if(this.wiki.getTiddlerData(this.wiki.getTiddlerText("$:/palette"))) Colour.wiki = this.wiki.getTiddlerData(this.wiki.getTiddlerText("$:/palette")).primary;
// switch back to basic blue
else Colour.wiki = "#5778d8";
// switch back to basic tiddlywiki blue if primary is defined from another color
/* notes to upgrade this process
if primaire is <<colour xxxx>> set to default gray
if primaire.match("<<") primaire="#555"; */
if (Colour.wiki.match(/</g)) Colour.wiki = "#5778d8";
// getting style parameters
var style = this.getAttribute("style", undefined);
var st;
// case style defined
if(style !== undefined) {
st = JSON.parse(style);
// color parameter will overwrite style color and style fillColor parameter
if(st.fillColor) Colour[map] = this.getAttribute("color", st.fillColor);
else Colour[map] = this.getAttribute("color", st.color);
}
// case style undefined
else {
st = null;
// checking if user defined a color if no color go undefined
Colour[map] = this.getAttribute("color", undefined);
}
// create default icon
// ?todo: only if there are points to display?
L.icon.default = lfltIcon(setColor(null, map), setting.marker, map);
// create whole map cluster
// getting cluster size parameter, if exists
clusterRadius[map] = this.getAttribute("cluster", 80);
clusterType[map] = this.getAttribute("clusterType", "map");
if (clusterRadius[map] === 0 || clusterType[map] == "tiddler") {
// if clusterRadius null or clustering by tiddler, no whole clustering
fCluster[map] = L.featureGroup();
} else {
// creating a cluster group for whole map
fCluster[map] = L.markerClusterGroup({
name: "Cluster" + map,
polygonOptions: {"weight":"0.5"},
maxClusterRadius: clusterRadius[map],
/* for the record. may be a function
function() {return (clusterRadius - 50) / 9 * Map[map].getZoom() + 50 - (clusterRadius - 50) / 9 },*/
iconCreateFunction: createCluster
});
}
// Get the declared places from the attributes
var places = this.getAttribute("places", undefined);
var feature = L.featureGroup();
// Render the map
if (places) mapPlaces(this,
JSON.parse(places),
Map[map],
fCluster[map],
null,
Colour[map],
this.getAttribute("marker"),
st
);
// add origin/destination markers for distance calculations
var wk = this.wiki;
var originLatLngString = wk.getTiddlerText("$:/Origin");
var destLatLngString = wk.getTiddlerText("$:/Destination");
Map[map].createPane("topMarker");
Map[map].getPane("topMarker").style.zIndex = 999;
function calculateDistance(wk) {
var R, lat1, lat2, lon1, lon2;
try {
R = parseFloat(wk.getTiddlerText("$:/EberronRadius"));
} catch {
R = 3960;
}
try {
var originLatLngString = wk.getTiddlerText("$:/Origin");
var destLatLngString = wk.getTiddlerText("$:/Destination");
var originSplit = originLatLngString.split(",");
lat1 = parseFloat(originSplit[0]);
lat1 = Math.asin(lat1/78.0);
lon1 = parseFloat(originSplit[1]);
var destSplit = destLatLngString.split(",");
lat2 = parseFloat(destSplit[0]);
lat2 = Math.asin(lat2/78.0);
lon2 = parseFloat(destSplit[1]);
const dLat = (lat2-lat1);
const dLon = (lon2-lon1) * Math.PI/180;
const a = (Math.sin(dLat/2) * Math.sin(dLat/2)) + (Math.cos(lat1) * Math.cos(lat2) * Math.sin(dLon/2) * Math.sin(dLon/2));
const c = 2 * Math.asin(Math.sqrt(a));
var d = R * c; // in miles
d = Math.round(d * 10) / 10;
wk.setText("$:/Distance", "text", undefined, String(d));
var NS1 = "N";
var EW1 = "E";
var NS2 = "N";
var EW2 = "E";
lat1 = lat1*180/Math.PI;
lat2 = lat2*180/Math.PI;
if (lat1<0) {
NS1 = "S";
lat1=-lat1;
}
if (lat2<0) {
NS2 = "S";
lat2=-lat2;
}
if (lon1<0) {
EW1 = "W";
lon1=-lon1;
}
if (lon2<0) {
EW2 = "W";
lon2=-lon2;
}
var latlngstr1 = String(Math.floor(lat1))+"° "+String(Math.floor((lat1-Math.floor(lat1))*60))+"' "+NS1+", "+String(Math.floor(lon1))+"° "+String(Math.floor((lon1-Math.floor(lon1))*60))+"' "+EW1;
var latlngstr2 = String(Math.floor(lat2))+"° "+String(Math.floor((lat2-Math.floor(lat2))*60))+"' "+NS2+", "+String(Math.floor(lon2))+"° "+String(Math.floor((lon2-Math.floor(lon2))*60))+"' "+EW2;
wk.setText("$:/Origin", "latlng", undefined, latlngstr1);
wk.setText("$:/Destination", "latlng", undefined, latlngstr2);
} catch {
wk.setText("$:/Distance", "text", undefined, "0");
}
}
if (originLatLngString) {
var originSplit = originLatLngString.split(",");
var originMarker = L.marker(L.latLng(originSplit[0], originSplit[1]), {title: "Origin", pane: "topMarker", draggable:true, icon:lfltIcon("green", "pin", Map[map])}).addTo(Map[map]).on('dragend',function() {
var coord = String(originMarker.getLatLng()).split(',');
var lat = coord[0].split('(');
var lng = coord[1].split(')');
var coordString = String(Math.round(parseFloat(lat[1])*1000)/1000)+","+String(Math.round(parseFloat(lng[0])*1000)/1000);
wk.setText("$:/Origin", "text", undefined, coordString);
calculateDistance(wk);
});
}
if (destLatLngString) {
var destSplit = destLatLngString.split(",");
var destMarker = L.marker(L.latLng(destSplit[0], destSplit[1]), {title: "Destination", pane: "topMarker", draggable:true, icon:lfltIcon("red", "pin", Map[map])}).addTo(Map[map]).on('dragend',function() {
var coord = String(destMarker.getLatLng()).split(',');
var lat = coord[0].split('(');
var lng = coord[1].split(')');
var coordString = String(Math.round(parseFloat(lat[1])*1000)/1000)+","+String(Math.round(parseFloat(lng[0])*1000)/1000);
wk.setText("$:/Destination", "text", undefined, coordString);
calculateDistance(wk);
});
}
calculateDistance(wk);
// set map to objects bounds
try {
var boundsString = this.wiki.getTiddlerText("$:/MapTags");
if (boundsString) {
var boundSplit = boundsString.split(",");
bounds = L.latLngBounds(L.latLng(boundSplit[1], boundSplit[0]), L.latLng(boundSplit[3], boundSplit[2]));
}
if (!bounds) {
bounds = lfltDefBounds;
}
Map[map].fitBounds(bounds);
} catch(e) {}
// if lat long zoom settings, overwrite bounds
setting.lat = this.getAttribute("lat");
setting.lg = this.getAttribute("long");
setting.zoom = this.getAttribute("zoom");
// overwrite lat and long center
if (setting.lat && setting.lg) {
Map[map].setView([setting.lat, setting.lg]);
}
// overwrite zoom
if (setting.zoom) {
Map[map].setZoom(setting.zoom);
}
// if relevant, fly to new location
try {
var flyString = this.wiki.getTiddlerText("$:/FlyLocation").trim();
if (flyString) {
var flySplit = flyString.split(/[\#\|\s]+/);
if (flySplit.length>1){
var Shapes = flyString.split(/[\#\|]+/);
var ShapesList = [];
try {
for (var shape in Shapes){
var Coords = Shapes[shape].split(" ");
var Shape = [];
for (var nd in Coords) {
var location = Coords[nd].split(",");
Shape.push(location);
}
ShapesList.push(Shape);
}
var polygon = L.polygon(ShapesList);
var bounds = polygon.getBounds();
Map[map].flyToBounds(bounds);
}catch(e){}
} else {
var pt = flyString.split(",");
Map[map].flyTo(pt, 6);
}
}
this.wiki.deleteTiddler("$:/FlyLocation");
} catch(e) {}
};
// mapping a places json object (parent object, places json object, destination feature, destination cluster, popup for base objects, ands style parameters : color, marker, json style)
function mapPlaces(obj, plcs, feat, clust, pop, col, mark, style) {
// create feature for this mapping turn
var feature = L.featureGroup();
// case 1 : data in a tiddler
if (plcs.tiddler) {
// if no tiddler is given (single space) map current Tiddler
// !todo would be much better if so when no attribute at all...
if (plcs.tiddler == " ") {
mapTiddler(obj, obj.getVariable("currentTiddler"), feature, clust, pop, col, mark, style);
}
// else, map the given tiddler
else {
// get data fields in the tiddler, let's seek for geo data
mapTiddler(obj, plcs.tiddler, feature, clust, pop, col, mark, style);
}
}
// case 2 : data in multiple tiddlers
if (plcs.tiddlers) {
mapTiddlers(obj, plcs.tiddlers, feature, clust, pop, col, mark, style);
}
// case 3 : data in tiddlers following a filter
if (plcs.filter) {
mapFilter(obj, plcs.filter, feature, clust, pop, col, mark, style);
}
// case 4 : data are directly listed in places (point(s) - polygon - polyline - geojson)
// for each we will
// - use dedicated function to populate mapping turn layer
// - add layer to map
var linkto = plcs.title;
var objTitle = plcs.title;
if (plcs.title){
objTitle = plcs.title.split(" (")[0];
if (plcs.article) {
objTitle = plcs.article + objTitle;
}
if (objTitle.startsWith("$:/")){
objTitle = "";
linkto = "";
}
}
if (plcs.linkto) {
linkto = plcs.linkto;
objTitle = plcs.linkto;
}
if (plcs.point) {
// add the point to the cluster layer
mapPoint(plcs.point, clust, pop, col, mark, objTitle, linkto);
// add the cluster layer to map
feature.addLayer(clust);
// set bounds
}
if (plcs.points) {
// ?todo : create a cluster for those points if clusterType == "tiddler"
mapPoints(plcs.points, clust, pop, col, mark, objTitle, linkto);
feature.addLayer(clust);
}
if (plcs.polygon) {
var polygFeat = L.featureGroup();
mapPolyg(plcs.polygon, polygFeat, pop, col, style, objTitle, linkto);
polygFeat.addTo(feature);
}
if (plcs.polygons) {
var polygsFeat = L.featureGroup();
mapPolygs(plcs.polygons, polygsFeat, pop, col, style, objTitle, linkto);
polygsFeat.addTo(feature);
}
if (plcs.polyline) {
var polylFeat = L.featureGroup();
mapPolyl(plcs.polyline, polylFeat, pop, col, style, objTitle, linkto);
polylFeat.addTo(feature);
}
if (plcs.polylines) {
var polylsFeat = L.featureGroup();
mapPolyls(plcs.polylines, polylsFeat, pop, col, style, objTitle, linkto);
polylsFeat.addTo(feature);
}
if (plcs.geojson) {
// !todo : create a cluster for those points if clusterType == "tiddler"
var geojsonFeat = L.featureGroup();
mapGeoJson(plcs.geojson, geojsonFeat, clust, col, mark, style);
geojsonFeat.addTo(feat);
}
// add feature to map
feature.addTo(feat);
extBounds(feature);
function saveBounds() {
// console.log("saved bounds")
var bounds = feat.getBounds();
var centerLat = bounds.getCenter().lat;
var centerLng = bounds.getCenter().lng;
var west = String(Math.round(bounds.getWest()*100)/100);
var south = String(Math.round(bounds.getSouth()*100)/100);
var east = String(Math.round(bounds.getEast()*100)/100);
var north = String(Math.round(bounds.getNorth()*100)/100);
var originLng = String(Math.round((bounds.getWest()+centerLng)*100/2)/100);
var originLat = String(Math.round((bounds.getSouth()+centerLat)*100/2)/100);
var destLng = String(Math.round((bounds.getEast()+centerLng)*100/2)/100);
var destLat = String(Math.round((bounds.getNorth()+centerLat)*100/2)/100);
var boundsString = west+","+south+","+east+","+north+","+originLng+","+originLat+","+destLng+","+destLat;
obj.wiki.setText("$:/MapTags", "text", undefined, boundsString);
}
var saveBoundsTimer;
feat.on('zoomend', function() {
clearTimeout(saveBoundsTimer);
saveBoundsTimer = setTimeout(saveBounds, 1000);
});
feat.on('dragend', function() {
clearTimeout(saveBoundsTimer);
saveBoundsTimer = setTimeout(saveBounds, 1000);
});
}
// add a marker for a point
function mapPoint(coord, clust, pop, col, mark, objTitle="", linkto="") {
try {
var location = coord.split(",");
} catch (err) {displayError("point coord error", err);}
try {
var marker = L.marker(location, {
icon: lfltIcon(col, mark, map)
});
if (linkto) {
marker.bindTooltip(objTitle, {sticky: true});
marker.on('click', function() {
var story = new $tw.Story();
story.navigateTiddler(linkto);
});
}
if (pop) marker.bindPopup(pop);
if (clust.count) clust.count +=1;
else clust.count = 1;
clust.addLayer(marker);
} catch (err) {displayError("point marker error", err);}
}
// add a marker serie for a points list
function mapPoints(list, clust, pop, col, mark, objTitle="", linkto="") {
var Points = list.split(" ");
for (var pt in Points) {
mapPoint(Points[pt], clust, pop, col, mark, objTitle, linkto);
}
}
// add a polygon
function mapPolyg(list, feat, pop, col, st, objTitle="", linkto="") {
var Shapes = list.split("#");
var ShapesList = [];
try {
for (var shape in Shapes){
var Coords = Shapes[shape].split(" ");
var Shape = [];
for (var nd in Coords) {
var location = Coords[nd].split(",");
Shape.push(location);
}
ShapesList.push(Shape);
}
var polygon = L.polygon(ShapesList, {
color: setColor(col, map)
});
if (linkto) {
polygon.bindTooltip(objTitle, {sticky: true});
polygon.on('click', function() {
var story = new $tw.Story();
story.navigateTiddler(linkto);
});
}
if (st) polygon.setStyle(checkStyle(st, col));
if (pop) polygon.bindPopup(pop);
polygon.addTo(feat);
} catch (err) {
displayError("polygon", err);
}
}
// add a polygons collection
function mapPolygs(collec, feat, pop, col, st, objTitle="", linkto="") {
var Polys = collec.split("|");
for (var pg in Polys) {
mapPolyg(Polys[pg], feat, pop, col, st, objTitle, linkto);
}
}
// add a polyline
function mapPolyl(list, feat, pop, col, st, objTitle="", linkto="") {
var Coords = list.split(" ");
var Line = [];
try {
for (var nd in Coords) {
var location = Coords[nd].split(",");
Line.push(location);
}
} catch (err) {
displayError("polyline", err);
}
try {
var polyline = L.polyline(Line, {
color: setColor(col,map)
});
if (linkto) {
polyline.bindTooltip(objTitle, {sticky: true});
polyline.on('click', function() {
var story = new $tw.Story();
story.navigateTiddler(linkto);
});
}
if (st) polyline.setStyle(checkStyle(st, col));
if (pop) polyline.bindPopup(pop);
// add polyline class in order to make fill transparent
polyline.setStyle({
"className": "polyline"
}).addTo(feat);
} catch (err) {
displayError("polyline", err);
}
}
// add a polylines collection
function mapPolyls(collec, feat, pop, col, st, objTitle="", linkto="") {
var Lines = collec.split("|");
for (var ln in Lines) {
mapPolyl(Lines[ln], feat, pop, col, st, objTitle, linkto);
}
}
// add a geojson set
function mapGeoJson(geojson, feat, clust, col, mark, st) {
try {
var data = JSON.parse(geojson);
var geoJson = L.geoJSON(data, {
// adding style
style: function (feature) {
// get feature style only if style is not injected
// ?todo : only overwrite injected values?
if (st === undefined || st === null) {
st = {};
if(feature.properties.style !== undefined) st = feature.properties.style;
}
// get feature properties style if exists
if(feature.properties.color !== undefined) {
st.color = feature.properties.color;
st.fillColor = st.color;
}
// color parameter overwrite style color if exists
if (col !== undefined && col !== null) {
st.color = col;
st.fillColor = col;
}
// if no color is defined at the end, fallback
if (st.color === undefined) {
col = setColor(col, map);
st.color = col;
st.fillColor = col;
}
return st;
},
onEachFeature: function (feature, layer) {
layer.bindPopup(jsonPop(feature));
},
// adding points
pointToLayer: function(geoJsonPoint, latlng) {
// working to get color (from properties)
var cl;
if(geoJsonPoint.properties.color !== undefined) cl = geoJsonPoint.properties.color;
if(geoJsonPoint.properties.fillColor !== undefined) cl = geoJsonPoint.properties.fillColor;
if(col !== undefined && col !== null) cl = col;
// binding default icon
var jsonPoint = L.marker(latlng, {
icon: lfltIcon(cl, mark, map)
});
jsonPoint.bindPopup(jsonPop(geoJsonPoint));
if (clust.count) clust.count +=1;
else clust.count = 1;
clust.addLayer(jsonPoint);
}
});
// ?todo : should we add clust to feat or to geoJson? should we add clust even if it's already here?
feat.addLayer(clust);
feat.addLayer(geoJson);
} catch (error) {displayError("there was an error when displaying geoJson. error : ", error);}
}
// map a tiddler
function mapTiddler(obj, tid, feat, clust, pop, col, mark, style) {
if(iter.map.tid === undefined) iter.map.tid = 1;
else iter.map.tid +=1;
if(iter.map.tid < 4242) {
// get data fields in the tiddler, let's seek for geo data
var flds = obj.wiki.getTiddler(tid).fields,
feature = L.featureGroup(); // create the tiddler feature
//popup = ""; // create the popup text
// setting marker, color, style
// if no marker injected, trying to get from tiddler
if(mark === null || mark === undefined) {
if(flds.marker) mark = flds.marker;
}
// working style and color together
var cl, st = {};
// style
if(flds.style) st = JSON.parse(flds.style);
// overwrite with injected values
if (style !== undefined && style !== null) {
st = style;
/* ?todo : should we overwrite only injected?
for (var v in st) {
if(style.v !== undefined) st.v = style.v;
}
for (var v in style) {
}*/
}
// color
if (flds.color) cl = flds.color;
// overwrite with injected color style if exists
if (style !== undefined && style !== null) {
if (st.fillColor !== undefined) cl = st.fillColor;
}
// overwrite with injected color also in style
if (col !== undefined && col !== null) {
cl = col;
st.color = cl; st.fillColor = cl;
}
Colour["t" + tn] = cl;
// if clusterType is tiddler, creating a cluster group for tiddler
// also will have to deal with the filter / tiddler distinction
if (clusterType[map] == "tiddler") {
// ?todo : automate cluster creation?
fCluster["t" + tn] = L.markerClusterGroup({
name: "Cluster" + map + "Cluster" + tn,
polygonOptions: {"weight":"0.5"},
maxClusterRadius: clusterRadius[map],
/* for the record. may be a function
function() {return (clusterRadius - 50) / 9 * Map[map].getZoom() + 50 - (clusterRadius - 50) / 9 },*/
iconCreateFunction: createCluster
});
} else {
fCluster["t" + tn] = fCluster[map];
}
// case 1 : data stored in a json tiddler
if (flds.type == "application/json") {
// for now, assuming any json stored data is geoJson...
var data = obj.wiki.getTiddlerText(tid);
mapGeoJson(data, feature, fCluster["t" + tn], Colour["t" + tn], mark, st);
feat.addLayer(feature);
}
// case 2 if tiddler is not JSON data, display tiddler stored geodata as point(s), polygon, polyline...
else {
// create the popup for base objects
/*popup = "<h2><a href=\"#" + encodeURIComponent(flds.title) + "\">" + flds.title + "</a></h2>";
var content = "";
if (flds.tooltip) {
content += "<h3>" + flds.tooltip + "</h3>";
}
popup += content;*/
// map recursively (!!! danger !!!)
mapPlaces(obj,
flds,
feature,
fCluster["t" + tn],
null,
cl,
mark,
st
);
feature.addTo(feat);
}
/*
// check if anything was rendered before binding popup
if (wasRendered == 0) console.log("tw-leaflet-map-plugin > non geotiddler was listed and not rendered : " + flds.title);
// add the layer to the feature
feature.addLayer(subFeat);
feature.addTo(Map[map]); // layer.addTo(Map[map]);
} */
// get layer bounds for automatic zoom
extBounds(feature);
tn++;
}
// it tiddler rendered too many times for same map. Stoping and error launch
else $tw.utils.error("tiddler [[" + tid + "]] was rendered more than 4242 times in this map. Please double check circular dependencies...");
}
// map a tiddler collection
function mapTiddlers(obj, list, feat, clust, pop, col, mark, style) {
var Tids = list.split(" ");
for (var td in Tids) {
mapTiddler(obj, Tids[td], feat, clust, pop, col, mark, style);
}
}
// map tiddlers with a filter
function mapFilter(obj, filter, feat, clust, pop, col, mark, style) {
try {
iter.map.tid = 1;
var Tids = obj.wiki.filterTiddlers(filter);
//console.log(Tids);
for (var td in Tids) {
//console.log(td, Tids[td]);
mapTiddler(obj, Tids[td], feat, clust, pop, col, mark, style);
}
} catch (error) {
$tw.utils.error("sorry there was something wrong when trying to map your filter. error : " + error);
}
}
// icon url creator
function iconUrl(col, tid, m) {
var icone = escape($tw.wiki.renderTiddler("text/html", tid).replace("$primary$", setColor(col, m)).replace("</p>", "").replace("<p>", ""));
return ('data:image/svg+xml;charset=UTF-8,' + icone);
}
// create marker
// ?todo only if there are points to display;
function lfltIcon(col, tid, m) {
// checking if marker is defined. Fallback to default
if(tid === undefined || tid === null) tid = "$:/plugins/sycom/leaflet/images/marker.svg";
else tid = "$:/plugins/sycom/leaflet/images/" + tid + ".svg";
if($tw.wiki.getTiddler(tid) === undefined) tid = "$:/plugins/sycom/leaflet/images/marker.svg";
// !todo create shadow from icon by transform matrix?
var shad = tid.split(".svg")[0] + "shadow.svg",
shadowUrl = 'data:image/svg+xml;charset=UTF-8,' + escape($tw.wiki.getTiddlerText(shad));
// get dimensions in tiddler
var MarkDim = $tw.wiki.getTiddler(tid).fields.marker_dim.split(" ");
var ShadDim = $tw.wiki.getTiddler(shad).fields.marker_dim.split(" ");
var theIcon = L.icon({
iconUrl: iconUrl(col, tid, m),
iconRetinaUrl: iconUrl(col, tid, m),
iconSize: [MarkDim[0], MarkDim[1]],
iconAnchor: [MarkDim[2], MarkDim[3]],
popupAnchor: [0, -MarkDim[3]],
shadowUrl: shadowUrl,
shadowRetinaUrl: shadowUrl,
shadowSize: [ShadDim[0], ShadDim[1]],
shadowAnchor: [ShadDim[2], ShadDim[3]]
});
return theIcon;
}
// set color with fallback to map color or wiki...
function setColor(col, m) {
if(m === undefined) m = map;
if (col === undefined || col === null) col = Colour[m];
if (col === undefined || col === null) col = Colour.wiki;
return col;
}
// set style with fallback to map color or wiki...
function checkStyle(sty, col) {
if (col === undefined || col === null) {
if(sty.color === undefined) sty.color = setColor(col, map);
if(sty.fillColor === undefined) sty.fillColor = setColor(col, map);
}
else {
sty.color = col;
sty.fillColor = col;
}
return sty;
}
// coordinate error message
function displayError(objectType, error) {
$tw.utils.error("there was an error when mapping a " + objectType + " - error : " + error);
}
// adjust bounds to layer
function extBounds(feat) {
try {
if (bounds) {
bounds.extend(feat.getBounds());
} else {
if (feat.getBounds()._northEast) {
bounds = feat.getBounds();
}
}
} catch (error) {
$tw.utils.error("there was an error when trying to zoom on bounds. error : " + error);
}
}
// cluster icon creation
function createCluster(clust) {
// getting back map number
var m = this.name.split("Cluster")[1],
t = this.name.split("Cluster")[2],
zC = Map[m].getZoom(),
z0,cTot,cCol,cOpa;
// checking object density mean for the map
if (t === undefined) {
if (fCluster[m].z0 === undefined) fCluster[m].z0 = zC;
z0 = fCluster[m].z0;
if (fCluster[m].count === undefined) fCluster[m].count = 1;
cTot = fCluster[m].count;
cCol = setColor(Colour[m],m);
cOpa = 0.85
}
else {
if (fCluster["t" + t].z0 === undefined) fCluster["t" + t].z0 = zC;
z0 = fCluster["t" + t].z0;
if (fCluster["t" + t].count === undefined) fCluster["t" + t].count = 1;
cTot = fCluster["t" + t].count;
cCol = setColor(Colour["t" + t],m);
cOpa = 0.65
}
// cluster icon size will be based on item number and zoom
// !todo: use density to get a more "local" percentage before calculating size
var cC = clust.getChildCount(),
cS = 20 * Math.log(clusterRadius[m]) * (1 + Math.log(cTot)/Math.max(cTot * Math.pow(2,zC-z0),Math.log(cTot))) * (1 - 1 / ((Math.log(cTot) / cTot) * Math.pow(2,zC-z0) * cC + 1));
if (cS < 34) cS = 34;
var cF; // font size of cluster text
if (cC > 9999) cF = cS / 3;
else {if (cC > 999) cF = cS / 3.5;
else cF = cS / 2}
if (cF < 12) cF = 12;
// creating icon. Checking tiddler or whole clustering before
return new L.DivIcon({
html: '<div style="width:' + cS + 'px;height:' + cS + 'px;font-size:' + cF + 'px;background-color:' + cCol + ';border-color:' + cCol + ';opacity:'+cOpa+'"><div><span style="line-height:' + cS + 'px;opacity:'+(cOpa+0.12)+'">' + cC + "</span></div></div>",
className: "marker-cluster marker-cluster-" + cC,
iconSize: new L.Point(cS, cS)
});
}
// popup function for Json
function jsonPop(feat) {
// extracting data to create popup (all non-null data!)
var Prop = feat.properties,
jsontitle = "",
jsondesc = "",
jsonhtml = "";
// testing if properties title or name exists
if (Prop.name) jsontitle += Prop.name + " ";
if (Prop.title) jsontitle += Prop.title + " ";
if (Prop.description) jsondesc += Prop.description + "";
// populating other data
// if we got a title
if (jsontitle !== "") {
jsonhtml += "<h4>" + jsontitle + "</h4>";
// if we got a description let's give it
if (jsondesc !== "") jsonhtml += jsondesc;
else {
jsonhtml+= "<ul>";
for (var p in Prop) {
if (Prop[p] !== null && Prop[p] !== "" && p != "name" && p != "title") jsonhtml += "<li>" + p + " : " + Prop[p] + "</li>";
}
jsonhtml += "</ul>";
}
}
// if we have no title, giving one with first fields
else {
// in case we've got a description. Stop after title
if (jsondesc !== "") {
for (var pr in Prop) {
// if title is really to short (as an id), taking next field
if (jsontitle.length < 8) jsontitle += Prop[pr] + " ";
else break;
}
jsonhtml = "<h4>" + jsontitle + "</h4>" + jsonhtml;
}
else {
for (var po in Prop) {
// if title is really to short (as an id), taking next field
if (jsontitle.length < 4) jsontitle += Prop[po] + " ";
else {
if (Prop[po] !== null && Prop[po] !== "") jsonhtml += "<li>" + po + " : " + Prop[po] + "</li>";
}
}
jsonhtml = "<h4>" + jsontitle + "</h4><ul>" + jsonhtml + "</ul>";
}
}
return jsonhtml;
}
exports.leafmap = mapWidget;
})();
/*
MISC NOTES for later
JSON.parse(tiddler.fields.text);
var jsonData = this.wiki.getTiddlerAsJson(this.to),
*/
<$list filter="[all[current]has[point]] [all[current]has[points]] [all[current]has[polyline]] [all[current]has[polylines]] [all[current]has[polygon]] [all[current]has[polygons]] [all[current]has[places]] [all[current]has[geojson]]">
<$leafmap places='{"tiddler":" "}' height='240px'/>
</$list>
{
"tiddlers": {
"$:/plugins/tg/layout/combination": {
"created": "20180316161209354",
"text": "In case two or three of the following plugins:\n\n* Top menu ^^1^^ or Top-left menu ^^1^^\n* Top toolbar ^^1^^\n* Tiddlersbar ^^1^^\n\nare to be combined, some adjustments to the layout are necessary to prevent overlapping parts. The following gives the general procedure.\n\n# Click the ''Adjust layout'' button (<<icn $:/plugins/tg/layout/images/layout>>) in the top right bar or click [[Plugin tweaks|$:/plugins/tg/layout/tweaks]] and select the Theme tweaks tab\n## To create extra room on top, increase ''Story top position''\n# Select the Layout tab and increase ''Height topbar''\n# If required, adjust the 'Top' settings of<div>\n\n* 'Top menu' (tab Top menu, setting ''Top 'Top menu''')\n* 'Top-left menu' (tab Top-left menu, setting ''Top 'Top menu''' & setting ''Top 'Left menu''')\n* 'Toolbar' (tab Toolbar, setting ''Top 'Toolbar''')\n* 'Tiddlersbar (tab Tiddlersbar, setting ''Top 'Tiddlersbar''')\n</div>\n# Some tweaking of the above values\n# Adjust ''Sidebar top position'' in Theme tweaks tab until wiki title and tiddler title are level.\n\n\n\n^^''1''^^ Available at http://tongerner.tiddlyspot.com/\n\n<<<\n''Note:''<br>http://tongerner.tiddlyspot.com/ shows the combination of 'Top menu', 'Toolbar' and 'Tiddlersbar'.\n<<<\n\n",
"title": "$:/plugins/tg/layout/combination",
"tags": "",
"modified": "20200313135445072"
},
"$:/plugins/tg/layout/configuration-button": {
"created": "20171203165317769",
"text": "<$button class=\"tc-btn-invisible\" tooltip=\"Adjust layout\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/layout/tweaks\" height=\"800px\" width=\"720px\"/>\n{{$:/plugins/tg/layout/images/layout}}\n</$button>\n\n\n",
"title": "$:/plugins/tg/layout/configuration-button",
"tags": "$:/tags/TopRightBar",
"modified": "20200313135507564",
"list-before": "$:/core/ui/TopBar/menu",
"description": "Adjust layout",
"caption": "{{$:/plugins/tg/layout/icon}} adjust layout"
},
"$:/plugins/tg/layout/css-units": {
"text": "<br>\n\n* You can enter values in allowed CSS units, e.g. `%`, `px`, `em`, ...\n* You can enter colors:\n** by name, e.g. `red`, `blue`, ... see [[w3schools|https://www.w3schools.com/tags/ref_colornames.asp]]\n** as 6 (sometimes 3) digit Hex color code, e.g. `#FF0000` (or `#F00`)\n** with the color macro, e.g. `<<colour primary>>`.\n",
"title": "$:/plugins/tg/layout/css-units",
"modified": "20191216151510179",
"created": "20190722175502370"
},
"$:/plugins/tg/layout/icon": {
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\">\n <metadata id=\"metadata7\">image/svg+xml</metadata>\n <g>\n <title>Layer 1</title>\n <g id=\"layer1\">\n <path d=\"m48.98237,97.8691l-41.98313,-24.239l0,-48.47796l41.98313,-24.23897l41.98313,24.23897l0,48.47796l-41.98313,24.239z\" id=\"path4142\" stroke-miterlimit=\"4\" stroke-width=\"1.2218\" stroke=\"#a0a0ff\" fill=\"#a0a0ff\"/>\n <path id=\"svg_3\" d=\"m73.1813,28.26401l-15.55706,15.81597c0.61319,0.6247 0.61206,1.63724 0,2.25944c-0.61371,0.62398 -1.60823,0.62448 -2.22362,0l-6.66496,-6.77579c-0.61439,-0.62462 -0.61363,-1.63801 0,-2.26065c0.61329,-0.62358 1.60695,-0.62444 2.22244,0l0,0l15.55707,-15.81609c1.84112,-1.87179 4.8262,-1.87179 6.66732,0c1.84113,1.87178 1.84112,4.90654 -0.00001,6.77832l-0.00118,-0.0012zm-50.00484,46.31849l-2.22244,-2.2595l3.30621,-5.6205l3.36112,-1.1578l23.33557,-23.72413l2.22243,2.25941l-23.33556,23.72422l-1.13868,3.417l-5.52865,3.3613z\" fill-rule=\"evenodd\"/>\n </g>\n </g>\n</svg>",
"type": "image/svg+xml",
"title": "$:/plugins/tg/layout/icon",
"modifier": "TonGerner",
"modified": "20191216151535498",
"creator": "TonGerner",
"created": "20160109160239631"
},
"$:/plugins/tg/layout/info": {
"created": "20190902161718650",
"text": "\\define slidertg(label,tiddler)\n<$button popup=\"$:/state/$tiddler$\" class=\"tc-btn-invisible tgc-slider\"><$text text=\"$label$ »\"/></$button>\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=\"$:/state/$tiddler$\" animate=\"yes\">\n\n{{$tiddler$}}\n\n</$reveal>\n\\end\n\n* <<slidertg \"CSS units\" $:/plugins/tg/layout/css-units>>\n* <<slidertg \"Combine plugins\" $:/plugins/tg/layout/combination>>\n* <<slidertg \"Upgrading plugins\" $:/plugins/tg/layout/upgrade>>\n\n\n",
"title": "$:/plugins/tg/layout/info",
"tags": "$:/tags/plugin-tweaks",
"order": "1",
"modified": "20191230140536247",
"caption": "General info"
},
"$:/plugins/tg/layout/license": {
"text": "[[Layout tweaks plugin|http://tongerner.tiddlyspot.com/#Layout%20adjustment%20plugin]] © Ton Gerner — 2018-2020\n\nMIT License: https://opensource.org/licenses/MIT\n",
"title": "$:/plugins/tg/layout/license",
"tags": "",
"modified": "20191227193112628",
"created": "20180124162829244"
},
"$:/plugins/tg/layout/readme": {
"text": "''Note:''<br>This plugin contains 'general' settings for the layout and is additionally required for my following plugins: ^^1^^\n\n* Top menu\n* Top-left menu (top + left menu)\n* Toolbar (on top)\n* Tiddlersbar\n* ~TabStory (alternative tiddlersbar at top of story)\n* Uptoolbar (toolbar above title)\n* Tristate (tristate sidebar)\n\nThis plugin contains layout code common to the mentioned plugins and let you adjust:\n\n!! Theme tweaks\n* Sidebar layout\n* Story left position\n* Story top position\n* Story right\n* Story width\n* Tiddler width\n* Sidebar top position\n* Sidebar width\n\n!! Layout tweaks\n* Checkboxes\n** Display layout button (<<icn $:/plugins/tg/layout/images/layout>>)\n** Search above story\n** Toolbar to toggle editor toolbar + preview\n** Sort recent results alphabetical\n** Button to top of story river\n** Hide description Tools tab buttons\n** System tags tab\n** Recent dates bold\n** Sticky titles\n*** Add sticky editor toolbar (when titles are sticky)\n** Set tiddler toolbar above the tiddler title\n** Tagging in view mode\n** Field handling in view mode\n** Setting type in view mode\n\n* Other settings\n** Color and height of the top bar (as a boundary for top menu, toolbar, tiddlersbar, etc.)\n** Top padding of a tiddler\n** Color for displaying the 'active' state of some toggle buttons\n\nSettings for the layout can be found in ''~ControlPanel > Appearance > [[Plugin tweaks|$:/plugins/tg/layout/tweaks]]'', also available via the 'Adjust layout' button (<<icn $:/plugins/tg/layout/images/layout>>) in the Toprightbar.\n\n|borderless|k\n|^^^1^^ | |All these plugins contain a 'Settings' tiddler tagged with $:/tags/plugin-tweaks and will display - when installed - a tab under 'Plugin tweaks'.|\n\n<<<\n''Note:''<br>@@color:red;A sticky editor toolbar works ''only'' well in non-preview mode!.@@\n<<<",
"title": "$:/plugins/tg/layout/readme",
"modifier": "TonGerner",
"modified": "20200622175838948",
"creator": "TonGerner",
"created": "20150731184044439"
},
"$:/plugins/tg/layout/search": {
"created": "20181228194403881",
"text": "{{$:/AdvancedSearch}}",
"title": "$:/plugins/tg/layout/search",
"tags": "",
"modified": "20200115143633717"
},
"$:/plugins/tg/layout/settings": {
"created": "20150729190109349",
"text": "!!Layout tweaks\n\n|Layout tweaks |<|h\n|<$checkbox tiddler=\"$:/plugins/tg/layout/configuration-button\" tag=\"$:/tags/TopRightBar\"> 'Adjust layout' button</$checkbox>|<<icn $:/plugins/tg/layout/images/layout>>|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/search\" tag=\"$:/tags/AboveStory\"> 'Search above story river'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/toggle_toolbar\" tag=\"$:/tags/EditTemplate\"> Toolbar 'Toggle editortoolbar/preview'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/timeline-macro\" tag=\"$:/tags/Macro\"> 'Sort recent alphabetical'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/button2top/style\" tag=\"$:/tags/Stylesheet\"> 'Button to top of story river'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/tools/style\" tag=\"$:/tags/Stylesheet\"> 'Hide description Tools tab buttons'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/systemtags\" tag=\"$:/tags/MoreSideBar\"> 'System tags tab'</$checkbox>|<|\n|<$checkbox tiddler=\"$:/plugins/tg/layout/recent-dates-bold/style\" tag=\"$:/tags/Stylesheet\"> 'Recent dates bold'</$checkbox>|<|\n|{{$:/plugins/tg/layout/sticky-editor-toolbar}}|<|\n|{{$:/plugins/tg/layout/toolbar-up/ckeckbox}}|<|\n|||\n|||\n|View mode extensions |<|h\n|<$checkbox tiddler=\"$:/core/ui/EditTemplate/tags\" tag=\"$:/tags/ViewTemplate\"> Tagging in view mode</$checkbox>|If checked, reorder via<br><<tag $:/tags/ViewTemplate>>|\n|{{$:/plugins/tg/layout/field-handling-checkbox}}|~|\n|<$checkbox tiddler=\"$:/core/ui/EditTemplate/type\" tag=\"$:/tags/ViewTemplate\"> Setting type in view mode</$checkbox>|~|\n\n\n<table class=\"tablestyle\">\n@@.brown ''Top bar''@@\n<<tableRow \"Background color 'Top bar'\" \"$:/plugins/tg/layout/styles\" \"topbar-background-color\">>\n<<tableRow \"Height 'Top bar'\" \"$:/plugins/tg/layout/styles\" \"topbar-height\">>\n@@.brown ''Tiddler''@@\n<<tableRow \"Top padding\" \"$:/plugins/tg/layout/styles\" \"tiddler-padding-top\">>\n@@.brown ''Button color''@@\n<<tableRow \"Active button color\" \"$:/plugins/tg/layout/styles\" \"active-state-color\">>\n</table>\n\n<<<\n''Note:''\n\n* @@color:red;For a 'Top bar' to become visible, a ''color'' (and a ''height > 0px'') need to be entered!@@\n* The height of the Top bar is also the offset for sticky titles; the sticky editor toolbar gets an extra 40px offset\n** @@color:red;A sticky editor toolbar works ''only'' correct in non-preview mode!@@\n<<<\n\n<$button tooltip=\"Help\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/layout/settings-help\" height=\"800px\" width=\"720px\"/>Help</$button>",
"up": "yes",
"title": "$:/plugins/tg/layout/settings",
"tags": "$:/tags/plugin-tweaks",
"sticky": "yes",
"order": "3",
"modifier": "TonGerner",
"modified": "20200921182029331",
"creator": "TonGerner",
"caption": "Layout tweaks"
},
"$:/plugins/tg/layout/settings-help": {
"text": "|Layout tweaks |<|<|<|h\n|Item|Entry |Description |Default |h\n|'Adjust layout' button |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|'Adjust layout' button in Toprightbar| <input type=\"checkbox\" checked /> |\n|'Search above story river' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Advanced search above story river ^^''1''^^| <input type=\"checkbox\" /> |\n|Toolbar 'toggle editortoolbar/preview' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Toolbar - in edit mode - below tags| <input type=\"checkbox\" checked /> |\n|Sort recent results alphabetical |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Sort recent results each day in alphabetical order| <input type=\"checkbox\" checked /> |\n|'Button to top of story river' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Button to jump to top of story river| <input type=\"checkbox\" checked /> |\n|'Hide description Tools tab buttons' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Hide decriptions next to buttons under Tools tab| <input type=\"checkbox\" checked /> |\n|'System tags tab' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Add a System tags tab| <input type=\"checkbox\" checked /> |\n|'Recent dates bold' |<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Show dates in recent tab bold| <input type=\"checkbox\" checked /> |\n|Sticky titles|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Causes tiddler titles to \"stick\" to the top| <input type=\"checkbox\" /> |\n| Sticky editor toolbar|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|If titles are sticky, editor toolbar will be sticky as well when checked| <input type=\"checkbox\"/> |\n|Set tiddler toolbar above the tiddler title|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Creates more room for tiddler title ^^2^^| <input type=\"checkbox\" /> |\n|View mode extensions ^^''3''^^|<|<|<|h\n|Tagging in view mode|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Adds the tag picker in view mode| <input type=\"checkbox\" /> |\n|Field handling in view mode|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Adds adding /editing fields in view mode| <input type=\"checkbox\" /> |\n|Setting type in view mode|<input type=\"checkbox\" /> / <input type=\"checkbox\" checked />|Adds setting type in view mode| <input type=\"checkbox\" /> |\n\n|Top bar / tiddler / button color|<|<|<|h\n|Item |Entry |Description |Default |h\n|''Topbar'' |Background color 'Top bar'|Background color of the top bar<br>Transparent when left 'blank'!| `<<colour page-background>>` |\n|~|Height 'Top bar'|Height of the top bar| 40px |\n|''Tiddler'' |Top padding |Top padding of tiddler | 30px |\n|''Button color''|Active button color |Color indicating 'active' state of toggle button | `<<colour primary>>` |\n\n\n|borderless|k\n|^''@@font-size: 0.8em;1@@'' | |• In classic storyview: scroll up to reach search<br>• In zoomin view search always visible|\n|^''@@font-size: 0.8em;2@@'' ||Adds 'Toolbar - title' tab to Plugin tweaks with settings for layout of tiddler toolbar|\n|^''@@font-size: 0.8em;3@@'' ||You can reorder these entries by clicking <<tag $:/tags/ViewTemplate>> + drag & drop|\n\n\n\n\n\n",
"title": "$:/plugins/tg/layout/settings-help",
"tags": "",
"modifier": "TonGerner",
"modified": "20200622175651648",
"creator": "TonGerner",
"created": "20150801124528672"
},
"$:/plugins/tg/layout/sidebar-top": {
"text": "0px",
"title": "$:/plugins/tg/layout/sidebar-top",
"tags": "",
"modified": "20191216152841842",
"created": "20161213115930178"
},
"$:/plugins/tg/layout/styles": {
"text": "<pre>/* LAYOUT SETTINGS */\n\n/* VERTICAL OFFSET FOR TOP OF SIDEBAR */\nhtml .tc-sidebar-scrollable {\n top: {{$:/plugins/tg/layout/sidebar-top}};\n}\n\n* BACKGROUND COLOR TOPRIGHTBAR (with double chevron) */\n.tc-topbar {\n background-color: {{!!topbar-background-color}};\n}\n\n/* TOPBAR */\n.tgc-toolbar {\n display:block;\n position:fixed;\n left:0px;\n top:0px;\n width:100%;\n height: {{!!topbar-height}};\n background-color: {{!!topbar-background-color}};\n z-index: 600;\n}\n\n/* TOP PADDING TIDDLER */\nbody.tc-body .tc-tiddler-frame {\n padding-top: {{!!tiddler-padding-top}};\n}\n\n/* COLOR ACTIVE STATE TOGGLE BUTTON */\nbody.tc-body .tgc-active-indicator {\n color: {{!!active-state-color}};\n}\nbody.tc-body .tgc-active-indicator svg {\n fill: {{!!active-state-color}};\n}\n\nbody.tc-body .tgc-active-indicator:hover svg {\n fill: <<colour \"foreground\">>;\n}\n\n/* HIDE BUTTON2TOP WHEN NOT ACTIVE */\n.tgc-fixed-bottom {\n display: none;\n}\n\n/* TITLE - TOOLBAR SPACING */\nhtml .tgc-tiddler-title-space {\n line-height: {{!!title-toolbar-spacing}}; \n}\n\n/* SIZE OF TIDDLER BUTTONS */\nhtml .tc-tiddler-controls button svg {\n height: {{!!tiddler-button-size}};\n}\n\n/* SPACE BETWEEN TIDDLER BUTTONS */\nhtml .tc-tiddler-controls button {\n margin-left: {{!!tiddler-button-spacing}};\n}\n\n/* SETTINGS TABLE */\n/* WIDTH SETTINGS TABLE */\ninput[type='text'].settings {\n width: 150px;\n}\ntable.tablestyle {\n font-size: 0.9em;\n border-width: 0px;\n border-style: solid;\n padding: 2px;\n border-color: #DDD;\n border-collapse: collapse;\n}\ntable.tablestyle th {\n background-color: #F0F0F0;\n border-color: #DDD;\n text-align: left;\n vertical-align: top;\n border-style: solid;\n border-width: 1px;\n padding: 5px;\n}\ntable.tablestyle tr {\n background-color: #F0F0F0;\n padding: 0px;\n}\ntable.tablestyle td {\n border-color: #DDD;\n border-style: solid;\n border-width: 1px;\n padding:2px;\n}\n/* COLOR HEADINGS TABLE */\n.brown {\n color: #884411;\n font-weight: bold;\n}\n/* BORDERLESS TABLES */\n.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody {\n border:0 !important;\n margin:0 !important;\n padding:0 !important;\n}\n</pre>",
"topbar-height": "40px",
"topbar-background-color": "<<colour page-background>>",
"title-toolbar-spacing": "1.3em",
"title": "$:/plugins/tg/layout/styles",
"tiddler-padding-top": "30px",
"tiddler-button-spacing": "0px",
"tiddler-button-size": "0.6em",
"tags": "$:/tags/Stylesheet",
"story-river-top": "0px",
"sidebar-top": "0px",
"modifier": "TonGerner",
"modified": "20200314160330594",
"list-after": "$:/themes/tiddlywiki/vanilla/base",
"creator": "TonGerner",
"created": "20161212103011213",
"active-state-color": "<<colour primary>>"
},
"$:/plugins/tg/layout/themetweaks-help": {
"text": "|Item |Entry |Description |Default |h\n|Theme tweaks |^Sidebar layout |^Choice between Fluid story, fixed sidebar and Fixed story, fluid sidebar|Fluid story, fixed sidebar ^^1^^|\n|~|^Story left position |^How far the left margin of the story river (tiddler area) is from the left of the page| 0px|\n|~|^Story top position |^How far the top margin of the story river is from the top of the page| 0px ^^2^^|\n|~|^Story right |^How far the left margin of the sidebar is from the left of the page| 770px|\n|~|^Story width |^The overall width of the story river| 770px|\n|~|^Tiddler width |^Within the story river| 686px|\n|~|^Sidebar top position |^Start of the sidebar<br>(from the top)| 0px ^^2^^|\n|~|^Sidebar width |^The width of the sidebar in fluid-fixed layout| 350px|\n\n|borderless|k\n|^''@@font-size: 0.8em;1@@'' ||''Fluid story, fixed sidebar interferes with Tristate plugin'' => select Fixed story, fluid sidebar for Tristate plugin |\n|^''@@font-size: 0.8em;2@@'' | |Default values; ''need to be adjusted (increased) in case of adding a top menu, toolbar, tiddlersbar, ... to the wiki!''|",
"title": "$:/plugins/tg/layout/themetweaks-help",
"tags": "",
"modified": "20191227170019117",
"created": "20161212130221042"
},
"$:/plugins/tg/layout/toggle_toolbar": {
"created": "20190221194645657",
"text": "Toggle editor toolbar <$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"></$checkbox> Toggle preview <$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/showeditpreview\" setTo=\"no\" tooltip=\"Hide preview\" class=\"tc-btn-invisible\">{{$:/core/images/preview-open}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/showeditpreview\" setTo=\"yes\" tooltip=\"Show preview\" class=\"tc-btn-invisible\">{{$:/core/images/preview-closed}}</$button>\n</$reveal>\n Scrollable preview <$checkbox tiddler=\"$:/plugins/tg/layout/style_scroll_preview\" tag=\"$:/tags/Stylesheet\"></$checkbox> Toggle sidebar {{$:/core/ui/TopBar/menu}}\n\n",
"title": "$:/plugins/tg/layout/toggle_toolbar",
"tags": "$:/tags/EditTemplate",
"modifier": "TonGerner",
"modified": "20191216153840057",
"list-after": "$:/core/ui/EditTemplate/tags",
"creator": "TonGerner"
},
"$:/plugins/tg/layout/topbar": {
"text": "<div class=\"tgc-toolbar tc-adjust-top-of-scroll\"></div>\n",
"title": "$:/plugins/tg/layout/topbar",
"tags": "$:/tags/PageTemplate",
"modifier": "TonGerner",
"modified": "20191216153308624",
"creator": "TonGerner",
"created": "20150731184520854"
},
"$:/plugins/tg/layout/tweaks": {
"created": "20150801100456266",
"text": "The general layout adjustments can be found under the 'Themes tweak' and 'Layout tweaks' tabs. Dependent on installed plugins other tabs are available ('Top menu', 'Top-left menu', 'Top toolbar', 'Tiddlersbar, '~TabStory', 'Uptoolbar', 'Tristate').\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/plugin-tweaks]nsort[order]]\" \"$:/plugins/tg/layout/settings\" \"\" \"tc-vertical\">>",
"title": "$:/plugins/tg/layout/tweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"status": "yes",
"modifier": "TonGerner",
"modified": "20200314172835412",
"creator": "TonGerner",
"caption": "Plugin tweaks",
"up": "no"
},
"$:/plugins/tg/layout/upgrade": {
"text": "Recommended before upgrading one of the following plugins:\n\n* Layout adjustment\n* Top menu\n* Top toolbar\n* Tiddlersbar\n\n<hr>\n\n\n# Note down all adjustments made in the Settings section of the plugin\n# Delete the following overridden shadow tiddlers of the plugin:\n#* Settings\n#* Styles\n# Upgrade the plugin\n# Reapply the settings",
"title": "$:/plugins/tg/layout/upgrade",
"tags": "",
"modified": "20191216153509327",
"created": "20190816185216079"
},
"$:/plugins/tg/layout/style_scroll_preview": {
"text": ".tc-edit-texteditor, .tc-tiddler-preview-preview {\n max-height:80vh;\n overflow-y:auto;\n}",
"type": "text/css",
"title": "$:/plugins/tg/layout/style_scroll_preview",
"tags": "",
"modified": "20200312125033755",
"created": "20191222101746570"
},
"$:/plugins/tg/layout/table-macros": {
"created": "20150801122014492",
"text": "\\define inputBox() <$edit-text tiddler=\"$(reftarget)$\" field=\"$(reffield)$\" class=\"$(refclass)$\"/>\n\n\\define tableRow(header,target,field,class)\n<$set name=\"reftarget\" value=\"$target$\">\n<$set name=\"reffield\" value=\"$field$\">\n<$set name=\"refclass\" value=\"settings\">\n<tr><th>$header$ </th><td><<inputBox>></td></tr>\n</$set>\n</$set>\n</$set>\n\\end\n",
"title": "$:/plugins/tg/layout/table-macros",
"tags": "$:/tags/Macro",
"modifier": "TonGerner",
"modified": "20200110204107672",
"creator": "TonGerner"
},
"$:/plugins/tg/layout/themetweaks": {
"text": "!! Theme tweaks\n\n@@.brown ''Theme tweaks''@@<br>\nexcerpt from 'Theme Tweaks' tab\n\n|tablestyle|k\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\">Sidebar layout</$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\">Fixed story, Fluid sidebar</option><option value=\"fluid-fixed\">Fluid story, Fixed sidebar</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\">Story left position</$link>|^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\">Story top position</$link>|^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\">Story right</$link>|^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\">Story width</$link>|^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\">Tiddler width</$link>|^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/plugins/tg/layout/sidebar-top\">Sidebar top position</$link> |^<$edit-text tiddler=\"$:/plugins/tg/layout/sidebar-top\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\">Sidebar width</$link> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n<$button tooltip=\"Help\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/layout/themetweaks-help\" height=\"500px\" width=\"700px\"/>Help</$button>\n",
"title": "$:/plugins/tg/layout/themetweaks",
"tags": "$:/tags/plugin-tweaks",
"order": "2",
"modified": "20191231182438547",
"created": "20161212090056554",
"caption": "Theme tweaks"
},
"$:/plugins/tg/layout/timeline-macro": {
"text": "\\define timeline-title()\n<!-- This macro overwrites the core macro; \n the recent results will be sorted \n each day in alpabetical order.\n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$sort[]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}>\n<<timeline-title>>\n</$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n",
"title": "$:/plugins/tg/layout/timeline-macro",
"tags": "$:/tags/Macro",
"modified": "20200310171616511",
"created": "20160130112819603"
},
"$:/plugins/tg/layout/button2top": {
"text": "<div class=\"tgc-fixed-bottom\">\n<$button class=\"tc-btn-invisible tgc-button-color\">\n▲\n<$list variable='Target' filter='[list[$:/StoryList]first[]]'>\n<$action-navigate $to=<<Target>>/>\n</$list>\n</$button>\n</div>\n\n",
"title": "$:/plugins/tg/layout/button2top",
"tags": "$:/tags/PageTemplate",
"modifier": "TonGerner",
"modified": "20200114111444798",
"list-after": "$:/plugins/tg/layout/styles",
"creator": "TonGerner",
"created": "20180304212804838"
},
"$:/plugins/tg/layout/button2top/style": {
"text": "<pre>/* BUTTON TO TOP */\n.tgc-fixed-bottom {\n display: block;\n position: fixed;\n bottom: 10px;\n right: 10px;\n padding: 8px;\n background-color: <<colour page-background>>;\n}\n.tgc-button-color {\n color: {{$:/plugins/tg/layout/styles!!active-state-color}};\n}\n.tgc-button-color:hover {\n color: <<colour sidebar-controls-foreground-hover>>;\n}\n</pre>",
"title": "$:/plugins/tg/layout/button2top/style",
"tags": "$:/tags/Stylesheet",
"modified": "20200310171626305",
"created": "20200113122827159"
},
"$:/plugins/tg/layout/recent-dates-bold/style": {
"created": "20200115151655355",
"text": "/* RECENT TAB DATE BOLD */\n.tc-sidebar-lists .tc-timeline {\n font-weight: bold;\n}\n",
"title": "$:/plugins/tg/layout/recent-dates-bold/style",
"tags": "$:/tags/Stylesheet",
"modified": "20200310172022137",
"type": "text/css"
},
"$:/plugins/tg/layout/systemtags": {
"created": "20170323185212447",
"text": "<$list filter=\"[all[shadows+tiddlers]tags[]is[system]sort[title]]\">\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/> <small class=\"tc-menu-list-count\"><$count filter=\"[all[current]tagging[]]\"/></small>\n\n</$list>\n",
"title": "$:/plugins/tg/layout/systemtags",
"tags": "$:/tags/MoreSideBar",
"modifier": "TonGerner",
"modified": "20200310172011553",
"list-after": "$:/core/ui/MoreSideBar/Tags",
"creator": "TonGerner",
"caption": "System tags"
},
"$:/plugins/tg/layout/tools/style": {
"created": "20200115141940681",
"text": "/* REMOVE DESCRIPTIONS OF BUTTONS IN TOOLS TAB */\n.tc-sidebar-lists .tc-muted {\n display:none;\n}\n",
"type": "text/css",
"title": "$:/plugins/tg/layout/tools/style",
"tags": "$:/tags/Stylesheet",
"modified": "20200310172113537"
},
"$:/plugins/tg/layout/sticky": {
"text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n position: -webkit-sticky;\n position: -moz-sticky;\n position: -o-sticky;\n position: -ms-sticky;\n position: sticky;\n top: ``{{$:/plugins/tg/layout/styles!!topbar-height}}``;\n background: ``<<colour tiddler-background>>``;\n z-index: 500;\n}\n.tc-editor-toolbar {\n position: -webkit-sticky;\n position: -moz-sticky;\n position: -o-sticky;\n position: -ms-sticky;\n position: sticky;\n top: ``calc({{$:/plugins/tg/layout/styles!!topbar-height}} + 40px)``;\n background: ``<<colour tiddler-background>>``;\n z-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n",
"type": "text/vnd.tiddlywiki",
"title": "$:/plugins/tg/layout/sticky",
"tags": "",
"modified": "20200312155210620",
"created": "20170330150510113"
},
"$:/plugins/tg/layout/macros/doc": {
"created": "20200313125315847",
"text": "\\define icn(icon)\n<button class=\"tc-btn-invisible\"> {{$icon$}}</button>\n\\end\n",
"title": "$:/plugins/tg/layout/macros/doc",
"tags": "$:/tags/Macro",
"modified": "20200313130334028"
},
"$:/plugins/tg/layout/images/layout": {
"text": "<svg class=\"tgc-layout-button tc-image-button\" height=\"22pt\" width=\"22pt\" viewBox=\"0 0 22 22\">\n<path d=\"m19.84313,0.21698l-17.65497,0c-1.08334,0 -1.96191,0.9235 -1.96191,2.0571l0,17.48416c0,1.1359 0.87857,2.0571 1.96191,2.0571l17.65497,0c1.08334,0 1.96191,-0.92119 1.96191,-2.0571l0,-17.48416c0,-1.1336 -0.87857,-2.0571 -1.96191,-2.0571zm-17.65497,7.80127l5.71838,0l0,11.73768l-5.71838,0l0,-11.73768zm7.67809,11.73768l0,-11.73768l9.97689,0l0,-2.0571l-17.65497,0l0,-3.68707l17.65497,0l0.0022,17.48416l-9.97909,0l0,-0.00231z\"/>\n</svg>",
"title": "$:/plugins/tg/layout/images/layout",
"tags": "",
"modified": "20200313130134669",
"created": "20171203171851124"
},
"$:/plugins/tg/layout/settings-toolbar-up": {
"text": "!!Tiddler toolbar settings\n<table class=\"tablestyle\">\n<<tableRow \"Spacing title ↔ toolbar\" \"$:/plugins/tg/layout/styles\" \"title-toolbar-spacing\">>\n<<tableRow \"Size of tiddler buttons\" \"$:/plugins/tg/layout/styles\" \"tiddler-button-size\">>\n<<tableRow \"Button spacing 'Tiddler toolbar'\" \"$:/plugins/tg/layout/styles\" \"tiddler-button-spacing\">>\n</table>\n<$button tooltip=\"Help\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/layout/settings-toolbar-up-help\" height=\"200px\" width=\"720px\"/>Help</$button>",
"title": "$:/plugins/tg/layout/settings-toolbar-up",
"order": "9",
"modified": "20200622175804571",
"created": "20200314154628735",
"caption": "Toolbar - title"
},
"$:/plugins/tg/layout/settings-toolbar-up-help": {
"text": "|Entry |Description |Default |h\n|Spacing title ↔ toolbar |Space between toolbar and title of tiddler | 1.3em |\n|Size of tiddler buttons |Size of tiddler buttons | 0.6em |\n|Button spacing 'Tiddler toolbar' |Spacing between buttons of tiddler toolbar | 0px |",
"title": "$:/plugins/tg/layout/settings-toolbar-up-help",
"tags": "",
"modified": "20200314172011820",
"created": "20200314154755381"
},
"$:/plugins/tg/layout/toolbar-up": {
"created": "20200314153228277",
"text": "\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<div class=\"tgc-tiddler-title-space\"> </div>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}/>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>",
"title": "$:/plugins/tg/layout/toolbar-up",
"modified": "20200316201335735"
},
"$:/plugins/tg/layout/toolbar-up/ckeckbox": {
"text": "<$checkbox\nfield=\"up\"\nchecked=\"yes\"\nunchecked=\"no\"\ndefault=\"no\"\ncheckactions=\"\"\"<$action-setfield $tiddler=\"$:/plugins/tg/layout/toolbar-up\" title=\"$:/core/ui/ViewTemplate/title\"/>\n<$action-setfield $tiddler=\"$:/plugins/tg/layout/settings-toolbar-up\" tags=\"$:/tags/plugin-tweaks\"/>\n<$action-setfield $tiddler=\"$:/core/ui/ViewTemplate/title\" tags=\"$:/tags/ViewTemplate\"/>\"\"\"\nuncheckactions=\"\"\"\n<$action-deletetiddler $tiddler=\"$:/core/ui/ViewTemplate/title\"/>\n<$action-deletefield $tiddler=\"$:/plugins/tg/layout/settings-toolbar-up\" tags/>\"\"\"\n>\n Set tiddler toolbar above the tiddler title\n</$checkbox>\n",
"up": "no",
"title": "$:/plugins/tg/layout/toolbar-up/ckeckbox",
"tags": "",
"modified": "20200622175804542",
"created": "20200316192402200"
},
"$:/plugins/tg/layout/field-handling": {
"created": "20200619121059091",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define new-field()\n<$vars name={{$:/temp/newfieldname}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span>\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=\"$:/temp/newfieldname\">\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n",
"title": "$:/plugins/tg/layout/field-handling",
"tags": "",
"modified": "20200701200950835"
},
"$:/plugins/tg/layout/field-handling-checkbox": {
"text": "<$checkbox tiddler=\"$:/plugins/tg/layout/field-handling\" tag=\"$:/tags/ViewTemplate\"> Field handling in view mode</$checkbox>",
"title": "$:/plugins/tg/layout/field-handling-checkbox",
"tags": "",
"modified": "20200619121610153",
"created": "20200619121347163"
},
"$:/plugins/tg/layout/sticky-editor-toolbar": {
"created": "20200614162810798",
"text": "<$checkbox tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"\ncheckactions=\"\"\" \n<$action-setfield $tiddler=\"$:/plugins/tg/layout/sticky\" title=\"$:/themes/tiddlywiki/vanilla/sticky\">\n\"\"\"\nuncheckactions=\"\"\"\n<$action-deletetiddler $tiddler=\"$:/themes/tiddlywiki/vanilla/sticky\"/>\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" text=\"no\">\n\"\"\"> Sticky titles + sticky editor toolbar</$checkbox>",
"title": "$:/plugins/tg/layout/sticky-editor-toolbar",
"tags": "",
"modified": "20200921181944980"
},
"$:/plugins/tg/layout/fields": {
"text": "{{$:/core/ui/EditTemplate/fields}}",
"title": "$:/plugins/tg/layout/fields",
"tags": "",
"modified": "20200916192221213",
"list-after": "$:/core/ui/ViewTemplate/body",
"created": "20200916190155341"
}
}
}
/* RECENT TAB DATE BOLD */
.tc-sidebar-lists .tc-timeline {
font-weight: bold;
}
\define timeline-title()
<!-- This macro overwrites the core macro;
the recent results will be sorted
each day in alpabetical order.
-->
<span class="lightweight"><$view field="article"/></span><$view field="title"/>
\end
\define timeline(limit:"100",format:"DDth MMM YYYY",subfilter:"",dateField:"modified")
<div class="tc-timeline">
<$list filter="[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]">
<div class="tc-menu-list-item">
<$view field="$dateField$" format="date" template="$format$"/>
<$list filter="[sameday:$dateField${!!$dateField$}!is[system]$subfilter$sort[]]">
<div class="tc-menu-list-subitem">
<$link to={{!!title}}>
<<timeline-title>>
</$link>
</div>
</$list>
</div>
</$list>
</div>
\end
Toggle editor toolbar <$checkbox tiddler="$:/config/TextEditor/EnableToolbar" field="text" checked="yes" unchecked="no" default="yes"></$checkbox> Toggle preview <$reveal state="$:/state/showeditpreview" type="nomatch" text="no">
<$button set="$:/state/showeditpreview" setTo="no" tooltip="Hide preview" class="tc-btn-invisible">{{$:/core/images/preview-open}}</$button>
</$reveal>
<$reveal state="$:/state/showeditpreview" type="match" text="no">
<$button set="$:/state/showeditpreview" setTo="yes" tooltip="Show preview" class="tc-btn-invisible">{{$:/core/images/preview-closed}}</$button>
</$reveal>
Scrollable preview <$checkbox tiddler="$:/plugins/tg/layout/style_scroll_preview" tag="$:/tags/Stylesheet"></$checkbox> Toggle sidebar {{$:/core/ui/TopBar/menu}}
{
"tiddlers": {
"$:/plugins/tg/tiddlersbar/button": {
"created": "20170325114731405",
"text": "<$fieldmangler tiddler=\"$:/plugins/tg/tiddlersbar/styles\">\n<$list filter=\"[[$:/plugins/tg/tiddlersbar/styles]tag[$:/tags/Stylesheet]]\"><$button message=\"tm-remove-tag\" tooltip=\"Hide Tiddlersbar\" param=\"$:/tags/Stylesheet\" class=<<tv-config-toolbar-class>>>\n<span class=\"tgc-active-indicator\">\n{{$:/plugins/tg/tiddlersbar/image-tiddlersbar-on}}\n</span>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tgc-active-indicator\">\n<$text text=\"tiddlersbar\"/>\n</span>\n</$list>\n</$button>\n</$list>\n<$list filter=\"[[$:/plugins/tg/tiddlersbar/styles]!tag[$:/tags/Stylesheet]]\">\n<$button message=\"tm-add-tag\" tooltip=\"Show tiddlersbar\" param=\"$:/tags/Stylesheet\" class=<<tv-config-toolbar-class>>>{{$:/plugins/tg/tiddlersbar/image-tiddlersbar-off}}\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<$text text=\"tiddlersbar\"/>\n</$list>\n</$button>\n</$list>\n</$fieldmangler>\n",
"title": "$:/plugins/tg/tiddlersbar/button",
"tags": "$:/tags/PageControls",
"modifier": "TonGerner",
"modified": "20200323103546936",
"description": "Toggle tiddlersbar on/off",
"creator": "TonGerner",
"caption": "{{$:/plugins/tg/tiddlersbar/image-tiddlersbar-on}} tiddlersbar"
},
"$:/plugins/tg/tiddlersbar/icon": {
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\">\n <path fill=\"#a0a0ff\" stroke=\"#a0a0ff\" stroke-width=\"1.2218\" stroke-miterlimit=\"4\" d=\"m48.98237,97.86909l-41.98313,-24.239l0,-48.47796l41.98313,-24.23897l41.98313,24.23897l0,48.47796l-41.98313,24.239z\" id=\"path4142\"/>\n <rect fill=\"#000000\" stroke=\"#000000\" stroke-width=\"8.78819\" stroke-miterlimit=\"4\" stroke-opacity=\"0\" y=\"25.08274\" x=\"8.68744\" height=\"9.10985\" width=\"16.25652\" id=\"rect4807\"/>\n <rect fill=\"#000000\" stroke=\"#000000\" stroke-width=\"8.78819\" stroke-miterlimit=\"4\" stroke-opacity=\"0\" id=\"rect4809\" width=\"16.25652\" height=\"9.10985\" x=\"54.08981\" y=\"25.08274\"/>\n <rect fill=\"#000000\" stroke=\"#000000\" stroke-width=\"8.78819\" stroke-miterlimit=\"4\" stroke-opacity=\"0\" y=\"25.08274\" x=\"31.38863\" height=\"9.10985\" width=\"16.25652\" id=\"rect4820\"/>\n</svg>",
"type": "image/svg+xml",
"title": "$:/plugins/tg/tiddlersbar/icon",
"tags": "",
"modified": "20191228200121464",
"created": "20170325114817530"
},
"$:/plugins/tg/tiddlersbar/image-tiddlersbar-off": {
"text": "<svg class=\"tgc-image-tiddlersbar-off tc-image-button\" viewBox=\"0 0 22 22\" width=\"22pt\" height=\"22pt\"><path d=\"m7.3572,12.30506c-0.13915,-0.39832 -0.23057,-0.82001 -0.23057,-1.26429c0,-2.13671 1.74588,-3.87591 3.889,-3.87591c0.44658,0 0.8689,0.09111 1.26856,0.2298l1.84701,-1.84079c-1.05983,-0.44185 -2.12289,-0.73293 -3.11557,-0.73293c-6.10492,0 -10.92187,6.21983 -10.92187,6.21983s1.75316,2.2504 4.47392,4.04523l2.78953,-2.78094zm9.7407,-5.14664l-2.47239,2.46407c0.17556,0.44024 0.27911,0.91757 0.27911,1.4191c0,2.1351 -1.74588,3.87591 -3.889,3.87591c-0.50321,0 -0.98135,-0.10321 -1.42389,-0.27818l-1.99749,1.99157c1.07358,0.38622 2.22078,0.63134 3.42138,0.63134c4.6689,0 10.92188,-6.22064 10.92188,-6.22064s-2.13664,-2.11816 -4.8396,-3.88316zm1.63747,-5.05392l-16.73636,16.68002l1.14477,1.14173l16.73555,-16.68083l-1.14396,-1.14092z\"/></svg>",
"title": "$:/plugins/tg/tiddlersbar/image-tiddlersbar-off",
"tags": "",
"modifier": "TonGerner",
"modified": "20191228200145294",
"creator": "TonGerner",
"created": "20170325114839090"
},
"$:/plugins/tg/tiddlersbar/image-tiddlersbar-on": {
"text": "<svg class=\"tgc-image-tiddlersbar-on tc-image-button\" viewBox=\"0 0 22 22\" width=\"22pt\" height=\"22pt\">\n<path d=\"m10.98438,4.786c-6.10492,0 -10.92187,6.2141 -10.92187,6.2141s4.81695,6.2149 10.92187,6.2149c4.6689,0 10.92188,-6.2149 10.92188,-6.2149s-6.25298,-6.2141 -10.92188,-6.2141zm0,10.08643c-2.14311,0 -3.889,-1.73759 -3.889,-3.87233s1.74588,-3.87233 3.889,-3.87233s3.889,1.7384 3.889,3.87233s-1.74588,3.87233 -3.889,3.87233zm0,-6.13273c-1.25318,0 -2.27013,1.01178 -2.27013,2.2604c0,1.24862 1.01614,2.2604 2.27013,2.2604c1.25399,0 2.27013,-1.01179 2.27013,-2.2604c0,-1.24781 -1.01614,-2.2604 -2.27013,-2.2604z\"/>\n</svg>",
"title": "$:/plugins/tg/tiddlersbar/image-tiddlersbar-on",
"tags": "",
"modifier": "TonGerner",
"modified": "20191228200159990",
"creator": "TonGerner",
"created": "20170325114911997"
},
"$:/plugins/tg/tiddlersbar/license": {
"text": "!!! Buggy j's ~StoryTopTabs plugin\n\nMIT License\n\nCopyright © Jeffrey Wikinson aka Buggyj — 2015\n\n<hr>\n\n[[Tiddlersbar plugin|http://tongerner.tiddlyspot.com/#Tiddlersbar%20plugin]] © Ton Gerner — 2018-2020\n\nMIT License: https://opensource.org/licenses/MIT\n",
"title": "$:/plugins/tg/tiddlersbar/license",
"tags": "",
"modified": "20191228200225470",
"created": "20180124182128080"
},
"$:/plugins/tg/tiddlersbar/readme": {
"text": "This plugin - based on Buggy j's [[StoryTopTabs plugin|http://bjtools.tiddlyspot.com/#StoryTopTabs]] - creates a 'Tiddlersbar' of open tiddlers (as tabs) on top of the screen. It works best in Zoomin view.<br>\nThe Tiddlersbar can be toggled on/off (<<icn $:/plugins/tg/tiddlersbar/image-tiddlersbar-on>>/<<icn $:/plugins/tg/tiddlersbar/image-tiddlersbar-off>>) with a button in the Page toolbar and/or the View toolbar.\n\n<<<\n''Note:''<br>''This plugin needs my $:/plugins/tg/layout plugin for general layout settings (available at http://tongerner.tiddlyspot.com/).''\n<<<\n\nSettings for the layout can be found in ''~ControlPanel > Appearance > [[Plugin tweaks|$:/plugins/tg/layout/tweaks]]''.\n",
"title": "$:/plugins/tg/tiddlersbar/readme",
"tags": "",
"modifier": "TonGerner",
"modified": "20200315132513150",
"creator": "TonGerner",
"created": "20170325115014248"
},
"$:/plugins/tg/tiddlersbar/settings": {
"created": "20170325115624509",
"text": "!!Tiddlersbar settings\n@@.brown ''Toggle tiddlersbar in ~PageControls''@@<br>\n<$checkbox tiddler=\"$:/plugins/tg/tiddlersbar/button\" tag=\"$:/tags/PageControls\"> Button active</$checkbox>\n\n@@.brown ''Toggle tiddlersbar in ~ViewToolbar ''@@<br>\n<$checkbox tiddler=\"$:/plugins/tg/tiddlersbar/button\" tag=\"$:/tags/ViewToolbar\"> Button active</$checkbox>\n\n<table class=\"tablestyle\">\n<<tableRow \"Left 'Tiddlersbar'\" \"$:/plugins/tg/tiddlersbar/styles\" \"left-tiddlersbar\">>\n<<tableRow \"Top 'Tiddlersbar'\" \"$:/plugins/tg/tiddlersbar/styles\" \"top-tiddlersbar\">>\n<<tableRow \"Font size 'Tiddlersbar'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-font-size\">>\n<<tableRow \"Background color 'Tiddler tabs'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-color\">>\n<<tableRow \"Text color 'Tiddler tabs'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-text-color\">>\n<<tableRow \"Background color 'Tiddler tab selected'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-selected-color\">>\n<<tableRow \"Text color 'Tiddler tab selected'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-selected-text-color\">>\n<<tableRow \"Rounded corners 'tiddler tabs'\" \"$:/plugins/tg/tiddlersbar/styles\" \"tiddlersbar-border-radius\">>\n</table>\n<$button tooltip=\"Help\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/tiddlersbar/settings-help\" height=\"380px\" width=\"700px\"/>Help</$button>\n",
"title": "$:/plugins/tg/tiddlersbar/settings",
"tags": "$:/tags/plugin-tweaks",
"order": "7",
"modifier": "TonGerner",
"modified": "20191228205719769",
"list-after": "$:/plugins/tg/layout",
"creator": "TonGerner",
"caption": "Tiddlersbar"
},
"$:/plugins/tg/tiddlersbar/settings-help": {
"text": "|Item |Description |Default |h\n|Toggle tiddlersbar in ~PageControls |'Toggle tiddlersbar' button in ~PageControls| <input type=\"checkbox\" checked /> |\n|Toggle tiddlersbar in ~ViewToolbar |'Toggle tiddlersbar' button in ~ViewToolbar| <input type=\"checkbox\" /> |\n|Left 'Tiddlersbar' |Start (from the left) of the Tiddlersbar| 42px |\n|Top 'Tiddlersbar' |Start (from the top) of the Tiddlersbar| 10px |\n|Font size 'Tiddlersbar' |Font size of Tiddlersbar | 0.9em |\n|Background color 'Tiddler tabs' |Background color of breadcrumbs | `<<colour tab-background>>` |\n|Text color 'Tiddler tabs' |Text color of tiddler tabs | `<<colour tab-foreground>>` |\n|Background color 'Tiddler tab selected' |Background color of selected tiddler tab| `<<colour tab-background-selected>>` |\n|Text color 'Tiddler tab selected' |Text color of selected tiddler tab | `<<colour tab-foreground-selected>>` |\n|Rounded corners 'tiddler tabs' |Rounded corners of tiddlersbar | 1px |\n",
"title": "$:/plugins/tg/tiddlersbar/settings-help",
"tags": "",
"modifier": "TonGerner",
"modified": "20191230170358959",
"creator": "TonGerner",
"created": "20170325115648290"
},
"$:/plugins/tg/tiddlersbar/style-no-tiddlersbar": {
"text": "/* DEFAULT: HIDDEN TIDDLERSBAR */\n.tgc-tiddlersbar {\n display: none;\n}",
"type": "text/css",
"title": "$:/plugins/tg/tiddlersbar/style-no-tiddlersbar",
"tags": "$:/tags/Stylesheet",
"modifier": "TonGerner",
"modified": "20191228200615839",
"creator": "TonGerner",
"created": "20170325115709994"
},
"$:/plugins/tg/tiddlersbar/styles": {
"text": "<pre>/* BREADCRUMBS TOP MENU */\n.tgc-tiddlersbar {\n display: block;\n position: fixed;\n left: 0;\n top: {{!!top-tiddlersbar}}; /* vertical start of tiddlersbar 'menu' */\n width: calc(100% - 60px); /* right margin for '>>' icon */\n margin-left: {{!!left-tiddlersbar}};\n z-index: 900;\n}\n\n/* TIDDLERSBAR */\n.tgc-tiddlersbar button {\n font-size: {{!!tiddlersbar-font-size}};\n color: {{!!tiddlersbar-text-color}};\n padding: 3px 5px 3px 5px;\n border: none;\n border-radius: {{!!tiddlersbar-border-radius}};\n background: none;\n background-color: {{!!tiddlersbar-color}};\n border-left: 1px solid #cccccc;\n border-top: 1px solid #cccccc;\n border-right: 1px solid #cccccc;\n}\n\n/* TIDDLERBAR SELECTED */\n.tgc-tiddlersbar button.tgc-tiddlersbar-selected {\n color: {{!!tiddlersbar-selected-text-color}};\n background: none;\n background-color: {{!!tiddlersbar-selected-color}};\n}\n/* HOVER over 'x' */\n.tgc-tiddlersbar button.tgc-x:hover {\n font-weight: bold;\n}\n.tgc-tiddlersbar button.tgc-tiddlersbar-selected.tgc-x:hover {\n font-weight: bold;\n}\n</pre>",
"top-tiddlersbar": "10px",
"title": "$:/plugins/tg/tiddlersbar/styles",
"tiddlersbar-text-color": "<<colour tab-foreground>>",
"tiddlersbar-selected-text-color": "<<colour tab-foreground-selected>>",
"tiddlersbar-selected-color": "<<colour tab-background-selected>>",
"tiddlersbar-font-size": "0.9em",
"tiddlersbar-color": "<<colour tab-background>>",
"tiddlersbar-border-radius": "1px",
"tags": "$:/tags/Stylesheet",
"modifier": "TonGerner",
"modified": "20191228200650043",
"list-after": "$:/plugins/tg/tiddlersbar/style-no-tiddlersbar",
"left-tiddlersbar": "42px",
"creator": "TonGerner",
"created": "20170325123352694"
},
"$:/plugins/tg/tiddlersbar/tiddlersbar": {
"text": "<div class=\"tgc-tiddlersbar\" >\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" variable=\"currentTab\">\n<$reveal type=\"match\" state=\"$:/HistoryList!!current-tiddler\" text=<<currentTab>>>\n<div style=\"display:inline-block;\">\n<$button to=<<currentTab>> class=\"tgc-tiddlersbar-selected\" style=\"margin-right: -0.4em; border-right: 0.0em\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$button>\n<$button message=\"tm-close-tiddler\" param=<<currentTab>> class=\"tgc-tiddlersbar-selected tgc-x\" style=\"border-left: 0.0em;\">X</$button></div></$reveal>\n<$reveal type=\"nomatch\" state=\"$:/HistoryList!!current-tiddler\" text=<<currentTab>>>\n<div style=\"display:inline-block;\">\n<$button to=<<currentTab>> style=\"margin-right: 0.0em;\" >\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$button><$button message=\"tm-close-tiddler\" param=<<currentTab>> class=\"tgc-x\">\nX</$button></div></$reveal>\n</$list>\n</div>\n",
"title": "$:/plugins/tg/tiddlersbar/tiddlersbar",
"tags": "$:/tags/PageTemplate",
"modifier": "TonGerner",
"modified": "20191228200736188",
"creator": "TonGerner",
"created": "20170325114702089"
}
}
}
<pre>/* BREADCRUMBS TOP MENU */
.tgc-tiddlersbar {
display: block;
position: fixed;
left: 0;
top: {{!!top-tiddlersbar}}; /* vertical start of tiddlersbar 'menu' */
width: calc(100% - 60px); /* right margin for '>>' icon */
margin-left: {{!!left-tiddlersbar}};
z-index: 900;
}
/* TIDDLERSBAR */
.tgc-tiddlersbar button {
font-size: {{!!tiddlersbar-font-size}};
color: {{!!tiddlersbar-text-color}};
padding: 3px 5px 3px 5px;
border: none;
border-radius: {{!!tiddlersbar-border-radius}};
background: none;
background-color: {{!!tiddlersbar-color}};
border-left: 1px solid #cccccc;
border-top: 1px solid #cccccc;
border-right: 1px solid #cccccc;
}
/* TIDDLERBAR SELECTED */
.tgc-tiddlersbar button.tgc-tiddlersbar-selected {
color: {{!!tiddlersbar-selected-text-color}};
background: none;
background-color: {{!!tiddlersbar-selected-color}};
}
/* HOVER over 'x' */
.tgc-tiddlersbar button.tgc-x:hover {
font-weight: bold;
}
.tgc-tiddlersbar button.tgc-tiddlersbar-selected.tgc-x:hover {
font-weight: bold;
}
</pre>
{
"tiddlers": {
"$:/config/DefaultColourMappings/menubar-foreground": {
"title": "$:/config/DefaultColourMappings/menubar-foreground",
"text": "#fff"
},
"$:/config/DefaultColourMappings/menubar-background": {
"title": "$:/config/DefaultColourMappings/menubar-background",
"text": "#5778d8"
},
"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols": {
"title": "$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols",
"text": "hide"
},
"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/server": {
"title": "$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/server",
"text": "hide"
},
"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar": {
"title": "$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar",
"text": "hide"
},
"$:/config/plugins/menubar/TableOfContents/Tag": {
"title": "$:/config/plugins/menubar/TableOfContents/Tag",
"text": "TableOfContents"
},
"$:/config/plugins/menubar/breakpoint": {
"title": "$:/config/plugins/menubar/breakpoint",
"text": "620px"
},
"$:/plugins/tiddlywiki/menubar/config": {
"title": "$:/plugins/tiddlywiki/menubar/config",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "Menu Bar",
"text": "\\define config-base() $:/config/plugins/menubar/MenuItems/Visibility/\n\n! Menu Bar Configuration\n\n!! Menu Items\n\nSelect which menu items will be shown. You can also drag items to reorder them.\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/MenuBar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n\n!! Breakpoint Position\n\nThe breakpoint position between narrow and wide screens. Should include CSS units (eg. `400px`).\n\n<$edit-text tiddler=\"$:/config/plugins/menubar/breakpoint\" default=\"\" tag=\"input\"/>\n\n!! Contents Tag\n\nThe tag for the ~TableOfContents used in the Contents dropdown\n\n<$edit-text tiddler=\"$:/config/plugins/menubar/TableOfContents/Tag\" default=\"\" tag=\"input\"/>\n\n!! Menu Bar Colours\n\nTo change the colour of the menu bar, define the colours `menubar-foreground` and `menubar-background` in the currently selected palette\n"
},
"$:/plugins/tiddlywiki/menubar/items/contents": {
"title": "$:/plugins/tiddlywiki/menubar/items/contents",
"caption": "Contents",
"description": "Table of Contents",
"is-dropdown": "yes",
"tags": "$:/tags/MenuBar",
"text": "<div class=\"tc-table-of-contents\">\n\n<$macrocall $name=\"toc-selective-expandable\" tag={{$:/config/plugins/menubar/TableOfContents/Tag}}/>\n\n</div>\n"
},
"$:/plugins/tiddlywiki/menubar/items/hamburger": {
"title": "$:/plugins/tiddlywiki/menubar/items/hamburger",
"tags": "$:/tags/MenuBar",
"caption": "Hamburger",
"description": "Show the full menu bar on a narrow screen",
"custom-menu-content": "{{$:/plugins/tiddlywiki/menubar/items/hamburger}}",
"show-when": "narrow",
"text": "<$list filter=\"[[$:/state/popup/menubar/hamburger]get[text]else[no]match[no]]\">\n<$button set=\"$:/state/popup/menubar/hamburger\" setTo=\"yes\">\n{{$:/core/images/menu-button}}\n</$button>\n</$list>\n<$list filter=\"[[$:/state/popup/menubar/hamburger]get[text]else[no]match[yes]]\">\n<$button set=\"$:/state/popup/menubar/hamburger\" setTo=\"no\">\n{{$:/core/images/close-button}}\n</$button>\n</$list>\n"
},
"$:/plugins/tiddlywiki/menubar/items/pagecontrols": {
"title": "$:/plugins/tiddlywiki/menubar/items/pagecontrols",
"tags": "$:/tags/MenuBar",
"description": "Page controls from the sidebar",
"caption": "Page controls",
"custom-menu-content": "<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/pagecontrols\" mode=\"inline\"/>",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n"
},
"$:/plugins/tiddlywiki/menubar/items/search": {
"title": "$:/plugins/tiddlywiki/menubar/items/search",
"custom-menu-content": "{{$:/plugins/tiddlywiki/menubar/items/search}}",
"description": "Search",
"caption": "Search",
"tags": "$:/tags/MenuBar",
"text": "\\define cancel-search-actions()\n<$set name=\"userInput\" value={{{ [<__storeTitle__>get[text]] }}}>\n<$list filter=\"[<__tiddler__>get[text]!match<userInput>]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[<__storeTitle__>] [<__tiddler__>] [<__selectionStateTitle__>]\"/>\"\"\">\n<$action-setfield $tiddler=<<__tiddler__>> text=<<userInput>>/><$action-setfield $tiddler=<<__refreshTitle__>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\whitespace trim\n<$vars searchTiddler=\"$:/temp/menubarsearch/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">>>\n<span style=\"margin: 0 0.5em;\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/menubarsearch\" storeTitle=<<searchTiddler>> selectionStateTitle=<<searchListState>> \n\t\trefreshTitle=\"$:/temp/menubarsearch/refresh\" tag=\"input\" type=\"search\" focusPopup=\"$:/state/popup/menubar-search-dropdown\" \n\t\tclass=\"tc-popup-handle tc-menu-show-when-wide\" placeholder=\"Search...\" default=\"\" cancelPopups=\"yes\" \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> inputCancelActions=<<cancel-search-actions>> \n\t\tfilterMinLength={{$:/config/Search/MinLength}} configTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\" />\n</$keyboard>\n</$keyboard>\n</span>\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/state/popup/menubar-search-dropdown\" type=\"nomatch\" text=\"\" default=\"\">\n\n<div class=\"tc-block-dropdown tc-search-drop-down\">\n\n<$list filter=\"[<searchTiddler>get[text]minlength[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">Type your search terms</div>\"\"\" variable=\"ignore\">\n\n<$list filter=\"[<searchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$vars configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} userInput={{{ [<searchTiddler>get[text]] }}}>\n\n{{$:/core/ui/SearchResults}}\n\n</$vars>\n\n</$list>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n</$vars>\n"
},
"$:/plugins/tiddlywiki/menubar/items/server": {
"title": "$:/plugins/tiddlywiki/menubar/items/server",
"tags": "$:/tags/MenuBar",
"description": "Server options",
"caption": "Server",
"custom-menu-content": "<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/server\" mode=\"inline\"/>",
"text": "<$list filter=\"[[$:/status/IsLoggedIn]get[text]else[no]match[yes]]\" variable=\"ignore\">\n<$transclude tiddler=\"$:/core/ui/Buttons/save-wiki\" mode=\"inline\"/>\n</$list>\n<$list filter=\"[[$:/status/IsLoggedIn]get[text]else[no]match[no]]\" variable=\"ignore\">\n<$button message=\"tm-login\">\nLogin\n</$button>\n</$list>\n"
},
"$:/plugins/tiddlywiki/menubar/items/sidebar": {
"title": "$:/plugins/tiddlywiki/menubar/items/sidebar",
"caption": "Sidebar",
"description": "Sidebar",
"is-dropdown": "yes",
"tags": "$:/tags/MenuBar",
"text": "<$scrollable fallthrough=\"none\" class=\"tc-popup-keep tc-menubar-dropdown-sidebar\">\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\" mode=\"inline\"/>\n\n</$scrollable>\n"
},
"$:/plugins/tiddlywiki/menubar/items/topleftbar": {
"title": "$:/plugins/tiddlywiki/menubar/items/topleftbar",
"tags": "$:/tags/MenuBar",
"description": "Items from $:/tags/TopLeftBar",
"caption": "Legacy Top Left Bar",
"custom-menu-content": "<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/topleftbar\" mode=\"inline\"/>",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>"
},
"$:/plugins/tiddlywiki/menubar/items/toprightbar": {
"title": "$:/plugins/tiddlywiki/menubar/items/toprightbar",
"tags": "$:/tags/MenuBar",
"description": "Items from $:/tags/TopRightBar",
"caption": "Legacy Top Right Bar",
"custom-menu-content": "<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/toprightbar\" mode=\"inline\"/>",
"custom-menu-styles-wide": "float: right;",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]reverse[]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>"
},
"$:/plugins/tiddlywiki/menubar/menu": {
"title": "$:/plugins/tiddlywiki/menubar/menu",
"tags": "$:/tags/PageTemplate",
"text": "\\define menubar-inner(size)\n<ul class=\"tc-menubar-list\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MenuBar]!has[draft.of]] -[all[tiddlers+shadows]tag[$:/tags/TopLeftBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/topleftbar]] -[all[tiddlers+shadows]tag[$:/tags/TopRightBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/toprightbar]]\">\n<$list filter=\"[<currentTiddler>addprefix[$:/config/plugins/menubar/MenuItems/Visibility/]get[text]] ~show +[match[show]]\" variable=\"ignore\">\n<$list filter=\"[[$size$]match[wide]] ~[<currentTiddler>get[show-when]match[$size$]] ~[{$:/state/popup/menubar/hamburger}match[yes]]\" variable=\"ignore\">\n<li style={{!!custom-menu-styles-$size$}} class={{{ [<currentTiddler>get[show-when]addprefix[tc-menubar-]] tc-menubar-item +[join[ ]] }}}>\n<$list filter=\"[<currentTiddler>!is-dropdown[yes]]\" variable=\"listItem\" emptyMessage=\"\"\"\n\t<!-- Dropdown -->\n\t<$set name=\"dropdown-state\" value=<<qualify \"$:/state/popup/topmenu/dropdown/\">>>\n\t<$set name=\"dropdown-state\" value={{{ [<dropdown-state>addsuffix<currentTiddler>] }}}>\n\t<$button popup=<<dropdown-state>> selectedClass=\"tc-selected\">\n\t<$set name=\"tv-wikilinks\" value=\"no\">\n\t<$transclude field=\"caption\" mode=\"inline\"/>\n\t<$text text=\" \"/>\n\t<span class=\"tc-menubar-dropdown-arrow\">\n\t<$transclude tiddler=\"$:/core/images/down-arrow\" mode=\"inline\"/>\n\t</span>\n\t</$set>\n\t</$button>\n\t</$set>\n\t</$set>\n\"\"\">\n<$list filter=\"[<currentTiddler>has[custom-menu-content]]\" variable=\"listItem\" emptyMessage=\"\"\"\n\t<!-- Link -->\n\t<$link to={{!!target}}>\n\t<$set name=\"tv-wikilinks\" value=\"no\">\n\t<$transclude field=\"caption\" mode=\"inline\"/>\n\t</$set>\n\t</$link>\n\"\"\">\n<!-- Custom content -->\n<$transclude field=\"custom-menu-content\" mode=\"inline\"/>\n</$list>\n</$list>\n</li>\n</$list>\n</$list>\n</$list>\n</ul>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MenuBar]!has[draft.of]] -[all[tiddlers+shadows]tag[$:/tags/TopLeftBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/topleftbar]] -[all[tiddlers+shadows]tag[$:/tags/TopRightBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/toprightbar]] +[limit[1]]\" variable=\"listItem\">\n<nav class=\"tc-menubar tc-adjust-top-of-scroll\">\n<div class=\"tc-menubar-narrow\">\n<<menubar-inner narrow>>\n</div>\n<div class=\"tc-menubar-wide\">\n<<menubar-inner wide>>\n</div>\n<div style=\"clear:both;\"/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MenuBar]!has[draft.of]is-dropdown[yes]]\">\n<$list filter=\"[<currentTiddler>addprefix[$:/config/plugins/menubar/MenuItems/Visibility/]get[text]] ~show +[match[show]]\" variable=\"ignore\">\n<$set name=\"dropdown-state\" value=<<qualify \"$:/state/popup/topmenu/dropdown/\">>>\n<$set name=\"dropdown-state\" value={{{ [<dropdown-state>addsuffix<currentTiddler>] }}}>\n<$reveal type=\"popup\" state=<<dropdown-state>> class={{{ [<currentTiddler>get[dropdown]get[class]] }}} tag=\"div\">\n<div class=\"tc-drop-down\">\n<$transclude/>\n</div>\n</$reveal>\n</$set>\n</$set>\n</$list>\n</$list>\n</nav>\n</$list>\n"
},
"$:/core/ui/PageTemplate/topleftbar": {
"title": "$:/core/ui/PageTemplate/topleftbar",
"text": "<!-- The menubar plugin overrides this tiddler to remove the core top left menu. The menu items that it would include are instead included in the menubar -->"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"text": "<!-- The menubar plugin overrides this tiddler to remove the core top right menu. The menu items that it would include are instead included in the menubar -->"
},
"$:/plugins/tiddlywiki/menubar/readme": {
"title": "$:/plugins/tiddlywiki/menubar/readme",
"text": "!! Introduction\n\nThis plugin provides a menu bar with the following features:\n\n* Menu items take the form of simple text links, dropdowns, or entirely custom content\n* Menu items can be individually enabled via the control panel\n* Responds to reduced screen width by abbreviating the menu items to a \"hamburger\" dropdown\n\n!! Menu Item Tiddlers\n\nMenu items are tagged <<tag $:/tags/MenuBar>>. The following fields are used by this plugin:\n\n|!Field Name |!Purpose |\n|title |Each menu item must have a unique title (not shown to the user) |\n|description |Description for use in listings |\n|tags |Must contain `$:/tags/MenuBar` |\n|caption |The text that is displayed for the menu item. Avoid links, using `~` to suppress CamelCase links if required |\n|target |For simple link menu items specifies a tiddler title as the target of the link |\n|is-dropdown |Set to `yes` to indicate a dropdown menu item |\n|text |For dropdown menu items, specifies the body of the dropdown |\n|custom-menu-content |Optional wikitext to be displayed in place of the caption |\n|custom-menu-styles-wide |Optional string of styles to be applied to menu item when the menubar is wide |\n|custom-menu-styles-narrow |Optional string of styles to be applied to menu item when the menubar is narrow |\n\nCustom menu items should make sure that the clickable link or button is an immediate child, and not wrapped in another element.\n\nNote that menu items can be pushed to the right of the menu bar setting the ''custom-menu-styles'' field to `float: right;`.\n"
},
"$:/plugins/tiddlywiki/menubar/styles": {
"title": "$:/plugins/tiddlywiki/menubar/styles",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define breakpoint-plus-one()\n<$text text={{{ [{$:/config/plugins/menubar/breakpoint}removesuffix[px]add[1]addsuffix[px]] ~[{$:/config/plugins/menubar/breakpoint}] }}} />\n\\end\n\n\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}} />\n\\end\n\n\\define set-sidebar-scrollable-top-if-hamburger()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/MenuBar]] -[all[tiddlers+shadows]prefix[$:/config/plugins/menubar/MenuItems/Visibility/]regexp:text[hide]removeprefix[$:/config/plugins/menubar/MenuItems/Visibility/]] -[all[tiddlers+shadows]tag[$:/tags/TopLeftBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/topleftbar]] -[all[tiddlers+shadows]tag[$:/tags/TopRightBar]limit[1]then[$:/plugins/tiddlywiki/menubar/items/toprightbar]] -$:/plugins/tiddlywiki/menubar/items/hamburger +[limit[1]]\">\n\n\t.tc-sidebar-scrollable {\n\t\tmargin-top: 2em;\n\t}\n\n</$list>\n\\end\n\n\\define set-sidebar-scrollable-top()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/MenuBar]] -[all[tiddlers+shadows]prefix[$:/config/plugins/menubar/MenuItems/Visibility/]regexp:text[hide]removeprefix[$:/config/plugins/menubar/MenuItems/Visibility/]] -[all[tiddlers+shadows]tag[$:/tags/TopLeftBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/topleftbar]] -[all[tiddlers+shadows]tag[$:/tags/TopRightBar]limit[1]then[$:/plugins/tiddlywiki/menubar/items/toprightbar]] +[limit[1]]\">\n\n\t.tc-sidebar-scrollable {\n\t\tmargin-top: 2em;\n\t}\n\n</$list>\n<$reveal state=\"$:/state/popup/menubar/hamburger\" type=\"match\" text=\"yes\">\n\n\t<$set name=\"itemCount\" value={{{ [all[tiddlers+shadows]tag[$:/tags/MenuBar]] -[all[tiddlers+shadows]prefix[$:/config/plugins/menubar/MenuItems/Visibility/]regexp:text[hide]removeprefix[$:/config/plugins/menubar/MenuItems/Visibility/]] -[all[tiddlers+shadows]tag[$:/tags/TopLeftBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/topleftbar]] -[all[tiddlers+shadows]tag[$:/tags/TopRightBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/toprightbar]] +[count[]] }}}>\n\n\t\t.tc-sidebar-scrollable {\n\t\t\tmargin-top: calc(<<itemCount>> * 2em);\n\t\t}\n\n\t</$set>\n\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\nnav.tc-menubar {\n\tposition: fixed;\n\tz-index: 850;\n\tdisplay: inline-block;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n}\n\nnav.tc-menubar ul.tc-menubar-list {\n\tposition: relative;\n\tlist-style-type: none;\n\tmargin: 0;\n\tpadding: 0 0 0 42px;\n\tbackground: <<colour background>>;\n\tbackground: <<colour menubar-background>>;\n\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\thtml nav.tc-menubar ul.tc-menubar-list {\n\t\tpadding: 0 0 0 8px;\n\t}\n\n}\n\nnav.tc-menubar li.tc-menubar-item {\n\tdisplay: inline-block;\n\tmargin: 0;\n\tpadding: 0;\n}\n\nnav.tc-menubar .tc-menubar-narrow li.tc-menubar-item {\n\tdisplay: block;\n}\n\nnav.tc-menubar li.tc-menubar-item > a,\nnav.tc-menubar li.tc-menubar-item > button {\n\tdisplay: inline-block;\n/*\ttext-transform: uppercase; */\n\tline-height: 1;\n\tfont-weight: 700;\n\tcolor: <<colour foreground>>;\n\tcolor: <<colour menubar-foreground>>;\n\tfill: <<colour foreground>>;\n\tfill: <<colour menubar-foreground>>;\n\ttext-decoration: none;\n\tpadding: 0.5em;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tborder-radius: 0;\n\ttext-decoration: none;\n}\n\nnav.tc-menubar li.tc-menubar-item > a.tc-selected,\nnav.tc-menubar li.tc-menubar-item > button.tc-selected {\n\tbackground: <<colour foreground>>;\n\tbackground: <<colour menubar-foreground>>;\n\tcolor: <<colour background>>;\n\tcolor: <<colour menubar-background>>;\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n}\n\nnav.tc-menubar li.tc-menubar-item svg {\n\ttransition: none;\n\twidth: 1em;\n\theight: 1em;\n\tfill: <<colour foreground>>;\n\tfill: <<colour menubar-foreground>>;\n}\n\nnav.tc-menubar li.tc-menubar-item .tc-menubar-dropdown-arrow svg {\n\twidth: 0.5em;\n\theight: 0.5em;\n}\n\nnav.tc-menubar li.tc-menubar-item > a.tc-selected svg,\nnav.tc-menubar li.tc-menubar-item > button.tc-selected svg {\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n}\n\nnav.tc-menubar li.tc-menubar-item > a:hover,\nnav.tc-menubar li.tc-menubar-item > button:hover svg,\nnav.tc-menubar li.tc-menubar-item > button:hover {\n\tbackground: <<colour foreground>>;\n\tbackground: <<colour menubar-foreground>>;\n\tcolor: <<colour background>>;\n\tcolor: <<colour menubar-background>>;\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n\tborder-radius: 0;\n\ttext-decoration: none;\n}\n\nnav.tc-menubar li.tc-menubar-item > a:active,\nnav.tc-menubar li.tc-menubar-item > button:active svg,\nnav.tc-menubar li.tc-menubar-item > button:active {\n\tbackground: <<colour foreground>>;\n\tbackground: <<colour menubar-foreground>>;\n\tcolor: <<colour background>>;\n\tcolor: <<colour menubar-background>>;\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n\tborder-radius: 0;\n\ttext-decoration: none;\n}\n\nnav.tc-menubar .tc-drop-down,\nnav.tc-menubar .tc-block-dropdown {\n\tmax-width: 70vw;\n\tmax-height: 70vh;\n\toverflow: auto;\n}\n\nnav.tc-menubar .tc-drop-down a {\n\ttext-decoration: none;\n}\n\nnav.tc-menubar .tc-drop-down .tc-table-of-contents button {\n\tdisplay: inline-block;\n\twidth: auto;\n}\n\nnav.tc-menubar .tc-drop-down ol {\n\tmargin: 0;\n}\n\nnav.tc-menubar .tc-drop-down .tc-menubar-dropdown-sidebar a,\nnav.tc-menubar .tc-drop-down .tc-menubar-dropdown-sidebar button {\n\tdisplay: inline;\n\twidth: auto;\n}\n\nnav.tc-menubar .tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (max-width: {{$:/config/plugins/menubar/breakpoint}}) {\n\n\t.tc-menubar-wide {\n\t\tdisplay: none;\n\t}\n\n}\n\n@media (min-width: <<breakpoint-plus-one>>) {\n\n\tnav.tc-menubar li.tc-menubar-item.tc-menubar-narrow,\n\t.tc-menubar-narrow {\n\t\tdisplay: none;\n\t}\n\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t<<set-sidebar-scrollable-top-if-hamburger>>\n\n}\n\n@media (max-width: {{$:/config/plugins/menubar/breakpoint}}) {\n\n\t<<set-sidebar-scrollable-top>>\n\n}\n@media print {\n\n\tnav.tc-menubar {\n\t\tdisplay: none;\n\t}\n\n}\n"
},
"$:/tags/MenuBar": {
"title": "$:/tags/MenuBar",
"list": "$:/plugins/tiddlywiki/menubar/items/hamburger $:/plugins/tiddlywiki/menubar/items/topleftbar $:/plugins/tiddlywiki/menubar/items/contents $:/plugins/tiddlywiki/menubar/items/search $:/plugins/tiddlywiki/menubar/items/pagecontrols $:/plugins/tiddlywiki/menubar/items/server $:/plugins/tiddlywiki/menubar/items/toprightbar"
}
}
}
Unnamed rivers on Argonnessen.
$:/core/ui/AdvancedSearch/System
$:/temp/commander/logs/tid-12
\n\n!! Enclaves <<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
$:/plugins/kookma/commander/field/uicomp/add-fields
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/List
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/AdvancedSearch/System
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/References
$:/core/ui/ControlPanel/Toolbars
$:/core/ui/ControlPanel/Basics
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/ControlPanel/Plugins/Installed/Plugins
$:/core/ui/TiddlerInfo/References
$:/core/ui/ControlPanel/EditorTypes
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/ControlPanel/Appearance
$:/plugins/kookma/commander/tiddler/uicomp/create-tiddlers
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/List
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/plugins/kookma/commander/tag/uicomp/add-remove-tags
$:/core/ui/TiddlerInfo/List
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/plugins/kookma/commander/field/ui
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/Listed
$:/core/ui/TiddlerInfo/Listed
$:/core/ui/TiddlerInfo/List
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/Tools
$:/core/ui/TiddlerInfo/References
$:/core/ui/TiddlerInfo/References
$:/core/ui/MoreSideBar/System
$:/core/ui/ControlPanel/Toolbars/PageControls
$:/themes/tiddlywiki/vanilla
{
"tiddlers": {
"$:/themes/tiddlywiki/snowwhite/base": {
"title": "$:/themes/tiddlywiki/snowwhite/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/vanilla/themetweaks": {
"title": "$:/themes/tiddlywiki/vanilla/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
},
"$:/themes/tiddlywiki/vanilla/base": {
"title": "$:/themes/tiddlywiki/vanilla/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define sidebarbreakpoint()\n<$text text={{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}/>\n\\end\n\n\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}}/>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\define set-type-selector-min-width()\n<$set name=\"typeLength\" value={{{ [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]get[name]length[]maxall[]] }}}>\n\n\t.tc-type-selector-dropdown-wrapper {\n\t\tmin-width: calc(<<typeLength>>ch + 4em);\n\t}\n\n\t.tc-type-selector-dropdown-wrapper input.tc-edit-typeeditor {\n\t\tmin-width: <<typeLength>>ch;\n\t}\n\n</$set>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\ninput[type=\"search\"] {\n outline-offset: initial;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tfill: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml, body {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n background-color: transparent;\n}\n\n\"\"\">>\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n\tfont-size: 2em;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote > div {\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n left: -50px;\n top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n right: -80px;\n bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n vertical-align: middle;\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-results-button,\ninput[type=\"search\"]::-webkit-search-results-decoration {\n\t-webkit-appearance:none;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n::selection {\n\tbackground-color: Highlight;\n\tcolor: HighlightText;\n\tbackground-color: <<colour selection-background>>;\n\tcolor: <<colour selection-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\t/* next 2 elements needed, since normalize 8.0.1 */\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n.tc-drop-down a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\n.tc-links-draggable-list .tc-droppable-placeholder {\n\tline-height: 2em;\n\theight: 2em;\n}\n\n.tc-sidebar-tab-open-item {\n\tposition: relative;\n}\n\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <<colour muted-foreground>>;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tcolor: <<colour foreground>>;\n\tfill: <<colour foreground>>;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tborder-radius: 2px;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\n.tc-sidebar-lists button small {\n\tcolor: <<colour foreground>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\n.tc-block-tags-dropdown > .tc-btn-invisible:hover {\n\tbackground-color: <<colour primary>>;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-sidebar-scrollable .tc-tag-label {\n\ttext-shadow: none;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tmargin-right: 3px; \n\tmargin-bottom: 1px;\n\tvertical-align: bottom;\n}\n\n.tc-edit-tags button.tc-remove-tag-button svg {\n\tfont-size: 0.7em;\n\tvertical-align: middle;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n.tc-tag-button-selected,\n.tc-list-item-selected a.tc-tiddlylink, a.tc-list-item-selected {\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour tiddler-background>>;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-topbar-right {\n\t\tright: 10px;\n\t}\n\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-show-sidebar-btn svg.tc-image-chevron-left, .tc-hide-sidebar-btn svg.tc-image-chevron-right {\n\t\ttransform: rotate(-90deg);\n\t}\n\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-sidebar-lists .tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\ttransition: min-height {{$:/config/AnimationDuration}}ms ease-in-out, padding-top {{$:/config/AnimationDuration}}ms ease-in-out, padding-bottom {{$:/config/AnimationDuration}}ms ease-in-out;\n\t}\n\t\n\t<<if-no-sidebar \"\"\"\n\n\t\t.tc-sidebar-header {\n\t\t\tmin-height: 0;\n\t\t\tpadding-top: 0;\n\t\t\tpadding-bottom: 0;\n\t\t}\n\n\t\"\"\">>\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n\t.tc-story-river.tc-static-story-river {\n\t\tmargin-right: 0;\n\t\tpadding-right: 42px;\n\t}\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t.tc-tiddler-info {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t\tmargin-bottom: .5em;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.35em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n\tmargin-right: .1em;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n font-style: italic;\n font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n height: 1.2em;\n width: 1.2em;\n margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-editor-background>>;\n}\n\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tbackground-color: <<colour tiddler-background>>;\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-type-selector .tc-edit-typeeditor {\n\twidth: auto;\n}\n\n.tc-type-selector-dropdown-wrapper {\n\tdisplay: inline-block;\n}\n\n<<set-type-selector-min-width>>\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n.tc-edit-fields.tc-edit-fields-small {\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n}\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name-wrapper input.tc-edit-texteditor {\n\twidth: auto;\n}\n\n.tc-edit-field-add-name-wrapper {\n\tdisplay: inline-block;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-edit-field-add-value {\n\t\twidth: 35%;\n\t}\n\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-viewswitcher .tc-image-button {\n\tmargin-right: .3em;\n}\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-drop-down .tc-drop-down-info {\n\tpadding-left: 14px;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n width: auto;\n margin-bottom: 0px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n\n/*\n** Centered modals\n*/\n.tc-modal-centered .tc-modal {\n\twidth: auto;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%) !important;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n display: block;\n width: 100%;\n text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n flex: 1 0;\n background: <<colour tiddler-editor-background>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n flex: 3 1;\n border-left: 0.5em solid <<colour muted-foreground>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Import table\n*/\n\n.tc-import-table {\n\twidth: 100%;\n}\n\n.tc-import-table svg.tc-image-edit-button {\n\tmax-width: unset;\n}\n\n.tc-import-table th:first-of-type {\n\twidth: 10%;\n}\n\n.tc-import-table th:last-of-type {\n\twidth: 30%;\n}\n\n.tc-import-table .tc-row-disabled {\n\tbackground: <<colour very-muted-foreground>>10;\n\topacity: 0.8;\n}\n\n.tc-import-table .tc-row-warning {\n\tbackground: <<colour diff-delete-background>>50;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 28px;\n\tleft: 0;\n\tright: 0;\n\tmax-width: 50%;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 14px;\n\tpadding: 7px;\n\tborder: 1px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n font-size: 0.8em;\n margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: <<sidebarbreakpoint>>) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: flex;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n margin: 0.5em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugin-indicator {\n\tmargin: -16px 1em 0 2em;\n}\n\n.tc-plugin-info-sub-plugin-indicator button {\n\tcolor: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n padding: 2px 7px;\n font-size: 0.75em;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\tfill: <<colour background>>;\n}\n\n.tc-plugin-info-chunk {\n margin: 2px;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description {\n\tflex-grow: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n text-align: right;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\n\tfont-size: 1em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description div {\n\tfont-size: 0.7em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\n\twidth: 2em;\n\theight: 2em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 0 1em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n margin: 0 1em 1em 1em;\n\tbackground: <<colour notification-background>>;\n}\n\n.tc-install-plugin {\n\tfont-weight: bold;\n\tbackground: green;\n\tcolor: white;\n\tfill: white;\n\tborder-radius: 4px;\n\tpadding: 3px;\n}\n\n.tc-install-plugin.tc-reinstall-downgrade {\n\tbackground: red;\n}\n\n.tc-install-plugin.tc-reinstall {\n\tbackground: blue;\n}\n\n.tc-install-plugin.tc-reinstall-upgrade {\n\tbackground: orange;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\ninput.tc-palette-manager-colour-input {\n\twidth: 100%;\n\tpadding: 0;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n::-webkit-file-upload-button {\n\tcursor:pointer;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n \tlist-style-type: none;\n \tpadding-left: 0;\n \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n \tpadding-left: 1em; \n}\n\n.tc-tree button { \n \tcolor: #acacac;\n}\n\n.tc-tree svg {\n \tfill: #acacac;\n}\n\n.tc-tree span svg {\n \twidth: 1em;\n \theight: 1em;\n \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n \tcolor: lightgray;\n}\n\nselect {\n color: <<colour select-tag-foreground>>;\n background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour background>>;\n}\n\n/*\n** Flexbox utility classes\n*/\n\n.tc-flex {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-flex-column {\n\tflex-direction: column;\n}\n\n.tc-flex-row {\n\tflex-direction: row;\n}\n\n.tc-flex-grow-1 {\n\tflex-grow: 1;\n}\n\n.tc-flex-grow-2 {\n\tflex-grow: 2;\n}\n\n/*\n** Other utility classes\n*/\n\n.tc-small-gap {\n\tmargin-left: .5em;\n\tmargin-right: .5em;\n}\n\n.tc-small-gap-left {\n\tmargin-left: .5em;\n}\n\n.tc-small-gap-right {\n\tmargin-right: .5em;\n}\n\n.tc-big-gap {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-big-gap-left {\n\tmargin-left: 1em;\n}\n\n.tc-big-gap-right {\n\tmargin-right: 1em;\n}\n\n.tc-word-break {\n\tword-break: break-all;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
"text": "15px"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
"text": "22px"
},
"$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
"text": "14px"
},
"$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
"text": "20px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storytop": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyright": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
"text": "686px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
"text": "960px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
"text": "350px"
},
"$:/themes/tiddlywiki/vanilla/options/stickytitles": {
"title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
"text": "no"
},
"$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
"title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
"text": "fixed-fluid"
},
"$:/themes/tiddlywiki/vanilla/options/codewrapping": {
"title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
"text": "pre-wrap"
},
"$:/themes/tiddlywiki/vanilla/reset": {
"title": "$:/themes/tiddlywiki/vanilla/reset",
"type": "text/plain",
"text": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\n:root {\n -moz-tab-size: 4;\n tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n font-family:\n system-ui,\n -apple-system, /* Firefox supports this but not yet `system-ui` */\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Consolas,\n 'Liberation Mono',\n Menlo,\n monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
"text": "system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\""
},
"$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
"text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
"text": "fixed"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
"text": "auto"
},
"$:/themes/tiddlywiki/vanilla/sticky": {
"title": "$:/themes/tiddlywiki/vanilla/sticky",
"text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
}
}
}
\define custom-background-datauri()
<$set name="background" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>
<$list filter="[<background>is[image]]">
`background: url(`
<$list filter="[<background>!has[_canonical_uri]]">
`"`<$macrocall $name="datauri" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`"`
</$list>
<$list filter="[<background>has[_canonical_uri]]">
`"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field="_canonical_uri"/>`"`
</$list>
`) center center;`
`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;
-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`
</$list>
</$set>
\end
\define if-fluid-fixed(text,hiddenSidebarText)
<$reveal state="$:/themes/tiddlywiki/vanilla/options/sidebarlayout" type="match" text="fluid-fixed">
$text$
<$reveal state="$:/state/sidebar" type="nomatch" text="yes" default="yes">
$hiddenSidebarText$
</$reveal>
</$reveal>
\end
\define if-editor-height-fixed(then,else)
<$reveal state="$:/config/TextEditor/EditorHeight/Mode" type="match" text="fixed">
$then$
</$reveal>
<$reveal state="$:/config/TextEditor/EditorHeight/Mode" type="match" text="auto">
$else$
</$reveal>
\end
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
/*
** Start with the normalize CSS reset, and then belay some of its effects
*/
{{$:/themes/tiddlywiki/vanilla/reset}}
*, input[type="search"] {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
html button {
line-height: 1.2;
color: <<colour button-foreground>>;
background: <<colour button-background>>;
border-color: <<colour button-border>>;
}
/*
** Basic element styles
*/
html {
font-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};
text-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
html:-webkit-full-screen {
background-color: <<colour page-background>>;
}
body.tc-body {
font-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};
line-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};
word-wrap: break-word;
<<custom-background-datauri>>
color: <<colour foreground>>;
background-color: <<colour page-background>>;
fill: <<colour foreground>>;
}
<<if-background-attachment """
body.tc-body {
background-color: transparent;
}
""">>
h1, h2, h3, h4, h5, h6 {
line-height: 1.2;
font-weight: 500;
}
pre {
display: block;
padding: 14px;
margin-top: 1em;
margin-bottom: 1em;
word-break: normal;
word-wrap: break-word;
white-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};
background-color: <<colour pre-background>>;
border: 1px solid <<colour pre-border>>;
padding: 0 3px 2px;
border-radius: 3px;
font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};
}
code {
color: <<colour code-foreground>>;
background-color: <<colour code-background>>;
border: 1px solid <<colour code-border>>;
white-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};
padding: 0 3px 2px;
border-radius: 3px;
font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};
}
blockquote {
border-left: 5px solid <<colour blockquote-bar>>;
margin-left: 25px;
padding-left: 10px;
quotes: "\201C""\201D""\2018""\2019";
}
blockquote.tc-big-quote {
font-family: Georgia, serif;
position: relative;
background: <<colour pre-background>>;
border-left: none;
margin-left: 50px;
margin-right: 50px;
padding: 10px;
border-radius: 8px;
}
blockquote.tc-big-quote cite:before {
content: "\2014 \2009";
}
blockquote.tc-big-quote:before {
font-family: Georgia, serif;
color: <<colour blockquote-bar>>;
content: open-quote;
font-size: 8em;
line-height: 0.1em;
margin-right: 0.25em;
vertical-align: -0.4em;
position: absolute;
left: -50px;
top: 42px;
}
blockquote.tc-big-quote:after {
font-family: Georgia, serif;
color: <<colour blockquote-bar>>;
content: close-quote;
font-size: 8em;
line-height: 0.1em;
margin-right: 0.25em;
vertical-align: -0.4em;
position: absolute;
right: -80px;
bottom: -20px;
}
dl dt {
font-weight: bold;
margin-top: 6px;
}
button, textarea, input, select {
outline-color: <<colour primary>>;
}
textarea,
input[type=text],
input[type=search],
input[type=""],
input:not([type]) {
color: <<colour foreground>>;
background: <<colour background>>;
}
input[type="checkbox"] {
vertical-align: middle;
}
.tc-muted {
color: <<colour muted-foreground>>;
}
svg.tc-image-button {
padding: 0px 1px 1px 0px;
}
.tc-icon-wrapper > svg {
width: 1em;
height: 1em;
}
kbd {
display: inline-block;
padding: 3px 5px;
font-size: 0.8em;
line-height: 1.2;
color: <<colour foreground>>;
vertical-align: middle;
background-color: <<colour background>>;
border: solid 1px <<colour muted-foreground>>;
border-bottom-color: <<colour muted-foreground>>;
border-radius: 3px;
box-shadow: inset 0 -1px 0 <<colour muted-foreground>>;
}
/*
Markdown likes putting code elements inside pre elements
*/
pre > code {
padding: 0;
border: none;
background-color: inherit;
color: inherit;
}
table {
border: 1px solid <<colour table-border>>;
width: auto;
max-width: 100%;
caption-side: bottom;
margin-top: 1em;
margin-bottom: 1em;
}
table th, table td {
padding: 0 7px 0 7px;
border-top: 1px solid <<colour table-border>>;
border-left: 1px solid <<colour table-border>>;
}
table thead tr td, table th {
background-color: <<colour table-header-background>>;
font-weight: bold;
}
table tfoot tr td {
background-color: <<colour table-footer-background>>;
}
.tc-csv-table {
white-space: nowrap;
}
.tc-tiddler-frame img,
.tc-tiddler-frame svg,
.tc-tiddler-frame canvas,
.tc-tiddler-frame embed,
.tc-tiddler-frame iframe {
max-width: 100%;
}
.tc-tiddler-body > embed,
.tc-tiddler-body > iframe {
width: 100%;
height: 600px;
}
/*
** Links
*/
button.tc-tiddlylink,
a.tc-tiddlylink {
text-decoration: none;
font-weight: 600;
color: <<colour tiddler-link-foreground>>;
-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */
}
.tc-sidebar-lists a.tc-tiddlylink {
color: <<colour sidebar-tiddler-link-foreground>>;
}
.tc-sidebar-lists a.tc-tiddlylink:hover {
color: <<colour sidebar-tiddler-link-foreground-hover>>;
}
button.tc-tiddlylink:hover,
a.tc-tiddlylink:hover {
text-decoration: underline;
}
a.tc-tiddlylink-resolves {
}
a.tc-tiddlylink-shadow {
font-weight: bold;
}
a.tc-tiddlylink-shadow.tc-tiddlylink-resolves {
font-weight: normal;
}
a.tc-tiddlylink-missing {
font-style: italic;
font-weight: 400;
}
a.tc-tiddlylink-external {
text-decoration: underline;
color: <<colour external-link-foreground>>;
background-color: <<colour external-link-background>>;
}
a.tc-tiddlylink-external:visited {
color: <<colour external-link-foreground-visited>>;
background-color: <<colour external-link-background-visited>>;
}
a.tc-tiddlylink-external:hover {
color: <<colour external-link-foreground-hover>>;
background-color: <<colour external-link-background-hover>>;
}
/*
** Drag and drop styles
*/
.tc-tiddler-dragger {
position: relative;
z-index: -10000;
}
.tc-tiddler-dragger-inner {
position: absolute;
top: -1000px;
left: -1000px;
display: inline-block;
padding: 8px 20px;
font-size: 16.9px;
font-weight: bold;
line-height: 20px;
color: <<colour dragger-foreground>>;
text-shadow: 0 1px 0 rgba(0, 0, 0, 1);
white-space: nowrap;
vertical-align: baseline;
background-color: <<colour dragger-background>>;
border-radius: 20px;
}
.tc-tiddler-dragger-cover {
position: absolute;
background-color: <<colour page-background>>;
}
.tc-dropzone {
position: relative;
}
.tc-dropzone.tc-dragover:before {
z-index: 10000;
display: block;
position: fixed;
top: 0;
left: 0;
right: 0;
background: <<colour dropzone-background>>;
text-align: center;
content: "<<lingo DropMessage>>";
}
.tc-droppable > .tc-droppable-placeholder {
display: none;
}
.tc-droppable.tc-dragover > .tc-droppable-placeholder {
display: block;
border: 2px dashed <<colour dropzone-background>>;
}
.tc-draggable {
cursor: move;
}
.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,
.tc-links-draggable-list .tc-droppable-placeholder {
line-height: 2em;
height: 2em;
}
.tc-sidebar-tab-open-item {
position: relative;
}
.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {
font-size: 0.7em;
fill: <<colour muted-foreground>>;
}
/*
** Plugin reload warning
*/
.tc-plugin-reload-warning {
z-index: 1000;
display: block;
position: fixed;
top: 0;
left: 0;
right: 0;
background: <<colour alert-background>>;
text-align: center;
}
/*
** Buttons
*/
button svg, button img, label svg, label img {
vertical-align: middle;
}
.tc-btn-invisible {
padding: 0;
margin: 0;
background: none;
border: none;
cursor: pointer;
color: <<colour foreground>>;
}
.tc-btn-boxed {
font-size: 0.6em;
padding: 0.2em;
margin: 1px;
background: none;
border: 1px solid <<colour tiddler-controls-foreground>>;
border-radius: 0.25em;
}
html body.tc-body .tc-btn-boxed svg {
font-size: 1.6666em;
}
.tc-btn-boxed:hover {
background: <<colour muted-foreground>>;
color: <<colour background>>;
}
html body.tc-body .tc-btn-boxed:hover svg {
fill: <<colour background>>;
}
.tc-btn-rounded {
font-size: 0.5em;
line-height: 2;
padding: 0em 0.3em 0.2em 0.4em;
margin: 1px;
border: 1px solid <<colour muted-foreground>>;
background: <<colour muted-foreground>>;
color: <<colour background>>;
border-radius: 2em;
}
html body.tc-body .tc-btn-rounded svg {
font-size: 1.6666em;
fill: <<colour background>>;
}
.tc-btn-rounded:hover {
border: 1px solid <<colour muted-foreground>>;
background: <<colour background>>;
color: <<colour muted-foreground>>;
}
html body.tc-body .tc-btn-rounded:hover svg {
fill: <<colour muted-foreground>>;
}
.tc-btn-icon svg {
height: 1em;
width: 1em;
fill: <<colour muted-foreground>>;
}
.tc-btn-text {
padding: 0;
margin: 0;
}
/* used for documentation "fake" buttons */
.tc-btn-standard {
line-height: 1.8;
color: #667;
background-color: #e0e0e0;
border: 1px solid #888;
padding: 2px 1px 2px 1px;
margin: 1px 4px 1px 4px;
}
.tc-btn-big-green {
display: inline-block;
padding: 8px;
margin: 4px 8px 4px 8px;
background: <<colour download-background>>;
color: <<colour download-foreground>>;
fill: <<colour download-foreground>>;
border: none;
border-radius: 2px;
font-size: 1.2em;
line-height: 1.4em;
text-decoration: none;
}
.tc-btn-big-green svg,
.tc-btn-big-green img {
height: 2em;
width: 2em;
vertical-align: middle;
fill: <<colour download-foreground>>;
}
.tc-primary-btn {
background: <<colour primary>>;
}
.tc-sidebar-lists input {
color: <<colour foreground>>;
}
.tc-sidebar-lists button {
color: <<colour sidebar-button-foreground>>;
fill: <<colour sidebar-button-foreground>>;
}
.tc-sidebar-lists button.tc-btn-mini {
color: <<colour sidebar-muted-foreground>>;
}
.tc-sidebar-lists button.tc-btn-mini:hover {
color: <<colour sidebar-muted-foreground-hover>>;
}
button svg.tc-image-button, button .tc-image-button img {
height: 1em;
width: 1em;
}
.tc-unfold-banner {
position: absolute;
padding: 0;
margin: 0;
background: none;
border: none;
width: 100%;
width: calc(100% + 2px);
margin-left: -43px;
text-align: center;
border-top: 2px solid <<colour tiddler-info-background>>;
margin-top: 4px;
}
.tc-unfold-banner:hover {
background: <<colour tiddler-info-background>>;
border-top: 2px solid <<colour tiddler-info-border>>;
}
.tc-unfold-banner svg, .tc-fold-banner svg {
height: 0.75em;
fill: <<colour tiddler-controls-foreground>>;
}
.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {
fill: <<colour tiddler-controls-foreground-hover>>;
}
.tc-fold-banner {
position: absolute;
padding: 0;
margin: 0;
background: none;
border: none;
width: 23px;
text-align: center;
margin-left: -35px;
top: 6px;
bottom: 6px;
}
.tc-fold-banner:hover {
background: <<colour tiddler-info-background>>;
}
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-unfold-banner {
position: static;
width: calc(100% + 59px);
}
.tc-fold-banner {
width: 16px;
margin-left: -16px;
font-size: 0.75em;
}
}
/*
** Tags and missing tiddlers
*/
.tc-tag-list-item {
position: relative;
display: inline-block;
margin-right: 7px;
}
.tc-tags-wrapper {
margin: 4px 0 4px 0;
}
.tc-missing-tiddler-label {
font-style: italic;
font-weight: normal;
display: inline-block;
font-size: 11.844px;
line-height: 14px;
white-space: nowrap;
vertical-align: baseline;
}
button.tc-tag-label, span.tc-tag-label {
display: inline-block;
padding: 0.16em 0.7em;
font-size: 0.9em;
font-weight: 400;
line-height: 1.2em;
color: <<colour tag-foreground>>;
white-space: nowrap;
vertical-align: baseline;
background-color: <<colour tag-background>>;
border-radius: 1em;
}
.tc-sidebar-scrollable .tc-tag-label {
text-shadow: none;
}
.tc-untagged-separator {
width: 10em;
left: 0;
margin-left: 0;
border: 0;
height: 1px;
background: <<colour tab-divider>>;
}
button.tc-untagged-label {
background-color: <<colour untagged-background>>;
}
.tc-tag-label svg, .tc-tag-label img {
height: 1em;
width: 1em;
vertical-align: text-bottom;
}
.tc-edit-tags button.tc-remove-tag-button svg {
font-size: 0.7em;
vertical-align: middle;
}
.tc-tag-manager-table .tc-tag-label {
white-space: normal;
}
.tc-tag-manager-tag {
width: 100%;
}
button.tc-btn-invisible.tc-remove-tag-button {
outline: none;
}
/*
** Page layout
*/
.tc-topbar {
position: fixed;
z-index: 1200;
}
.tc-topbar-left {
left: 29px;
top: 5px;
}
.tc-topbar-right {
top: 5px;
right: 29px;
}
.tc-topbar button {
padding: 8px;
}
.tc-topbar svg {
fill: <<colour muted-foreground>>;
}
.tc-topbar button:hover svg {
fill: <<colour foreground>>;
}
.tc-sidebar-header {
color: <<colour sidebar-foreground>>;
fill: <<colour sidebar-foreground>>;
}
.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {
font-weight: 300;
}
.tc-sidebar-header .tc-sidebar-lists p {
margin-top: 3px;
margin-bottom: 3px;
}
.tc-sidebar-header .tc-missing-tiddler-label {
color: <<colour sidebar-foreground>>;
}
.tc-advanced-search input {
width: 60%;
}
.tc-search a svg {
width: 1.2em;
height: 1.2em;
vertical-align: middle;
}
.tc-page-controls {
margin-top: 14px;
font-size: 1.5em;
}
.tc-page-controls .tc-drop-down {
font-size: 1rem;
}
.tc-page-controls button {
margin-right: 0.5em;
}
.tc-page-controls a.tc-tiddlylink:hover {
text-decoration: none;
}
.tc-page-controls img {
width: 1em;
}
.tc-page-controls svg {
fill: <<colour sidebar-controls-foreground>>;
}
.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {
fill: <<colour sidebar-controls-foreground-hover>>;
}
.tc-menu-list-item {
white-space: nowrap;
}
.tc-menu-list-count {
font-weight: bold;
}
.tc-menu-list-subitem {
padding-left: 7px;
}
.tc-story-river {
position: relative;
}
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-sidebar-header {
padding: 14px;
min-height: 32px;
margin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
}
.tc-story-river {
position: relative;
padding: 0;
}
}
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-message-box {
margin: 21px -21px 21px -21px;
}
.tc-sidebar-scrollable {
position: fixed;
top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
left: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};
bottom: 0;
right: 0;
overflow-y: auto;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
margin: 0 0 0 -42px;
padding: 71px 0 28px 42px;
}
html[dir="rtl"] .tc-sidebar-scrollable {
left: auto;
right: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};
}
.tc-story-river {
position: relative;
left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};
top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
width: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};
padding: 42px 42px 42px 42px;
}
<<if-no-sidebar "
.tc-story-river {
width: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});
}
">>
}
@media print {
body.tc-body {
background-color: transparent;
}
.tc-sidebar-header, .tc-topbar {
display: none;
}
.tc-story-river {
margin: 0;
padding: 0;
}
.tc-story-river .tc-tiddler-frame {
margin: 0;
border: none;
padding: 0;
}
}
/*
** Tiddler styles
*/
.tc-tiddler-frame {
position: relative;
margin-bottom: 28px;
background-color: <<colour tiddler-background>>;
border: 1px solid <<colour tiddler-border>>;
}
{{$:/themes/tiddlywiki/vanilla/sticky}}
.tc-tiddler-info {
padding: 14px 42px 14px 42px;
background-color: <<colour tiddler-info-background>>;
border-top: 1px solid <<colour tiddler-info-border>>;
border-bottom: 1px solid <<colour tiddler-info-border>>;
}
.tc-tiddler-info p {
margin-top: 3px;
margin-bottom: 3px;
}
.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {
background-color: <<colour tiddler-info-tab-background>>;
border-bottom: 1px solid <<colour tiddler-info-tab-background>>;
}
.tc-view-field-table {
width: 100%;
}
.tc-view-field-name {
width: 1%; /* Makes this column be as narrow as possible */
text-align: right;
font-style: italic;
font-weight: 200;
}
.tc-view-field-value {
}
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-tiddler-frame {
padding: 14px 14px 14px 14px;
}
.tc-tiddler-info {
margin: 0 -14px 0 -14px;
}
}
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-tiddler-frame {
padding: 28px 42px 42px 42px;
width: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};
border-radius: 2px;
}
<<if-no-sidebar "
.tc-tiddler-frame {
width: 100%;
}
">>
.tc-tiddler-info {
margin: 0 -42px 0 -42px;
}
}
.tc-site-title,
.tc-titlebar {
font-weight: 300;
font-size: 2.35em;
line-height: 1.2em;
color: <<colour tiddler-title-foreground>>;
margin: 0;
}
.tc-site-title {
color: <<colour site-title-foreground>>;
}
.tc-tiddler-title-icon {
vertical-align: middle;
}
.tc-system-title-prefix {
color: <<colour muted-foreground>>;
}
.tc-titlebar h2 {
font-size: 1em;
display: inline;
}
.tc-titlebar img {
height: 1em;
}
.tc-subtitle {
font-size: 0.9em;
color: <<colour tiddler-subtitle-foreground>>;
font-weight: 300;
}
.tc-tiddler-missing .tc-title {
font-style: italic;
font-weight: normal;
}
.tc-tiddler-frame .tc-tiddler-controls {
float: right;
}
.tc-tiddler-controls .tc-drop-down {
font-size: 0.6em;
}
.tc-tiddler-controls .tc-drop-down .tc-drop-down {
font-size: 1em;
}
.tc-tiddler-controls > span > button,
.tc-tiddler-controls > span > span > button,
.tc-tiddler-controls > span > span > span > button {
vertical-align: baseline;
margin-left:5px;
}
.tc-tiddler-controls button svg, .tc-tiddler-controls button img,
.tc-search button svg, .tc-search a svg {
fill: <<colour tiddler-controls-foreground>>;
}
.tc-tiddler-controls button svg, .tc-tiddler-controls button img {
height: 0.75em;
}
.tc-search button svg, .tc-search a svg {
height: 1.2em;
width: 1.2em;
margin: 0 0.25em;
}
.tc-tiddler-controls button.tc-selected svg,
.tc-page-controls button.tc-selected svg {
fill: <<colour tiddler-controls-foreground-selected>>;
}
.tc-tiddler-controls button.tc-btn-invisible:hover svg,
.tc-search button:hover svg, .tc-search a:hover svg {
fill: <<colour tiddler-controls-foreground-hover>>;
}
@media print {
.tc-tiddler-controls {
display: none;
}
}
.tc-tiddler-help { /* Help prompts within tiddler template */
color: <<colour muted-foreground>>;
margin-top: 14px;
}
.tc-tiddler-help a.tc-tiddlylink {
color: <<colour very-muted-foreground>>;
}
.tc-tiddler-frame .tc-edit-texteditor {
width: 100%;
margin: 4px 0 4px 0;
}
.tc-tiddler-frame input.tc-edit-texteditor,
.tc-tiddler-frame textarea.tc-edit-texteditor,
.tc-tiddler-frame iframe.tc-edit-texteditor {
padding: 3px 3px 3px 3px;
border: 1px solid <<colour tiddler-editor-border>>;
background-color: <<colour tiddler-editor-background>>;
line-height: 1.3em;
-webkit-appearance: none;
font-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};
}
.tc-tiddler-frame .tc-binary-warning {
width: 100%;
height: 5em;
text-align: center;
padding: 3em 3em 6em 3em;
background: <<colour alert-background>>;
border: 1px solid <<colour alert-border>>;
}
canvas.tc-edit-bitmapeditor {
border: 6px solid <<colour tiddler-editor-border-image>>;
cursor: crosshair;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
margin-top: 6px;
margin-bottom: 6px;
}
.tc-edit-bitmapeditor-width {
display: block;
}
.tc-edit-bitmapeditor-height {
display: block;
}
.tc-tiddler-body {
clear: both;
}
.tc-tiddler-frame .tc-tiddler-body {
font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};
line-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};
}
.tc-titlebar, .tc-tiddler-edit-title {
overflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */
}
html body.tc-body.tc-single-tiddler-window {
margin: 1em;
background: <<colour tiddler-background>>;
}
.tc-single-tiddler-window img,
.tc-single-tiddler-window svg,
.tc-single-tiddler-window canvas,
.tc-single-tiddler-window embed,
.tc-single-tiddler-window iframe {
max-width: 100%;
}
/*
** Editor
*/
.tc-editor-toolbar {
margin-top: 8px;
}
.tc-editor-toolbar button {
vertical-align: middle;
background-color: <<colour tiddler-controls-foreground>>;
color: <<colour tiddler-controls-foreground-selected>>;
fill: <<colour tiddler-controls-foreground-selected>>;
border-radius: 4px;
padding: 3px;
margin: 2px 0 2px 4px;
}
.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {
margin-left: 1px;
width: 1em;
border-radius: 8px;
}
.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {
margin-left: 11px;
}
.tc-editor-toolbar button.tc-selected {
background-color: <<colour primary>>;
}
.tc-editor-toolbar button svg {
width: 1.6em;
height: 1.2em;
}
.tc-editor-toolbar button:hover {
background-color: <<colour tiddler-controls-foreground-selected>>;
fill: <<colour background>>;
color: <<colour background>>;
}
.tc-editor-toolbar .tc-text-editor-toolbar-more {
white-space: normal;
}
.tc-editor-toolbar .tc-text-editor-toolbar-more button {
display: inline-block;
padding: 3px;
width: auto;
}
.tc-editor-toolbar .tc-search-results {
padding: 0;
}
/*
** Adjustments for fluid-fixed mode
*/
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
<<if-fluid-fixed text:"""
.tc-story-river {
padding-right: 0;
position: relative;
width: auto;
left: 0;
margin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};
margin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};
}
.tc-tiddler-frame {
width: 100%;
}
.tc-sidebar-scrollable {
left: auto;
bottom: 0;
right: 0;
width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};
}
body.tc-body .tc-storyview-zoomin-tiddler {
width: 100%;
width: calc(100% - 42px);
}
""" hiddenSidebarText:"""
.tc-story-river {
padding-right: 3em;
margin-right: 0;
}
body.tc-body .tc-storyview-zoomin-tiddler {
width: 100%;
width: calc(100% - 84px);
}
""">>
}
/*
** Toolbar buttons
*/
.tc-page-controls svg.tc-image-new-button {
fill: <<colour toolbar-new-button>>;
}
.tc-page-controls svg.tc-image-options-button {
fill: <<colour toolbar-options-button>>;
}
.tc-page-controls svg.tc-image-save-button {
fill: <<colour toolbar-save-button>>;
}
.tc-tiddler-controls button svg.tc-image-info-button {
fill: <<colour toolbar-info-button>>;
}
.tc-tiddler-controls button svg.tc-image-edit-button {
fill: <<colour toolbar-edit-button>>;
}
.tc-tiddler-controls button svg.tc-image-close-button {
fill: <<colour toolbar-close-button>>;
}
.tc-tiddler-controls button svg.tc-image-delete-button {
fill: <<colour toolbar-delete-button>>;
}
.tc-tiddler-controls button svg.tc-image-cancel-button {
fill: <<colour toolbar-cancel-button>>;
}
.tc-tiddler-controls button svg.tc-image-done-button {
fill: <<colour toolbar-done-button>>;
}
/*
** Tiddler edit mode
*/
.tc-tiddler-edit-frame em.tc-edit {
color: <<colour muted-foreground>>;
font-style: normal;
}
.tc-edit-type-dropdown a.tc-tiddlylink-missing {
font-style: normal;
}
.tc-edit-tags {
border: 1px solid <<colour tiddler-editor-border>>;
padding: 4px 8px 4px 8px;
}
.tc-edit-add-tag {
display: inline-block;
}
.tc-edit-add-tag .tc-add-tag-name input {
width: 50%;
}
.tc-edit-add-tag .tc-keyboard {
display:inline;
}
.tc-edit-tags .tc-tag-label {
display: inline-block;
}
.tc-edit-tags-list {
margin: 14px 0 14px 0;
}
.tc-remove-tag-button {
padding-left: 4px;
}
.tc-tiddler-preview {
overflow: auto;
}
.tc-tiddler-preview-preview {
float: right;
width: 49%;
border: 1px solid <<colour tiddler-editor-border>>;
margin: 4px 0 3px 3px;
padding: 3px 3px 3px 3px;
}
<<if-editor-height-fixed then:"""
.tc-tiddler-preview-preview {
overflow-y: scroll;
height: {{$:/config/TextEditor/EditorHeight/Height}};
}
""">>
.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {
width: 49%;
}
.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {
max-width: 49%;
}
.tc-edit-fields {
width: 100%;
}
.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {
border: none;
padding: 4px;
}
.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {
background-color: <<colour tiddler-editor-fields-odd>>;
}
.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {
background-color: <<colour tiddler-editor-fields-even>>;
}
.tc-edit-field-name {
text-align: right;
}
.tc-edit-field-value input {
width: 100%;
}
.tc-edit-field-remove {
}
.tc-edit-field-remove svg {
height: 1em;
width: 1em;
fill: <<colour muted-foreground>>;
vertical-align: middle;
}
.tc-edit-field-add-name {
display: inline-block;
width: 15%;
}
.tc-edit-field-add-value {
display: inline-block;
width: 40%;
}
.tc-edit-field-add-button {
display: inline-block;
width: 10%;
}
/*
** Storyview Classes
*/
.tc-storyview-zoomin-tiddler {
position: absolute;
display: block;
width: 100%;
}
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-storyview-zoomin-tiddler {
width: calc(100% - 84px);
}
}
/*
** Dropdowns
*/
.tc-btn-dropdown {
text-align: left;
}
.tc-btn-dropdown svg, .tc-btn-dropdown img {
height: 1em;
width: 1em;
fill: <<colour muted-foreground>>;
}
.tc-drop-down-wrapper {
position: relative;
}
.tc-drop-down {
//min-width: 380px;
min-width: 50px;
border: 1px solid <<colour dropdown-border>>;
background-color: <<colour dropdown-background>>;
padding: 7px 0 7px 0;
//padding: 7px;
margin: 4px 0 0 0;
white-space: nowrap;
text-shadow: none;
line-height: 1.4;
}
.tc-drop-down .tc-drop-down {
margin-left: 14px;
}
.tc-drop-down button svg, .tc-drop-down a svg {
fill: <<colour foreground>>;
}
.tc-drop-down button.tc-btn-invisible:hover svg {
fill: <<colour foreground>>;
}
.tc-drop-down p {
padding: 0 14px 0 14px;
}
.tc-drop-down svg {
width: 1em;
height: 1em;
}
.tc-drop-down img {
width: 1em;
}
.tc-drop-down a, .tc-drop-down button {
display: block;
padding: 0 14px 0 14px;
width: 100%;
text-align: left;
color: <<colour foreground>>;
line-height: 1.4;
}
.tc-drop-down .tc-tab-set .tc-tab-buttons button {
display: inline-block;
width: auto;
margin-bottom: 0px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.tc-drop-down .tc-prompt {
padding: 0 14px;
}
.tc-drop-down .tc-chooser {
border: none;
}
.tc-drop-down .tc-chooser .tc-swatches-horiz {
font-size: 0.4em;
padding-left: 1.2em;
}
.tc-drop-down .tc-file-input-wrapper {
width: 100%;
}
.tc-drop-down .tc-file-input-wrapper button {
color: <<colour foreground>>;
}
.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {
color: <<colour tiddler-link-background>>;
background-color: <<colour tiddler-link-foreground>>;
text-decoration: none;
}
.tc-drop-down .tc-tab-buttons button {
background-color: <<colour dropdown-tab-background>>;
}
.tc-drop-down .tc-tab-buttons button.tc-tab-selected {
background-color: <<colour dropdown-tab-background-selected>>;
border-bottom: 1px solid <<colour dropdown-tab-background-selected>>;
}
.tc-drop-down-bullet {
display: inline-block;
width: 0.5em;
}
.tc-drop-down .tc-tab-contents a {
padding: 0 0.5em 0 0.5em;
}
.tc-block-dropdown-wrapper {
position: relative;
}
.tc-block-dropdown {
position: absolute;
min-width: 220px;
border: 1px solid <<colour dropdown-border>>;
background-color: <<colour dropdown-background>>;
padding: 7px 0;
margin: 4px 0 0 0;
white-space: nowrap;
z-index: 1000;
text-shadow: none;
}
.tc-block-dropdown.tc-search-drop-down {
margin-left: -12px;
}
.tc-block-dropdown a {
display: block;
padding: 4px 14px 4px 14px;
}
.tc-block-dropdown.tc-search-drop-down a {
display: block;
padding: 0px 10px 0px 10px;
}
.tc-drop-down .tc-dropdown-item-plain,
.tc-block-dropdown .tc-dropdown-item-plain {
padding: 4px 14px 4px 7px;
}
.tc-drop-down .tc-dropdown-item,
.tc-block-dropdown .tc-dropdown-item {
padding: 4px 14px 4px 7px;
color: <<colour muted-foreground>>;
}
.tc-block-dropdown a:hover {
color: <<colour tiddler-link-background>>;
background-color: <<colour tiddler-link-foreground>>;
text-decoration: none;
}
.tc-search-results {
padding: 0 7px 0 7px;
}
.tc-image-chooser, .tc-colour-chooser {
white-space: normal;
}
.tc-image-chooser a,
.tc-colour-chooser a {
display: inline-block;
vertical-align: top;
text-align: center;
position: relative;
}
.tc-image-chooser a {
border: 1px solid <<colour muted-foreground>>;
padding: 2px;
margin: 2px;
width: 4em;
height: 4em;
}
.tc-colour-chooser a {
padding: 3px;
width: 2em;
height: 2em;
vertical-align: middle;
}
.tc-image-chooser a:hover,
.tc-colour-chooser a:hover {
background: <<colour primary>>;
padding: 0px;
border: 3px solid <<colour primary>>;
}
.tc-image-chooser a svg,
.tc-image-chooser a img {
display: inline-block;
width: auto;
height: auto;
max-width: 3.5em;
max-height: 3.5em;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
}
/*
** Modals
*/
.tc-modal-wrapper {
position: fixed;
overflow: auto;
overflow-y: scroll;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 900;
}
.tc-modal-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1000;
background-color: <<colour modal-backdrop>>;
}
.tc-modal {
z-index: 1100;
background-color: <<colour modal-background>>;
border: 1px solid <<colour modal-border>>;
}
@media (max-width: 55em) {
.tc-modal {
position: fixed;
top: 1em;
left: 1em;
right: 1em;
}
.tc-modal-body {
overflow-y: auto;
max-height: 400px;
max-height: 60vh;
}
}
@media (min-width: 55em) {
.tc-modal {
position: fixed;
top: 2em;
left: 25%;
width: 50%;
}
.tc-modal-body {
overflow-y: auto;
max-height: 400px;
max-height: 60vh;
}
}
.tc-modal-header {
padding: 9px 15px;
border-bottom: 1px solid <<colour modal-header-border>>;
}
.tc-modal-header h3 {
margin: 0;
line-height: 30px;
}
.tc-modal-header img, .tc-modal-header svg {
width: 1em;
height: 1em;
}
.tc-modal-body {
padding: 15px;
}
.tc-modal-footer {
padding: 14px 15px 15px;
margin-bottom: 0;
text-align: right;
background-color: <<colour modal-footer-background>>;
border-top: 1px solid <<colour modal-footer-border>>;
}
/*
** Notifications
*/
.tc-notification {
position: fixed;
top: 14px;
right: 42px;
z-index: 1300;
max-width: 280px;
padding: 0 14px 0 14px;
background-color: <<colour notification-background>>;
border: 1px solid <<colour notification-border>>;
}
/*
** Tabs
*/
.tc-tab-set.tc-vertical {
display: -webkit-flex;
display: flex;
}
.tc-tab-buttons {
font-size: 0.85em;
padding-top: 1em;
margin-bottom: -2px;
}
.tc-tab-buttons.tc-vertical {
z-index: 100;
display: block;
padding-top: 14px;
vertical-align: top;
text-align: right;
margin-bottom: inherit;
margin-right: -1px;
max-width: 33%;
-webkit-flex: 0 0 auto;
flex: 0 0 auto;
}
.tc-tab-buttons button.tc-tab-selected {
color: <<colour tab-foreground-selected>>;
background-color: <<colour tab-background-selected>>;
border-left: 1px solid <<colour tab-border-selected>>;
border-top: 1px solid <<colour tab-border-selected>>;
border-right: 1px solid <<colour tab-border-selected>>;
}
.tc-tab-buttons button {
color: <<colour tab-foreground>>;
padding: 3px 5px 3px 5px;
margin-right: 0.3em;
font-weight: 300;
border: none;
background: inherit;
background-color: <<colour tab-background>>;
border-left: 1px solid <<colour tab-border>>;
border-top: 1px solid <<colour tab-border>>;
border-right: 1px solid <<colour tab-border>>;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.tc-tab-buttons.tc-vertical button {
display: block;
width: 100%;
margin-top: 3px;
margin-right: 0;
text-align: right;
background-color: <<colour tab-background>>;
border-left: 1px solid <<colour tab-border>>;
border-bottom: 1px solid <<colour tab-border>>;
border-right: none;
border-top-left-radius: 2px;
border-bottom-left-radius: 2px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.tc-tab-buttons.tc-vertical button.tc-tab-selected {
background-color: <<colour tab-background-selected>>;
border-right: 1px solid <<colour tab-background-selected>>;
}
.tc-tab-divider {
border-top: 1px solid <<colour tab-divider>>;
}
.tc-tab-divider.tc-vertical {
display: none;
}
.tc-tab-content {
margin-top: 14px;
}
.tc-tab-content.tc-vertical {
word-break: break-word;
display: inline-block;
vertical-align: top;
padding-top: 0;
padding-left: 14px;
border-left: 1px solid <<colour tab-border>>;
-webkit-flex: 1 0 70%;
flex: 1 0 70%;
}
.tc-sidebar-lists .tc-tab-buttons {
margin-bottom: -1px;
}
.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {
background-color: <<colour sidebar-tab-background-selected>>;
color: <<colour sidebar-tab-foreground-selected>>;
border-left: 1px solid <<colour sidebar-tab-border-selected>>;
border-top: 1px solid <<colour sidebar-tab-border-selected>>;
border-right: 1px solid <<colour sidebar-tab-border-selected>>;
}
.tc-sidebar-lists .tc-tab-buttons button {
background-color: <<colour sidebar-tab-background>>;
color: <<colour sidebar-tab-foreground>>;
border-left: 1px solid <<colour sidebar-tab-border>>;
border-top: 1px solid <<colour sidebar-tab-border>>;
border-right: 1px solid <<colour sidebar-tab-border>>;
}
.tc-sidebar-lists .tc-tab-divider {
border-top: 1px solid <<colour sidebar-tab-divider>>;
}
.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {
display: block;
width: 100%;
background-color: <<colour sidebar-tab-background>>;
border-top: none;
border-left: none;
border-bottom: none;
border-right: 1px solid #ccc;
margin-bottom: inherit;
}
.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {
background-color: <<colour sidebar-tab-background-selected>>;
border: none;
}
/*
** Manager
*/
.tc-manager-wrapper {
}
.tc-manager-controls {
}
.tc-manager-control {
margin: 0.5em 0;
}
.tc-manager-list {
width: 100%;
border-top: 1px solid <<colour muted-foreground>>;
border-left: 1px solid <<colour muted-foreground>>;
border-right: 1px solid <<colour muted-foreground>>;
}
.tc-manager-list-item {
}
.tc-manager-list-item-heading {
display: block;
width: 100%;
text-align: left;
border-bottom: 1px solid <<colour muted-foreground>>;
padding: 3px;
}
.tc-manager-list-item-heading-selected {
font-weight: bold;
color: <<colour background>>;
fill: <<colour background>>;
background-color: <<colour foreground>>;
}
.tc-manager-list-item-heading:hover {
background: <<colour primary>>;
color: <<colour background>>;
}
.tc-manager-list-item-content {
display: flex;
}
.tc-manager-list-item-content-sidebar {
flex: 1 0;
background: <<colour tiddler-editor-background>>;
border-right: 0.5em solid <<colour muted-foreground>>;
border-bottom: 0.5em solid <<colour muted-foreground>>;
white-space: nowrap;
}
.tc-manager-list-item-content-item-heading {
display: block;
width: 100%;
text-align: left;
background: <<colour muted-foreground>>;
text-transform: uppercase;
font-size: 0.6em;
font-weight: bold;
padding: 0.5em 0 0.5em 0;
}
.tc-manager-list-item-content-item-body {
padding: 0 0.5em 0 0.5em;
}
.tc-manager-list-item-content-item-body > pre {
margin: 0.5em 0 0.5em 0;
border: none;
background: inherit;
}
.tc-manager-list-item-content-tiddler {
flex: 3 1;
border-left: 0.5em solid <<colour muted-foreground>>;
border-right: 0.5em solid <<colour muted-foreground>>;
border-bottom: 0.5em solid <<colour muted-foreground>>;
}
.tc-manager-list-item-content-item-body > table {
border: none;
padding: 0;
margin: 0;
}
.tc-manager-list-item-content-item-body > table td {
border: none;
}
.tc-manager-icon-editor > button {
width: 100%;
}
.tc-manager-icon-editor > button > svg,
.tc-manager-icon-editor > button > button {
width: 100%;
height: auto;
}
/*
** Alerts
*/
.tc-alerts {
position: fixed;
top: 0;
right: 0;
max-width: 500px;
z-index: 20000;
}
.tc-alert {
position: relative;
margin: 28px;
padding: 14px 14px 14px 14px;
border: 2px solid <<colour alert-border>>;
background-color: <<colour alert-background>>;
}
.tc-alert-toolbar {
position: absolute;
top: 14px;
right: 14px;
}
.tc-alert-toolbar svg {
fill: <<colour alert-muted-foreground>>;
}
.tc-alert-subtitle {
color: <<colour alert-muted-foreground>>;
font-weight: bold;
}
.tc-alert-highlight {
color: <<colour alert-highlight>>;
}
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-static-alert {
position: relative;
}
.tc-static-alert-inner {
position: absolute;
z-index: 100;
}
}
.tc-static-alert-inner {
padding: 0 2px 2px 42px;
color: <<colour static-alert-foreground>>;
}
/*
** Floating drafts list
*/
.tc-drafts-list {
z-index: 2000;
position: fixed;
font-size: 0.8em;
left: 0;
bottom: 0;
}
.tc-drafts-list a {
margin: 0 0.5em;
padding: 4px 4px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border: 1px solid <<colour background>>;
border-bottom-none;
background: <<colour dirty-indicator>>;
color: <<colour background>>;
fill: <<colour background>>;
}
.tc-drafts-list a:hover {
text-decoration: none;
background: <<colour foreground>>;
color: <<colour background>>;
fill: <<colour background>>;
}
.tc-drafts-list a svg {
width: 1em;
height: 1em;
vertical-align: text-bottom;
}
/*
** Control panel
*/
.tc-control-panel td {
padding: 4px;
}
.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {
width: 100%;
}
.tc-plugin-info {
display: block;
border: 1px solid <<colour muted-foreground>>;
background-colour: <<colour background>>;
margin: 0.5em 0 0.5em 0;
padding: 4px;
}
.tc-plugin-info-disabled {
background: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);
background: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);
}
.tc-plugin-info-disabled:hover {
background: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);
background: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);
}
a.tc-tiddlylink.tc-plugin-info:hover {
text-decoration: none;
background-color: <<colour primary>>;
color: <<colour background>>;
fill: <<colour foreground>>;
}
a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {
fill: <<colour foreground>>;
}
.tc-plugin-info-chunk {
display: inline-block;
vertical-align: middle;
}
.tc-plugin-info-chunk h1 {
font-size: 1em;
margin: 2px 0 2px 0;
}
.tc-plugin-info-chunk h2 {
font-size: 0.8em;
margin: 2px 0 2px 0;
}
.tc-plugin-info-chunk div {
font-size: 0.7em;
margin: 2px 0 2px 0;
}
.tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg {
width: 2em;
height: 2em;
fill: <<colour foreground>>;
}
.tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg {
width: 2em;
height: 2em;
fill: <<colour muted-foreground>>;
}
.tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg {
width: 1em;
height: 1em;
}
.tc-plugin-info-dropdown {
border: 1px solid <<colour muted-foreground>>;
margin-top: -8px;
}
.tc-plugin-info-dropdown-message {
background: <<colour message-background>>;
padding: 0.5em 1em 0.5em 1em;
font-weight: bold;
font-size: 0.8em;
}
.tc-plugin-info-dropdown-body {
padding: 1em 1em 1em 1em;
}
.tc-check-list {
line-height: 2em;
}
.tc-check-list .tc-image-button {
height: 1.5em;
}
/*
** Message boxes
*/
.tc-message-box {
border: 1px solid <<colour message-border>>;
background: <<colour message-background>>;
padding: 0px 21px 0px 21px;
font-size: 12px;
line-height: 18px;
color: <<colour message-foreground>>;
}
.tc-message-box svg {
width: 1em;
height: 1em;
vertical-align: text-bottom;
}
/*
** Pictures
*/
.tc-bordered-image {
border: 1px solid <<colour muted-foreground>>;
padding: 5px;
margin: 5px;
}
/*
** Floats
*/
.tc-float-right {
float: right;
}
/*
** Chooser
*/
.tc-chooser {
border-right: 1px solid <<colour table-header-background>>;
border-left: 1px solid <<colour table-header-background>>;
}
.tc-chooser-item {
border-bottom: 1px solid <<colour table-header-background>>;
border-top: 1px solid <<colour table-header-background>>;
padding: 2px 4px 2px 14px;
}
.tc-drop-down .tc-chooser-item {
padding: 2px;
}
.tc-chosen,
.tc-chooser-item:hover {
background-color: <<colour table-header-background>>;
border-color: <<colour table-footer-background>>;
}
.tc-chosen .tc-tiddlylink {
cursor:default;
}
.tc-chooser-item .tc-tiddlylink {
display: block;
text-decoration: none;
background-color: transparent;
}
.tc-chooser-item:hover .tc-tiddlylink:hover {
text-decoration: none;
}
.tc-drop-down .tc-chosen .tc-tiddlylink,
.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {
color: <<colour foreground>>;
}
.tc-chosen > .tc-tiddlylink:before {
margin-left: -10px;
position: relative;
content: "» ";
}
.tc-chooser-item svg,
.tc-chooser-item img{
width: 1em;
height: 1em;
vertical-align: middle;
}
.tc-language-chooser .tc-image-button img {
width: 2em;
vertical-align: -0.15em;
}
/*
** Palette swatches
*/
.tc-swatches-horiz {
}
.tc-swatches-horiz .tc-swatch {
display: inline-block;
}
.tc-swatch {
width: 2em;
height: 2em;
margin: 0.4em;
border: 1px solid #888;
}
input.tc-palette-manager-colour-input {
width: 100%;
padding: 0;
}
/*
** Table of contents
*/
.tc-sidebar-lists .tc-table-of-contents {
white-space: nowrap;
}
.tc-table-of-contents button {
color: <<colour sidebar-foreground>>;
}
.tc-table-of-contents svg {
width: 0.7em;
height: 0.7em;
vertical-align: middle;
fill: <<colour sidebar-foreground>>;
}
.tc-table-of-contents ol {
list-style-type: none;
padding-left: 0;
}
.tc-table-of-contents ol ol {
padding-left: 1em;
}
.tc-table-of-contents li {
font-size: 1.0em;
font-weight: bold;
}
.tc-table-of-contents li a {
font-weight: bold;
}
.tc-table-of-contents li li {
font-size: 0.95em;
font-weight: normal;
line-height: 1.4;
}
.tc-table-of-contents li li a {
font-weight: normal;
}
.tc-table-of-contents li li li {
font-size: 0.95em;
font-weight: 200;
line-height: 1.5;
}
.tc-table-of-contents li li li li {
font-size: 0.95em;
font-weight: 200;
}
.tc-tabbed-table-of-contents {
display: -webkit-flex;
display: flex;
}
.tc-tabbed-table-of-contents .tc-table-of-contents {
z-index: 100;
display: inline-block;
padding-left: 1em;
max-width: 50%;
-webkit-flex: 0 0 auto;
flex: 0 0 auto;
background: <<colour tab-background>>;
border-left: 1px solid <<colour tab-border>>;
border-top: 1px solid <<colour tab-border>>;
border-bottom: 1px solid <<colour tab-border>>;
}
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {
display: block;
padding: 0.12em 1em 0.12em 0.25em;
}
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {
border-top: 1px solid <<colour tab-background>>;
border-left: 1px solid <<colour tab-background>>;
border-bottom: 1px solid <<colour tab-background>>;
}
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {
text-decoration: none;
border-top: 1px solid <<colour tab-border>>;
border-left: 1px solid <<colour tab-border>>;
border-bottom: 1px solid <<colour tab-border>>;
background: <<colour tab-border>>;
}
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {
border-top: 1px solid <<colour tab-border>>;
border-left: 1px solid <<colour tab-border>>;
border-bottom: 1px solid <<colour tab-border>>;
background: <<colour background>>;
margin-right: -1px;
}
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {
text-decoration: none;
}
.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {
display: inline-block;
vertical-align: top;
padding-left: 1.5em;
padding-right: 1.5em;
border: 1px solid <<colour tab-border>>;
-webkit-flex: 1 0 50%;
flex: 1 0 50%;
}
/*
** Dirty indicator
*/
body.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {
fill: <<colour dirty-indicator>>;
color: <<colour dirty-indicator>>;
}
/*
** File inputs
*/
.tc-file-input-wrapper {
position: relative;
overflow: hidden;
display: inline-block;
vertical-align: middle;
}
.tc-file-input-wrapper input[type=file] {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-size: 999px;
max-width: 100%;
max-height: 100%;
filter: alpha(opacity=0);
opacity: 0;
outline: none;
background: white;
cursor: pointer;
display: inline-block;
}
/*
** Thumbnail macros
*/
.tc-thumbnail-wrapper {
position: relative;
display: inline-block;
margin: 6px;
vertical-align: top;
}
.tc-thumbnail-right-wrapper {
float:right;
margin: 0.5em 0 0.5em 0.5em;
}
.tc-thumbnail-image {
text-align: center;
overflow: hidden;
border-radius: 3px;
}
.tc-thumbnail-image svg,
.tc-thumbnail-image img {
filter: alpha(opacity=1);
opacity: 1;
min-width: 100%;
min-height: 100%;
max-width: 100%;
}
.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,
.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {
filter: alpha(opacity=0.8);
opacity: 0.8;
}
.tc-thumbnail-background {
position: absolute;
border-radius: 3px;
}
.tc-thumbnail-icon svg,
.tc-thumbnail-icon img {
width: 3em;
height: 3em;
<<filter "drop-shadow(2px 2px 4px rgba(0,0,0,0.3))">>
}
.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,
.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {
fill: #fff;
<<filter "drop-shadow(3px 3px 4px rgba(0,0,0,0.6))">>
}
.tc-thumbnail-icon {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: -webkit-flex;
-webkit-align-items: center;
-webkit-justify-content: center;
display: flex;
align-items: center;
justify-content: center;
}
.tc-thumbnail-caption {
position: absolute;
background-color: #777;
color: #fff;
text-align: center;
bottom: 0;
width: 100%;
filter: alpha(opacity=0.9);
opacity: 0.9;
line-height: 1.4;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
}
.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {
filter: alpha(opacity=1);
opacity: 1;
}
/*
** Diffs
*/
.tc-diff-equal {
background-color: <<colour diff-equal-background>>;
color: <<colour diff-equal-foreground>>;
}
.tc-diff-insert {
background-color: <<colour diff-insert-background>>;
color: <<colour diff-insert-foreground>>;
}
.tc-diff-delete {
background-color: <<colour diff-delete-background>>;
color: <<colour diff-delete-foreground>>;
}
.tc-diff-invisible {
background-color: <<colour diff-invisible-background>>;
color: <<colour diff-invisible-foreground>>;
}
.tc-diff-tiddlers th {
text-align: right;
background: <<colour background>>;
font-weight: normal;
font-style: italic;
}
.tc-diff-tiddlers pre {
margin: 0;
padding: 0;
border: none;
background: none;
}
/*
** Errors
*/
.tc-error {
background: #f00;
color: #fff;
}
/*
** Tree macro
*/
.tc-tree div {
padding-left: 14px;
}
.tc-tree ol {
list-style-type: none;
padding-left: 0;
margin-top: 0;
}
.tc-tree ol ol {
padding-left: 1em;
}
.tc-tree button {
color: #acacac;
}
.tc-tree svg {
fill: #acacac;
}
.tc-tree span svg {
width: 1em;
height: 1em;
vertical-align: baseline;
}
.tc-tree li span {
color: lightgray;
}
select {
color: <<colour select-tag-foreground>>;
background: <<colour select-tag-background>>;
}
<$reveal state="$:/themes/tiddlywiki/vanilla/options/stickytitles" type="match" text="yes">
``
.tc-tiddler-title {
position: -webkit-sticky;
position: -moz-sticky;
position: -o-sticky;
position: -ms-sticky;
position: sticky;
top: 28px;
background: ``<<colour tiddler-background>>``;
z-index: 500;
}
``
<$list filter="[range[100]]">
`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {
z-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;
}
`
</$list>
</$reveal>
''Tooltip: ''<$edit-text tag="input" tiddler="$:/ToolTipTemp" default="" focus="true"/>
<$button tag="a">
<$action-sendmessage $message="tm-add-field"
$name="tooltip"
$value={{$:/ToolTipTemp}}/>
<$action-deletetiddler
$tiddler=<<dropdown-state>>
/>
<$action-deletetiddler
$tiddler="$:/ToolTipTemp"
/>
Apply
</$button>
\define toolbar-button-category-inner()
<$button tag="a">
<$action-sendmessage $message="tm-add-field"
$name="category"
$value="$(snippetTitle)$"/>
<$action-deletetiddler
$tiddler=<<dropdown-state>>
/>
<$view tiddler=<<snippetTitle>> field="title" mode="inline"/>
</$button>
\end
<$list filter="[each[category]get[category]sort[]]" variable="snippetTitle">
<<toolbar-button-category-inner>>
</$list>
\define toolbar-button-tier-inner()
<$button tag="a">
<$action-sendmessage $message="tm-add-field"
$name="tier"
$value="$(snippetTitle)$"/>
<$action-deletetiddler
$tiddler=<<dropdown-state>>
/>
<$view tiddler=<<snippetTitle>> field="title" mode="inline"/>
</$button>
\end
<$list filter="[range[6]]" variable="snippetTitle">
<<toolbar-button-tier-inner>>
</$list>
1: cluster of small snakes
2: cluster of small snakes
3: cluster of small snakes
4: cluster of small snakes
5: single large snake
6: single large snake
7: single large snake
8: single large snake
9: single large snake
10: scaly humanoid arm with snake head for a hand
1: a large snake tail
2: a large snake tail
3: a large snake tail
4: a large snake tail
5: a large snake tail
6: a large snake tail
7: a large snake tail
8: multiple small snake tails
9: multiple small snake tails
10: multiple small snake tails
11: scaly legs and a large snake tail
12: scaly legs and a large snake tail
13: scaly legs and a large snake tail
14: scaly legs and a large snake tail
15: scaly legs and a large snake tail
16: scaly legs and a large snake tail
17: scaly legs and multiple small snake tails
18: scaly legs and multiple small snake tails
19: scaly legs and multiple small snake tails
20: scaly legs and multiple small snake tails
1: blue
2: brown
3: green
4: red
5: tan
6: yellow
1: broad and rounded
2: broad and rounded
3: broad and rounded
4: broad and rounded
5: broad and rounded
6: flattened
7: flattened
8: flattened
9: flattened
10: hooded
11: hooded
12: slender
13: slender
14: slender
15: slender
16: triangular
17: triangular
18: triangular
19: triangular
20: triangular
1: dark brown
2: dark brown
3: dark brown
4: dark brown
5: green-brown
6: light brown
7: light brown
8: light brown
9: light brown
10: medium brown
11: medium brown
12: medium brown
13: medium brown
14: medium brown
15: medium brown
16: pale brown
17: red-brown
18: red-brown
19: yellow-brown
20: yellow-brown
1: black
2: black
3: black
4: black
5: black
6: black
7: black and brown
8: black and brown
9: black and brown
10: black and brown
11: black and brown
12: black and brown
13: black and green
14: black and green
15: black and green
16: black and green
17: black and green
18: black and green
19: black and red
20: black and red
21: black and red
22: black and red
23: black and red
24: black and white
25: black and white
26: black and white
27: black and yellow
28: black and yellow
29: black and yellow
30: black and yellow
31: black, gold, and red
32: black, gold, and red
33: black, gold, and red
34: black, gold, and red
35: black, gold, and red
36: black, gold, and red
37: black, red, and white
38: black, red, and white
39: black, red, and white
40: black, red, and white
41: black, red, and white
42: black, red, and white
43: blue
44: blue
45: blue
46: blue and black
47: blue and black
48: blue and black
49: blue and gray
50: blue and gray
51: blue and gray
52: blue and yellow
53: blue and yellow
54: blue and yellow
55: brown
56: brown
57: brown
58: brown
59: brown
60: brown
61: brown and green
62: brown and green
63: brown and green
64: brown and green
65: brown and green
66: brown and green
67: green
68: green
69: green
70: green
71: green
72: green
73: green
74: green and tan
75: green and tan
76: green and tan
77: green and tan
78: green and tan
79: green and tan
80: green and white
81: green and white
82: green and white
83: green and white
84: green and white
85: green and yellow
86: green and yellow
87: green and yellow
88: green and yellow
89: green and yellow
90: green and yellow
91: red and tan
92: red and tan
93: red and tan
94: red and tan
95: red and tan
96: red and tan
97: white
98: white
99: white
100: white
1: mottled
2: blotched
3: reticulated
4: speckled
5: striped
1: a black
2: a blue
3: an orange
4: a pale
5: a red
6: a red
Aashta is one of the [[three clans|Tharashk triumvirate]] of the [[dragonmarked house]] [[Tharashk]]. Aashta and the lesser clans bound to them have ties to the [[Cults of the Dragon Below]], clinging to the old faiths of the [[Shadow Marches]]. Every sect is different, and
many are not actually dangerous—but they can certainly be disturbing to outside observers. Some among them do hope to use the resources of the house to call
up the ancient darkness from the world below.
!! Members of the Aashta clan
<<list-links-article "[tag{!!title}category[person]sort[title]]">>
Aasimar are humanoids with an angelic spark in their souls, which grants them supernatural power. They are a people of otherworldly visages, often with luminous features that reveal their [[celestial]] heritage.
Divine magic is usually the product of deep faith and unyielding
conviction, but an aasimar has a direct tie to a source of divine
power and receives guidance from a celestial entity. Usually,
these gifts aren't hereditary, and you can't necessarily identify
an aasimar in [[Eberron]] by their appearance; there is no single
recognized trait that defines an aasimar, and no reliable way of
producing one. While the existence of aasimar may seem to fly
in the face of Eberron's distant gods, it's important to remember
that an aasimar needs no direct connection to a deity. An
aasimar draws power from a divine energy source, and their
spiritual guide is a celestial being—an [[angel]], a [[couatl]], or similar
spirit. The aasimar may be marked as a champion of the faith,
but even they can't prove the existence of the [[Sovereigns|Sovereign Host]].
As a general rule, aasimar are so rare and diverse in their
appearance and traits that you wouldn't be recognized by
the common populace. However, most people devoted to a
particular [[religion]] will recognize an aasimar associated with
their faith when you manifest your divine gifts. Aasimar are
usually seen as blessed beings by those who share your faith,
and they will likely assume that you are a devoted servant
of that faith called to serve a divine purpose. By contrast,
people who don't share your faith may not recognize your
nature; for example, few outsiders are familiar with the
manifestations of a [[Blood of Vol]] aasimar.
Your celestial nature might draw you into schemes or danger.
Authority figures tied to your faith may have their own plans for
you. There could be prophecies you're expected to fulfill. Or you
could be targeted by enemies you never knew you had; perhaps
the [[Lords of Dust]] need the blood of a Sovereign aasimar to
complete a ritual that's performed only once in a generation.
!! Aasimar Origins
Aasimar have an innate connection to a divine power and a
celestial guide. But when and how did this manifest? Were
you born an aasimar, or was the power thrust upon you?
The table below presents a few possibilities.
| !<<dr d6>> |!Aasimar Origin |
| 1 |''Aasimar Bloodline.'' Typically, aasimar nature isn't hereditary... but in your case, it is. Where did your lineage begin? How large is your family? Are you closely tied to the church and celebrated for your gifts? Or was your family cast out long ago, branded as heretics and apostates? |
| 2 |''Noble Birth.'' While your line manifests an aasimar only once in a generation or so, your family is well known for its piety and virtue. Other members of your family might be [[cleric]]s or [[paladin]]s, and your family estate could be in a [[manifest zone]] tied to [[Daanvi]], [[Irian]], or [[Syrania]]. Are you a proud heir of your family, or do you chafe at its noble traditions? |
| 3 |''Blessed Event.'' You developed your gifts at birth or as a child. Your community had no history of producing aasimar, but the people celebrated you and your gifts. Do you maintain close ties to your home, or was it destroyed by the [[Last War]] or forces of evil? |
| 4 |''Celestial Connection.'' You weren't born an aasimar. Your aasimar nature manifested after you had an encounter with the [[celestial]] being who serves as your guide. You agreed to serve as this celestial's hand on Eberron, and you have a stronger tie to it than is typical for an aasimar. What does this celestial want, and why did it choose you? |
| 5 |''Experiment.'' Your gifts weren't given freely; they were seized through arcane science. Perhaps House [[Vadalis]] is trying to produce divine souls. Maybe you've been fused to a [[Khyber shard|dragonshard]] that contains the essence of a trapped celestial. Did you volunteer for these experiments, or are you a victim? Do you work with your celestial guide, or do you consider it to be your servant? |
| 6 |''Mysterious Past.'' You remember absolutely nothing about your childhood. Perhaps you awoke in the [[Mournland]], or were the only survivor of a terrible battlefield. Your only clues to your past and your purpose come from dreamlike visions from your celestial guide. Can you unravel the mystery? Are you sure you want to? |
!! Faiths and Aasimar
As an aasimar, you're tied to a divine force... but which one?
The [[Undying Court]] and the [[Silver Flame]] are both known
sources of divine power, but they are quite different from one
another. This section looks at the major religions of Eberron
and how aasimar are typically tied to each faith.
!!! The Blood of Vol
As an aasimar of the [[Blood of Vol]], you weren't chosen by some
distant [[angel]]; your power comes from within. The potential
for divinity lies within you, and it is your own divine spark
that guides you on the path toward ascension.
//''Appearance.''// Seeker aasimar appear [[human]]. Some have
a pale, almost [[vampiric|vampire]] complexion, while others appear
exceptionally vibrant and healthy. Your eyes often glow when
channeling divine energy, and your energy manifestations are
typically red or black.
//''Spiritual Guide.''// Your guide is an aspect of yourself; think of it as the
god you could become, working to guide you toward ascension.
Guidance usually takes the form of instincts or visions; you can't
converse with it directly. Is your guide primarily concerned with
your own ascension? Or is it driven by the Seeker principles of
protecting your community and opposing death?
!! The Silver Flame
The [[Silver Flame]] is the most common source of aasimar in
Eberron. Some believe that [[Tira Miron]] was an aasimar of the
Silver Flame; it's likewise possible that all Keepers of the Silver
Flame become aasimar when they assume their post. Most
followers of the Flame have heard stories of champions with
rainbow wings, and they will place their trust in you once your
true nature is revealed.
//''Appearance.''// Typically, Flame aasimar appear entirely
[[human]] (or [[orc]], if appearing among the [[Ghaash'kala]]) until they reveal their rainbow-feathered wings. However, some Flame aasimar manifest other couatl traits,
like having rainbow feathers instead of hair or serpentine
eyes. There are rumors that there's an entire race of serpent-people—the [[shulassakar]]—devoted to the Silver Flame. The
manifestations of a Flame aasimar's energy are either silvery-white or prismatic.
//''Spiritual Guide.''// Typically, your guide is a [[couatl]]—one of the beings
who first brought the Flame into existence. Another option
is that you are in touch with the Voice of the Flame itself, the
ascended spirit of [[Tira Miron]]. The primary purpose of the
Flame is to protect the innocent from supernatural threats. Is
this what your guide encourages you to do? Or do you have a
greater purpose?
!! The Sovereign Host
[[Host|Sovereign Host]] aasimar are chosen by a particular Sovereign, or at least, by a [[celestial]] devoted to that Sovereign. As a Host aasimar,
you are encouraged to act as an avatar of that Sovereign,
embodying their virtues and inspiring the faithful. If you're an
aasimar of [[Dol Arrah]], be the most virtuous warrior possible. If
you're an aasimar of [[Aureon]], acquire knowledge and use it to
guide others and strengthen civilization. Followers of the Host
generally show respect to Sovereign aasimar, and may ask you
for assistance.
//''Appearance.''// Host aasimar typically appear fully human,
usually conforming to the common image of the archetype the
Sovereign embodies—the sturdy blacksmith for [[Onatar]], the
wise sage for [[Aureon]], the weathered farmer for [[Arawai]]. Energy
manifestations are typically golden light.
//''Spiritual Guide.''// Your guide is a celestial devoted to the same
Sovereign as you—typically an [[angel]] of [[Irian]] or [[Syrania]]. They
will encourage you to embody the virtues of the Sovereign you
represent. Do they have any deeper purpose for you?
!! The Undying Court
You have been chosen by one of the ascendant councilors of
the [[Undying Court]]—one of your [[deathless]] elven ancestors—and
imbued with a fraction of their power. You serve as their hands
and eyes in the world beyond [[Aerenal]], while proving your worth
to ascend to the Court yourself.
//''Appearance.''// As an aasimar of the Undying Court, you
physically resemble an [[Aereni]] elf. Most Aereni aasimar appear
like normal elves, with luminous eyes and a general aura of
health. However, you could have a desiccated appearance,
similar to a [[mummy]]—even though you are still fully alive and
healthy. Your energy manifestations are typically blue or violet.
//''Spiritual Guide.''// Your spirit guide is one of the deathless councilors
of the Undying Court, quite possibly one of your own distant
ancestors. Do they want you to serve the general interests of
Aerenal and the Undying Court, or have they recruited you as
their personal agent? Do they want you to help in a struggle with
a deathless rival, in pursuit of the [[Draconic Prophecy]], or in a
conflict over corruption within the court itself?
Elves don't dream, but your ancestor can speak to you when
you trance. Your ancestor was once mortal themselves, and your
relationship may be more direct and personal than the typical
relationship between aasimar and guide.
!! Planetouched Aasimar
When you were born, you were imbued with a sliver of the
immortal essence of an [[angel]]. Most likely this was an accident:
you were conceived in a [[manifest zone]] at the precise moment
the angel's physical form was destroyed, and while it reformed,
a fragment of its spirit went into you. But it's also possible that
the angel chose you to be its avatar or agent in the Material
Plane. Either way, this spirit embodies the positive aspects of
the concept of the [[plane]], and it encourages you to embody that principle.
As a planetouched aasimar, your appearance is more exotic
than most other aasimar. You have an alien aspect that reflects
the plane and the angel you're tied to, and this becomes more
dramatic when you manifest your abilities. Only scholars and
sages might recognize you for what you are, while common folk
will generally view you with curiosity.
The following planes are most likely to produce aasimar.
!!! [[Daanvi]]
You're tied to an angel that embodies the concept
of law in the service of justice. Your skin and hair have a
metallic sheen, often copper or bronze, and your wings have
the appearance of clever clockwork. Your instincts drive you to fight for the greater good, but within the structure of the law. Your guide could
be a [[planetar]]—a judge on an inevitable tribunal, who urges
you to enforce the law. Or you could be bound to one of the
[[solar]]s of the [[Panopticon]], each bound to enforce justice within
a particular plane. [[Hazariel]], the Solar of [[Syrania]], has exiled
[[radiant idol]]s to the Material Plane; perhaps it's concerned
about the damage these fallen angels are doing on [[Eberron]]
and is grooming you to deal with them.
!!! [[Fernia]]
Your guide embodies the positive aspects of fire:
the flame that provides light and warmth, driving back the
darkness. Fernian aasimar typically have crimson skin,
and eyes or hair that burn with cold flame. Your guide drives
you to provide comfort to the frightened and to battle forces
of darkness. Fernian aasimar are often [[sorcerer]]s wielding
elemental flame.
!!! [[Irian]]
You're bound to an angel of light, a spirit that inspires
hope and life. Your skin and hair have a luminous appearance
and your wings are formed from pure light; when you cast the
[[light]] [[cantrip|spell]], you can describe it as your body itself radiating
light. Your guide could be a lesser angel, or more unusually, you might be tied
to one of the [[Architect]]s of Irian. [[Araam]], the Architect of the
[[Refuge]], would urge you to provide hope to the hopeless. The
[[Gardener]] would inspire you to heal the injured and fight for
life. The [[Dawn Empress]] would charge you to achieve your
full potential and help others do the same. Any of these could
also direct you to battle the forces of [[Mabar]]—life-draining
[[undead]] and other dark forces. Prince [[Lorrister]] of the
[[Lhazaar Principalities]] is an Irian aasimar who has risen
to rule the principality he calls the [[Heavenly Fleet]].
!!! [[Mabar]]
You're connected to an angel that's trapped in
Mabar and slowly being transformed by the plane's dark
powers. Choose any other plane from this section; the angel
is originally from that plane, and you have a generally similar
appearance to other aasimar touched by that plane—but your
colors are dull, as if the light is being leached away from you,
and your eyes are pure darkness. Your guide still inspires you
to follow the principles of its plane of origin, but it's fighting
against Mabar's overwhelming despair and a hunger to drain
the light and life from mortal creatures; when you use your
//consuming touch//, you're channeling this energy to your guide.
Your guide might hope you can someday release it from Mabar,
though no immortal has ever escaped its corruption before. Or
it could simply encourage you to follow the general principles
of its plane of origin—balanced against its growing hunger and
despair.
!!! [[Shavarath]]
The angels of Shavarath are martial champions.
Your skin and hair have the appearance of iron or steel.
Your wings are formed from knives. If your guide is from the
Legion of [[Justice]], it urges you to fight for a just cause. If your guide is tied to the Legion
of [[Freedom]], it urges you to battle all forms of tyranny and
oppression. This can be an interesting option for a hexblade [[warlock]]; your guide has
given you their celestial weapon, and it urges you into battle.
!!! [[Syrania]]
You are tied to a [[dominion]] of Syrania. Each
dominion has a particular domain, reflecting its area of
influence and interest; is your dominion an angel of war? Of
nature? Of commerce? What's its specialty within that broad
domain? Syranian aasimar typically have classic feathered wings; however, your appearance might reflect the domain of your guide in some way. Your guide
will urge you to exemplify its domain—if it's the Angel of
Swords, it will want you to master the sword! It also observes
the world through your eyes, and it might send you to observe
events or take actions tied to its domain.
Aasterinian, the Messenger of [[Io]], is the [[Dragon God|Dragon Gods]] of Learning and Pleasure. She communes with the often inscrutable [[Io]] the Concordant and returns with lessons taught through play and parable.
//Your sigil creates, child of [[Cannith]]. Mine holds the power to destroy.//
<div align="right">—[[Rotting Bal]], [[Tarkanan]] enforcer</div>
The twelve [[dragonmark]]s are predictable, and their powers are generally constructive. But there is another kind of dragonmark, which is dangerous to both the bearer and the people around them. Aberrant marks often appear when people from different [[dragonmarked families|dragonmarked house]] produce a child, and for this reason such unions are forbidden by the [[Twelve]]. But aberrant dragonmarks can appear on members of any race, at any age, regardless of bloodline. No two aberrant dragonmarks are exactly
alike—even if they grant the same power, they might manifest in different ways.
It usually takes time for a character to learn to control an aberrant mark, and in time, people might be hurt by it. This factor has led to the general superstition that people with aberrant dragonmarks are dangerous.
Aberrant marks are feared for another reason, too. Long ago, aberrant marks were more common and some held great powers. Aberrant leader [[Halas Tarkanan]] could devastate cities with powerful earthquakes. The [[Lady of the Plague]] wielded disease and commanded hordes of vermin. The [[dragonmarked house]]s
united in an inquisition called the [[War of the Mark]].
Some say this was a persecution of innocents, but most
feared the aberrants and stood by as the houses hunted
them down. Following the War of the Mark, aberrant
dragonmarks were few in number and relatively weak.
But since the [[Mourning]], aberrant marks have been appearing in greater numbers.
Mechanically, an aberrant dragonmark grants some kind of [[sorcerous|sorcerer]] power, but the bearer also develops a flaw.
| !<<dr d8>> |!Aberrant Dragonmark Flaw |
| 1 |Your mark is a source of constant physical pain. |
| 2 |Your mark whispers to you. Its meaning can be unclear. |
| 3 |When you're stressed, the mark hisses audibly. |
| 4 |The skin around the mark is burned, scaly, or withered. |
| 5 |Animals are uneasy around you. |
| 6 |You have a mood swing any time you use your mark. |
| 7 |Your looks change slightly whenever you use the mark. |
| 8 |You have horrific nightmares after you use your mark. |
In the northwest [[Shadow Marches]], a glistening spit
of stone protrudes from the [[Crawling Swamp]]. Its
surface is marred by jagged cracks that bear a strange
resemblance to [[aberrant dragonmark]]s, and that seem
to spell out the letters of a forgotten script. Whatever
their source, these runes have power. Mages who
have studied this so-called Aberrant Scar swear that
the markings are mystical in nature, and that a possible future can be read within their weathered lines.
Sages and explorers have claimed to find secret
meaning and portents of the future in the markings
of the Scar. More than a few have gone mad in the
attempt to decipher those secrets. The last concerted
effort occurred in the earliest years of the kingdom of
[[Galifar]]. An expedition sent by the [[Twelve]] was charged
with learning the Aberrant Scar’s secrets. This group
built a great tower of black stone beside the protruding rock to serve as a place of study and research. When contact was lost with the tower, a follow-up
expedition was dispatched. It found the members of
the original party dead—murdered by one of their
own, who finally took his own life in madness.
The tower has remained vacant for centuries, but in recent years, lights have been seen in its ivy-curtained windows. The [[warlock]] ''Ghalerath'' has taken up residence here, believing that she alone understands
the prophecies locked within the Aberrant Scar, and
that only she can prevent the horrific future they
portend—a goal she pursues at any cost. The PCs
might encounter Ghalerath as a result of her plans to
kill an ally, an important personage, or even one of
the party—an action the warlock believes to be vital to
preventing the dark future she sees.
Within the tower, Ghalerath discovered a number
of [[aberrant creatures|aberration]] that had been drawn to the
power of the Scar—creatures that now do her bidding.
Shortly after her arrival, a nearby tribe of Marcher
[[orc]]s (the Scarbrands) besieged the tower in an attempt to drive her out.
Soon corrupted in mind and body, they too now serve
the [[warlock]].
Aberrations are utterly alien beings. Many of them have innate magical abilities drawn from the creature's alien mind rather than the mystical forces of the world.
In [[Eberron]], aberrations share a common bond. Thousands of years ago, beings known as the [[daelkyr]] led an extraplanar incursion into Eberron. True lords of madness, these shapers of flesh brought with them a host of horrors from the plane of [[Xoriat]]. As the daelkyr sank their talons into Eberron, they twisted and corrupted any other creatures unfortunate enough to fall into their clutches. Eventually, the shapers of flesh were defeated and sealed in the underworld [[demiplane]]s of [[Khyber]], where they continue to create new terrors even now.
Some creatures classified as "aberrations", such as [[aboleth]]s, were not directly formed by the [[daelkyr]], but rather by [[overlord]]s or other [[immortal]]s who used the mutagenic energies of [[Xoriat]] to create new beings.
<<list-links-article "[tag{!!title}category[creature]] -[tag{!!title}tagging[]category[creature]] +[sort[title]]">>
Abjuration spells are protective in nature, though some of them have aggressive uses. They create magical barriers, negate harmful effects, harm trespassers, or banish creatures to other [[plane]]s of existence.
!!! <<showspells-school {{!!title}}>>
Aboleths are tentacled eel-like [[aberration]]s of immense size, reaching up to 20 feet in length. They exude a thick gray mucus that forcibly transmutes "natural" creatures into slimy aquatic servitors of the aboleth that must keep their translucent skin wet at all times to survive. They also have potent [[psionic|psionics]] abilities, able to telepathically detect a creature's greatest desires, as well as enthrall [[humanoid]]s who have been transformed by its mucous.
Aboleths were created by the [[overlord]] known as the [[Lurker in Shadow]] during the [[Age of Demons]]. They are servants of [[fiend]]s, but are not fiends themselves, and are not [[immortal]]. However, they pass on their knowledge and experience from generation to generation. Aboleths' minds are treasure troves of ancient lore, recalling moments from prehistory with perfect clarity. They plot patiently and intricately across eons.
!! The Darkest Depths
There are places where even [[sahuagin]] fear to swim. Like all
the [[overlord]]s, the [[Lurker in Shadow]] couldn’t be destroyed,
only imprisoned. It’s bound in [[Khyber]], deep below the center
of the [[Thunder Sea]]. But there are passages to its prison
spread across the region, in vast rifts and lightless tunnels.
The servants of the Lurker linger in these places, building
their strength and watching the world above.
The chief servants of the [[Lurker in Shadow]] are the aboleths.
Though driven from the sea itself, they’ve maintained a shadow
empire in the tunnels below the seabed. Across eras, they’ve
collected their subjects—[[locathah]], [[sahuagin]], withered [[storm giant]]s, people of the [[Five Nations]] stolen from their ships.
Those aboleths with little interest in [[humanoid]]s instead
craft [[aberration]]s and [[monstrosities|monstrosity]], like the [[chuul]]. While the
aboleths have no direct ties to the [[Lords of Dust]], there are
[[fiend]]s among their allies—[[shadow demon]]s and other spirits
created by the Lurker in Shadow. The aboleths also possess
untold riches and powerful artifacts from the [[Age of Demons]]—tools they can use to arm their allies, or to motivate with greed and bribery when direct mental domination isn’t an option.
The aboleths have risen en masse in the past, bringing down
previous civilizations, fomenting war between the [[sahuagin]] and
the [[giant]]s. There have been dark centuries where the aboleths
have ruled the sea—though these days were long before the rise
of [[Galifar]], and humanity knows little about the threat.
Today, the aboleths are spread across the ocean, and it’s up
to the DM to decide how powerful they are. Are they a hidden
empire preparing to shake the world? Or are there just a few in
hiding, preying on forgotten fishing villages and stealing thralls
from shipwrecks? Consider the following ideas.
//''The Pirate King.''// A new wave of piracy spreads across the
trade lanes in the vicinity of [[Stormreach]]. The villain is Red Daskia, a [[Cloudreaver|Cloudreavers]] captain from the [[Lhazaar Principalities]]. But she has fiendish allies and artifacts from the [[Age of Demons]] that let her vessel outrun even [[Lyrandar]] vessels and disappear in fog. When the adventurers finally confront the
pirate queen, it becomes clear that she’s merely the agent of an
aboleth mastermind; can the characters stop the true villain?
//''Sahuagin Assault.''// The adventurers are caught in what
seems to be a [[Dominion|Eternal Dominion]] attack on a coastal community or
peaceful vessel. An aboleth has seized control of a Dominion
outpost and is seeking to cause conflict between the Dominion
and the surface; it might also stage dryskin attacks on
Dominion bases. Can the adventurers get to the bottom of it?
//''Civil War in the Sea.''// A cabal of aboleths have gained control
of the leaders of [[Hal'shavar]]. They use this power to foment
unrest across the Dominion, turning city against city. These
conflicts could spill out to peaceful travelers; a major assault
could even affect [[Sharn]] or [[Stormreach]]. Could this bring down
the entire [[Dominion|Eternal Dominion]]? At first, the adventurers only encounter
the side effects of the conflict, until a student of the [[Draconic Prophecy]] realizes that if the Dominion collapses, the [[Lurker in Shadow]] will be released. Can the adventurers end this civil war?
At first glance, this seems a primeval forest, but on closer
inspection, it's filled with horrors. The [[demiplane]] is tangled in
crimson vines filled with blood. It teems with monstrosities,
twisted beasts that aren't as alien as the [[aberration]]s of the
[[daelkyr]], but just as deadly; even its most charming songbirds are
carnivorous and cruel. The forest's strange vegetation can be
used to make potions or deadly poisons, valuable resources—for those willing to brave its horrors. While in the Abyssal Forest of Khaar, any creature that's not naturally immune to
poison becomes more vulnerable to poison.
<<list-links-article "[tag{!!title}sort[title]]">>
The steaming Acid Green is a massive freshwater swamp forest in [[Argonnessen]] that spans across the border of the [[Light of Siberys|Light of Siberys (region)]] and the [[Thousand]].
The substance contained by the glass vial is an unstable soup of acid and explosive chemicals. When the container shatters, green flames erupt and spread boiling acid in all directions.
These [[alchemical explosive]]s are often sold in bundles of 5 or 10.
This spool of pure white twine seems completely ordinary to an untrained eye. When a piece of this twine is cut free, it begins to excrete a potent acid for 1 minute. This acid will eat through flesh and even most metals. A new spool contains 20 feet of twine.
First Warlord and Minister of Magic, Adal ir'Wynarn holds both significant formal and informal power in [[Aundair]]. While he shares his [[older sister|Aurala ir'Wynarn]]'s vision for a united [[Galifar]] under Aundair, he believes himself to be more suited to the task. Despite his respect for Lord [[Darro ir'Lain]], he rejects Darro's plans to retake the [[Eldeen Reaches]] by force, seeing it as a waste of time and resources.
During the negotiations of the [[Treaty of Thronehold]], Adal refused to allow [[Aurala|Aurala ir'Wynarn]] to concede the pieces of Western [[Thrane]] that Aundair had seized during the war in exchange for the return of [[Thaliost]]. In particular, he saw great value in [[Arcanix]]—once a small village with an unusually prodigious school of [[arcane magic]], now the ground base of the [[Arcane Congress]]' floating islands. Many in [[Fairhaven]]'s court, including Aurala to some degree, believe Adal's refusal to trade Arcanix the village for Thaliost to have been a mistake. As such, Adal seeks to prove them wrong—his plans and research all focus on how to retake Thaliost, even if it means provoking war with [[Thrane]].
The [[Ninth Wands]] of [[Stormreach]] secretly report to the Minister.
Adamantine is an extremely hard and durable metal. When properly smelted in specially-designed forges, it can produce armor that is nearly impenetrable, and weapons that can destroy almost any other material.
The [[goblinoid]]s of [[Dhakaan]] were able to create feats of adamantine smelting that even the best [[Cannith]] smiths cannot reproduce today.
Most adamantine on [[Khorvaire]] is mined from ancient meteor impact sites, but it is rumored that [[Argonnessen]] has naturally-forming adamantine veins.
When you put on this simple garment, it automatically shrinks or expands to ensure a perfect, tailored fit. In some varieties, the fabric also slowly fades to a color that flatters the wearer.
''Capital:'' [[Kasshta Keep]]<br/>
''Hallmarks:'' [[psionics]], [[kalashtar]], [[Path of Light]], mountain monasteries
Adar, a Riedran word that translates to “refuge,” hides deep
in the southeast portion of the continent. The region is defined by nearly vertical peaks rise like spikes from the [[Sea of Lost Souls]]. Long before
the [[Inspired]] ever appeared on [[Sarlona]], the mountains
of Adar were a place where the innocent could flee from
persecution—provided that they could survive the perilous
climb to reach the fertile valleys hidden within. Ancient
legends speak of a clan of [[blue dragon]]s that dwells within
the clouds clinging to the tallest peaks. These guardians
are supposed to protect the innocent and punish those who
would abuse the sacred sanctuary of the mountain, sending bolts of lightning down from the clouds to slay transgressors. If these dragons do indeed exist, they keep their
distance from the humanoid inhabitants of the mountain.
But it is easy to look up into the eternal storm clouds and
imagine catching a glimpse of a draconic shadow darting
through the air.
For thousands of years, Adar had a small population of spiritual hermits and exiles from the lowland kingdoms of Sarlona. Then the [[kalashtar]] came. The [[Inspired]] came close on their heels, seeking to finally eradicate these rebellious [[quori]]. As the power of the Inspired spread across Sarlona, the kalashtar were driven into hiding. Ultimately they fled into the mountains, along with many others who had unsuccessfully challenged the might of the Inspired. The sacrifice of [[Taratai]] threw the invading forces back
and left the [[Shroud]] that protects Adar to this day. For over a thousand years the Inspired have laid siege to the great mountains. But the Shroud, Adar's natural fortifications, deadly storms (of draconic origin or not), and the psychic and martial discipline of its defenders have held against all attacks.
Today, Adar is a place of mystery. While the Inspired
have never broken its defenses, the siege of the mountains
continues. Tales abound of golden temples and beautiful
hidden valleys, and of ancient [[kalashtar]] [[psions|psionics]] and libraries of [[arcane|arcane magic]] lore forbidden by the [[Inspired]], but finding a
path into the mountain sanctuary is the only way to confirm the stories.
Adar has no contact with the outside world, and therefore does not trade with any other nations. However, the [[kalashtar]] preceptors of the [[Path of Light]] are among the
finest instructors of the psionic arts in [[Eberron]]. Adventurers who wish to unlock the powers of the mind or sages who wish to learn more about psychic secrets may brave the
many dangers of Sarlona to reach the hidden monasteries of Adar.
!! Who Rules Adar
No one authority rules Adar. The major points of power in the land are the eight monastic fortresses scattered throughout the mountain range. There is little contact between these hidden temples; the monks and [[psion]]s of each community spend their days in contemplation and meditation, and they have little reason to make contact with the others in the mountain. Within each monastery, the wisest and eldest lead.
Each fortress is responsible for defending one of
the mountain passes against the forces of [[Riedra]] and the
[[Inspired]]. Nonthreatening visitors are tested to ensure
the purity of their intentions; after a few deceptively
simple questions, travelers either are turned away or made
welcome, offered food and shelter, and invited to join in
discussions with the students. Agents of the [[Inspired]] or the [[Dreaming Dark]] are struck down without mercy; others who come with impure intentions are denied shelter and sent back into the harsh mountain passes.
Among [[Adarans]], the [[Speaker of the Word|Chanaakar]] in [[Kasshta Keep]] is a respected figure. The Speaker position has existed far longer than the [[kalashtar]] have been in Adar—even they revere the wisdom of the Speaker of the Word. Although
the Speaker holds no actual authority, words from this
person can move the citizens of Adar to action and sway
the minds of masters in other monasteries. Throughout
the ages, Speakers have been reputed to be dispassionate
and invariably long-sighted. Speakers often suggest their
successors, but the [[Keepers|Keepers of the Word]]' Council of the Wise makes
the final choice. Adarans often speak of former Speakers
as if they were highly regarded ancestors.
!! Land of Earth-Sky
The earliest tribesfolk who made a home in the deep
mountains and valleys called their land Sthanadiv (Land of Earth-Sky). To this day, Adar is a land of extremes.
[[Korrandar]] is one of Eberron's tallest peaks, measuring
32,495 feet at its storm-shrouded peak. Nearby gorges
plunge to below sea level, filled with the raging waters of
glacial and storm runoff. The ocean off Adar's southern
horn is extremely deep, and the whole coast has none
of the normal shelf found around most other lands.
Instead, the sea floor is toothy with mountains.
Less than half of Adar's land is below 12,000 feet,
and much of that is forested with stout, tough evergreens.
The regions above the tree line are arid and windswept,
useless for farming or herding. Glaciers creep across the
high passes. As the mountains give way to Adar's plateau,
alluvial hills and stretches of green valley appear, making
about 20% of the land arable. The temperatures in deep
valleys can be tropical, though usually mild in humidity, and the flora and fauna in such places are abundant.
Trees can grow tall here, and some bear succulent fruit.
On the high peaks, nothing lives aside from supernatural
creatures. In these places, the cold, clouds, and wind
are constant.
Adar has many [[manifest zone]]s
to [[Lamannia]] and [[Kythri]]. In a few of these places, such
as [[Ahdryatmin]] (Mountainsoul), crossing the planar
boundary is possible. The [[Shroud]] often interferes with
such passage, but manifest zones are also places where
the Shroud's power can weaken. [[Elementals|elemental]] are common in Adar.
!! Getting There
Getting to Adar is not easy. If one survives the fury of the
[[Sea of Rage]] or the calm of the [[Barren Sea]], deadly storms
swirl around Adar's borders and over its peaks regularly,
making any sort of air or water travel treacherous at best.
The mountains seem to shoot right out of the sea floor.
Smaller peaks hide under the waves, ready to tear open a
hull. No landing spot can be found for a ship on almost
any point of Adar's coast. Freezing temperatures and
mists at high altitudes are fatal for airships, and spots
in Adar seem to unleash [[elemental]]s. People from lands
across the sea who want to visit Adar usually land in
[[Ardhmen]] in [[Syrkarn]] and trek overland, but that path is
fraught with peril. [[Dvaarnava]] has a secret port, but few
know of it and fewer have access.
Travel is difficult at best in the mountains. If a trail remains along a ridge for long,
gentle creatures aren't likely to be the only ones using it.
Adar has no true roads.
Some people in Adar have a special relationship with
a breed of magical beasts called [[asperi]]s. These
intelligent and gentle horselike creatures ride the winds
of Adar easily, and they just as easily bear riders across
the trackless peaks.
Reasons abound to face the risks of getting to and
around Adar. Legends say Adar was as flat as much of the
rest of [[Sarlona]] in the [[Age of Demons]]—the [[dragon]]s and
[[couatl]]s drove the mountains up and stirred the winds to
hide a great evil. So, many come to gain artifacts of draconic power they think must be hidden among the valleys or in the mighty, mist-shrouded [[Korrandar]]. Others
come seeking the esoteric knowledge of the mystics in
the mountains, such as the [[Keepers of the Word]] or the
[[Tashalatora]]. A few make the journey to learn the [[psionic|psionics]]
teachings of the [[kalashtar]] masters of the [[Path of Light]].
!! Places of Interest
Adar is widely varied in its features. The ringing mountains that surround it are a defensive wall into which
eight monasteries are built. Ancient and living places dot
the landscape. Ruins of structures abandoned in bygone
ages are evidence of the legacy of the draconic influence
over this magical land.
!!! The Eight Monasteries
* [[Kasshta Keep]]
* [[Dvaarnava]]
* [[Ghoza]]
* [[Haztaratain Monastery]]
* [[Malshashar]]
* [[Ruukosi]]
* [[Shalquar]]
* [[Tashalatora]]
!!! Other Cities
* [[Xephanan]]
* [[Zi'til'natek]]
!!! Adventure Sites
* [[Adaran ruins]]
* [[Ahdryatmin]]
* [[Korrandar]]
* [[Uutkleza]]
Among the hills and valleys of [[Adar]], the ancient past
sleeps overgrown by lowland forests, partially buried by
landslides, or ground away by the tireless inertia of a
passing glacier. Massive or strangely sized for humanlike
creatures, these places hold clues to the battle fought here
during the [[Age of Demons]]. Most Adarans shun ruins
near their homes, fearing the ire of the [[Storm Guardians]].
Little do they know that feathered [[shulassakar]] still live
among or below some of the [[couatl]] and [[dragon]] ruins, working to keep Adar
safe. Disappearances near such occupied sites are often
due to the shulassakar finding a new and willing ally.
Most people of [[Adar]] are [[human]] or [[kalashtar]], rugged mountainfolk who respect wisdom and action.
!! Adaran Culture
Adarans are resilient and industrious, reserved and
incisive. They care about the sensible and the mystical,
and the harshness of life among the peaks has not made
them grim or fatalistic. Typical Adarans are guarded with
strangers but openly emotional among their friends and
family. Life is too short to waste time with pretension,
and the [[Path of Light]] teaches integrity and honesty.
Adarans are generally distrustful. More than a thousand years of siege has taught them to be that way. Most Adarans tend to reject the novel and the strange, preferring the known and the trustworthy. If someone manages to earn an Adarans gratitude or trust, the resultant loyalty is deep.
Normal Adarans live simply compared to the people
of tamer lands. That is not to say they live without joy or
comfort, but that they have access to fewer diversions and
luxuries. Given this, an Adaran takes great joy in work
and leisure, and similar pride in strong relationships. To
an Adaran, real luxury is found in a sturdy house, loose
and comfortable clothing, and another's warm arms to
curl up in before sleep. An Adaran toils in the fields,
drives animals in small pastures, or hunts in the mountains, then gathers with friends at night to tell stories, make beer and bread, and enjoy a smoke.
Adarans value the spiritual because they know material existence is fleeting. They respect the spirits along
with their ancestors, elders, and those who show good
judgment. Spirituality has its place in everything, from
patterns of weaving to actual meditation.
Arcanists, martial artists, and psychics who protect
[[Adar]] seek perfection in body and mind. They have to.
At any moment, they might be required to offer body
and soul to hold Adar against the [[Inspired]]. Even the
commoners know that meditation on the [[Path of Light]] is
important work, not laziness or inaction. In fact, inaction
can be considered evil.
Real evil lives in Adar, though. Although the vast
majority of folk are concerned with the welfare of at
least their local friends and families, a few of Adar's
residents are descendants of those who came to the land
of refuge to escape persecution or prosecution rightly
deserved. Even so, wicked Adarans try to maintain a
veneer of propriety—acting honest and assiduous so they
can better survive.
!! Five Things Every Adaran Knows
# ''The legend of Taratai.'' [[Taratai]] was the mysterious spirit that led other spirits into [[Adar]] to create the [[kalashtar]], and teach the [[Path of Light]]. She is a holy mother, a guide, and a warrior. Everyone knows of her sacrifice, and many people in Adar set aside five days of winter to mourn her passing. This "holiday" is called the Void of Taratai.
# ''The dragons created Adar.'' [[Adar]] is an unnatural amalgam of mountains and storms. The [[dragon]]s and [[couatl]]s created the place to make it impossible to get to an evil that sleeps beneath the land. Draconic magic still calls to the unique and the wild to come to Adar and protect it. The [[Storm Guardians]] who rule mysterious [[Korrandar]] are proof.
# ''Some martial arts.'' Many people in Adar know a few dance steps from the [[Path of Shadows]] or a formalized routine from a nearby monastery. Most practice these forms as morning exercise and meditation, and many of them actually know how to fight.
# ''Actions mean more than words.'' Whether it's meditation on the [[Path of Light]], stalking and killing a mountain lion that's been eating livestock, or just planting your barley on time, doing something is better than talking or vacillation. In fact, one of the precepts of the Path of Light is that the worst action to take is no action at all.
# ''Death is not the end.'' Adherents of the [[Path of Light]] believe that nothing in the world or on any plane is eternal. [[Dolurrh]] is a place where the ego dies, but the spirit is immortal, and it returns to the Material Plane again and again. The goal of living is eventually to master the [[Path of Light]], thereby transcending fear and false desires. Those who accomplish this become one with //il-Yannah//.
!! Adaran Names and Speech
Adaran names follow an ancient tradition of double
vowels. Most Adarans have a single given name followed
by a family or clan name. Some folk reverse this order,
placing the family name first. Many monks and almost
all [[kalashtar]] have only one name, and kalashtar names
are often mixtures of an Adaran syllable with the normal
kalashtar male or female suffixes. Some Adaran humans
take kalashtar suffixes or names as monikers to represent
their faith in the [[Path of Light]]—others are given such
names by devout parents.
//''Feminine Names:''// Aapti, Bhimaa, Chaand, Deena,
Fuulgani, Geetya, Himaadri, Heruuna, Inuu, Jharee,
Kyamun, Leel, Muneera, Neeta, Novaa, Paamin, Rhaaki,
Shameena, Taapasee, Uudipti, Vusgaar.<br/>
//''Masculine Names:''// Aadarsh, Biir, Chintuuk, Dileep,
Ekuumbar, Geet, Hazgaal, Ishwaar, Jeevan, Kuumar,
Lhaaksh, Manuu, Neel, Ojaas, Paaras, Praagya, Roopak,
Shreesh, Tyag, Uudhav, Vyed, Yaagya.<br/>
//''Surnames:''// Adaran surnames are like given names,
honoring an ancestor seen as the progenitor of the family
or clan.
!!! Phrases
Adarans are forthright and honest among
those they trust, but taciturn and suspicious among
strangers. Love of the moment is acknowledged even in
conversation, and having met an old friend on the road
is an excuse for being late to work in [[Adar]]. A chance to
talk is not to be missed.
The following turns of phrase are Adaran.
* "//Storm or quake, the path is clear.//" Adarans believe that a person always knows what is right if that person takes the time to focus on the situation at hand. Indecisiveness and idleness earn an Adaran a reputation for being unreliable and even foolish.
* "//Wind and thunder!//" An exclamation of dismay.
* "//Don't drive the goats so you can sit by the fire.//" or "//Don't break your back for a burden you've put down.//" Variations of this phrase exist throughout Adar, admonishing one to take wise actions without concern for the past or future. All that matters is doing the task at hand to the best of one's ability. All else is needless distraction—the past is unchangeable and the future can take care of itself, and it will if one acts well in the present.
!! Adaran Religion
Traditional Adaran prayers call on Braahyn ([[Balinor]]),
the god of the wilds and the moving earth, and his spouse Aarakti ([[Arawai]]), the goddess of abundance and storms. Many people also respect the spirits of nature and those of their ancestors. The [[Path of Light]], the dominant religion in [[Adar]], has all but eclipsed these other spiritual
practices. Its message has proven preferable to the rule
of remote gods and a cold and meaningless end to life in
[[Dolurrh]]. It is a path of choosing one's own destiny and
possibly even transcending death.
Practitioners on the Path of Light hope to change
the [[Quor Tarai|Dal Quor]] from its current nightmare manifestation
of [[il-Lashtavar]] to a tranquil dream centering on //il-Yannah//, the Great Light. Traditionally, contemplation of peace and kindness coupled with similar
actions in the world are thought to be enough to eventually
change the Quor Tarai. The lightbringers (//yannahsur//) among
the Path's devotees do just that.
Direct action against evil is secondary, and opposition is sometimes seen as reinforcing malevolence by investing energy in it. It is necessary, however, to have
those faithful who are prepared to take action. These
believers are called shadow watchers (//sheshantol//). Younger
[[kalashtar]], and those of [[Khorvaire]] (under the influence
of undisciplined minds or human urges, say some elders)
have taken a stronger stand against the [[Dreaming Dark]].
These spiritual warriors point to the actions of [[Taratai]],
the Path of Light's greatest saint, and have begun to take
the war to the [[Inspired]].
Priests of [[Path of Light]] can be either lightbringers
or shadow watchers, but all such clergy have duties to
their communities that preclude constant meditation.
Such priests are called lightspeakers (//yannahilath//). They
are expected to be shining examples of the Path of Light.
Adaran lightspeakers can be of any race, but most are
[[human]] or [[kalashtar]].
!! Adaran Style
Adaran people live modestly. Mountainfolk and monks alike see craft as a leisure activity, and the precepts of the [[Path of Light]] have reinforced this custom for over a millennium. Adaran crafts are usually functional, and they are always products of care.
!!! Art
Adaran art is more craft than fine art. From carved knife
grips to chanted meditation verses, art in [[Adar]] often
serves a dual purpose. It's also very personal.
People in Adar take time to do their tasks. They
make beautiful and intricate jewelry and armor, personalized carvings to hang over a house door (which aids in knowing the residents), and even multicolored crystal windows for their temples. Beauty is always coupled with functionality. A golden roof
on a temple not only shows reverence, but it also
never tarnishes. A mural not only recalls the past or
reveres an ancient master of the [[Path of Light]], but it
also beautifies and seals the stone.
A popular art form in Adar is "earth painting." Such works, made of colored earth, are often group efforts and are usually stylized images of intertwining lines of color. The paintings are created in a ritualized and meditative way. Intended to be impermanent, such paintings are at once the product of contemplation and creation.
While storm winds howl, the warm hearth provides a
place to gather and create. It's also where stories are told
and dances performed. Adaran tales tend toward morality
plays, extolling wisdom and survival. Their folk dances
are group affairs involving rings of people switching
partners or couples dancing in time with one another.
The [[kalashtar]] [[Path of Shadows]] martial dance is derived
from ancient Adaran steps.
!!! Architecture
Buildings in Adar are made out of stone, with wood used
for roofs. Built to withstand the wind, precipitation, and
trembling earth, houses are usually broad and low with
sharply slanted sides. To an [[Aundair]]ian, Adaran living
spaces would seem cramped, but a native of [[Adar]] values a house that lasts more than she does a high ceiling. Adarans
take care and time to personalize their dwellings—an
Adaran might spend years carving designs into the walls
of her home.
Most houses have a central opening in the roof with
another smaller roof built over it, like a small tower.
Such openings allow light in and stale air out. Adarans believe, according to the [[Path of Light]], that these openings are also pathways for the mind and focusers of
positive energy.
Grander edifices, such as the shrines or temples that
form the center of a community, are often domed. Most
Adarans take pride in a well-appointed village shrine.
All buildings face east when possible, or north, but
Adarans never build main entrances facing south. The
east invites the light and life. The north invites wealth.
South is considered a direction of decay and death.
!!! Cuisine
Food holds a special place in Adaran life. It is a requirement for life, but it is also a mode of expression, a blessing from the spirit world, and an experience. An Adaran
avoids cooking and eating when he is angry or grieving,
lest his emotions taint the meal.
Food is usually baked in or roasted on a clay oven
built in the house, though broiling over an open fire is a
common alternative. Adarans avoid using utensils. They
use their hands, sometimes protected by leaves, to pick
up food, intending to involve all five senses in eating.
Adarans like spice. The fragrant herbs used in cooking provide taste, and many also aid digestion and fortify the body. Foreigners can find Adaran food too spicy, and
Adarans often find foreign food bland.
A wide variety of comestibles can be found on the
Adaran table, from broad, woody cavern fungi to the
meat of mountain sheep, from fleshy fruits to the milk of
oxen and goats—along with yogurt and cheeses from this milk. Some Adarans refrain from eating meat, showing their respect for the lives of all creatures.
Monasteries are often more limited in fare, due to the ruggedness of the land around them. Still, the ascetics appreciate food as a manifestation of life.
!!! Fashion
Adarans wear loose and comfortable clothes including
simple sandals when it's warm. In the cold, they layer in
cloth and fur. As with all their crafts, they take the time
to decorate their clothes—leather and cloth are often
richly colored, and patterns of elaborate lines are woven
or painted as highlights. Bright colors in individualized
patterns often make it possible to tell who's coming down
the ridge before that person's face can be recognized.
Skin is a place for adornment as well. Intricate,
temporary body art made with herbs provides a way to
focus the mind while allowing one to share the results.
Herbal paints or powders are also applied to indicate a
spiritual or emotional condition or event, such as yellow
for happiness or ash-gray for grief. Many adherents of
the [[Path of Light]] paint an inverted white triangle between
their brows.
The Adarans' love of craft manifests in a variety of
jewelry. From glass beadwork to tiny silver plates strung
together as a head covering, Adarans spare no effort in
producing beautiful objects to wear. They enjoy bracelets,
armbands, and torcs. Rings are also favored; Adarans
wear just as many rings in their ears and noses, and on
their toes, as on their fingers.
!!! Supernatural Style
[[Adar]] has a large population of spellcasters and manifesters,
which has a great influence on the crafts of the country.
Although [[magewright]]s are not as prevalent as in Khorvaire,
many settlements have artisans who specialize in the magical or [[psionic|psionics]] augmentation of traditional crafts. Adaran
mystics take their "leisure" pursuits as seriously as common
folk do, and many display pragmatic yet wondrous works.
!!! Kalashtar Style
[[Kalashtar|kalashtar]] place less value on material objects than on
thoughts and movement. Singers among the kalashtar
often weave emotions into their songs by way of [[psionic|psionics]]
powers. They mix such abilities with all they do, including the [[Path of Shadows]] martial dance. To serve the versatile needs and ways of the kalashtar, many dances have
combat applications.
[[Kalashtar|kalashtar]] artisans create works that shows an alien
sensibility. Many pieces of kalashtar jewelry and clothing
reflect the features of the [[quori]], most commonly the insectile lower castes. Renowned in [[Adar]] is the kalashtar glasswork in many of the monastery-fortresses that is as much
about how the glass moves light as the window or object
itself.
Every [[Aundair]]ian knows several add-a-verse songs. Popular as everything from children’s lullabies to drinking chanties, rhyming songs where a verse is added each time (such as “The House that [[Galifar]] Built” or “The 12 Days of End Year”) are an Aundairian tradition. Some run for nearly a hundred verses.
The Adder Bay lies the coast of [[Q'barra]], and is fed by the [[Adder River]].
The Adder River (also called the Whitecliff River) in [[Q'barra]] flows from the [[Endworld Mountains]], past the settlements of [[Whitecliff]] and [[Newthrone]], into [[Adder Bay]].
Adderport is a small but growing fortified city in [[New Galifar]], located on the [[Adder Bay]]. It was the first [[human]] settlement in [[Q'barra]], founded by Duke [[Ven ir'Kesslan]] and his fleet of like-minded [[Galifar]]an pioneers in 928 YK.
Adventurers' guilds are organizations that provide adventurers with opportunities for work and camaraderie.
//''Membership Benefits.''// Those who are accepted into either adventurers' guild must pay yearly dues (usually ~2c). The primary benefit of belonging to a guild is access to work, since the guildmaster can connect parties of adventurers with patrons and jobs suited to their talents. Beyond that, there are a few additional benefits:
* You can store items at the guildhall free of charge.
* You can book lodging at the guildhall for a reasonable fee (usually ~1c per two weeks). The accommodations are modest, but the guild provides stronger security for lodgers and their possessions than you'd find at an inn.
* An adventurers' guild is an excellent source of information. By studying records and working with other guild members, you can gain advantage on any skill check to research a subject in which the guild has expertise or experience.
!! Adventurer's Guilds
<<list-links-article "[tag{!!title}sort[title]]">>
Aeren's Sound is an inlet of the [[Dragonreach]] found between the northeast islands of [[Aerenal]].
''Capital:'' [[Shae Cairdal]]<br/>
In Aerenal, you might...
* Consult an [[elven|elf]] [[archmage|wizard]] who's been dead for twenty thousand years.
* Battle sinister forces that have crawled into [[Eberron]] from a realm of eternal night.
* Learn secrets of magic unknown in [[Khorvaire]].
The massive island of Aerenal is the ancient kingdom
of the [[elves|elf]]. Its jungles provide strange and valuable
lumbers: [[soarwood]] used for the hulls of [[airship]]s, tough
[[bronzewood]], and trees that remain alive after being felled.
The island's proximity to the planes of [[Irian]] and
[[Mabar]] allows the lines
between life and death to become blurred. Dangerous, dark forces creep in from the plane known as the
Endless Night, but that planar resonance also enables
the elves to perform feats of [[necromancy]] unmatched
elsewhere in [[Eberron]]. Among the [[Aereni]] elves, the
honored dead walk among the living. Heroes who died
in glorious battle return to serve the [[Sibling Kings]]. And
in the depths of [[Shae Mordai]], the deathless lords of the
[[Undying Court]] study the shifting balance of the planes
and the path of the [[Draconic Prophecy]].
[[Necromancy|necromancy]] is a pillar of [[Aereni]] society, distinct from
the sinister power most adventurers encounter. Positive
energy sustains the [[deathless]] [[undead]] of Aerenal—both
the light of [[Irian]] and the devotion freely given by their
descendants. The elves of Aerenal despise necromancy
that draws on the negative energy of [[Mabar]], and agents
of the [[Undying Court]] embrace their mandate to seek out
and destroy [[vampire]]s, [[lich]]es, and other such undead.
Aereni civilization is over twenty thousand years old.
Secure in their island sanctuary, the [[elves|elf]] watched nations of [[goblin]]s and [[human]]s rise and fall. The Aereni
possess secrets and powers the rest of [[Khorvaire]] has
yet to discover, but they are more interested in perfecting their ancient traditions than in innovation and discovery. An [[Aereni]] [[wizard]] might spend a decade refining
the pronunciation of a single [[spell]]'s incantation. For
now, [[humanity|human]] can't match the power of the elves. If that
balance changes, will Aerenal take action?
See also [[Elf-Dragon Wars]].
!! Notable Locations
Aerenal taunts visitors with its ancient secrets and
trackless jungles.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! {{!!title}}'s Influence in Khorvaire
In [[Khorvaire]], you might...
* Team up with an agent of the [[Undying Court]] to bring down a powerful [[vampire]].
* Be summoned by a deathless sage who needs your help to fulfill an ancient prophecy.
* Bargain with a merchant offering rare [[magic item]]s.
Few [[Aereni]] elves are interested in the world beyond
their island. The Aereni see [[Khorvaire]] as a primitive
backwater, and [[human]]s as dangerously impulsive. Aereni who travel to Khorvaire have a concrete purpose for
the journey, which could drive an adventure.
The [[magewright]]s and [[artificer]]s of Aerenal are more
advanced than those of Khorvaire. Aereni artisans
fashion rods, staffs, and wands, and other rare or even
legendary items may come from Aerenal. However, the
nation is less industrialized than Khorvaire. Legendary items aren't mass produced; some are personally
crafted by members of the [[Undying Court]].
Aereni goods make use of exotic plants and woods.
[[Bronzewood|bronzewood]] has the density and even some of the properties of steel; an Aereni [[cleric]] might wear a
bronzewood breastplate, while a [[paladin]] of the [[Undying Court]] could wear a suit of elaborated engraved bronzewood plate armor. Bronzewood leaves are remarkably
tough, and the Aereni craft "leaf weave" armor functionally equivalent to leather, studded leather, or chain mail.
Bronzewood can also be crafted into weapons, and Aereni warriors use spears or swords made from a single
piece of bronzewood.
!!! Trinkets from Aerenal
| !<<dr d8>> |!Trinket |
| 1 |A [[bronzewood]] ring inscribed with the Elvish word for "hope" |
| 2 |A dried flower; if it's placed in water, it blooms |
| 3 |An ebony locket; when it's opened, an elven voice whispers "Always" |
| 4 |A tiny skull carved from dark wood |
| 5 |A finger bone inscribed with an unknown sigil |
| 6 |An ivory flute which produces no sound |
| 7 |A small journal made from preserved leaves |
| 8 |A book of poetry written by [[undead]] elves |
[[Aerenal]] lumber—[[densewood]], [[bronzewood]], [[darkwood]], and the other products of the great jungles—is an important commodity. Lady Taelira is the consul of Aerenal, and has held this post for over 300 years. Taelira has little interest
in the wars or conflicts of the younger races, and she
is unlikely to take an interest in anything that adventurers bring to her attention; if there’s a problem, her inclination is to wait a year and see if it’s still an
issue. Trade agreements are an exception to this rule,
and Taelira is a vicious negotiator when it comes to
protecting the economic interests of the elves.
While she is rarely helpful, Lady Taelira shows more respect toward characters who possess the Right of Counsel. She is also a confidant of [[Mayne Jhaelian]], the priest of the [[Gates of Passage]] in [[Shae Lias]], and if Mayne sends the characters to Taelira, she listens.
The [[elves|elf]] of [[Aerenal]] are born into a world shaped by magic and honed by tradition, and spend the first hundred or so years of their lives perfecting one of the skills prized by their ancestors. For thousands of years, the island nation of [[Aerenal]]
has been ruled and protected by the godlike power of
the [[Undying Court]], a council of [[deathless]] elves. The
greatest heroes of the Aereni join the Undying Court after death, joining their heroic ancestors in immortality.
Aereni often have pale alabaster to grey-brown skin sometimes tinged with blue, and hair of silver-white, black, or blue,
but various shades of blond, brown, and red are
not uncommon. Their eyes are blue or green and
flecked with gold.
The Aereni are isolationists who have little interest
in the world beyond their island. The [[Five Nations]] are
a place of chaos and war, so why would any sensible
elf venture into that madness? As you make an Aereni
elf character, decide what has caused you to leave your
island home and the protection of the Undying Court in
order to wander the world. Are you in search of a power
that could earn you your place in the Undying Court?
Have you been given a quest by one of your own [[deathless]] ancestors? Or are you an exile, banished from your
homeland for some crime against your people's rulers?
Consider your character's personal and family history.
What is your family known for, and how can you prove
yourself to be a master of these skills? (See also [[Aereni noble line]]s.) Do you have ancestors in the [[Undying Court]], and if so, what's your relationship with them? Do you find it challenging to deal
with the short-lived races, or are you patient with them?
This mask's intricate design links it to one of the [[Aereni|Aerenal]] noble
lines, and the guidance it offers comes from spirits of that line.
You can't attune to the mask unless those spirits judge you
worthy to wear it.
An Aereni mask is imbued with one Action when it is created.
While wearing the mask, when you make an attempt using that Action, gain advantage.
The [[elven|elf]] nation of [[Aerenal]] is effectively a collection of city-states, united in devotion to the [[Sibling Kings]] and the [[Undying Court]]. Each region of
the country (save for the northern territory of the [[Tairnadal]])
is governed by a noble line. The original settlers of Aerenal
came from different cultures and environments, and the lines represent this; while all are united by the common customs of
Aerenal, each line has its own unique fashions and traditions. A
line is an alliance of ancient families governed by a noble house
that carries the name of the line. Thus, “the line of [[Mendyrian]]”
refers to multiple families, but someone who uses the surname—such as Belaereth Mendyrian—is a member of the noble line. The noble line represents the best of the region; it's not a hereditary family, but rather, a meritocracy whose members
are chosen from the people of the region. Similarly, the [[Sibling Kings]]—the rulers of the united kingdom—are members of the
same line and symbolically brother and sister, but they aren't
blood relatives. So in life, elves aspire to be appointed to their
noble line; in death, they hope to be raised to the [[Undying Court]].
In creating an [[Aereni]] elf, work with your DM to develop
details about your family and the line you owe allegiance to.
Since each line is an alliance of multiple families, there's room
for you to add your own details even within an existing line. A
few of the noble lines are described below, but look to these as
a source of inspiration rather than a limitation.
!! Noble Lines of Aerenal
<<list-links-article "[tag{!!title}sort[title]]">>
//Period: More than 100,000 years ago//
During the Age of Demons, myths tell us...
* [[Eberron]] was dominated by the [[overlord]]s, thirty arch[[fiend]]s who shaped reality to their will.
* Champions, later known as the [[Sovereign Host]], fought the overlords with an alliance of [[dragon]]s and [[couatl]].
* The sacrifice of the couatl bound the overlords with a force that formed the [[Silver Flame]].
According to the [[Progenitor|Progenitor Dragons]] myth, Eberron became the world
and all natural creatures are her children. But in the first
days of the world, the children of [[Khyber]]—[[fiend]]s, [[aberration]]s,
and other monsters—rose up from the darkness and claimed
dominion over the world. The greatest among these were the
[[overlord]]s, [[immortal]] archfiends embodying the evils that plague
mortals. Each overlord shaped the world to match their whims,
and no civilization could challenge them. It was a time of chaos
that lasted for untold millennia.
The Age of Demons came to an end after an extended war between the overlords and a legendary group of champions—now known as the [[Sovereign Host]]. Believed by some to be [[dragon]]s, by others, gods—or perhaps something else entirely—these rebels raised an army of dragons allied with the [[couatl]],
native [[celestial]]s said to embody the last light of [[Siberys]]. As
the immortal [[overlord]]s couldn't be destroyed, countless couatl
sacrificed themselves, their spirits combining into a prison of pure celestial energy that could bind the overlords. Even today,
the overlords remain bound and the world protected from
immense evil by this force, now known as the [[Silver Flame]].
!! Why Does It Matter?
The Age of Demons ended a hundred thousand years ago, long
before the foundation of any civilization that exists today. But
the time lingers in myth and continues to shape modern life.
It's commonly believed that the deities of the [[Sovereign Host]]
walked the world during this time and physically battled the
[[overlord]]s. However, many scholars assert that these myths are
actually based on the deeds of heroic [[dragon]]s—for example,
the myths of the Sovereign [[Aureon]] might be inspired by the
deeds of a dragon named [[Ourelonastrix]]. It's up to the DM to
decide the truth, but it could be possible for adventurers to
find places or relics tied to the Sovereigns from this age. You
might find the lance [[Dol Arrah]] used when battling [[Katashka]]
the Gatekeeper, or the site where she and [[Dol Dorn]] flayed the
[[Mockery]] for his treachery. Whether tied to gods or dragons,
these sites and relics still hold power.
While the overlords may have been defeated, they cannot be
destroyed. Each overlord is bound in a Khyber [[dragonshard]]
and held in its prison by the power of the [[Silver Flame]].
Though bound, an overlord can influence the world in the
region around its prison... and there's no official list of all of
the overlords or where they are bound. So if a story calls for a
region where the restless dead rise and prey on the living, this
could be the prison of [[Katashka]] the Gatekeeper. If a region is
suddenly overcome by ice and snow, perhaps the shard-prison
of [[Dral Khatuur]] has been brought there.
Each overlord can only be freed if a particular passage of the
[[Draconic Prophecy]] comes to pass. The [[fiend]]s known as the
[[Lords of Dust]] work to discover and enact these prophecies,
while the [[dragon]]s of the [[Chamber]] try to stop them. Both
sides frequently use mortals as pawns, so adventurers can
easily find themselves caught up in these schemes. As they
reach higher levels, adventurers might even become active
participants in this struggle instead of mere pawns. Though
few mortals are aware of it, this is a constant cold war that
determines the fate of the world.
Dungeons from the Age of Demons are rare, few surviving
the passage of time. Any remaining sites would be infused with
fiendish or celestial power. A vault created by the [[couatl]] could
hold a deadly artifact tied to an [[overlord]]. An obsidian fortress
might be imbued with [[Rak Tulkhesh]]'s power, and people who
settle there are consumed by homicidal rage. One of the best
documented sites is [[Ashtakala]], an ancient city in the heart of the
[[Demon Wastes]] said to be the sanctuary of the [[Lords of Dust]].
!! Character Ideas
Though the overlords are bound and the Sovereigns no longer
walk the earth, consider these ways your character might be
caught up in their legendary struggle:
* You have a [[dragonshard]] embedded in your flesh, the source of some of your class abilities (e.g. [[warlock]] magic or barbarian rage). This is a sliver of an overlord's prison. How did it come to be a part of you? Do the [[Lords of Dust]] want to take it from you, or are you destined to become an avatar for an [[overlord]]?
* You possess an object your parents swore once belonged to a [[Sovereign|Sovereign Host]]. Currently it has no magical powers, but perhaps there's some way to activate its potential.
* You were born in the [[Demon Wastes]] and spent your life battling [[fiend]]s. Have you traveled south pursuing a particular fiend? Or do you follow visions granted by the [[Silver Flame]]?
//Period: 80,000–40,000 years ago//
During the Age of Giants, scholars describe how...
* [[Giant|giant]] nations in [[Xen'drik]] unlocked secrets of arcane magic still unmatched in the modern age.
* The giants fought the inhabitants of [[Dal Quor]], ending the conflict by destroying a [[moon]] and thereby breaking Dal Quor's link to [[Eberron]].
* The giants threatened to crush an [[elvish|elf]] rebellion with dangerous epic magics, prompting the [[dragon]]s to step in, utterly destroying Xen'drik and cursing the land.
In the wake of the [[Age of Demons]], the [[dragon]]s were the most
powerful force in [[Eberron]]. Some dragons helped guide lesser
creatures, including the [[giant]]s of [[Xen'drik]], in their mastery of
[[arcane magic]]. As the dragons' increasing dominion caused a
surge in the [[Daughter of Khyber|Tiamat]]'s power, the dragons were forced to withdraw to isolation in [[Argonnessen]]. They remain there to this day, in hopes of preventing her
power from increasing further.
Multiple nations of [[giant]]s arose on [[Xen'drik]]: the [[Sulat League]], the [[Group of Eleven]], the [[Cul'sir Dominion|Cul'sir]]. It's not known
whether the Cul'sir attacked [[Dal Quor]] or whether the [[quori]] of
the time sought to invade Eberron, but the two powers fought
an extended war. The giants ended the conflict by destroying
one of the [[moon]]s of Eberron with cataclysmic magic,
damaging the planar connection between Dal Quor and the
world. Since then, the quori have been unable to physically
travel to Eberron, and there are no longer any [[manifest zone]]s
to Dal Quor.
These actions had devastating repercussions for [[giant]]
civilization. In the upheaval, many [[Cul'sir]] subjects used the
opportunity to rebel, but the largest uprising was that of the
[[elves|elf]]—both those oppressed by the Cul'sir, and warrior elves
who had never been conquered by the giants. When the
Cul'sir threatened to draw on their most dangerous magics
once more to destroy the elves, the [[dragon]]s emerged in force
from [[Argonnessen]]. They utterly devastated the civilizations
of [[Xen'drik]], giant and otherwise, then laid curses on the land
that are beyond the comprehension of the modern age. To this
day, the scourge of the land prevents any advanced civilization
from rising again. The [[Traveler's Curse]] warps space and
makes travel in Xen'drik unreliable. The curse known as the
[[Du'rashka Tul]]—“the madness of crowds”—causes civilizations
that become too advanced or widespread to collapse into
madness. Draconic curses are believed the reason the giants
devolved from mighty titans into [[hill giant]]s and the other
giants known today. The full extent of these draconic curses is
unknown, but the impact is unmistakable.
Their grim mission accomplished, the [[dragon]]s returned to [[Argonnessen]] to brood. All agreed that the people of Xen'drik
would never have posed such a threat if the dragons had
not shared the secrets of magic. The [[Conclave]] called
the event //kurash [[Ourelonastrix]]//—Aureon’s Folly—and forbade
any flight henceforth from sharing the secrets of Argonnessen with
lesser beings.
!! Why Does It Matter?
The curses laid on [[Xen'drik]] mean that the entire continent is in
essence a vast dungeon, a land that can never be fully mapped
or explored. The [[giant]]s mastered secrets of arcane magic as
yet unmatched by [[human]]ity or even by the [[elves|elf]], and as such
Xen'drik is a source for powerful artifacts, [[spell]]s, and [[eldritch machine]]s. Elemental [[airship]]s and the development of the [[warforged]] were both inspired by discoveries tied to the ancient giants, and a new find could be just as important. A race to
recover a [[Cul'sir]] artifact could easily drive an adventure, and
[[Sulat|Sulat League]] weapons could shift the balance of power in [[Khorvaire]]
if they fell into the wrong hands.
While Xen'drik's many curses make it nearly impossible to
colonize the land, that doesn't stop people from trying! The
city of [[Stormreach]] is an outpost on the edge of the unknown,
a gateway through which powerful artifacts, unknown magics,
and exotic creatures flow into Khorvaire. Beyond Stormreach
lies an intriguing continent of ruins and wonders, waiting to
be explored.
!! Character Ideas
Though the Age of Giants has faded into legend, consider these
ideas how your character might encounter its echoes today:
* As an [[elf]], you're haunted by trance-visions of an ancient city of your distant ancestors hidden somewhere in trackless [[Xen'drik]]. What is the force that's calling you there?
* As an [[artificer]], you're on the edge of an arcane breakthrough, but the final piece of the puzzle is tied to the work of the [[giant]]s. You'll need to search through their ruins for clues.
* You possess a trinket from [[Xen'drik]]—a prospector's map? an ancient key?—tied to an ancient [[Sulat|Sulat League]] vault.
* You own a deed to a small stretch of land outside of [[Stormreach]]. Will you try to develop it?
//Period: 40,000–5,000 years ago//
During the Age of Monsters, history recounts that...
* [[Elf|elf]] refugees fleeing the devastation of [[Xen'drik]] settled in [[Aerenal]], birthing the [[Undying Court]], the [[Aereni]], and the [[Tairnadal]].
* [[Goblin|goblinoid]]s and [[orc]]s dominated [[Khorvaire]], while [[dwarves|dwarf]], [[dragonborn]], [[gnome]]s, and [[halfling]]s had a smaller presence and impact on the continent.
* The [[goblinoid]] Empire of [[Dhakaan]] flourished for ten thousand years, then was destroyed when the [[daelkyr]] invaded the Material Plane. Though the daelkyr were defeated, their seeds of madness destroyed the goblinoid civilization.
* The daelkyr conflict destroyed the [[dwarven|dwarf]] [[Realm Below]].
After [[Xen'drik]] was shattered by the [[dragon]]s, they remained
isolated in [[Argonnessen]]. [[Human|human]] civilization was slowly
taking shape on [[Sarlona]], but the most dynamic cultures of
this period were forming on and around the continent of
[[Khorvaire]]. The [[elves|elf]] founded a new homeland on [[Aerenal]]—
“Aeren's rest” in Elvish—instituting the [[Undying Court]] and
establishing the cultures that would become the [[Aereni]]
and the [[Tairnadal]]. On [[Khorvaire]], the [[goblinoid]]s rose to
prominence, founding the Empire of [[Dhakaan]] approximately
16,000 years ago. Over the course of the next ten thousand
years, it expanded to dominate all of central [[Khorvaire]]. The
Dhakaani slowly drove all of their competitors to the fringes—the mountains, the wastes, the marches. They clashed with
the [[dragonborn]] of what's now [[Q'barra]], the [[dwarves|dwarf]] of the
[[Realm Below]], and [[Tairnadal]] explorers, but none could stop
the advance of Dhakaan.
However, when the [[daelkyr]] led armies of [[aberration]]s through
portals from [[Xoriat]], the Empire of [[Dhakaan]] was shattered—along with the [[Realm Below]], the vast subterranean civilization of the dwarves.
Though this bitter conflict came to an end when Dhakaani
champions and [[Gatekeeper|Gatekeepers]] [[druid]]s sealed the [[daelkyr]] in
[[Khyber]], the damage inflicted was irreparable. In addition to
creating monsters such as [[dolgaunt]]s and [[doppelganger]]s, the
daelkyr unleashed more subtle curses and strains of madness.
One of these eroded the connection to the [[goblinoid]]s' [[shared dream|Uul Dhakaan]] that united Dhakaani civilization. Within generations, the ancient empire collapsed into civil war. Cults and cruelty spread among the goblinoids, and soon, all that
remained on the surface of [[Khorvaire]] were ruins and chaos.
!! Why Does It Matter?
[[Dhakaan]]i ruins are scattered across [[Khorvaire]]. Most major
cities of the modern age are built on Dhakaani foundations,
and there are tunnels and warrens beneath them that have
been largely ignored by the human inhabitants. A Dhakaani
ruin could be viewed as a simple dungeon, but these are the
remnants of a proud civilization; what an adventurer sees
merely as a useful magical weapon could be an important
cultural relic of the goblins. While the Empire wasn't as
advanced as the civilizations of giants that came before,
the daashor [[artificer]]s of Dhakaan produced remarkable artifacts and were
master weaponsmiths with a remarkable understanding of
[[adamantine]] and other exotic alloys.
This is the story that underlies both the rise of [[Darguun]]
and the recent emergence of the [[Heirs of Dhakaan]]. Before
the arrival of humanity, [[goblin|goblinoid]]s and [[orc]]s shaped the destiny
of the continent, and there are many who yearn to reclaim
that ancient glory.
Though it occurred thousands of years ago, the impact of the [[daelkyr]] incursion is still felt across [[Khorvaire]]. The [[Cults of the Dragon Below]] and the [[Gatekeeper|Gatekeepers]] [[druid]]s are active legacies of this conflict. The [[Mror|Mror Holds]] [[dwarves|dwarf]] are venturing into the ruined [[Realm Below]] and recovering daelkyr [[symbiont]]s and other relics. While the daelkyr remain sealed—and scheming—in [[Khyber]], adventurers could stumble upon ancient fortifications, an organic daelkyr vault, or some other remnant of this forgotten war.
!! Character Ideas
Whether your character is a [[goblinoid]], [[orc]], or a more recent
inhabitant of these lands, consider these ways the Age of
Monsters might inform your past and your future:
* As a character from the [[Shadow Marches]], you carry an heirloom amulet you've sworn to keep safe. Have you learned that it's part of the wards that bind the [[daelkyr]] in [[Khyber]]—and that cultists bound to a particular daelkyr will be hunting you, trying to destroy the amulet?
* You're obsessed with the early history of [[Khorvaire]] and are always searching for leads on ancient [[Dhakaan]]i ruins and [[daelkyr]] relics. Are you a city [[goblin]] or [[Tharashk]] [[half-orc]] searching for your roots? Or just a scholar of another race that's fascinated with the period?
* As a [[Dhakaan]]i [[goblinoid]] you are an advance scout for a Dhakaani [[kech]]. Were you sent to reclaim lost Dhakaani artifacts, or are you studying the people of the surface, identifying weaknesses, and considering if any are worthy allies?
* You possess a Dhakaani weapon, claimed by your ancestor and handed down through your family. There is power in the blade, but it only flows through a bearer when they prove worthy... and you haven't. Can you master the blade? And what will happen when you encounter the [[Heirs of Dhakaan]]?
The Ahdri River in [[Adar]] flows into the [[Jathara Bay]].
A valley of fertile soil and abundant life exists at the
heart of [[Adar]], covering about 400 square miles. [[Adarans]] call
this place Ahdryatmin or "Mountainsoul." A huge [[manifest zone]] tied to [[Lamannia]] that enhances all [[primal magic]] within its boundaries, Ahdryatmin is an ancient holy
site to most Adarans. Few live there despite the land's richness, for dangers lurk among its lushness.
All forms of life known to [[Lamannia]] can be found
in Mountainsoul's trees, hills, and waterways. These
creatures attack anyone who wantonly abuses the land.
Rare and potent herbs and elements can be found as
well, along with exotic foes and mysterious hermits. The
secrets of Mountainsoul are many.
Would-be [[Haztaratain]]s must visit Mountainsoul as
[[Haztaratai|Taratai]] did in the [[kalashtar]]'s early days. They seek
the center of Ahdryatmin, wherein dwells a creature
from which the place draws its name. This [[elemental]] creature,
a [[spirit of the land]], is usually found only on Lamannia. The spirit Ahdryatmin
is as old as [[Adar]], and many believe it to be connected to the
[[Draconic Prophecy]]. It often tests those who visit it, invisibly controlling the weather and the ground, and sending denizens of the [[manifest zone]] to meet and foil travelers.
Those Haztaratains who leave Mountainsoul alive are
seen as the chosen of Ahdryatmin.
!! Encounters
Ahdryatmin is a huge, wild place. No matter what the PCs do, they're likely to run across exotic [[beast]]s and [[elemental]]s from [[Lamannia]]. Most people cross Ahdryatmin to get to somewhere else, but a few have reason to go to the center of
the place. The spirit in the center of Mountainsoul might
have essential information about an object the characters
must acquire or a quest the PCs need to complete.
Items that are scarce in the outside world can be found in
relative abundance in Ahdryatmin by those who know where
to look. Reward adventurous PCs with rare [[material]]s such exotic
herbs, valuable ores, and unusual spell components. Many such objects
might be valuable in the various keeps of [[Adar]].
The Ahnadiv Mountains, perhaps more commonly known as "the mountains of [[Adar]]", are the impossibly tall and steep peaks that define the Land of Refuge in southern [[Sarlona]].
Aida works in the [[Wavecrest Tavern]] in the [[Harbor]] district of [[Stormreach]]. Sweet and lovely, she is considered too good for the place. Many of its patrons,
who are otherwise gruff, make it their job to look
out for her. Aida seems destined for better things
but is content to remain at the Wavecrest providing
a friendly face for new arrivals to the city. Gods help
anyone who oversteps the line with her in front of the
inn’s regulars!
This division of the [[Harmonious Shield]] of [[Riedra]] is equipped
with longbows and studded leather armor, and they're
expected to stay distant from the enemy. Air soldiers can
be found on most fronts.
This set of boiled leather armor is dyed a deep brown with brass rivets and suede cord. While this armor is worn, the user's weight is reduced by half, allowing them to move quickly, quietly and easily.
The airship is the most advanced [[elemental]]-powered vehicle on [[Eberron]], the pride of House [[Lyrandar]] and the forerunner of the magical advances that many hope will become commonplace in the aftermath of the [[Last War]]. The first airships emerged from the [[Cannith]] and [[Zilargo]] workshops and appeared in House Lyrandar's service just eight years ago (in 990 YK). For now, though, they remain rare, because the [[soarwood]] required for their construction is exceedingly scarce and tightly controlled.
Soarwood is a form of weightless timber found only on
the island of [[Aerenal]], and the [[elves|elf]] who live there limit
their annual harvest of the precious wood. As a result,
production of new airships proceeds at a snail's pace,
unable to satisfy the fervent demand for new vessels.
The discovery of a new supply of soarwood could literally change the world, and even convincing the elves of
Aerenal to part with more of it would be an achievement
worth a handsome reward from House [[Lyrandar]].
!! How It Works
A standard airship (at least as far as standards have been defined for this relatively new creation) looks similar to an oceangoing ship but is rigged with control fins and rudders rather than sails. An air or fire [[elemental]] is bound into a ring around the hull, which is suspended on four struts jutting outward. Air elementals typically provide better lift and maneuverability, while fire elementals provide greater thrust; the largest airships often have one of each, in two separate elemental rings. Most airships are outfitted with the finest amenities, including many decorative flourishes and creature comforts.
!!! Operation
A [[dragonmark]]ed heir of House [[Lyrandar]] must pilot a Lyrandar airship, channeling the power of the [[Mark of Storm]] through the [[wheel of wind and water]] that controls the vessel. The helm is typically situated near the rear of the ship, inside the shelter of a wheelhouse. Controlling the vessel (without the benefit of something like the [[conductor stone]]s that dictate a [[lightning rail]] route) requires constant attention, so at least two pilots typically travel on every journey.
Only a dragonmarked heir with the [[Mark of Storm]] can
use the wheel and command the bound [[elemental]].
House [[Lyrandar]] pilots train for months to gain a deep
understanding of the ship's powers and limitations.
Because of this training, a skilled pilot can execute acrobatic maneuvers in the sky.
During flight, the rest of the crew manages the airship's systems: the ''elemental core'', the heart of the engine, a [[Khyber dragonshard|dragonshard]] encased in brass and [[mithral]]; engraved metal ''veins'' that channel the [[elemental]] to the ring as well as power secondary enchantments; the ''focusing nodes'' that direct the elemental's energy and stabilize the core; the ''wind wards'' that maintain air pressure and maneuver the ship; and other systems.
Airships can move in all three dimensions, with or without the aid of the wind. They are able to fly equally well on their sides or even upside down (notwithstanding the risks
that such maneuvers present to passengers and crew).
Airships cannot actually land, because the struts that hold the elemental ring in place protrude 10 feet from the bottom of the vessel. Thus, passengers and cargo are lifted in elevators and loaded at towers in major cities (see "Suppression" below). Each ship carries rope ladders for use at smaller stations, in open terrain, or in cases of dire emergency.
A typical airship can reach a speed of 20 miles per
hour in clear skies carrying up to 30 tons of cargo.
Airships are most often employed by explorers and by
wealthy travelers who demand luxury—clients who
have a need to move quickly to places that might not be
served by the [[lightning rail]]. However, range is limited; traveling too far from a docking station might cause elemental exhaustion on the return trip, causing the focusing nodes and other components of the elemental engine to burn out.
!!! Suppression
Despite the fact that airship hulls are made from magically buoyant [[soarwood]], their non-soarwood parts and cargo result in a heavier-than-air vessel that requires an active elemental ring in order to hover. When an airship lands at a docking tower, the station suppresses or "calms" the [[elemental]], carefully returning it to the engine core as station workers use ropes to maneuver the airship into position.
The scattered remnants of the refugee Akiak people live in mobile camps in the foothills of the northern [[Paqaa Mountains]], and many more
clans are harbored by the [[Qiku]] shifters of the southern
[[Tashana|Tashana Tundra]]. There is no government or military structure per se, but
rather ad hoc leadership committees and guerrilla bands.
The charismatic [[duergar]] military leader known as [[Jade-Lin]] is attempting to galvanize the clans, and many have rallied to her flag of late.
When the last Akiak ancestral strongholds in the [[Paqaa Mountains]] fell to [[Riedra]] two years after the [[Night of Razor Dreams]], the scattered remnants of this
once-great nation were forced to the north, where they
lived in small mobile refugee camps. The few remaining
Akiak are an intriguing people—a fully integrated society
of [[dwarf]] and [[duergar]], attempting rebuild and fight back
against their Riedran enemies. The Akiak are fighting a
guerrilla-style war against the [[Inspired]], launching forays
into their occupied homelands while constantly defending themselves against counterattacks by Riedra's death
squads. An Akiak character is likely to be driven to take
back the Paqaa Mountains, and to eventually bring the
fight to the corrupt heartland of [[Riedra]].
Many Akiak dwarves and [[duergar]] have been imprisoned in Riedran mines and work camps for generations,
since the initial downfall of their nation. They are
essentially an underground slave race exploited by the
Inspired, and few but the free Akiak insurgents even
know of their existence.
!! Akiak Adventures
A select circle of Akiak leaders has knowledge of the metallurgical and [[alchemical|alchemist]] technology that underlies the [[monoliths|hanbalani alta]]. While the Akiak do not understand all the particulars,
they recently discovered that the [[Inspired]] are using the
monoliths to bring about some kind of planar alignment.
They suspect that the fate of all of Eberron might hang in the
balance. So far, only the [[shifter]]s of the [[Qiku]] seem to agree about the gravity of the situation. Akiak emissaries are being
sent abroad to disseminate this information.
The Akiak lack the strength to attack [[Riedra]] in force, so they instead rely on a strategy of infiltration and sabotage. Akiak guerrilla bands, small and mobile,
are dispatched into the mountains in search of [[hanbalani|hanbalani alta]]
installations. The hanbalani are built atop the proto-monoliths the Akiak built themselves as [[psionic|psionics]] power
plants. Destroying hanbalani is not overly difficult; surviving the journey there and
back is. The few Akiak bands that have the knowledge
and inclination to channel their revenge into monolith-busting play a deadly game of cat and mouse with the [[Thousand Eyes]] and the [[Sleeping Sword]].
''Getting the PCs Involved:'' Akiak emissaries in the
port towns of [[Winterstead]] and [[Whitetooth]] are actively
recruiting adventurers to help them in their struggle
against the [[Inspired]]. The Akiak are desperate and
hunted, but they are not without resources. Previous to
the [[Night of Razor Dreams]], the dwarves were one of the
richest peoples in all of [[Sarlona]], and a good portion of
that wealth was spirited out of the [[Paqaa Mountains]]. PCs
might earn this Akiak gold by allying with the [[dwarves|dwarf]]
against their shadowy Riedran oppressors.
Very recently, [[Qiku]] warriors have begun defying their
[[Sky Teller|Naar-Esqa]]'s dictates and joining the Akiak guerrilla raids.
PCs allied with or in debt to the Qiku might find themselves
drawn into battle. Alternatively, [[Riedrans]] see the Akiak as
savage raiders attacking from the north. The Riedran government pays a handsome bounty to foreign adventurers
who hunt down and kill Akiak fighters. In short, mercenary
work is to be had on both sides of this conflict.
You set an alarm against unwanted intrusion. Choose a door, a window, or an area within 30 feet that is no larger than a 20-foot cube. Until the spell ends up to 8 hours later, an alarm alerts you whenever a creature equal to or larger than the size of a rat touches or enters the warded area. When you cast the spell, you can designate creatures that won't set off the alarm. You also choose whether the alarm is mental or audible.
A mental alarm alerts you with a ping in your mind if you are within 1 mile of the warded area. This ping awakens you if you are sleeping.
An audible alarm produces the sound of a hand bell for 10 seconds within 60 feet.
This sand-filled hourglass has a dial at the top with settings between 1 minute and 1 hour. You can set the time and turn over the hourglass; a mental alarm alerts you with a ping in your mind if you are within 1 mile of the hourglass when the time runs out.
This 5-foot roll of sticky tape is imbued with a variation of the [[alarm]] spell. It functions as normal tape, unless you "attune" to the item, and speak the command word when removing a portion. If a creature besides you cuts this portion of tape or removes it from its place, a blaring alarm produces the sound of an emergency claxon for 10 seconds, clearly audible for 600 feet.
Only one portion of tape can be enchanted in this way at a time. If you attempt to activate another portion of tape with another piece already activated, the older portion deactivates.
If you lose attunement with this tape, any activated portions immediately deactivate, and reattuning does not reactivate those portions.
<<list-links-article "[tag{!!title}sort[title]]">>
An alchemist is an expert at combining reagents to produce mystical effects. Alchemists use their creations to give life and to leech it away. Alchemy is the oldest of [[artificer]] traditions, and its versatility has long been valued during times of war and peace.
While some creators of alchemical items content themselves with sedentary lives as merchants, providing [[tindertwig]]s and [[smokestick]]s, the true alchemist answers a deeper calling. The alchemist captures their own magic potential within liquids and extracts they creates, infusing their chemicals with virulent power to grant them impressive skill with [[poison]]s, [[explosives|alchemical explosive]], and all manner of [[self-transformative magic|potion]].
Most alchemists on [[Khorvaire]] learn their trade from a guild associated with the [[dragonmarked house]]s; members of the [[Fabricators Guild]] ([[Cannith]]), [[Healers Guild]] ([[Jorasco]]) and House [[Vadalis]] are most common. Traditional herbalism is also passed down among the inhabitants of the [[Talenta Plains]] and [[Eldeen Reaches]]—some alchemists were originally herbalists but dived into alchemy as they studied more exotic ingredients and techniques. Finally, the [[elves|elf]] of [[Aerenal]] have a tradition of alchemy focused on preservation and emulating the [[deathless]] form.
This sticky, adhesive fluid ignites when exposed to air. You can throw this flask, shattering it on impact, and causing it to ignite whatever it strikes.
These [[alchemical explosive]]s are often sold in bundles of 5 or 10.
This thin liquid grows extremely cold when exposed to air. You can throw this flask, shattering it on impact, and splashing your target with this rapidly-freezing chemical.
These [[alchemical explosive]]s are often sold in bundles of 5 or 10.
This small jeweler's eyepiece has 3 charges, which recharge daily at dawn. While looking
through it, you can expend one of its charges and detect [[transmutation]] magic for 10 minutes. While this effect is active, objects affected by transmutation magic are outlined in a faint aura when viewed through the loupe.
The ceramic container holding alchemist's spark has two chambers. When shattered, the chemicals vaporize and mix to create a dazzling discharge of lightning.
These [[alchemical explosive]]s are often sold in bundles of 5 or 10.
What at first glance appeared to be an enormous insect is actually some sort
of [[construct]]. A black iron exoskeleton holds a glass hemisphere churning with
a molten green liquid. Smoke rises where the construct’s mandibles drip this
liquid to the ground.
The [[giant]]s of ancient [[Xen'drik]] created countless magical
and alchemical innovations. One of these creations, the
alchemy beetle, still wanders the continent. Their glass reservoirs can be filled with acid or [[alchemical explosive]] liquid, which drips from the construct's mandibles when it bites, or explodes when it is destroyed.
A [[Sharn]] native and [[Morgrave|Morgrave University]] alumni, Marjani
served as chronicler in the [[University Library|Morgrave University Library]] for over a decade before assuming the post of registrar and interim bursar. Should you need to change your courses or negotiate tuition options, Alemayehu will be happy to help you.
The main healer of the House [[Jorasco]] [[enclave|Jorasco Enclave (Stormreach)]] in [[Respite]], [[Stormreach]], is Alhaura d'Jorasco. She is a devotee of [[Olladra]] and the principles of life and death, a path common within House [[Jorasco]]. Alhaura is able to cast [[raise dead]] using the [[enclave]]'s [[altar of resurrection]].
Raising the dead always carries a risk, but usually a simple [[augury]] can ascertain whether or not a particular resurrection will go smoothly. But in recent years in the [[Stormreach enclave|Jorasco Enclave (Stormreach)]], these divinations have failed at inopportune times. In a handful of cases, after a "weal" [[augury]] result, foreign spirits have seized the bodies of those being raised. When [[Jorasco]] sought to resurrect the [[Storm Lord|Storm Lords]] [[Delera Omaren]], the risen warrior cried out in the tongue of the [[giant]]s and killed dozens with lightning before she was returned to the grave.
Another time, a pack of [[marut]]s appeared after a member of the [[Wayfinder Foundation]] was raised. The outsiders slew the adventurer and devastated the enclave before vanishing.
Alhaura is eager to find an answer to this mystery and will sponsor any expedition that promises to solve it.
As a child, Alina loved to wander through her clan’s gem mines. Shortly after she inherited control of the family holdings, her miners tapped into one of the richest deposits of Khyber [[dragonshard]]s ever found in [[Khorvaire]]. The [[elemental binding]] industry has a constant need for Khyber shards, and, with the development of the [[airship]] and production of elemental weaponry for [[Breland]], this demand has ramped up dramatically over the past century... which has made Alina Lorridan Lyrris one of the wealthiest women in Khorvaire.
Alina plays the role of the hedonistic socialite. She has residences in [[Sharn]], [[Wroat]], [[Fairhaven]], [[Stormhome]], and every major city in [[Zilargo]]; wherever she goes, she throws parties and attends the local gala events. Beneath this, she is a brilliant schemer with a hand in dozens of intrigues and ties to many criminal organizations. She’s an active player in the schemes of the Shadow Cabinet (the inner circle of leaders who direct the [[Aurum]]’s far-ranging goals), with a personal interest in undermining the power of House [[Cannith]]. She constantly works to expand her holdings and mining interests.
In addition to these business dealings, she has a number of personal interests. Alina is an accomplished [[wizard]] with a particular interest in [[Khyber shard|dragonshard]]s; she’s always interested in acquiring an unusual shard or stealing a [[dragonshard focus|dragonmark focus item]] prototype from the [[Twelve]]. Beyond this, she takes a perverse pleasure in corruption. She enjoys placing truly noble people in situations where they are faced with difficult moral decisions, perhaps as a way of justifying her own amoral actions. When a writer for the [[Korranberg Chronicle]] called her “Khyber’s Daughter,” it was due as much to this love of discord as to the source of her wealth.
Alina Lorridan Lyrris is a beautiful and brilliant [[gnome]]. She is fond of platinum jewelry bearing [[Khyber shard|dragonshard]]s, often infused with defensive enchantments. Her strengths are her intellect and her charisma, combined with tremendous wealth and a talent for [[arcane magic]]. Her specialties are [[transmutation]], [[binding|elemental binding]], and [[illusion]]; few things in her quarters are exactly as they appear, and it’s said that her famous menagerie of birds is actually made up of people who crossed her and were [[polymorph]]ed. She is a careful planner from a culture that has refined paranoia to an art form, and she has magical means of escape on hand at all times. Though she can be an enemy, Alina can also make an interesting ally; she is willing to fund adventurers if they’ll perform errands for her, but she’ll try to steer them into situations that will force them to question their beliefs and morals.
* Alina is especially interested in [[Khyber shard|dragonshard]]s and [[magic item]]s powered by them. As such, she is a potential purchaser for any such objects the characters might acquire items that either can’t be sold through normal markets or that will fetch a better price from her.
* Alina has constructed a soul trap using Khyber shards that should be able to bind any sort of [[celestial]] or [[fiend]]. She wants the characters to test it for her... on the [[Inspired]] ambassador. Alternatively, she might employ the heroes as bodyguards at an embassy party while she attempts to accomplish the binding herself—without telling the PCs of her true plans at the party.
* One of Alina’s rivals (a member of another [[gnome]] family, House [[Cannith]], or even the [[Gatekeepers]]) is suspicious of her seemingly endless supply of Khyber shards. This patron wants the adventurers to investigate the depths of the primary Lyrriman mine. Is the operation what it claims, or is Alina in league with [[aberrant|aberration]] or [[demonic|demon]] forces?
Alinda Dorn is the [[bone knight]] commander of [[Fort Bones]] in [[Karrnath]]. For the past eight years she has devoted
herself to the destruction of the [[Valenar]], and she is
one of the foremost experts on their strategies and
tactics. Her [[undead]] cavalry can't match the Valenar
horses for sheer speed, but her steeds never tire. She
has learned that force alone isn't enough to match
the Valenar, and she is an expert in games of cat and
mouse; she is also a master of the game [[Conqueror]]
and loves to play it with newcomers.
Alinda despises the [[Emerald Claw]] with the same fervor as the Valenar, believing
its adherents to be traitors that besmirch the name of
the [[Blood of Vol]]. She is deeply suspicious of [[Malevanor]] and
the [[Crimson Covenant]] of [[Atur]]. Along with the [[Kind]] of the [[Corpse Collectors]],
she believes that [[Fort Bones]] provides a vital opportunity to prove the loyalty of the [[Seekers|Blood of Vol]] and to place
their unique skills in the service of the crown.
This marble slab acts as a channel for the powers of the [[Mark of Healing]]. A person who possesses the mark can channel its power to cast [[raise dead]] on a creature lying on the altar. A person with a greater version of the mark can cast [[resurrection]] using the altar.
''Founder and Current Leader:'' [[Yorrick Amanatu]].<br/>
''Primary Sphere of Influence:'' The [[Stormreach Guard]].<br/>
''Family Business:'' The Stormreach Recruiters.<br/>
''Districts:'' [[Respite]], [[Silverwall]].<br/>
''Allies:'' House [[Kundarak]], the [[Red Ring]].<br/>
''Enemies:'' House [[Lyrandar]], [[Paulo Omaren]], [[Jonas Wylkes]].
This [[dwarf]] family has its roots in the [[Cloudreavers]] of the [[Lhazaar Principalities]]. When Korchan Amanatu failed to claim the crown of [[Krag]], he took his ships south to the [[Thunder Sea]]. Reaving under the sign of the broken crown, the Amanatu pirates were known as the most ruthless killers of the south sea. Korchan would never have accepted peace with [[Galifar]], but he was finally slain on the open seas. His young son [[Yorrick|Yorrick Amanatu]] joined the other [[Storm Lords]], bringing the raw power of the Amanatu reavers to the alliance. Yorrick Amanatu remains a Storm Lord to this day—the sole survivor of the founders, at 260 years old.
The Amanatu reavers formed the backbone of the original [[Stormreach Guard]], and the Amanatu line is directly responsible for training the Guard and managing the Stormreach Recruiters. Many of the chief recruiters and most capable officers of the Guard are
Lord [[Yorrick|Yorrick Amanatu]]’s children. If the day ever came for a civil war between the [[Storm Lords]], most of the Guard would follow his lead.
!! The Amaranthine City of [[Irian]]
This immense metropolis fills an entire layer. The Amaranthine
City is the capital of an empire in its first bloom of glory. Gilded
banners catch the wind. Armored [[angel]]s and [[pegasi|pegasus]] patrols
pass overhead. People laugh in the streets, healthy and happy.
Artisans create a mosaic depicting glorious victories. While
this is an empire, the message isn't about oppression, but
one of potential. This is an empire where all the citizens are
prosperous and all have equal opportunities. People are proud,
the city is full of wonders, and the future is bright.
The Amaranthine City is widely seen as the heart of [[Irian]]. Its
[[Dawn Empress]] is the first and greatest of the [[Architect]]s. Her empire
isn't driven by conquest, but rather by exploration—discovering
new lands and opportunities, just as mortals can always find
new talents within and opportunities beyond.
Layers tied to the Amaranthine City reflect its theme of
expansion and discovery. These layers may hold outposts in
otherwise-uninhabited lands filled with wonders of nature, or
they might hold prosperous farms and estates, inhabited by
[[ember]]s, with [[lumi]] and [[deva]]s helping to drive the theme.
!! The Amaranthine City of [[Mabar]]
The Amaranthine City is widely seen as the heart of Mabar.
Experienced planar travelers may find it familiar, for it's a
dark reflection of the Amaranthine City of [[Irian]]. Irian shows
the city in its first days of glory: prosperous, clean, full of joy
and life. The Amaranthine City of [[Mabar]] is a haunted shadow
of this glory. Like its counterpart, this immense metropolis
fills an entire layer, but here, its banners are faded and torn,
walls are cracked, and fountains are dry. [[Shadow|shadow]]s still move
through the streets, a miserable reminder of the crowds
that once filled the city. The rotting tapestries and chipped
mosaics speak of a past age of wonders and glory. The two
are unmistakably the same city, both in architectural style and
the layout of its streets. This feels like the last days of a grand
empire, an image of decaying grandeur; but there's great
power beneath the tragic façade. The walls may be cracked,
but they are still mighty, and the [[mezzoloth]]'s rusty trident
can kill you as easily as a polished one.
The city's ruler, the [[Empress of Shadows]], is the first and
greatest of the [[Dark Power]]s. She spends much
of her time presiding over the decaying pomp and grandeur of
the Amaranthine City. The sages of [[Syrania]] believe that the Empress
of Shadows chooses which fragments of other planes will be
pulled into Mabar, and planar emissaries sometimes dwell in
the Amaranthine City seeking to negotiate with her.
This city is the seat of the [[yugoloth]]s; for every yugoloth in
the Amaranthine City of [[Mabar]], there is an [[angel]] in the city in [[Irian]], all the way up to the [[Dawn Empress]] and the [[Empress of Shadows]]. Most likely, this is just a way of reflecting the planes' core concepts—beginnings and endings, hope and
despair. But it's possible that Irian and Mabar are somehow the
same—perhaps the Dawn Empress is the Empress of Shadows,
and though they appear to exist at the same time, they reflect
the beginning and end of the same spirit.
The layers tied to the Amaranthine City reflect its theme
of imperial ambition and decaying power. Some embody
desperation—a collapsing fortress awaiting an assault that will
surely destroy it, or an abandoned sanitarium whose inmates are
trapped and starving. These regions are inhabited by [[shadow]]s,
but the fiendish gardeners can instill near-sentience into them
if it serves their purposes. Fragments claimed by the Empress
of Shadows are drawn into her empire, and usually acquire a
[[yugoloth]] outpost even as the life is drained from the region.
''District Type: ''Embassy district<br/>
''Buildings: ''Embassies and consulates (9), diplomatic
residences (60), upscale lodging (35), upscale food
(50), exotic trades (30), upscale trades (55), upscale
residences (40)<br/>
''First Impression:'' The flags of most of [[Khorvaire]]'s
nations fly in this district, hanging in front of
monumental embassy blocks in this district. The
crowds include people of all races and many different
ethnic backgrounds.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Tradefair]] (northeast); [[Sovereign Towers]] (east); [[Dava Gate]] (southwest); [[Myshan Gardens]] (below); [[Korranath]] (above)
Ambassador Towers, [[Sharn]]'s embassy district, is
home to embassies and consulates from ten foreign nations: [[Aundair]], [[Cyre]], [[Karrnath]], the [[Lhazaar Principalities]], the [[Mror Holds]], the [[Talenta Plains]],
[[Thrane]], [[Zilargo]], [[Aerenal]], and [[Riedra]]. A
single consul or ambassador heads each embassy. Aside from the dignitaries, the rest of the embassy staff consists of bureaucrats and
clerks as well as diplomats, negotiators, and spies. In
the minds of [[Khorvaire]]'s diplomatic community, the
[[Last War]] might not be over—a few years of peace could
be nothing more than a brief hiatus from a conflict
that lasted a century, and hostilities could erupt again
at any moment. Best to be prepared.
[[Cyre]]'s embassy was established here long before
the [[Last War]], and its staff continues to advocate
for the interests of the villagers of [[New Cyre]], in
eastern [[Breland]].
!! Noteworthy Locations
* ''Embassies:'' [[Aundair|Aundair Embassy (Sharn)]], [[Cyre|Cyre Embassy (Sharn)]], [[Karrnath|Karrnath Embassy (Sharn)]], the [[Lhazaar Principalities|Lhazaar Embassy (Sharn)]], the [[Mror Holds|Mror Embassy (Sharn)]], the [[Talenta Plains|Talenta Embassy (Sharn)]], [[Thrane|Thrane Embassy (Sharn)]], [[Zilargo|Zilargo Embassy (Sharn)]], [[Aerenal|Aerenal Embassy (Sharn)]], [[Riedra|Riedra Embassy (Sharn)]]. Unofficially: [[Q'barra|Joseth ir'Kalain]].
* [[Brelish Museum of Fine Art]]. The museum displays work produced by Brelish artists and relics recovered from [[Xen'drik]].
* [[The Citadel|King's Citadel]]. The headquarters of the King's Citadel, [[Breland]]'s elite military and intelligence service. The Citadel is also a high-security prison holding Sharn's most dangerous criminals.
* [[Athania's Companions]]. A bordello with a secret spy ring.
House [[Sivis]] runs one of the smallest operations of any
[[dragonmarked house]] in [[Stormreach]], but that’s not to
say that it has no presence, thanks in large part to the
efforts of its ever-approachable leader, First Stonespeaker Amilene Santor. The Sivis [[gnome]]s maintain no [[enclave]] per se in the city, but they have a space of
their own outside the offices of the [[Citadel of the Twelve]]. Thanks to good relations with the [[dwarves|dwarf]], House Sivis keeps private offices inside the [[Kundarak]]
[[enclave|Kundarak Enclave (Stormreach)]]. These offices contain a message station (with two active [[speaking stone]]s), the First Stonespeaker’s private office, and a small but valuable arcane library of which she is especially proud and the maintenance of which
she oversees personally.
First Stonespeaker Santor keeps a tight rein on magical services, and all subordinates must consult her before providing certain [[Mark of Scribing]] services to those outside the house. Amilene rarely leaves the confines of [[Coasthold]], but she has garnered a citywide reputation for being cordial and approachable
in her space, and she enjoys being a neutral party in [[Stormreach]].
Amnizus are powerful [[devil]]s. They are are arrogant, bullying, and ruthless, but they're also highly intelligent tacticians and unfailingly loyal.
An amnizu can etch the flesh away from a creature with a touch from its crooked fingers. But its true powers lie in its command over the minds of other creatures. It can force a creature to forget everything it experienced or learned during the last several hours, a process which is dazing and traumatizing to the victim. Even attempting to attack an amnizu requires extreme force of will, as the devil can redirect the attacker's animosity to another nearby creature.
This rough piece of teal sea glass hangs on a simple chain. The wearer can simply pop this amulet in their mouth, and the magic will allow them to go without breath for thirty minutes. The amulet must be charged for thirty minutes in clean air between uses.
This large, spherical ruby is set in a golden clasp. The amulet distracts all those that look upon the wearer; as long as they are strangers, no one the wearer interacts with will remember their face.
This small glass orb with a small ball of moss rolling around inside dangles from a rusted brass chain. When activated inside of a cave, mine, dungeon, or similar underground structure, the ball of moss inside the amulet will roll around in the sphere, leading the user towards the closest accessible exit.
This amber pendant has a beautiful black beetle encased inside, and dangles from a brass chain. It allows the wearer to communicate fluently with insects and arachnids. Flies, spiders, ants, and other bugs will behave amicably towards the wearer, and are more likely to aid the wearer when called upon.
This circular golden pendant has a teardrop-shaped hole in the center. The edges of the amulet are etched with strange runes.
Peering through the center of the amulet allows the user to see magical auras, much like the spell [[detect magic]], as long as the magical object or creature is within 30 feet.
While wearing this amulet, you are hidden from [[divination]] magic. You can't be targeted by such magic or perceived through magical scrying sensors.
This small crescent moon amulet is set with glittering gems and hangs on a silver chain. Once per week, the wearer can activate this amulet's magic, and instantly gain the benefits of a good night's sleep. The amulet must be charged under a crescent moon between uses.
This necklace is a small porcelain heart on a golden chain. When worn, the amulet is warm to the touch and gently pulses with the heartbeat of the person of the wearer's choosing.
This amulet is made of a blue crystal, and seems to have a large grey moth enclosed within. While wearing this amulet in moonlight or in a [[Thelanis]] [[manifest zone]], you can manifest ethereal moth wings from your back, granting yourself the ability to fly at the same speed you can run. The wings persist for 1 hour, but become useless while you are in bright light. Once you manifest the wings, you can't do so again until the next dusk.
This small glass globe hangs on a leather strap. A small flame flickers gently inside the globe.
This amulet keeps the wearer at a comfortably warm temperature, on even the coldest nights, and the user has resistance against frost-based spells.
The Analects of War is an ancient military treatise written by [[Karrn the Conqueror]], the founder of the pre-[[Galifar]] nation of [[Karrnath]]. It has been the most influencial text on Karrnathi military strategy and tactics for the last three millennia, and seminars on the treatise are taught every semester at [[Rekkenmark Academy]] to this day. In addition to military thinking, it has influenced business tactics, legal strategy, lifestyles, and more across [[Galifar]].
These heavy boots are studded with iron plates. When the command word is spoken, these boots suddenly and magically weigh 500 lbs.
The Andnemun Desert stretches across [[Sunyagir]] in [[Syrkarn]] and [[Borunan]] in [[Riedra]]. A small band of [[stone giant]] nomads known as the Sandstriders are rumored to roam the Andnemun.
In addition to her remarkable studies of the
[[King's Forest]], Ange Thornlong of [[Morgrave University]] is renowned as
the founder and current coach of the resident
[[hrazhak]] team, the Morgrave Maulers; she
continues to work to promote this [[shifter]] sport
across the [[Five Nations]]. Professor Thornlong
is currently working on an anthropologist’s field
guide to the [[Demon Wastes]], and will be leading
two expeditions over the course of the semester.
An angel is a celestial paragon of virtue, honor, and honesty. Its sublime beauty and presence can drive awestruck onlookers to their knees. Yet angels are destroyers too, and their appearance portends doom as often as it signals hope.
Angels native to different [[plane]]s express different aspects.
* The angels of [[Daanvi]] represent law in the service of justice and the greater good, and serve as local authorities.
* In [[Fernia]], angels represent the comfort fire offers: its life-giving warmth, the light that holds back the shadows.
* The angels of [[Irian]] embody the general principles of light, hope, and compassion.
* In [[Shavarath]], angels are living symbols of the endless fight for justice. Different cohorts within the Legion of [[Justice]] represent specific concepts within that broad ideal, such as kindness to fallen foes, or protecting civilians and avoiding collateral damage.
* The neutral angels of [[Syrania]] aren't champions of justice or bringers of hope; rather, they're observers and scholars, defined by their [[domain|Syranian domain]] of study. Syranian [[dominion]]s are the variety that can fall and become [[radiant idol]]s.
Angels may honor and serve the [[Sovereign Host]], but like all other creatures, have no direct access to them. Even angels must take their existence on faith.
!! Types of Angel
<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
While wearing this armor, you can cause two incorporeal feathered wings to sprout from your back for 1 hour or until you choose to end this effect.
Once you have used this property, it can't be used again until the next dawn.
This spell creates an [[undead]] servant. Choose a pile of bones or a corpse of a [[humanoid]] or beast within 10 feet. Your spell imbues the target with a foul mimicry of life, raising it as an undead creature.
You can mentally command any creature you made with this spell if the creature is within 60 feet of you (if you control multiple creatures, you can command any or all of them at the same time, issuing the same command to each one). You decide what action the creature will take and where it will move during its next turn, or you can issue a general command, such as to guard a particular chamber or corridor. If you issue no commands, the creature only defends itself against hostile creatures. Once given an order, the creature continues to follow it until its task is complete.
The creature is under your control for 24 hours, after which it stops obeying any command you've given it. To maintain control of the creature for another 24 hours, you must cast this spell on the creature again before the current 24-hour period ends. This use of the spell reasserts your control over up to four creatures you have animated with this spell, rather than animating a new one.
If you are able to cast rare-tier spells, you can cast this as such to animate or reassert control over four additional undead creatures. Each of the creatures must come from a different corpse or pile of bones.
Animated objects are crafted with potent magic to follow the commands of their creators. When not commanded, they follow the last order they received to the best of their ability, and can act independently to fulfill simple instructions. Some animated objects (including many of those created using the [[fey]] magic of [[Thelanis]]) might converse fluently or adopt a persona, but most are simple automatons.
Swords, axes, clubs, daggers, maces, spears, and even self-loading crossbows can be animated to float through the air and attack unauthorized creatures who enter a warded area. These weapons can also be wielded by a suit of animated plate armor. But any inanimate object could be imbued with magic in this way; brooms, furniture, caltrops, even bags of ball bearings that swarm and harry designated foes.
The magic that animates an object is dispelled when the construct is incapacitated. At that point, the object becomes inanimate and is too damaged to be of much use or value to anyone.
While holding this shield, you can speak its command word to cause it to animate. The shield leaps into the air and hovers in your space to protect you as if you were wielding it, leaving your hands free. The shield remains animated for 1 minute, until you choose to end this effect, or until you are incapacitated or die, at which point the shield falls to the ground or into your hand if you have one free.
Despite being hunchbacked and hump-shouldered, annis [[hag]]s are the largest and most physically imposing of their kind, standing eight or more feet tall, and have teeth and nails of iron (see Iron Token below). They usually lair in mountains or hills.
Although annis hags can easily tear a grown man apart, they love hunting children, preferring their flesh above all others. They use the flayed skin of such victims to make supple leather, and a hag's lair often shows the signs of this industry.
Annis hags leave tokens of their cruelty at the edges of forests and other areas they claim. In this way, they provoke fear and paranoia in nearby villages and settlements. To an annis hag, nothing is sweeter than turning a vibrant community into a place paralyzed with terror, where folk never venture out at night, strangers are met with suspicion and anger, and parents warn their children to "be good, or the annis will get you."
The most infamous annis hag on [[Khorvaire]] is [[Sora Maenya]].
!! Iron Token
An annis hag can pull out one of her iron teeth or nails and shape and polish it into the form of a coin, a ring, or a tiny mirror. Thereafter, any creature that holds this //iron token// can have a whispered conversation with the hag, provided the creature and the hag are on the same plane of existence and within 10 miles of each other. The holder of the token can hear only the hag's voice, not those of any other creatures or any ambient noise around the hag. Similarly, the hag can hear the holder of the token and not the noise around it.
A hag can have up to three iron tokens active at one time. She can discern the direction and approximate distance to all of her active tokens. She can instantaneously deactivate any of her tokens at any distance (no action required), whereupon the token retains its current form but loses its magical properties.
''Date: '' [[1-14 Nymm|Khorvaire calendar]]
Every summer during the first two weeks of Nymm in [[Stormreach]], the [[Red Ring]] holds
an open tournament in which anyone—zealous fans, adventurers, layabouts—can enter the arena to prove their mettle. These championships are the only chance a non-[[Bloodbound]] has to enter the arena and feel the thundering roar of the crowd. Many entrants are adventurers seeking the glory of the ring or more
experience in heated battle. Others are hopefuls looking for entrance to a stable. A large number of them are nothing more than deluded spectators tired of being
on the outside looking in. Competing in the games is also a chance to settle a score with an enemy who might be otherwise untouchable outside the arena.
The games go on for two weeks, and champions
earn their weight in gold, as well as bragging rights, and
the chance to join a stable as a [[Bloodbound]].
!! Feast of Blood
At the outset of the Annual Games and its preceding
special championship matches, the [[Blood Council]]
hosts a giant feast in the arena. Hundreds of stable workers, masters, [[Bloodbound]], and the invited elite
of [[Stormreach]] gorge themselves on delicacies and
wine on the sandy floor of the ring. These feasts are
gala affairs with no expense spared. Singers, acrobats,
and displays of strength and martial skill by Bloodbound delight the guests. These feasts are important to anyone connected to the [[Red Ring]]. One of these
events provides the perfect opportunity to bend the
Blood Council’s ear and beseech its members’ aid in
arranging bouts. A feast of blood is also an ideal occasion to make allies and enemies in arena politics, not to mention a chance to slip poison into a Bloodbound’s
goblet. Interested parties can also garner blackmail
evidence for a philandering stablemaster, [[Storm Lord|Storm Lords]],
or other highly placed dignitary who lets his scruples
fall by the wayside.
Near the end of the [[Age of Giants]], when the [[elf]] slaves of the [[giant]]s rose in revolt against their masters in the aftermath of their war with the [[quori]], Emperor [[Cul'sir]] immediately called upon his learned spellcasters to craft a doomsday weapon like the Moon Breaker that destroyed [[Crya]], one so ingenious that it could suppress the uprising without unleashing the destruction the "altar of obsidian and brass" had caused.
One of those assigned to the task was a gifted
arcanist by the name of Antaegus, who was rare
among his kind for being born with [[sorcerous|sorcerer]] magical aptitude. As work on the new weapon progressed, serious misgivings began to plague Antaegus. For what he deemed “security reasons,” the emperor had ordered the weapon researched and assembled by different teams, each ignorant of what the others were doing. In his private [[divination]]s, Antaegus saw great calamity on the horizon and feared that the emperor was taking his people down a truly dark path—the //wrong// path. There had been no time to study the repercussions of the Moon Breaker, and
he suspected pride to be the emperor’s motivation
in ordering this creation. Despite the emperor’s
decree, Antaegus decided that he needed to know
just what he was participating in. And so he broke
into his master’s laboratory.
What Antaegus uncovered left him shocked and
confused. The emperor’s demand called for a weapon
that would release a horrible contagion into the air,
one that would affect the slave races without doing
any damage to the [[giant]]s’ lands or buildings. Further, the weapon would draw on an ancient source of power—malevolent power—to provide the dark energy
required to generate and release a magical plague of
such proportions. This [[source of sentient power|Sakinnirot]] was
old when the world was young—and it sat beneath the
imperial city.
At a loss, Antaegus gathered up what materials
he could, including the entirety of his team’s work
on the project and, in a moment of desperation,
destroyed them. In an instant, he single-handedly
set Emperor [[Cul'sir]]'s plan back a year or more.
When the emperor heard the news, he called for
Antaegus’s immediate execution, but his own advisors thwarted him, since they saw the honor in what the [[sorcerer]] had done and defended his right to
live. In the end, the emperor “banished” Antaegus
until the end of the war, at which time his final fate would be decided. The emperor forced Antaegus’s former associates to imprison the sorcerer in a specially prepared object that magically suspended its occupant’s life functions.
Obviously, the war did not go nearly as well for the emperor as he had expected, and almost forty millennia passed before the [[Kundarak]] [[dwarves|dwarf]] finally
returned Antaegus to life beneath the [[Tower of Kol Korran]] in [[Stormreach]]. By that time, everything he had known was gone.
!! Antaegus Today
In the first days after Antaegus’s release, he was
immensely confused. The world had moved on to an
extent he had never even conceived, and he found
himself utterly alone in it. In an attempt to stave off
sheer madness, the giant set about understanding the
city in which he found himself. Thanks in part to his
ability to walk unseen, Antaegus soon learned the ultimate fate of his former civilization and the [[dragon]]s’ role in its destruction. He walked among the [[Tents of Rushemé]] and saw firsthand what his once-proud race had become. Today, his primary goal is to retain his frayed sanity, but almost as important is his desire to uncover what became of the [[eldritch machine]] he once helped construct. After thousands of years in
proximity to it, Antaegus now has an intuitive understanding of the [[entity|Sakinnirot]] suffusing the city of [[Stormreach]], but he fears the prolonged exposure to its corruption has taken an as yet uncertain toll on his soul.
Shaken though he is, Antaegus remains one of the
most powerful creatures in [[Stormreach]], one whose
moves and motives might shape the course of the city’s
future. Perhaps the easiest way to integrate him into a
campaign is to introduce him as a rogue element for an
unrelated conflict or situation. Antaegus’s search for answers is likely to put him in the thick of the affairs of certain [[dragonmarked house]]s ([[Kundarak]] and [[Tharashk]] in particular) and his existence is bound to be noted by other [[giant]]s eventually, despite his efforts. [[Gaulronak]] and the other [[Guardians of Rushemé]] (see
page 111) are liable to view him as a spirit of the land,
which will only complicate his affairs. (In return,
Antaegus views them as devolved mockeries of his
former race.)
It’s important to note that Antaegus is not the
pure-hearted champion he once was (or believed he
was). If he truly loses his mind, the insane [[sorcerer]]
could search out the doomsday device in an attempt
to secure it for the war he expects to wage with the
[[dragon]]s that destroyed his civilization. Whatever he
does, Antaegus is the city’s quintessential random
factor, a powerful and unstable individual with few
existing ties.
A 10-foot-radius invisible sphere of antimagic surrounds you. This area is divorced from the magical energy that suffuses the multiverse. Within the sphere, spells can't be cast, summoned creatures disappear, and even magic items become mundane. Until the spell ends (up to 1 hour, or until your concentration breaks), the sphere moves with you, centered on you.
Spells and other magical effects, with extremely few exceptions, are suppressed in the sphere and can't protrude into it. Energy expended to cast a suppressed spell is consumed. While an effect is suppressed, it doesn't function, but the time it spends suppressed counts against its duration.
Teleportation and planar travel fail to work within the sphere, whether the sphere is the destination or the departure point. Extradimensional spaces are also not accessible.
A creature or object summoned or created by magic temporarily winks out of existence in the sphere. Such a creature instantly reappears once the space the creature occupied is no longer within the sphere.
Spells and magical effects such as [[dispel magic]] have no effect on the sphere. Likewise, the spheres created by different antimagic field spells don't nullify each other.
When the [[Aurum]] was founded in the [[Mror Holds]] centuries ago, it was an act of rebellion. [[Galifar]] was then the dominant power in the region, and members of the Aurum believed that House [[Kundarak]] had abandoned the [[dwarves|dwarf]] when it allied with the [[Twelve]]. Through the Aurum, the lords of the mines would use their wealth and resources to gain power over their rivals. Antus Soldorak was once the youngest member of the Aurum. Today, he is both the chancellor of the Platinum Concord and a member of the Shadow Cabinet, and one step away to achieving his childhood dream.
Antus’s holdings include gold and platinum mines. Following the secession of the [[Mror Holds]], he founded the [[Soldorak]] Mint, and his currency is now commonplace throughout [[Karrnath]] and the [[Lhazaar Principalities]]. He has invested his wealth across the [[Five Nations]], and could have an interest in any sort of industry that serves the needs of an adventure. He is determined to break the power of the [[Twelve]] and stamp out the last vestiges of [[Galifar]], and to this end he searches for new industrial and magical developments—seeking to fund such endeavors and exploit their results before the knowledge can be acquired or destroyed by the Twelve. He has an enormous gilded [[airship]], //Chains of Gold//, which includes its own [[speaking stone]] station and an infirmary with cutting-edge [[Jorasco]] facilities... all of which are operated by [[dragonmark]]ed excoriates loyal solely to Soldorak. Soldorak spends most of his time aboard his ship, flying from city to city to oversee local operations. He purchased his lordship and noble title, "Master of Coin", from King [[Kaius III|Kaius ir'Wynarn III]] when [[Karrnath]] was in desperate financial straits, and takes pleasure in lording over the people who once oppressed his homeland.
Soldorak is an elderly [[dwarf]]. Though he is physically weak, he has an amazing talent for reading motivations and bending people to his will. This talent could be subtle [[sorcery|sorcerer]] or [[psionic|psionics]] power, or just raw intuition; whatever its source, he can predict exactly what strings he needs to pull to control someone. If he makes an enemy, he will find out everything he can about that individual, to best assess weaknesses and strengths. His power isn’t physical; it is his ability to wrap his victims in "chains of gold", using his wealth to offer them the things they desire—or to threaten the people they can’t defend.
Antus ir’Soldorak can be connected to any sort of scheme that would weaken the nobility or the [[dragonmarked house]]s, or increase the power of the [[Aurum]]. A couple of ideas:
* Antus ir’Soldorak wants to outfit the characters and provide them with information they need in order to ransack one of House [[Kundarak]]’s high-security vaults. The vault holds vast wealth, but Soldorak doesn’t want any of it; his only interest is the terrible publicity that the theft will bring to Kundarak. If the heroes are successful, they could find the treasure to be artifacts from [[Cyrans|Cyre]] who were slain during the [[Mourning]]; will the characters keep the wealth, or share it with Cyran refugees?
* Soldorak recognizes the talents of a [[wizard]] or an [[artificer]] character and offers to fund her, allowing her to create items she normally couldn’t afford. However, when Soldorak begins mass-producing this breakthrough, the characters are caught up in a conflict between the [[Aurum]] and the [[Twelve]].
This small tavern with a handful of rooms to rent is carved into a bend in
the wall of Mason's Tower. House [[Ghallanda]] operates the inn, and the host is a matronly [[halfling]]
named Eranna. It's known to be under the protection of the [[Boromar Clan]], which makes it one of the safest establishments in [[Lower Dura]].
The Anvilfire Inn is the chosen watering hole of
[[Forgelight]]’s laborers. Here they seek some peace and
quiet away from “flashy” adventurers and the demands
of House [[Deneith]]. The laborers work hard, and the
innkeeper, Brom Grimbound, will not put up with
anyone pestering them in their one refuge.
Araam is the [[Architect]] of the [[Refuge]] of [[Irian]] and embodies the concept of hope. She's a wise advisor, and while she may not
always have answers, she helps people look at their problems
in new ways and see that all problems can be solved. She's the finest healer in Irian, and there are few injuries she cannot heal
or curses she cannot break. There's no monetary cost for the
services of the Refuge, but Araam charges those who benefit
to give hope to someone who needs it; they won't be allowed to
return to the Refuge until that debt is paid.
Araam's crown is a flower with remarkable medicinal properties that only grows in [[manifest zone]]s to [[Irian]]. House [[Jorasco]] requires a steady supply of it for their [[healing potion|potion of healing]]s.
In a chasm in [[Khyber]] whose ceiling is higher than any mountain on [[Eberron]] stands the abandoned city of Arak Yor. Up and down the enormous walls, multiple layers of dwellings are carved into the stone. This ancient but clearly humanoid construction surrounds a central community of utterly alien make, with towering spires and pod-shaped masses grown or melted directly from the rock. Those who have had the misfortune to meet the [[illithid|mind flayer]] servants of the [[daelkyr]] recognize these central features as of mind flayer construction, yet even those fearsome creatures abandoned the city centuries ago. Legend says that something is imprisoned at the peak of the city’s
central spire that is neither [[demon]] nor [[daelkyr]], and whose presence drove even the mind flayers to madness. Today the city is inhabited only by [[golem]]s and
other [[construct]]s of ancient design, mindless caretakers of a forgotten dwelling.
Arawai is the Sovereign of Life and Love. She is the patron of fertility and of the benevolent aspects of nature, bringing good harvest and gentle rain. Her symbols include a sheaf of wheat tied with green ribbon or a [[bronze dragon]].
Wands, staffs, and rods are well-established weapons in the
world of Eberron. Similarly, arcane artillery doesn't employ
any sort of physical projectile, relying solely on magical
energy—but rather than a small weapon one person can
easily carry, arcane artillery refers to a variety of larger
arcane foci that can increase the range and area of magical
attacks. Likewise, the [[war|Last War]] employed magical explosives such
as [[blast disk]]s that could wreak devastation by triggering a
previously stored spell.
!! Operating Arcane Artillery
While a specially trained spellcaster must operate arcane
artillery, more than one person can assist with its operation,
allowing a team to prime, aim, and fire in a single round. Using these weapons requires specialized training, similar to that of an [[artificer]] or [[magewright]]; someone trained to
operate arcane artillery is generally called a bombardier. A typical bombardier may know one or more spells that they're only able to cast using a focus—such as a [[siege staff]] or [[long rod]]. So an [[Aundair]]ian specialist might be able to produce [[cloudkill]] through a focus, but not cast the spell on its own. Bombardiers don't use their own power when casting these spells;
instead, they prime the weapon using a [[dragonshard]] solution
known as the [[breath of Siberys]]. However, player characters are more versatile than
magewrights or bombardiers.
!! Enhanced Artillery
While arcane artillery is a powerful force, there's still a place for
mundane siege engines that use physical projectiles. The ballista,
mangonel, and trebuchet are all common forms of artillery,
seen on both the battlefield and on warships. However, just as
a [[Thrane]] archer may have used an enchanted bow, the siege
engines of the [[Last War]] are enhanced with magical power.
For example, a siege engine can be partially
animated, speeding its use. Generally, an animated engine
loads itself while the crew aims it, requiring less time to fire an animated ballista or mangonel. House [[Cannith]] also manufactured fully animated
siege engines, capable of self-aiming. Such an engine required
the same amount of time to aim and fire as a crewed engine,
it simply had no need of a crew. However, these engines could
only follow simple instructions and had little ability to adapt,
requiring clear, absolute orders to be effective: “//Continue to
attack the north tower until it is destroyed.//”
!!! Enchanted Ammunition
Ballista bolts and mangonel
missiles are often enchanted with spell effects that trigger
when the bolt strikes its target. This effect is in addition to
the standard damage inflicted by the siege engine.
* //Explosive ammunition// affects a 30-foot radius sphere centered on the impact of the bolt. Typically, explosive ammunition deals fire damage, igniting flammable objects that aren't being worn or carried. However, [[Karrnath]]i //deathbolt//s deal necrotic damage and only harm living creatures, while [[Thrane]] //Tira's tears// deal radiant damage.
* //Summoning ammunition// conjures creatures around the point of impact. [[Aundair]]ian firestones produce a temporary flaming sphere that randomly rolls around the area of impact. [[Zil|Zilargo]] binders developed a more powerful form of this ammunition which conjures an [[elemental]] on detonation, but it is extremely costly and rare.
* //Panic stones// affect all creatures within a 90-foot-radius sphere centered on the impact of the stone; those without high enough resolve drop whatever they are holding and flee in terror.
The mentors at [[Arcanix]] comprise the Arcane Congress, a council of spellcasters
who explore the limits of the arcane arts under a mandate instituted by King [[Galifar I|Galifar ir'Wynarn]].
The royal warlord and minister of magic, [[Adal|Adal ir'Wynarn]], serves
as the go-between for the [[Aundair]] crown and the congress, though
some factions within the congress distrust Adal due to his fascination with war and weapons of arcane destruction. In addition to providing Queen [[Aurala|Aurala ir'Wynarn]] with advice on arcane matters, the congress oversees the floating towers of wizardry in [[Arcanix]] and helps mentor the next generation of [[wizard]]s and [[artificer]]s.
The Arcane Congress competes with the [[Twelve]] in recruiting promising students of magic.
You create an invisible, magical eye within 30 feet that hovers in the air for up to one hour.
You mentally receive visual information from the eye, which has normal vision and darkvision out to 30 feet. The eye can look in every direction.
You can move the eye up to 7 mph in any direction. There is no limit to how far away from you the eye can move, but it can't enter another [[plane]] of existence. A solid barrier blocks the eye's movement, but the eye can pass through an opening as small as 1 inch in diameter.
You touch a closed door, window, gate, chest, or other entryway, and it becomes locked until it is dispelled. You and the creatures you designate when you cast this spell can open the object normally. You can also set a password that, when spoken within 5 feet of the object, suppresses this spell for 1 minute. Otherwise, it is impassable until it is broken or the spell is dispelled or suppressed. Casting [[knock]] on the object suppresses arcane lock for 10 minutes.
While affected by this spell, the object is more difficult to break or force open.
Arcane magic is a form of science. A [[wizard]] works through complex magical formulas. An [[artificer]] invents new and bizarre ways to create and combine [[spell]] effects. A [[sorcerer]] interacts with magic in a more instinctive way, but is still tapping into ambient magical power that doesn't require anything like faith.
There are predictable rules that shape reality, and with proper study and force of
will, anyone could potentially perform arcane magic. This is
what makes arcane magic the foundation of civilization in the
[[Five Nations]]: it can be taught (as with schools for [[magewright]]s and [[wizard]]s), and once learned, it is entirely reliable. Arcane magic involves channeling ambient magical
energy—the powers of the [[plane]]s, the emanations of the Ring
of [[Siberys]]—and focusing it to alter reality. The components of
a spell—like verbal incantations, somatic gestures, and focus
items—help this process, but the most important element of
spellcasting is mental focus. Though a fighter could perfectly
duplicate the words and gestures of a wizard, nothing would
happen. You must cast the spell in your mind, harnessing and
shaping mystical energy, and this is dangerous and exhausting;
this is why most spellcasters are limited in how many spells
they can cast each day.
Arcane orders, sometimes known as "wizard circles", are guilds or councils for arcane spellcasters. These provide the magically gifted with sanctums to practice
their arts, share mystical knowledge, and debate the finer points of [[arcane theory]]. As the different circles focus on different types of magic,
this also allows for a certain degree of control of the mystical market.
//''Membership Benefits.''// Someone accepted into a [[Sharn]] arcane order (that is, the [[Guild of Starlight and Shadows]] or the [[Esoteric Order of Aureon]]) must pay 100c to join, with ongoing dues of 25c each year thereafter. With this payment comes
many benefits, including the following:
* You can stay at the order's hall in any major city and enjoy the amenities of a wealthy lifestyle free of charge.
* For as long as you have access to the order's hall, the cost of crafting a [[magic item]] at the site is reduced by 10 percent.
* While in the hall, you have advantage any attempts involving arcane lore or research.
* Membership in an arcane order in [[Sharn]] grants prestige within [[Breland]]. Though this status provides no tangible benefit, it proves that you are a gifted mage and stand above any mere [[magewright]] or dabbler.
Beyond these material benefits, being a member of a wizard circle provides a significant degree of prestige and legitimacy, as well as fellowship with other [[wizard]]s or [[artificer]]s.
!! Arcane Orders
<<list-links-article "[tag{!!title}category[organization]sort[title]]">>
The Arcane Order of Aureon is the largest and most powerful [[arcane order]] in [[Aundair]], wielding influence both within the [[Arcane Congress]] and among the nobility of the nation. For this reason it is often disparaged by the other circles, who assert that it has become a hollow shell choosing members based on pedigree rather than [[arcane|arcane magic]] talent—that its members are more likely to be nobles rather than sages. Members of the Arcane Order must swear to use “[[Aureon]]’s Gift” to preserve civilization and in the service of the law. While its diverse membership practice all forms of magic, the schools of [[evocation]], [[abjuration]], and [[divination]] have especially strong support in the order.
Though not the first wizard’s circle, this was the first circle to use the term [[arcane order]]. The Arcane Order was founded in ancient [[Daskara]] by monks devoted to [[Aureon]], but quickly spread into [[Thaliost]]. Bound by the belief that magic should be a force for law and order, the circle were staunch supporters of [[Galifar I|Galifar ir'Wynarn]]. They provided magical support during his conquest and helped enforce order across the united [[kingdom|Galifar]] in the aftermath. They formed the solid foundation of the [[Arcane Congress]] and ensured the Congress served crown and kingdom. Princess [[Aundair|Aundair ir'Wynarn]], herself a member of the rival [[Guild of Moonlight and Whispers]], was instrumental in convincing the other circles to unite in the Arcane Congress, setting aside the feuds many of the lesser circles had with the Arcane Order. Those feuds continue to this day, but are conducted within the confines of the Congress.
Over the course of centuries, internal rivalries caused the Arcane Order to split along national lines. This resulted in [[Breland]]’s [[Esoteric Order of Aureon]] and the [[Erudite Order]] of eastern [[Cyre]]. The Arcane Order remained a force in central Cyre and in [[Thrane]], though its support dropped significantly in [[Thrane]] following the depredations of [[Sarmondelaryx]], the [[Year of Blood and Fire|Bel Shalor]], and the rise of the [[Silver Flame]]. Today the Arcane Order maintains a single hall in [[Thrane]], in the city of [[Sigilstar]].
(requires a missing limb)
This prosthetic appendage was developed by [[artificer]]s of House [[Cannith]]. To attune to this item, you must attach it to your arm at the wrist, elbow, or shoulder, at which point the prosthetic magically forms a copy of the appendage it's replacing.
While attached, the prosthetic provides these benefits:
* The prosthetic is a fully capable part of your body.
* You can remove the prosthetic at will, and it removes itself if your attunement to it ends. It can't be removed against your will.
* You can magically detach the prosthetic and launch it up to 60 feet away. Immediately after striking its target, the arm flies back to you and reattaches.
[[Arcane magic|arcane magic]] involves the manipulation of vast, ambient mystical energies that permeate [[Eberron]]. These forces are largely omnipresent and invisible, not unlike gravity; they’re fundamental elements of the world, and in the course of time most cultures find some way to harness and manipulate them. Like most forms of science, there are different theories about how this science works, and specifically what force is being manipulated.
* [[Siberyan Theory]]
* [[Externalist Theory]]
* [[Sympathetic Theory]]
* [[Dominion Theory]]
Some rogues enhance their fine-honed skills of stealth and agility with [[arcane magic]], learning tricks of [[enchantment]] and [[illusion]]. These rogues include pickpockets and burglars, but also pranksters, mischief-makers, and adventurers.
This farming village on [[Lake Galifar]] provides food for
the nearby floating towers of wizardry that serve as
home to [[Aundair]]'s [[Arcane Congress]]—a cutting-edge
research facility and the finest school of magic in [[Khorvaire]]. Most people reach the towers by magical
means; for others, the village rents [[hippogriff]]s to bear
visitors to the fortresses for a modest fee.
The three floating towers of Arcanix hover above Lake Galifar, unmoving and untroubled by wind or rain. Their labyrinthine corridors house
mentors and students who explore the mysteries of magic as they have since the great institution was
founded nearly 1,000 years ago. They also advise Aundair's [[queen|Aurala ir'Wynarn]] on all things magical, and confer with colleagues
visiting from other nations.
The floating castles contain classrooms and laboratories, cells for students, and apartments for mentors. Great libraries hold the collected lore of generations,
with rituals and spells bound in dusty tomes. Hidden
vaults contain great treasures and dangerous items, some unearthed by adventuring wizards (such as the great [[Gate of Xabra]]), others created by the mighty mages who have lived here.
Apprentices come from all over [[Khorvaire]] to train at
Arcanix. If you're a [[wizard]], sage, or [[artificer]], you might
have learned your craft here.
This heavy tunic of waxed leather cannot be pierced by arrows. Though the user is protected from piercing damage, the impact of the arrow will still leave a hefty bruise.
Archfey are [[immortal]] representations of faerie tales told on [[Eberron]]. They are the foundation of [[Thelanis]], the force that sets
a story in motion. Where greater [[fey]] may be tied to a single
story, most archfey have inspired countless tales—often as the
antagonist, though they can also be benevolent. The [[Lady in Shadow]] is the archetype of the mighty witch who lives apart
from society, whose anger can bring a terrible curse. She's the
villain of the //Sleeping Prince//, but she also curses those who
steal from her secret garden, and may have advice for those who
approach her carefully and with gifts.
In some cases, stories
refer to the archfey by name. When something goes missing in
the [[Five Nations]], people assume the [[Forgotten Prince]] stole it. Other archfey inspire tales, but those stories are seen through a local lens. The Lady
in Shadow set the story of the Sleeping Prince in motion long
ago, but in [[Eberron]], the villain of the story is Lady [[Narathun]],
or [[Hezhaal]] the [[dirge singer]], or [[Sora Katra]]. This is fine with the
Lady in Shadow; she doesn't need mortals to know her name.
Many archfey dwell in the [[Moonlit Vale]]. Some rule over
[[feyspire]]s, while others dwell in the [[Palace of the Moon]]; the
intrigues of the Court are their defining stories. Archfey that rule
[[layer]]s are known as ''anchor barons'', as each is the anchor that
defines the [[barony]]. They come to the Palace of the Moon for
revels or conclaves, but prefer to dwell in their own story.
Archfey possess great power within [[Thelanis]] and its [[manifest zone]]s, but to act in the world beyond, they need agents. Some recruit agents directly, working with [[Greensingers]] or training [[warlock]]s or other emissaries; an archfey could serve as an immortal group patron for a group of adventurers. Typically,
an archfey wants its agents to take actions relating to its story;
the [[Forgotten Prince]] charges his agents to steal secrets and
unloved things. Others don't want agents; they want mortals
to reenact their stories, as in many versions of the Sleeping
Prince. [[Hezhaal]] the dirge singer really did curse the marhu's
son long ago, and [[Sora Katra]] is another real person who
just happens to resemble the [[Lady in Shadow]] in some ways.
Neither Katra nor Hezhaal knowingly served the Lady in
Shadow—but she may have secretly aided them, or placed gifts
or obstacles in their paths that might make them reenact the
stories, unknowingly becoming avatars of the archfey. Archfey
can't be permanently killed; as long as their stories are told, the
archfey will reform. However, this usually involves a greater fey
being promoted to fill the role; the archfey still exists, but they
aren't exactly the same as the one that came before.
Some example archfey are listed below, just a few examples of the dozens in Thelanis. In creating new archfey, consider the stories that are told about them and
how those stories could play out again in the current campaign.
!! Archfey of Thelanis
<<list-links-article "[tag{!!title}category[entity]sort[title]]">>
The Architects are the most powerful spirits of [[Irian]]. Each
embodies an aspect of the [[plane]], and oversees a realm of linked [[layer]]s
within it. They're unique [[celestial]]s with great wisdom and power, but most of their
time and energy is devoted to the planar seeds—guiding the
growth of the seed, smoothing over problems, and adding a few
personal touches. Planar seeds emerge within an Architect's
realm, expanding until they break off and join their new planes.
The power of the Architects is largely bound to their realms.
They can't directly intervene in the Material Plane, though
they can work with [[warlock]]s or send [[lumi]]. Often this involves the reintegration of a planar seed, or examining regions where [[Mabar]] has removed a fragment.
!! The Architects
<<list-links-article "[tag{!!title}sort[title]]">>
What are the best ways to store vast amounts of
information? That question has occupied
chroniclers and librarians for centuries. Scrolls
and books were the finest information-storing
methods for a long time, but the first archivists
imagined something greater: storing information
in a real or an artificial mind. What library could
match a mental archive capable of accessing
information in seconds? As they work towards
this goal, archivists have become masters of
storing knowledge and creating artificial
intelligences fueled by [[arcane magic]] and [[psionics]]. These techniques
have yet to be perfected and institutionalized, and of all [[artificer]]s, archivists are on the cutting edge of arcane science.
Talented archivists can write mystical calligraphic symbols on a small mundane object, thus rousing a keen mind within it. This semi-sapient [[magic item]] can record and manipulate information with a speed and efficiency no other system can replicate.
Ardents are [[psionic|psionics]] empaths who realize their psychic potential through intuition and emotion. Their transcendental understanding of the mind and
its place in the cosmos grants them the ability to influence others'
emotions. These mystics can bring an ally back from the brink of madness, or help them recover from traumatic experiences. They can even accelerate the body's natural healing to mend wounds (an ability used by the [[Healing Hand]] of [[Riedra]]), though not with the same efficacy as a bearer of the [[Mark of Healing]]. That said, [[Jorasco]] healers cannot heal afflictions of the mind like the ardent.
By adapting different states of mind called psionic mantles, an ardent can specialize in certain domains of emotion. The ''mantle of clarity'' enhances the ardent's ability to focus the mind and suppress heightened emotions such as panic, anger, or disgust. On the other hand, the ''mantle of elation'' augments mania and euphoria, and can mentally destabilize nearby enemies.
Halfway between [[Droaam]] and the [[Dagger River]], Ardev is the main gathering place for farmers and ranchers working the Ardev Expanse. Ardev was built to take advantage of Chalice Lake, which collects the water of several small creeks flowing across the plains. The town also sits astride a major [[Orien trade road|Orien trade roads]], making it an important rest stop for caravans traveling to the west. Ardev markets provide the supplies for the king’s private dwellings at [[Castle Arakhain]], and the city has more than the usual share of [[Citadel|King's Citadel]] agents to ensure the safety of the king. As the main jumping-off point for prospectors using the old western road to travel to the [[Graywalls|Graywall Mountains]], Ardev always has miners in town, as
well as those offering maps to “lost mines” and other ancient ruins.
Since the end of the [[Last War]], [[Lhazaar|Lhazaar Principalities]] traders have made their way to the [[Syrk|Syrkarn]] port city of Ardhmen in order to barter for spices
and [[dreamlily]]. This city is the second largest settlement in [[Syrkarn]] (after [[Nderitese]]), but explorers expecting to find themselves landing in the "[[Stormreach]]" of [[Sarlona]] are in for a somewhat muddy letdown. Even after decades of
Lhazaar trade, Ardhmen remains little more than clusters of fishing huts, transitory nomadic trader enclaves, and the ancient stone dock remnants of the port city that
was leveled in the ancient [[magewars|Sundering]].
To learn more about the people of Ardhmen, see [[Syrks]].
Some [[Summit Road]] agents are stationed permanently in [[Ardhmen]] and other Syrk settlements. [[Khorvairians|Khorvaire]] attempting to travel to [[Adar]] make
landfall at Ardhmen, for the coastline of that besieged
mountain land is all but impassable.
The Argentum is a ministry within the
Church of the [[Silver Flame]]. Originally dedicated to
the acquisition, study, and redistribution of [[magic item]]s and artifacts, it was repurposed during the [[Last War]] to serve as [[Thrane]]'s espionage agency.
In {{!!title}}, you might...
* Clash with tribes of [[dragon]]-worshiping barbarians.
* Explore an ancient city of dragons.
* Discover mighty artifacts and long-lost [[spell]]s.
Argonnessen is home to the oldest civilization on [[Eberron]]. The [[dragon]]s wield ancient magic, and they have
shielded their homeland against [[divination]] and teleportation. Tribes of barbarians roam the [[Seren]] Islands and
the coastlines of Argonnessen; these include members
of almost every [[humanoid]] race, perhaps collected by
[[dragon]]s in ages past. The Seren barbarians worship the
dragons and protect the coasts from invaders. To date,
no one from Khorvaire has ventured into the interior of
the continent and returned to speak of it.
No one knows how many [[dragon]]s live in Argonnessen, but stories tell of vast cavern complexes filled with
the treasures of fallen civilizations, of prisons holding
bound [[demon]]s, of cities made from [[adamantine]].
To those of [[Khorvaire]], Argonnessen is a mystery
space on the map. To date, no envoy or merchant has ever breached
the [[Great Barrier|Great Barrier Mountains]] and returned to tell the tale. Distant [[scrying]] has allowed mapmakers to trace the continent’s major
geographic features, but many regions are shielded from
remote viewing, and prying too deeply into its mysteries
has proven very dangerous. In 750 YK, the famed arcane
cartographer Jolian Dan Jessel promised to present the
[[Library of Korranberg]] with the first true map of Argonnessen. Before the work was completed, Jolian’s workshop was burned to the ground, and the [[gnome]] himself was never found. Few events escape the [[Eyes of Chronepsis]], and the wise leave Argonnessen be.
!! Powers That Be
Dragons are solitary creatures for the most part. Even
among the [[Thousand]], each dragon establishes his own
lair within the dominion of his flight. Few dragons
choose to spend their lives in the constant company of
other dragons.
Nonetheless, the dragons of Argonnessen are intelligent beings that have had hundreds of thousands of years to develop customs and traditions. Dragons might
maintain their own lairs and live solitary lives, but groups do exist in Argonnessen, organizations that give structure to draconic life.
* the [[Conclave]]
* the [[Eyes of Chronepsis]]
* the [[Light of Siberys]]
* the [[Chamber]]
!! Getting There
Getting to Argonnessen is a challenge in its own right.
No captain in his right mind sails to the land of the
dragons. The [[Seren]]s challenge anyone who nears [[Totem Beach]], and the guardians of the coast are deadly indeed. Surely other landing points exist? On the map it appears
that way, but the waters around Argonnessen are deadly.
Wild [[elemental]]s drift through cloud and sea, and seem
to be drawn to [[elemental vessel]]s. Perhaps this is a natural
occurrence, but it seems more likely that the dragons
have something to do with it. [[Sahuagin|sahuagin]] also pose a threat
to the unwary traveler. Worse still, travelers’ tales speak
of [[kraken]]s, vast maelstroms that arise without warning,
and [[dragon turtle]]s the size of islands. And then there
are the true dragons one could face when Argonnessen
is finally in sight.
Perhaps these risks are overstated. Even so, the
stories are sufficient to keep House [[Lyrandar]] and other
merchant captains from risking the wrath of the dragons.
Adventurers who want to travel to Argonnessen must
acquire their own mode of transportation.
Teleportation is possible. Various forms of remote
viewing can allow explorers to spot a suitable touchdown
point on the mainland. However, scrying has its dangers.
Although the continent isn’t completely shrouded, many
areas are hidden from prying eyes. Some of the dragons' [[eldritch machine]]s just block [[divination]]; others actually lash out with a powerful scry trap. Prying into the affairs
of dragons is a dangerous business.
The safest option is to seek native aid. An invitation from the [[Chamber]]—or one of the other powers of Argonnessen—is ideal. Another approach is to deal with
the [[Seren]]s. Occasionally a Seren can be found wandering [[Khorvaire]], or drinking in the taverns of [[Stormreach]]. If adventurers earn the trust of such a wanderer, they
might at least secure safe passage to [[Totem Beach]]. And
if they’re lucky, their guide might know a path across the
[[Great Barrier|Great Barrier Mountains]] and into the interior.
!! Territories
The continent of Argonnessen is divided into four informal territories. All areas fall under the rule of the [[Conclave]], and the borders between them are open; a [[dragon]] of the [[Thousand]] can choose to settle in the [[Vast]] whenever he wishes. The true borders between the territories are cultural. Any dragon can settle in the Vast—but he must be prepared to live by its harsh rules.
* the [[Thousand]]
* the [[Light of Siberys|Light of Siberys (region)]]
* the [[Tapestry]]
* the [[Vast]]
!! {{!!title}}'s Influence in Khorvaire
In [[Khorvaire]], you might...
* Prevent a villain from acquiring a powerful artifact smuggled out of Argonnessen.
* Encounter a [[dragonborn]] barbarian born on the [[Seren]] Islands, who shares tales of mighty wyrms.
* Battle a [[dragon]] who guards a hidden vault.
Some say the mysterious dragons of Argonnessen
hide in plain sight, that shapechanged dragons scattered across [[Khorvaire]] pull the strings of civilization. According to some stories, the dragons seek to protect
the younger races from vile [[fiend]]s. In other tales, the
[[dragon]]s see the people of Khorvaire as fodder for
arcane experiments. A dragon could be encountered
as an ally or as a cruel enemy who casually crushes
[[humanoid]]s.
The magic of Argonnessen is far more powerful than
the forces wielded by the [[wizard]]s of [[Khorvaire]]. Many
of the greatest artifacts in history were made in Argonnessen. Dragons are infused with magic, and their creations are made from the bones and scales of their kind.
!!! Trinkets from {{!!title}}
| !<<dr d10>> |!Trinket |
| 1 |A pierced [[dragon]] scale on a cord |
| 2 |A statuette of a dragon carved from black bone |
| 3 |A dragon's tooth, engraved with an unknown sigil |
| 4 |A child's doll of a dragon, woven from leather cords |
| 5 |A dagger carved from a dragon's talon |
| 6 |A brass disk bearing the silhouette of a [[black dragon]] |
| 7 |A small egg-shaped piece of polished bone |
| 8 |A bone fragment with brass inlaid runes |
| 9 |A leather pouch filled with tiny draconic teeth |
| 10 |A single large seed that's warm to the touch |
Once, the mighty forges of [[Sharn]] churned out new and amazing weapons
of war. With the help of [[Cannith]] makers and other
arcane crafters, the great forges crafted various types of
[[warforged]], powerful vehicles, and the wondrous moving
cities. Of these latter creations, only two remain active to
the current day. The most famous of these is Argonth, the
largest engine of war ever built.
Argonth, a massive structure that appears to be part
fortress, part cliffside, and part cityscape, floats above the
ground and slowly moves from place to place. The town
might be along the shore of [[Silver Lake]] one day and sliding
beside the [[Droaam]] border the next. The floating town was designed as a mobile fortress to help defend [[Breland]] during the [[Last War]]. Currently Argonth patrols the edge of the [[Mournland]], but if tensions rise with
[[Droaam]] or [[Darguun]], the fortress can be deployed to
reinforce a threatened border.
The Captain of Argonth is ''Alain ir’Ranek''. He leads the troops and support
personnel that make up Argonth’s citizenry. The mobile
fortress moves at a steady two miles per hour as it traces its
patrol route, but its speed can be increased to as much as
ten miles per hour when the need arises. The increased
speed requires a lot of power and puts a strain on the
fortress’s resources, and thus such speed is called upon
only in emergency situations.
The citizens of Argonth are all in the [[Breland]] military, and the town operates under military protocols. In
the past, it has served as a base of operations for enemy
engagements, as a support center for stationary castles,
and as an attack platform when Brelish troops crossed
into enemy territory. Now its role is to patrol and protect
Breland from raiders, marauders, and the potential threat
of hostile armies from neighboring nations or the wastes of the [[Mournland]].
Every few weeks, Argonth stops to take on supplies.
When this occurs, a market grows up around the town
where those nearby can come to trade and share news with
the soldiers harbored within the mobile fortress. Visitors
rarely receive permission to enter Argonth, so the next
best thing for them is to interact with the soldiers and
support personnel at a market festival.
Argonth has become home to a number of [[warforged]]
veterans who have pledged their swords to the [[Brelish|Breland]]
crown. Two of the more influential warforged are ''Big Bara'', who
commands a company of scouts known as Bara’s Breakers, and ''Finias Wandhand'', who never fought in the [[Last War]] but instead
became fascinated with the [[arcane|arcane magic]] arts. Currently, Finias
is under the tutelage of ''Eera ir'Jalon'' ([[human]] [[wizard]]), Argonth’s master of magic.
An armblade is a retractable magic weapon (any one-handed melee weapon) that attaches to the arm of a [[warforged]], becoming inseparable from them as long as they're attuned to it.
<<list-links-article "[tag{!!title}sort[title]]">>
This set of tarnished iron plate armor is covered in intimidating yet beautiful detailing. Any blood spilled on this armor is absorbed, temporarily enhancing the wearer's strength.
This set of steel plate armor is lined with soft sheep's wool. A large sigil of a closed eye has been engraved on the breastplate. When struck, the armor emits a quiet crystalline tone, reminiscent of a small bell.
While worn, the user's concentration cannot be broken.
This suit of rough grey leather armor is lined with heavy wolf fur. Once per day, the user can cast [[gaseous form]] on themselves. The effect persists for 1 hour or until the wearer chooses to end the effect.
<<<
{{gaseous form}}
<<<
This armor never gets dirty.
This consecrated silver plate armor protects the wearer from being possessed by [[ghost]]s or [[fiend]]s. The armor also gives off a strong holy aura that scalds [[Mabar]]an [[undead]] or [[fiend]]s that touch it.
This plate armor grants its wearer resistance against all nonmagical damage. In addition, you can activate this armor's magic to become immune to nonmagical damage for 10 minutes or until you are no longer wearing the armor. Once this power is used, it can't be used again until the next dawn.
While you wear this armor, you gain resistance to one type of damage (e.g. fire, lightning, necrotic) for 1 hour. The DM chooses the type or determines it randomly.
This set of leather armor is studded with heavy steel plates. Wax seals are scattered over the armor, dripping down the cuirass like blood. At will, the wearer can decide to take the damage from any hit landed on an ally within fifty feet.
This suit of heavy steel plate armor has the image of an eye engraved into the breastplate. If the wearer is incapacitated, the armor takes control, and will walk the wearer away from the battle to safety. While activated, the engraved eye darts back and forth, searching for danger.
This suit of black plate armor is etched with gold detailing. If the wearer dies, their soul is automatically sealed into the armor where it will remain until the body is [[revived|raise dead]], the soul is transferred to another vessel, or another person dies in the armor. Resurrecting someone wearing this armor is a much easier and safer affair than attempting to pull a soul back from [[Dolurrh]].
This set of peculiar leather armor is made from speckled-green snake skin. If you are able to channel [[primal magic]], you can cast [[polymorph]] on yourself to transform into a snake.
This set of glowing chainmail makes the wearer look slightly translucent. Long lengths of transparent silk drape from the user's shoulders, billowing elegantly in an unseen breeze.
While worn, this armor makes the wearer slightly incorporeal. Attacks have a chance of phasing through the wearer.
This set of silver armor is perpetually covered in a thin layer of frost. The wearer's skin becomes icy to the touch, and their breath is visible as a cloud of steam in the air.
The wearer becomes nearly immune to extreme cold. The wearer can also freeze small bodies of water at will, and once per day, can cast a 60-foot cone of frost.
This armor is worn by powerful [[eladrin]] of [[Taer Syraen]].
This suit of green-hued half-plate armor allows the wearer to summon a double of themselves as a [[rare-tier|spell tier]] [[spell]]. The double will attack designated enemies until it suffers a mortal injury, or until one minute has passed, after which it will crumble away into dust. The double cannot speak, and its physical details seem slightly blurred.
This armor was once worn by Wultram Kraal, a [[Karrnath]]i soldier of great renown who died in battle near [[Thaliost]] several decades ago. His suit of beautifully articulated plate armor bears a magical echo of his dauntless spirit. The armor is designed for ease of movement over style, and a poorly-repaired gash is clearly visible on the gorget.
The armor grants a large advantage whenever the wearer rushes headlong into battle.
[[Io'lokar]]’s most distinctive non[[dragon]] residents are
the Arnaaracaex, or Swords of [[Arnaarlasha]]. When
Io’lokar was built, the great [[gold dragon]] established this
extended clan of [[stone giant]]s as its defenders. The
descendants of [[Xen'drik]] [[giant]]s who had willingly served
Arnaarlasha’s line for generations, they have served the
city just as unfailingly.
The Arnaaracaex are all [[sorcerer]]s with the ability to cast [[antimagic field]], [[globe of invulnerability]], and [[dispel immortal]]. They
inhabit the [[Moontowers]] of which they are the custodians,
but the [[giant]]s are often found at large in the city. It is not
known what life-bond originally dedicated the giants
to [[Arnaarlasha]]’s line, but their allegiance to [[Io'lokar]]
is absolute.
The leader of the Arnaaracaex is the elder [[K'Naatha]].
Arnaarlasha was an ancient [[gold dragon]] of the [[Warders]] who, during the destruction of [[Io'vakas]], rescued and defended around a thousand refugees and founded the nearby city of [[Io'lokar]]. Her death 400 years ago prompted a coordinated attack on the city from a host of [[rogue dragon]]s, but the magical defenses she helped erect helped the inhabitants fend off the siege. The Battle of Arnaarlasha’s Fall is celebrated to this day in Io'lokar. The [[Arnaaracaex]], or Swords of Arnaarlasha, are a band of [[stone giant]]s who faithfully serve the city in her memory.
This [[mithral]] longsword is of [[Aereni|Aerenal]] design, bearing script along the blade that reads "arelind", an [[elven|elf]] word that means "ally" or "champion of the people". These blades are often gifts given by elven [[wizard]]s to non-elven allies of great esteem.
This fine blade sheds dim light when unsheathed. In addition, the wielder can speak, read, and write the Elvish language as long as the sword is on their person.
Gain advantage when blocking attacks from projectiles, including when attempting to defend allies. Projectiles curve towards the shield when you will the shield to attract them.
The [[dwarf]] Arrun Stone is
the last of the original immigrant [[Knights of Thrane]]. Arrun is a
stoic individual who prefers to let [[Valen Vanatar]] direct the
knights, but he is the strongest among them and always
at the forefront of any battle.
The practice of [[necromancy]] is forbidden among the [[dragon]]s of [[Argonnessen]], but Arstyvrax is one of this land’s foremost practitioners of the dark art. He is one of a dozen members of the [[Shadowmasters]]. But what not even the other Shadowmasters suspect is that Arstyvrax has a very different purpose to his studies. He is secretly a [[vampire]], having been transformed two hundred years past while doing fieldwork in [[Xen'drik]] near the [[Ring of Storms]].
One of [[Upper Menthis]]' four theaters, the Art Temple is famous for cutting-edge,
avant-garde plays. It has no resident playwright;
instead, the theater solicits submissions from across
[[Khorvaire]], though residents of [[Sharn]] pen most of
its productions. The theater's owner, Cassa Faer
([[elf]]), prides herself on discovering new talent, but she definitely gives preferential
treatment to her personal acquaintances, and tends
to become romantically involved with each new
playwright whose play she produces.
Masters of unlocking magic in everyday objects, artificers are supreme inventors. They see magic as a complex system waiting to be decoded and controlled. Artificers use tools to channel arcane power, crafting magical objects. To cast a spell, an artificer could use [[alchemist]]'s supplies to create a potent elixir, calligrapher's supplies to inscribe a sigil of power on an ally's armor, or tinker's tools to craft a temporary charm. The magic of artificers is tied to their tools and their talents.
!! Arcane Science
In the world of Eberron, arcane magic has been harnessed as a form of science and deployed throughout
society. Artificers reflect this development. Their knowledge of magical devices, and their ability to infuse mundane items with magic, allows [[Eberron]]'s most miraculous projects to continue.
During the [[Last War]], artificers were marshaled on a
massive scale. Many lives were saved because of the inventions of brave artificers, but countless lives were also
lost because of the mass destruction unleashed by their
creations.
!! Seekers of New Lore
Nothing excites an artificer quite like uncovering a new
metal or discovering a source of elemental energy. In
artificer circles, new inventions and strange discoveries
create the most excitement; for example, the magical artificial intelligences that [[archivist]]s work with have made quite a stir in the last few years. Artificers who wish to make their mark must innovate, creating something fresh,
rather than iterating on familiar designs.
This drive for novelty pushes artificers to become adventurers. Eberron's main travel routes and populated
regions have long since been explored. Thus, artificers
seek the frontiers of civilization in hopes of making the
next great discovery in arcane research.
!! Organizations of Artifice
<<list-links-article "[tag{!!title}category[organization]sort[title]]">>
This hammer has 2 charges. While holding it, you can expend a charge and cast the [[mending]] spell from it. The hammer regains all expended charges daily at
dawn.
Through sheer luck or divine will, the [[Thrane]] city of Aruldusk escaped the [[Last War]] relatively unscathed, even as cities and towns were destroyed around it. Thanks to its good fortune, the once small town exploded in growth, becoming a vibrant city. Commerce and visitors come by way of the [[lightning rail]] passing through the city, or along one of the three caravan routes converging there. Aruldusk caters to travelers and adventurers and features shops, inns, and restaurants that bring gold into the community
''Color:'' Orange-red<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Passage|Mark of Passage]]<br/>
''Associated Plane:'' [[Dolurrh]]
The [[dragon]] [[Vvaraak]] told the first [[druid]]s that Aryth has a similar effect on [[manifest zone]]s as [[Zarantyr]] has on tides, and that particularly weak manifest zones appear only when Aryth is in its full moon phase. Some say that those born under this moon are restless folk, driven to travel and explore; [[Lhazaar]], who led the first great migration from [[Sarlona]] to [[Khorvaire]], is said to have been a child of Aryth.
This fort in southeast [[Thrane]], heavily damaged in the [[Last War]], has recently seen an
influx of House [[Medani]] personnel, all members of the [[Thousand Yard Stare]], which is charged with patrolling the borders of the [[Mournland]].
The house has entered into an arrangement with Thrane: The [[Medani]]s will
repair the keep in exchange for the right to garrison the riders of the Thousand Yard Stare there. Columns of cavalry are always arriving and departing to the east—a quick ford of the [[Brey River]], and the riders are in the [[Mournland]].
Within [[Shae Mordai]] is a vast
plaza enclosed by ancient, sculpted walls. Tremendous monoliths that display the names of departed
[[elves|elf]] flank its single ornate gate, and the greatest
step-pyramid temple in all of [[Aerenal]] rises from its
center. Members of the [[Undying Court]] live within
halls built into the outer walls that allow access to the
inner plaza, which they use as their private garden
and reserve.
[[Dragon|dragon]] bones incorporated into the walls and
ancient magic as old as the exodus from [[Xen'drik]]
protect the plaza and attest to the fact that no enemy
or thief has ever breached it. Widespread tales even
claim that its interior defies the laws of space and
time.
The only living beings allowed within the plaza are Priests of the
Transition and the [[Sibling Kings]] of [[Aerenal]]. The
rulers of the land come to speak with long-dead monarchs and others among the court. Priests petition the court for intercession and take its pronouncements to lesser clergy members. They also maintain the temple, which serves as the quarters for the most
devout and influential priests in Aerenal, as well as
for those who have come to the [[City of the Dead|Shae Mordai]] on
pilgrimage.
''Date: '' [[1 Sypheros|Khorvaire calendar]]
The Church of the [[Silver Flame]] was born from the sacrifice of [[Tira Miron]], who gave her life to serve as the Voice of the Silver Flame. On 1 Sypheros, members of the church
gather to reaffirm their faith and to give thanks to
Tira for her holy gift. Over the course of the day,
followers of the Flame attend a blessing ceremony;
the grandest ceremony in [[Sharn]] occurs at the [[Cathedral of the Cleansing Flame]] (in the [[Sovereign Towers]] district of [[Middle Central]]), but the faithful pray at all of the
city's temples. In addition to attending the ceremony and sermon, the faithful seek ways to contribute to their community on Ascension Day.
Ash is a [[human]] priest of the [[Shadow]]. As the most powerful and beloved of [[Daask]]'s priests, she runs the [[Temple of the Six]] in [[Sharn]]. Some worry that Ash plans to challenge [[Cavallah]] for leadership, which could cause a rift in the organization's membership.
The Ash Beacon is a massive active volcano in the northern portion of the [[Demon Wastes]]. The volcano and the surrounding area are rich with [[narstone]] deposits, but the northern Wastes are perhaps the most dangerous region in all of [[Khorvaire]]; even the [[Ghaash'kala]] avoid this land.
The volcanic Ash Cauldron mountains run along the southern coast of [[Xen'drik]], overlooking the [[Icemaw Sea]]. The volcano known as [[Darkfire Crater]] is found here, along with the territories of the [[dragon]]s [[Vrakor Cinderheart]] and [[Bane-Reth]].
''District Type: ''Industry district<br/>
''Buildings:'' Temple ([[Onatar]]), shrine (the [[Traveler]]),
poor lodging (2), poor food (7), poor trades (60),
poor services (30)<br/>
''First Impression:'' The air is filled with the smell of
smoke and sulfur, and the walls are covered with ash.
The constant rumble of the forges and foundries
shakes your feet and makes conversation difficult.<br/>
''Social Class:'' Lower class
Ashblack stretches out from [[Dura]] toward the center
of the city. In general, the businesses all operate on
a large scale, processing loads of ore and other
raw materials, they will have little business here.
However, there are a few points of interest.
!! Noteworthy Locations
* The [[Cannith Forgehold]]. This subterranean fortress of House [[Cannith]] includes a wide range of forges, alchemical workshops, and mystical facilities.
* [[Keldoran Forge]]. Though most of the foundries in the Cogs are devoted to large-scale industry, the [[dwarf]] Antos Keldoran maintains a small forge and produces bespoke arms and armor.
//We, the Ashbound, are the champions of the natural world. We defend it from anything and anyone who threatens it. //
The Ashbound are the warriors of the natural world. They believe that nature and
civilization are at war, and they are the champions of the wild. Ashbound [[druid]]s seek to
defend the natural world from the depredations
of civilization and see [[arcane magic]] as a
dangerous and corrupting force. In frontier
regions, the Ashbound launch guerilla strikes
against encroaching settlements and make brutal
examples of poachers. Ambitious Ashbound even
attack the holdings of [[dragonmarked house]]s and
release bound [[elemental]]s in their service.
The Ashen Spires in [[Karrnath]] rise in the heart of [[Karrnath]] between the [[Karrnwood]] and the [[Nightwood]]. They form something of a natural boundary between the eastern countryside and the western metropolitan region of the nation.
If the wretched land of the [[Demon Wastes]] has a capital, it is Ashtakala, the last citadel of the [[Lords of Dust]]. Surrounded by a permanent storm of sand and [[demonglass]] and shielded from all forms of [[divinatory magic|divination]], this metropolis of
basalt and brass has stood since the [[Age of Demons]]. Unlike the other ruins dotting the countryside, Ashtakala seems alive at first glance—home to innumerable [[demon]]s, [[rakshasa]]s, and other [[fiend]]s. In truth, it is all an illusion, maintained by the eldritch power that raised the city at the dawn of the world.
Visions of the past are brought to life here by dark magic. Within the illusion, a small association of rakshasas and other servants of the overlords convene here as the [[Bleak Congress]], hatching wicked plots and forging plans to conquer the world.
All [[Eberron]]-native [[fiend]]s return to Ashtakala eventually, sometimes spending centuries in its cold embrace, to remind themselves of the glory that was once theirs. The illusion comforts them with images of the [[Age of Demons]], but it also
fuels their hatred for the [[dragon]]s who tore down their era
and left only these ruins for the rakshasas to occupy.
Visitors who survive the glass storm find the power that preserves the image of Ashtakala transforms anyone who enters the city; characters find their clothing and equipment altered to match the archaic fashions of the city.
However, explorers who spend too much time in this
place are corrupted, taking on demonic forms as the
city claims them body and soul.
!! Living Embodiment of a City of Fiends
Ashtakala was never constructed. It came into the world at the beginning of the [[Age of Demons]] when the [[overlord]]s emerged from [[Khyber]] and shaped the world to their whims. In fact, Ashtakala is not only a city: it is itself an [[overlord]]. Never fully bound by the [[Silver Flame]], this ancient archfiend is the living embodiment of a demon city, its heart [[demiplane]] projecting into the Material Plane and shaping the [[Demon Wastes]] into the twisted region it has been for a hundred thousand years.
When [[humanoid]]s enter the city, they are slowly digested and transformed, beginning with illusory fashion and culminating in fiendish mutation. They are not instantly killed simply because immortal Ashtakala does not consider such low creatures to be a threat; indeed, it hardly registers their presence. If the hazards of the nightmare city claim them, or if the lesser [[fiend]]s choose to capture them, torture them, or extract their souls, then so be it. But the city itself does not take notice.
But woe betide those whom Ashtakala does notice. During the [[Age of Giants]], the [[dragon]]s of the [[Light of Siberys]] descended upon the [[Demon Wastes]]. They laid waste to it, destroying a [[humanoid]] civilization that predates the [[Carrion Tribes]]. But as the [[dragon]]s drew near to the demon city, their souls were ripped from their bodies and they turned on their allies. When they were wounded, dust spilled out instead of blood. The attacking force was almost entirely wiped out, but the [[fiend]]s that were slain simply reformed. The [[dragon]]s have shunned the region ever since; while they know Ashtakala is an asset for the [[Lords of Dust]], they don’t have the power to destroy it, and its influence has stayed confined to the Wastes since it was trapped in place by the wards of the [[Labyrinth]].
Ashtakala allows the [[Lords of Dust]] to dwell within it, but it doesn’t cater to their whims or help them with their schemes. Ashtakala simply doesn’t care that the other [[overlord]]s are imprisoned. Ashtakala simply //is//. It expresses itself by creating and maintaining the [[Demon Wastes]]. It is doing what that gives its existence meaning. The illusory servitors are [[manifestation]]s of the city's [[demiplane]]; they are literally extensions of the city, serving no purpose other than to maintain it. They can’t be recruited to serve the schemes of the [[Lords of Dust]] because they literally don’t exist independently of Ashtakala.
That said, Ashtakala is the perfect haven for the [[Lords of Dust]]. It is shielded from hostile magic and their greatest enemies cannot even approach it. They don’t need to maintain it—no one repairs the masonry, or fixes the sewers, or touches up the paint—because the entire city is a concept, and it maintains itself. It provides them with invaluable resources, such as the Library, which is filled with ancient tomes dating back to the [[Age of Demons]]—memories in the mind of the Demon City.
At first glance, an asperi appears to be nothing more than an
unusually beautiful horse. An individual asperi can be
white, gray, or dun-colored, with a graceful, flowing mane of
silver, white, or light gray. A secondary mane of the same
shade as the first extends from the creature’s front shoulders
down along the backs of its front legs.
Unlike typical horses, asperis are intelligent and telepathic magical
beasts. They live in the remote mountain peaks of [[Adar]], where they gallop across the peaks and through the frigid skies. By catching prevailing winds and flying with
them, asperis can move even faster through the skies than
their normal flying speed permits. Their ability to “ride the
wind” in this way has earned them the common name of
//wind steeds//.
These intelligent and gentle creatures ride the winds
of [[Adar]] easily, and they just as easily bear riders across
the trackless peaks. [[Kalashtar|kalashtar]] have a special bond with
asperis, since both races are telepathic, and asperis visit
or live as allies or citizens in Adar's larger settlements
and monastery-fortresses.
A creature that ingests this poison and can't resist its effects suffers poison damage and is poisoned for 24 hours.
The Assembly is the [[barony]] of the [[Forge Maiden]]. Here,
innovation is celebrated, and any [[artificer]] abilities are enhanced here. But while there are a few stories of how things go well, there are many where inventions go terribly
wrong: the [[construct]] [[dragon]] that has claimed the workshop
and gathered a hoard; the labyrinth the Maiden designed so
well that she became lost in it; the [[time stop]] spell that can't
be undone. Wondrous (and impossible) artifacts can be found
here, but so can many dangers.
Astilabor, the Hoardmistress, the Acquisitor, is the [[Dragon God|Dragon Gods]] of Status, Wealth, and Acquisition Without Greed (a one-word concept in the Draconic tongue). She values accumulation of wealth and power as rewards of age and great deeds, but despises theft and greed.
One of several “escort
services” providing companionship to visiting diplomats in Ambassador Towers as well as well-to-do
clients in all of [[Sharn]]'s best neighborhoods, Athania's Companions is unique in at least one respect: it is also a spy ring in the business of collecting,
cataloging, and selling secrets. [[Athania]] runs both businesses. The fact that
she is a [[dragonmark]]ed heir of House [[Phiarlan]] is her
own best-kept secret; not even the majority of her
employees are aware of her family connection. The
escorts of Athania's are women and men of beauty
and intelligence, trained in the arts of conversation, seduction, and deception. After spending time
with a client, they prepare an intelligence report
for Athania, who finds interested buyers for any
significant items. Some secrets she keeps to herself,
holding them in reserve to use as leverage when her
cover is finally broken.
The Atrium, a recital hall in
Kashik Tower, features an acoustically resonant
open performance space with seating for about 300.
For performers on the move in Menthis's entertainment scene, the Atrium is a definite step up from
most of the dinner theaters in the district, and many
of its performers are only a few years away from
being ready for the [[Kavarrah Concert Hall]].
Known as the City of Night, Atur stands in the shadow of the
[[Ashen Spires]], cloaked in mist from the [[Karrn Falls|Karrn River]]. For all but a few hours each day, Atur lies shrouded in gloom, a nearly perpetual twilight that gives the
city its moniker. Oddly, during the day’s brightest
times, the city is quiet, seemingly deserted. Only at
night does Atur come fully to life.
This atmosphere suits the people. At night, they
frolic in fest halls and taverns, sampling the forbidden
delights of Atur’s infamous bordellos. Even King [[Kaius|Kaius ir'Wynarn III]]
is not immune to the city’s allure, and he finds refuge
in Nighthold, a royal complex where he sometimes
holds court.
Beneath the hustle and bustle of this curious community lie the Vaults of the Dead, where [[Karrnath]]’s [[undead|Karrnathi undead]] legions await the day when war rages anew.
Overlooking the city is the huge [[Crimson Monastery]],
one of the greatest bastions of the [[Blood of Vol]] in the
nation.
The [[True Shapers]], a large [[enclave]] of House [[Thuranni]], is located in Atur, as is the [[Atur Academy]] of [[necromancy]].
The [[Karrnath]]-based [[Atur]] Academy, within what
outsiders call the “City of Night”, specializes in
mystical studies shunned by other [[arcane|arcane magic]] institutions.
Atur is a stronghold of the [[Blood of Vol]], and the Academy has no equal when it comes to the study of [[necromancy]]. While its coverage of other schools of magic is unremarkable, its researchers develop necromancy and [[transmutation]] spells that others would consider to be horrifying, and its vaults are said to contain tomes and scrolls of many spells forbidden during the reign of [[Galifar]].
This shop, located in the section
of [[Clifftop]] known as the mystic market, features a
circle of [[magewright]]s who possess the ability to cast
[[divinatory|divination]] spells.
The master [[magewright]] of The Augury is a 334-year-old elf named [[Kestia]]. A child of House [[Phiarlan]], Kestia was expelled
from the house after she developed an [[aberrant dragonmark]]. However, her mystical powers exceed
even the [[wizard]]s of the [[Esoteric Order of Aureon]].
The Augury cuts into the profits of a number of the
[[dragonmarked house]]s, notably [[Tharashk]], [[Sivis]], and
[[Kundarak]]. Some believe that [[Kestia]] uses blackmail
to protect herself from the retribution of the houses,
while others say that she appeases the houses with
a share of her profits. She has refused to join the
[[Esoteric Order of Aureon]] or the [[Guild of Starlight and Shadows]], preferring to remain independent.
By casting gem-inlaid sticks, rolling dragon bones, laying out ornate cards, or employing some other divining tool, you receive an omen from an otherworldly entity about the results of a specific course of action that you plan to take within the next 30 minutes. The DM chooses from the following possible omens:
* ''Weal'', for good results
* ''Woe'', for bad results
* Weal and woe, for both good and bad results
* Nothing, for results that aren't especially good or bad
The spell doesn't take into account any possible circumstances that might change the outcome, such as the casting of additional spells or the loss or gain of a companion.
If you cast the spell two or more times before completing your next long rest, there is a cumulative 25 percent chance for each casting after the first that you get a random reading (<<dr 1d4>>, where 1=Weal, etc). The DM makes this roll in secret.
''Capital:'' [[Fairhaven]]<br/>
''Hallmarks:'' Cheese, education, fashion, grains, wine, wizardry
Fertile farmlands surround the grand cities of Aundair.
The floating towers of [[Arcanix]] are the finest institute
for mystical study in [[Khorvaire]], and magic is deeply
ingrained in Aundairian culture. The nation produces
more [[magewright]]s and [[wandslinger]]s than any other in
Khorvaire.
From the nobles lounging in the towers of [[Fairhaven]]
to the common folk working the vast vineyards of [[Bluevine]], Aundairians value wit and wisdom. Aundairians
prefer finesse to brute force and appreciate cunning
wordplay and fine fashions. The [[Sovereign Host]] is the
dominant faith of Aundair, with a particular devotion to
[[Aureon]]. However, the [[Silver Flame]] also maintains a devoted following—some might say overzealous.
Although Aundair is a small nation, its arcane superiority allowed it retain its dominion during the [[Last War]]. The people of Aundair know that knowledge is
power, and they take pride in their nation's magical advancements. To ensure her nation's prosperity and dominance, Queen [[Aurala ir'Wynarn]] instituted the Arcane Initiative, an aggressive series of programs intended to
forward the development of mystical infrastructure and
battle magic.
!! Interesting Things About {{!!title}}
* [[Arcanix]] is the most prestigious academy of magic in Khorvaire. Most of its sages specialize in ritual magic and abstract theory, and don't have the full powers of wizards.
* Magic permeates many aspects of Aundairian life—more so than other nations. A [[cleansing stone]] graces every village, and you might encounter animated farming equipment in the fields. The [[Knights Arcane]] are an elite unit of eldritch knights, and the spies of the [[Royal Eyes]] of Aundair specialize in [[divination]] magic.
* Some Aundairian nobles are bound by arcane pacts handed down through generations. Only remarkable heirs—such as player characters—develop into [[warlock]]s. Most such lines have an [[archfey]] patron.
!! Aundarian Characters
Regardless of your intelligence, as an Aundairian you're sure you're the smartest person in the room. Consider the following characteristics for your Aundairian:
* ''Arcane Talent.'' If you're not going to play a magic-using class, consider creating a high elf or a human with the Magic Initiate feat. Whether you favor damage-dealing [[cantrip|spell]]s or more utilitarian ones, every Aundairian should know a little magic.
* ''Magic Beats Mundane.'' Why use your hand when you could use mage hand? Why strain your muscles tugging on a bowstring when you could use a wand?
* ''Show Some Style.'' Don't settle for common clothes and a squalid meal when you could wear [[glamerweave]] and drink the finest wine. If you're a fighter, focus on finesse instead of crude strength. And never miss an opportunity for a clever quip.
!! Cities and Sites
Aundair intersperses pastoral farmlands between densely populated cities.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
Aundair and [[Thrane]] were bitter rivals during the [[Last War]]. Thrane seized the ancient city of [[Thaliost]] during the war and holds it to this day. Most of the people of
Aundair remain furious about the occupation of Thaliost, but the city has become a haven for Aundairians
who revere the [[Silver Flame]].
The [[Eldeen Reaches]] seceded from Aundair halfway
through the Last War. The western farmers rebelled over high taxes and neglect, allying with the [[druid]]s of the Towering Wood. Aundair was forced to accept the sovereignty of the Reaches under the terms of the [[Treaty of Thronehold]], but many Aundairians view it as a renegade nation.
Extensive use of magic has repaired most of the damage to the cities of Aundair, but the countryside remains scarred by the war, especially along the border with
Thrane. The [[Crying Fields]] are a region of farmlands
permanently scarred by magic and haunted by restless
spirits. Aundairians claim their nation is stronger than
ever, but some worry about the long-term impact of the
loss of the Eldeen farmlands and the Crying Fields.
Now, Aundairians debate over differing views of their
nation's future. Some believe the first focus should be
reuniting Aundair and the Eldeen Reaches, whether
through diplomacy or force. Others consider Thaliost
to be the pressing issue. And still others support Queen
Aurala's claim to the throne of [[Galifar]]. When creating
an Aundairian, consider whether you have ties to any of
the affected regions and if this influences your opinion
of Thranes or druids.
During the [[Last War]], the battles between [[Aundair]]
and [[Breland]] left deep scars on both lands. But while
fierce, these conflicts were brief, and by the close of
the war the two nations were strong allies. Today,
Alais and Helais ir'Lantar, sons of one of the noble [[Khoravar|half-elf]]
families of Aundair, serve the interests of their nation
in [[Sharn]]. Alais and Helais are identical twin brothers, and both are remarkably handsome and urbane; they are quite popular at galas and other social events.
While both brothers are officially ambassadors, each
performs different duties. Alais ir’Lantar deals with the administrative
drudgery, while Helais handles the deeper diplomacy
and intrigue. Why? Because Helais is not simply an
ambassador—he is one of the [[Royal Eyes]] of [[Aundair]],
a trusted agent who serves as Queen [[Aurala|Aurala ir'Wynarn]]’s eyes and
ears in [[Sharn]]. But Queen Aurala has been betrayed,
and her misplaced trust may spell disaster in the
future. His role as master of spies is the least of Helais’s
secrets. The dark truth is that there is only one
ir’Lantar brother. The ir’Lantar family has served
the [[Lords of Dust]] for many generations, and Helais
ir’Lantar is actually a guise used by the two [[rakshasa]]s
of Sharn, [[Zathara]] and [[Nethatar]].
Alais is well aware of his brother’s true nature.
He is a cruel, conniving man who enjoys assisting
the [[Lords of Dust]] with their schemes. In addition
to the power he gains from the alliance, Alais feels
that his connection to the [[rakshasa]]s puts him above
mere mortals; he suffers from the delusion that if
he serves the Lords faithfully, he may one day be
transformed into a rakshasa himself.
Usually, one of the two rakshasa poses as Helais,
while the other is disguised in a different form
elsewhere in the city. However, as Alais and Helais
are identical twins, this allows for a host of possibilities. If necessary, the two rakshasa can appear as Alais and Helais; at other times, Alais poses as
his brother. Alais wears a [[ring of mind shielding]] and the
Lords of Dust possess amulets that mask their fiendish aura, so it is
extremely difficult to pierce these deceptions.
A sprawling villa just outside [[Fairhaven]], [[Cannith]]’s
[[enclave]] in [[Aundair]] is home to [[Jorlanna d'Cannith]]. This enclave has almost as
many libraries and map rooms as it does laboratories and workshops. Under particular study are some rare plants and ancient treasures
brought back from the [[Eldeen Reaches]]—the result of
Jorlanna’s influence with the [[druid]]s of the [[Wardens of the Wood]].
The Aundair River in [[Khorvaire]] flows from the hills near [[Fairhaven]] into [[Scions Sound]]. It forms part of the border between [[Aundair]] and [[Thrane]].
You create an invisible sphere of energy with a 5-foot radius.
Until the spell ends (up to 1 minute later, or when you break concentration), it moves with you, centered on you. The sphere muffles sound in both directions.
In addition, creatures have advantage against effects that require them to hear a sound from the other side of the sphere, such as the [[command]] spell.
The current ruler of [[Aundair]], Queen Aurala ir’Wynarn, traces her lineage to [[Wrogar ir'Wynarn]], the first king of an independent Aundair and
one of the heirs to the [[Galifar]] kingdom. Ruling Aundair
since 980 YK, Aurala was among the signers of the [[Treaty of Thronehold]]. She married a young noble of House [[Vadalis]] named [[Sasik|Sasik d'Vadalis]], who gave up his position in his family to become part of Aundair’s royal aristocracy. Despite this, he maintains
close ties to his family (including his brother [[Dalin|Dalin d'Vadalis]], the House
baron), which sometimes leads the other [[dragonmarked house]]s to see favoritism toward Vadalis where it may not actually exist. In fact, Aurala goes out of her way to make sure House Vadalis doesn’t receive any special treatment from the
Aundairian crown or its vassals.
Aurala’s secret ambition is to quietly use the peace
to build up [[Aundair]]’s strength, so that when the time is
right she can make her move and claim the [[Galifar]] crown
for her own. As she holds out her right hand in peace, she
directs the machines of war with her left.
!! Aundair Royal Family
Aundair’s royal family consists of Queen Aurala, her consort [[Sasik|Sasik d'Vadalis]], her three children, and the extended families of her four siblings. Aurala’s brother
[[Adal|Adal ir'Wynarn]] serves as her warlord and minister of magic, and he shares her desire to see the Galifar crown on the head of an Aundair lord.
He wants that head to be his, though, and not his sister’s.
Another brother, Aurad, serves as Aurala’s chief advisor and governor of [[Fairhaven]].
Her youngest sisters, the twins Wrel and Wrey, currently
study with the mages of [[Arcanix]]. From the royal court
of [[Fairhold]], built at the heart of the city of Fairhaven,
Aurala governs the land using everything at her disposal.
Aurala's second son [[Jurian|Jurian ir'Wynarn]] is living in self-imposed exile after killing a rival in an illegal duel.
Aureon is the Sovereign of Law and Lore. He is considered the first [[wizard]], who shared the secrets of wizardry with the world. His symbols include an open tome or a [[blue dragon]].
''Date: '' [[26 Dravago|Khorvaire calendar]]
The [[Five Nations]] observe this festival of [[Aureon]]. It is a celebration of knowledge, when the elders of the community share their wisdom with the young at evening
feasts. Throughout the day, priests of Aureon in [[Sharn]] gather
at the [[Great Hall of Aureon]] in the [[University District]] in [[Upper Menthis]], providing sermons and lectures on a host of topics, from history to philosophy
and the nature of the gods.
Like many of the holy days of the [[Sovereign Host]],
Aureon's Crown has become a secular holiday that
does not require any particular religious devotion.
Aureon's Crown is the traditional time for students
to graduate or advance, and this is true even at the
monastic schools of the [[Silver Flame]].
Aurora Gallery is a unique
establishment in [[Sharn]]: a [[magic item]] auction house.
Items worth as much as 26000c market price can
sometimes (20% chance) be found at Aurora Gallery.
When buying items at auction, characters should
expect to pay between 80% and 140% (<<dr "2d4+6">> × 10%)
of normal market price. Aurora Gallery buys goods
at the normal rate (50% of market price), and buys
items worth up to 26000c. They do not usually
buy or sell charged items, but exceptions have been
made in the past.
//Don’t look at the skies today—you might be blinded by the gleam of gold! Lord [[Antus ir'Soldorak]]’s gilded [[galleon|airship]] has come to [[Sharn]], and an inside source tells me that tonight’s celebration at the [[Aurum Hall|Korranath]] is going to make the [[Tain Gala]] look like a soup line in [[Fallen]]. Oh, to be rich!//
<div align="right">—Faris d’[[Ghallanda]], bartender</div>
On the surface, the Aurum appears to be an exclusive society for the richest and most influential people of [[Khorvaire]]. Merchants, priests, military officers, and other luminaries gather for grand galas and salons, the grandest reserved for the Aurum's ostentatious headquarters, the sprawling [[Golden Vault]] outside [[Krona Peak]]. Beneath this gilded veneer, the members of the Aurum use their shared wealth and power to pursue their selfish goals, and a secret cabal at the heart of this fraternity dreams of global domination.
The Aurum is divided into four suborders called Concords—copper, silver, gold, and platinum, in order of ascendance. Higher rank provides a member with improved access to the resources of the Aurum and a greater voice in society meetings. The Aurum isn't a secret society, and its meeting halls can be found in most major cities. Many powerful people openly wear the eight rings—one on each finger, with the metal
indicating the rank of the wearer—that label them as
Aurum members. The Aurum frequently engages in acts
of philanthropy, and thus some members might be celebrated by their local communities.
When members gather, they discuss shared interests, especially in history and archaeology. Aurum members often take an interest in a particular civilization or era of history; one Concordian collects relics of the [[Cul'sir]] [[giant]]s of [[Xen'drik]], while another pursues artifacts of the [[dragon]]s of [[Argonnessen]]. One of the most common ways in which adventurers cross paths with the Aurum is through these collectors. Members of the Aurum often fund expeditions to exotic lands or newly discovered ruins, interested in expanding their private hoards. Occasionally a Concordian tries to acquire prized relics through less honorable means; adventurers could be
employed to acquire an exotic prize from a rival through
any means necessary, legal or otherwise.
All of these activities are entirely legitimate. The
Aurum is a society for wealthy scholars and philanthropists. But there is a secret order that ranks higher than the Platinum Concord—an inner circle known as the
Shadow Cabinet. The members of this cabal are nobles
but not kings; they are powerful industrialists, but not
[[dragonmarked|dragonmarked house]] barons. They are determined to become
the true rulers of [[Khorvaire]], whether by binding the
current barons and monarchs to their will or by tearing
down the current systems and creating something new.
In stories driven by action, the Aurum can fund expeditions to exotic lands and use magical doomsday devices to hold cities for ransom. In adventures driven by
intrigue, the Aurum provides an opportunity to explore
the lure of gold, and how far the characters might go in
the service of an amoral patron.
!! The Aurum and the War
The [[Last War]] gave birth to the Shadow Cabinet. The
war ignited the passions of Concordians who blamed
the monarchs of the [[Five Nations]] for the vast devastation and loss. It also created opportunities that never
existed under the united [[Galifar]]. Many of the members
of the Aurum gained influence by bankrolling one or
more war efforts, or by stepping in to maintain the infrastructure while the government directed its attention to
military matters. The Aurum also includes a number of
powerful military officers and warlords. Some despise
the nobles that drove them to war; others are furious
that the war ended without a decisive victory. Either
way, these can provide the Shadow Cabinet with unexpected military power.
Now, amid the war's cooling ashes, the Aurum's
power is fragmented. On several occasions, investments
and gambles that paid dividends in money and power to
one Concordian sapped the fortune of another, because
each was unknowingly working against the other's interests. Huge collections of art, historical artifacts, and precious tomes were destroyed or lost during the war, and
the Aurum's leaders salivate at the thought of recovering
some of those riches.
!! Aurum NPCs
Aurum Concordians are defined by their wealth and
power. When you create an Aurum NPC, consider the
source of that person's wealth and how it is expressed.
The [[dwarf]] [[Antus ir'Soldorak]] is chancellor of the Platinum Concord and founder of the Shadow Cabinet. He owns vast gold and silver mines in the [[Mror Holds]]
and mints his own currency, and he travels in a gilded
airship. [[Loyal Daison]] is a [[Karrnath]]i slumlord who has
made a fortune providing low-rent (and low-quality)
housing for refugees. He lost his hand in an industrial
accident and had it replaced with a golden prosthetic. The socialite bird-collecting [[gnome]] [[Alina Lorridan Lyrris]] is a skilled [[wizard]] and brilliant schemer with a keen interest in Khyber [[dragonshard]]s.
Members of the Aurum become villains if their quest
for greater influence, personal power, and wealth victimizes the innocent. Whether villains or allies, all Concordians wield significant political influence. They have
access to minions and resources in the higher levels of
society. They prefer to pursue schemes of coercion and
conspiracy, putting their money and influence to work,
than resort to blatant violence in any form.
| !<<dr d4>> |!Aurum NPC |
| 1 |An aging dwarf—a retired general and an Aurum Concordian—collects unusual [[construct]]s, hoping to find a way to transfer his mind into a superior body. |
| 2 |An Aurum Concordian is renowned for having the finest arcane library in [[Khorvaire]]. Adventurers might help them collect more tome, but when a number of prominent [[wizard]]s are murdered and their research goes missing, is the Concordian to blame? |
| 3 |A member of the Gold Concord is on the run from the Aurum after learning a terrible secret. |
| 4 |An imprisoned Concordian mobilizes a network of contacts and well-placed Aurum members in order to secure their own release. |
The [[Aurum]] claims to be a society for wealthy students
of history. As such, it is hardly surprising that it
maintains a small chapterhouse in [[Stormhaven]], where
experienced explorers are invited to speak about their
experiences. [[Jaris Cantar]], a shipping magnate who runs a trading fleet
under license to [[Lyrandar]], owns the lodge.
Three members of the Platinum Concord reside
in [[Stormreach]], including [[Jaris Cantar]], and twelve
members of the Gold Concord. Most are entrepreneurs or collectors, interested in the opportunities that lie in the interior; others are the descendants of
the pirate captains bullied into submission by the first
[[Storm Lords]]. Next to Cantar, the most influential
voice is that of [[Guldan Soldorak]].
The [[Aurum]] has another weapon in [[Stormreach]], the gang known as the [[Golden Lions]]. Many of the gang’s members are children of Aurum families; [[Jacques the Hook]] is actually Jacques Cantar. Adventurers could easily be employed by a Concordian, but if they become an obstacle, they might be “fed to the Lions.”
High in the Auxyl Hills in [[Thrane]] stands a relic of a bygone age:
a great blocky fortress of crumbling gray stone. Horse trails snake from Auxylgard through the surrounding
countryside to [[Daskaran]], [[Flamekeep]], and [[Danthaven]].
Soldiers standing on the battlements of Auxylgard
can see trouble coming from miles away and mobilize
quickly to any of these three cities.
The fortress itself is surrounded by scorched hills. In decades past, Auxylgard served as an academy for the king’s royal guard, but the fading of the monarchy sealed the academy’s fate. That said, the fortress fended off several Aundairian incursions
during the [[Last War]], and its strategic importance has
not diminished over time.
The Twister of Roots devotes its attentions to
plants. Avassh is said to be the source of [[shambling mound]]s and [[myconid]]s, but any unnatural and deadly vegetation might be its work.
Under the [[Sea of Rage]] live the aventi, survivors of a magical cataclysm that sank the ancient [[Sarlona]]n island realm of Aventus. That disaster might explain the turmoil in the Sea of Rage. A [[part of Aventus|Aventus Islands]] remains above the waves in the form of a horseshoe-shaped island and a smaller island to the north. [[Riedra]] controls those isles, and the aventi have little love for the nation of Sarlona.
Aventi are little different from humans in appearance. Aventi
coloration tends toward very pale, almost bluish skin to a
lighter tan, with blue and green eyes and hair that ranges
between a light brown to a very pale blonde. The calves
and forearms of aventi feature small swimming fins that
fold almost flat when the aventi leaves the water.
Aventi have small settlements across the [[Sea of Rage]] and are sometimes seen in the [[Syrk|Syrkarn]] port of [[Ardhmen]].
The Aventus Islands off the coast of the [[Riedra]] in [[Sarlona]] are considered part of the [[Rhiavhaar]] province, though they were once part of the kingdom of [[Khunan]] centuries ago. They serve as a staging area for the [[Harmonious Sail]] in the [[Sea of Rage]].
The islands hold ruins of the lost [[aventi]] nation, but the [[Riedrans]] shun these areas. Aventus is the common name for a land thought to be
called "Aventuu'siana," though debate ensues as to whether
this name refers to the nation or its legendary [[sorcerer]]-kings. Thought
to be the descendants of Aventus, [[aventi]] have an oral history
that tells the story of a kingdom brought down by unnatural
devastation, then swallowed by the sea.
Casting this spell (which takes at least eight hours of concentration) on a [[beast]] or plant grants the target magical intelligence and sapience. The target also gains the ability to speak one language you know. If the target is a plant, it gains the ability to move its limbs, roots, vines, creepers, and so forth, and it gains senses similar to a human's.
The awakened beast or plant is [[charm]]ed by you for 30 days or until you or your companions do anything harmful to it. When the charmed condition ends, the awakened creature chooses whether to remain friendly to you, based on how you treated it while it was charmed.
An axe beak is a tall flightless bird with strong legs and a heavy, wedge-shaped beak. It has a nasty disposition and tends to attack any unfamiliar creature that wanders too close.
Natives of [[Fernia]], azers are master crafters and expert miners. In appearance and manner, an azer resembles a [[dwarf]], but this is a facade. Beneath its metallic looking skin, an azer is an [[elemental]] being of fire, which outwardly manifests in its fiery hair and beard.
The [[dao]] craft azers from bronze and bring them to life using the primordial spark of [[Fernia]]. They are tireless laborers who love working with fire and metals. Dao may
create the greatest wonders, but the azers do remarkable
work—and far more of it. Azer are naturally gifted artisans,
and can be assigned to any sort of task that involves fire.
However, there are few things more miserable than an azer
baking bread instead of working with brass.
Sultan Azhalar of High Hearth stands at the top of the social
order in the [[City of Brass]]. He has assembled the grandest armies and enjoys
displays of martial might, including exotic engines of war. His
galas often involve gladiatorial matches or grand war games.
The Azure Bay lies off the coast of the [[Shadow Marches]] and [[Droaam]].
One of the fabulous
restaurants offering stunning views and exquisite
meals, the Azure Gateway is not as well known as the
[[Celestial Vista]], but it is rarely as crowded as a result.
The menu is exotic, offering delights from [[Thrane]]
(including fine steaks), [[Karrnath]] (such as their
famous breaded veal as well as traditional sausage
dishes), and [[Aundair]] (including noodles and meats
in tomato- and oil-based sauces). The interesting
thing about the Azure Gateway is that no one knows
the identity of its owner. He or she is said to dine
in the restaurant on a regular basis but remains
completely anonymous. Some people speculate that
the owner is a [[changeling]] or some other shapechanger. The maitre d'hotel, an aristocratic [[half-elf]] named Ravvan Mollac smiles at these rumors, for he actually owns the restaurant. He takes great delight in seating customers who spend their entire meal staring around the restaurant trying to pick out the owner.
Lord Baalnakosh of the [[Bountiful Horn]] ([[hashalaq]] [[Inspired]] [[psion]]) rules [[Dar Myan]] and oversees its important functions.
The central fortress of Dar Myan houses the living quarters of Lord Baalnakosh and his staff. Within the compound are facilities for all the needs of the [[Inspired]] ruler, as well as a [[monolith|hanbalani alta]] for his personal use. Baalnakosh's palace is kept comfortable throughout the year by the power of the monolith, but the hashalaq sometimes uses the hanbalan for other purposes.
After rolling dice, if your highest die is a 1-3, it's a bad outcome or "failure". Things go poorly. You probably don't achieve your goal and also suffer [[consequence]]s.
This is a sturdy leather sack with tiny [[Siberys shards|dragonshard]] embedded into the lining. A person with the [[Mark of Hospitality]] can magically draw a feast from within the bag. You shape this meal with your thoughts. You can create the standard bland food and water without requiring any sort of roll, but you can attempt to create finer fare; if you're proficient as a chef, gain an advantage on this attempt. A failed attempt results in a sour and squalid meal.
A //bag of bounty// can be used up to three times over the course of a day. After that, the bag can't be used again until the next dawn.
This bag superficially resembles a [[bag of holding]] but is a feeding orifice for a gigantic extradimensional creature. Turning the bag inside out closes the orifice.
The extradimensional creature attached to the bag can sense whatever is placed inside the bag. Animal or vegetable matter placed wholly in the bag is devoured and lost forever. When part of a living creature is placed in the bag, as happens when someone reaches inside it, there is a chance that the creature is pulled inside the bag. A creature inside the bag can try to escape, or another creature can reach into the bag to pull a creature out. After only a few moments, a creature inside the bag is devoured, its body destroyed.
Inanimate objects can be stored in the bag, which can hold a cubic foot of such material. However, once each day, the bag swallows any objects inside it and spits them out into another [[plane]] of existence. The DM determines the time and plane.
If the bag is pierced or torn, it is destroyed, and anything contained within it is lost to the space between planes.
This bag has an interior space considerably larger than its outside dimensions, roughly 2 feet in diameter at the mouth and 4 feet deep. The bag can hold up to 500 pounds, not exceeding a volume of 64 cubic feet. The bag weighs 15 pounds, regardless of its contents. Retrieving an item from the bag requires some time to shuffle around and find what you're looking for.
If the bag is overloaded, pierced, or torn, it ruptures and is destroyed, and its contents are scattered in the cosmos. If the bag is turned inside out, its contents spill forth, unharmed, but the bag must be put right before it can be used again. Breathing creatures inside the bag will begin to suffocate after a few minutes.
Placing a bag of holding inside an extradimensional space created by a [[handy haversack]], [[portable hole]], or similar item instantly destroys both items.
When you reach into this bag, you pull out a random object as determined by the button below. An object lasts for <<dr 1d4>> half-hours after you remove it from the bag, or until it is destroyed by force, after which point it disappears into smoke. You can pull out three objects per day.
<$button>
<$action-chooserandom $dataTiddler="BagOfSurprisesTable" $field="var" $unique="true" $number="3" $opt="hashes"/>
3 Random Objects
</$button>
<<<
''Objects: ''
<$vars v1={{{[{!!var}split[###]nth[1]]}}} v2={{{[{!!var}split[###]nth[2]]}}} v3={{{[{!!var}split[###]nth[3]]}}}>
# <<v1>>
# <<v2>>
# <<v3>>
</$vars>
<<<
This ordinary bag, made from gray, rust, or tan cloth, appears empty. Reaching inside the bag, however, reveals the presence of a small, fuzzy object. The bag weighs 1/2 pound.
You can pull the fuzzy object from the bag and throw it up to 20 feet. When the object lands, it transforms into a randomly-determined beast. The creature vanishes at the next dawn or when it is incapacitated.
The creature is friendly to you and your companions, and it acts on your turn. You can command how the creature moves and acts, or to give it general orders, such as to attack your enemies. In the absence of such orders, the creature acts in a fashion appropriate to its nature.
Once three fuzzy objects have been pulled from the bag, the bag can't be used again until the next dawn.
<$button>
<$action-chooserandom $dataTiddler="BagOfTricksTable" $field="var"/>
Random Beast
</$button>
<<<
''{{!!var}}''
<<<
1: smoking pipe
2: abacus
3: pair of stilts
4: small amulet
5: five arrows bound together with twine
6: backpack
7: small bag full of ball bearings
8: bagpipes
9: bedroll
10: axe
11: bell
12: bit and bridle
13: velvet mask
14: thick blanket
15: fishing pole
16: blowgun with one dart
17: bolas
18: empty notebook
19: glass bottle with cork
20: brass mug
21: lantern
22: small bag full of caltrops
23: large wax candle
24: oar
25: humanoid femur
26: 10 feet of chain
27: chain mail shirt
28: wooden shoehorn
29: spatula
30: frying pan
31: copper chalice
32: leather boot (one)
33: crossbow bolt
34: crowbar
35: dagger
36: sparkling gemstone
37: small drum
38: dulcimer
39: pair of embroidered gloves
40: silk handkerchief
41: pair of linen pants
42: flail
43: steel hip flask
44: flute
45: full dragonchess set
46: bird cage
47: silver circlet
48: wooden comb
49: working music box
50: grappling hook
51: greatsword
52: ox horn
53: hammer
54: crossbow
55: 50 feet of hempen rope
56: hourglass
57: bear trap
58: iron pot
59: wooden box with 10 iron spikes inside
60: javelin
61: 10-foot ladder
62: leather armor (body)
63: lock and key
64: longbow
65: longsword
66: lute
67: magnifying glass
68: manacles
69: scroll case with pieces of blank parchment inside
70: merchant's scale
71: saddle
72: miner's pick
73: morningstar
74: compass
75: sextant
76: net
77: gambeson
78: set of paintbrushes
79: pair of dice
80: pan flute
81: 10-foot pole
82: portable ram
83: silk robe
84: quarterstaff
85: rapier
86: saddlebag full of feed
87: shield
88: shovel
89: sickle
90: whistle
91: silver and gold brooch
92: bar of soap
93: spear
94: [[spyglass]]
95: mirror
96: set of lockpicks
97: torch
98: small wooden totem
99: trident
100: waterskin
101: crochet needle
102: whetstone
103: whip
104: porcelain doll
105: bag full of coins (worth 2 crowns)
106: handful of chalk
107: pair of goggles
108: steel calipers
109: pair of spectacles
110: 2'x2' pane of half-inch-thick glass
111: bag of feathers
112: large shard of flint
113: coil of razor wire
114: leather belt
115: conch shell
116: wooden marionette doll
117: pair of scissors
118: oil lamp
119: toy boat
120: wind chimes
121: wet fistful of clay
122: tea kettle
123: monocle
124: shaving razor
125: chisel
126: iron file
127: horseshoe
128: brass bowl
129: wagon wheel
130: handsaw
131: flower pot
132: pillow
133: bowling ball
134: wire brush (steel bristles)
135: wrench
136: set of playing cards
137: shortsword
138: ceramic pot
139: footstool
140: bag of glass marbles
141: large silver platter
142: iron adze
143: small keg of explosive powder
144: fireplace poker
145: 3-foot wooden plank
146: body towel
147: burlap tarp, 6ft x 6ft
148: mortar and pestle
149: hedge trimmers
150: rolling pin
151: wooden clogs
152: sundial
153: iron helmet
154: cowbell
155: meathook
156: bucket
157: censer
158: steel ingot
159: fistful of beaded necklaces
160: kite
161: small wooden chest with nothing inside
162: eating utensils
163: leather vest
164: silver ladle
165: baby cradle
166: stone birdbath
167: ball of yarn (500 ft)
168: canvas apron
169: wooden mask
170: xylophone
171: very strong glue
172: bag of firecrackers
173: small jar of highly flammable liquid
174: pouch of itching powder
175: small vial of extremely spicy hot sauce
176: chattering teeth
177: stink bomb
178: flashbang
179: roman candle (a wand that shoots sparkling fireworks)
180: small bouncy ball
181: small makeup kit
182: outrageous wig
183: dolly
184: small duck on wheels
185: jar of corrosive jelly
186: handful of charcoal
187: bag full of door hinges
188: iron pipe
189: [[potion of healing]]
190: 10 matches wrapped in wax paper
191: needle and thread
192: glass bottle of wine
193: glass bottle of pure water
194: pair of iron gauntlets
195: [[smokestick]]
196: [[noxious smokestick]]
197: [[tindertwig]]
198: [[potion of climbing]]
199: pouch of sneezing powder
200: fake excrement
201: [[beetle buzzer]]
202: [[wand of colors]]
203: [[talking wand]]
204: [[wand of smiles]]
205: [[wand of scowls]]
206: [[wand of web]]
207: [[wand of pyrotechnics]]
208: [[bottled breath]]
209: [[alchemist's fire]]
210: [[acidic fire]]
211: [[alchemist's frost]]
212: [[alchemist's spark]]
213: [[feather token]]
1: weasel
2: giant rat
3: badger
4: boar
5: panther
6: giant badger
7: [[dire wolf]]
8: giant elk
9: rat
10: owl
11: mastiff
12: goat
13: giant goat
14: giant boar
15: lion
16: brown bear
17: jackal
18: ape
19: baboon
20: [[axe beak]]
21: black bear
22: giant weasel
23: giant hyena
24: tiger
Bahamut, the Platinum Lord of the North Wind, is the [[Dragon God|Dragon Gods]] of Wisdom and Wind. His stern priests brook no excuses for evil acts, but have limitless compassion for the downtrodden, dispossessed, and helpless. Of all the Dragon Gods, he is most in opposition to [[Tiamat]], the Daughter of Khyber.
This scale bears celestial symbols on one pan and fiendish symbols on the other. You can use the scale to perform a ritual to detect the presence of [[celestial]]s and [[fiend]]s, or consecrated or desecrated places or objects, within 30 feet of it. The scale remains motionless if it detects nothing, tips to one side or the other for "good" (celestial/consecrated) or "evil" (fiend/desecrated).
Balinor is the Sovereign of Horn and Hunt. He guides both the beast and the hunter, and he is the patron of those who walk on the edge of civilization and the natural world. His symbols include a pair of antlers or [[green dragon]].
These [[dragonmark]]ed hunters of House [[Vadalis]]
specialize in the live capture of exotic animals. Balinor’s Blessed bring [[griffon]]s’ eggs and live [[displacer beast]]s back to the ranches, and when some new and
interesting [[beast]] or [[monstrosity]] is discovered, it is the Blessed who
are sent to investigate. A PC who is a member of the
Blessed could have many adventures tied to the capture of such marvelous creatures.
Balinor's Sorrow is a forest in the southern tip of [[Shadow Marches]], near the town of [[Urthhold]]. It is named after the [[Sovereign|Sovereign Host]] [[Balinor]].
This backpack contains a bound air [[elemental]] and a compact leather balloon. While you're wearing the backpack, you can deploy the balloon and levitate for 10 minutes. Alternatively, you can deploy the balloon when you're falling and gain the effect of the [[feather fall]] spell for yourself.
When the effect ends, the balloon slowly deflates as the [[elemental]] escapes and returns to its native [[plane]]. As the balloon deflates, you descend gently toward the ground for up to 60 feet. If you are still in the air at the end of this distance, you fall if you have no other means of staying aloft.
After the spirit departs, the backpack's property is unusable unless the backpack is recharged for 1 hour and bind another elemental to the backpack.
Figures of ancient and terrible evil, balors rule as generals over [[demon]]ic armies, yearning to seize power while destroying any creatures that oppose them.
Wielding a flaming whip and a longsword that channels the power of the storm, a balor's battle prowess is fueled by hatred and rage. It channels this demonic fury in its death throes, falling within a blast of fire that can destroy even the hardiest foes.
If you are incapacitated while attuned to a //band of loyalty//, you instantly die. These rings are favored by spies who can't afford to fall into enemy hands.
Bane-Reth, a [[gold|gold dragon]] [[rogue dragon]] in [[Xen'drik]], is evil to the core and enjoys torturing lesser creatures and murdering their families as they watch. He was banished to [[Xen'drik]] after going on a killing spree through the [[Vast]], slaughtering dozens of younger [[dragon]]s. Bane-Reth claimed these dragons dishonored their race by consorting with inferior beings, but his actions were condemned by the [[Eyes of Chronepsis]]. Although unquestionably evil, he hates the [[Talons of Tiamat]] as much as he detests lesser creatures, seeing dragons who throw their lot in with [[fiend]]s as the worst kind of traitors. Bane-Reth is engaged in a territorial dispute with [[Vrakor Cinderheart]]. He could be an ally to PCs who oppose the [[fiend]]-loving [[red dragon]], albeit an unreliable one.
Sahar of a small village on the [[Marrah plains|Mae-Kree]] in [[Syrkarn]], Banigar is an elderly hunter determined to die in the saddle.
Jovial to friend and stranger alike, he has a thoughtful
side that he shows only rarely. His village's lands extend
to within sight of the [[Whitewater]], and he has spent long
years watching the activities of the [[Karrak]] cults in the
area. As such, he is an excellent resource for PCs investigating the activities of the cults, or seeking background
information in the course of investigating the presence
of [[Inspired]] agents in [[Syrkarn]].
The interest that House [[Kundarak]] charges for loans is responsible for the lion’s
share of the house’s income. Its banks can be found in cities across the [[Five Nations]] and eastern [[Khorvaire]]—all magically warded and watched over by house guards. The Banking Guild regulates commerce in gem cutting and jewelry manufacture, money changing, and moneylending. It also advises (some would say dictates to) national governments about consistent standards for coinage. It works closely with House [[Sivis]] on accounting matters and with House [[Cannith]] on price stability for basic goods.
House [[Kundarak]]’s vaults are magically linked across [[Khorvaire]] and even to the city of [[Stormreach]] in [[Xen'drik]]. A customer who rents a safe-deposit vault can access that vault from any Kundarak bank.
When night falls, unlucky travelers hear the faint cries of the forlorn dead. This woeful spirit is a banshee, a spiteful creature formed from the spirit of an [[elf]]. Banshees appear as luminous, wispy forms that vaguely recall their mortal features. A banshee's face is wreathed in a wild tangle of hair, its body clad in wispy rags that flutter and stream around it.
Creatures of unbridled greed and desire, barbed [[devil]]s (also known as hamatula) resemble tall [[humanoid]]s covered in sharp barbs, spines, and hooks. A barbed devil has gleaming eyes that are ever watchful for objects and creatures it might claim for itself. These fiends welcome any chance to fight when victory promises reward.
Barbed devils are known for an alertness that makes them difficult to surprise, and they attend to their duties without boredom or distraction. They use their sharp claws as weapons or hurl balls of flame at foes that try to flee them.
A bard is a musician, poet, and historian, trained in a variety of academic and performative disciplines. But much more than a minstrel singing in a tavern or jester cavorting in a royal court, a bard weaves arcane magic through words and music to inspire allies, demoralize foes, manipulate minds, create illusions, and even heal wounds. The bard is a master of song, speech, and the magic they contain.
Discovering the magic hidden in music
requires hard study and some measure of natural talent
that most troubadours and jongleurs lack. It can be hard
to spot the difference between these performers and true
bards, though. A bard's life is spent wandering across
the land gathering lore, telling stories, and living on the
gratitude of audiences, much like any other entertainer.
But a depth of knowledge, a level of musical skill, and a
touch of magic set bards apart from their fellows.
Some bards claim that the [[Dragon Above|Siberys]] sang the world into being at the dawn of time, and that their music is an echo of that powerful tune of creation. Other scholars say that bardic magic is a form of [[arcane magic]], but one that specifically calls upon the power of the [[plane]] of story and song: [[Thelanis]]. In truth, these two theories could both be true.
Bards can be found throughout [[Khorvaire]], particularly [[Aundair]] and [[Zilargo]]. The [[Circle of Song]] is an informal bardic organization based in [[Sharn]]. In the [[Eldeen Reaches]], many bards can be found amongst the [[Greensingers]] [[druid]]ic sect. Amongst the [[Dhakaani|Heirs of Dhakaan]], [[dirge singer]]s are among the mightiest bards of history.
The endless baronies of [[Thelanis]] each embody the stories of a particular [[archfey]]. A barony is a unique collection of [[layer]]s that reflect the events of a familar tale... though not all of the stories of Thelanis are known to every culture in [[Khorvaire]].
Only one [[archfey]] is found in each barony, and it is a serious transgression for another archfey to enter a barony uninvited, as their presence disrupts the story.
!! Notable Baronies
<<list-links-article "[tag{!!title}sort[title]]">>
''Color:'' Bright gray<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Finding|Mark of Finding]]<br/>
''Associated Plane:'' [[Irian]]
Barrakas is the brightest of Eberron's moons, and hunters value its light when stalking prey at night. This "sister moon" of [[Therendor]] shares a similar (if wider) orbit and occasionally seems to hide behind her closer brother. On nights when Therendor eclipses Barrakas—"when Barrakas is shy"—sailors worry about getting lost at sea. Those born when Barrakas is ascendant are thought to be gifted hunters, but many also believe they have a knack for clarifying things that others find confusing. The son of [[Lharvion]] sees what others cannot see, while the daughter of Barrakas sheds light on that which is already in the open.
The largest settlement on the island of [[Three Barrel Cove]], Barrel's Bottom is an extremely corrupt and rowdy place, even by pirate standards. The Salty Wench Tavern is the largest and most dangerous drinking hole in town.
The Barren Sea lies to the west of [[Khorvaire]], northwest of [[Xen'drik]]
and east of [[Sarlona]]. It encompasses warm, tropical waters and cold
expanses in the north. It flows into the [[Sea of Lost Souls]] to the south
and the [[White Sea]] to the northwest. [[Zarash Bay]] and [[Crescent Bay]] in the
[[Shadow Marches]] are part of the same body of water, as is the [[Phoenix Basin]] off the coast of Xen'drik. [[Varuz Bay]] in Sarlona marks its western edge.
The Barren Sea is so called because it is poor for fishing and devoid of apparent
life. Hideous monsters are said to inhabit its depths—but sailors make
that claim about all ten seas. In fact, sailors have more to fear from
storms, icebergs in the north, and unpredictable winds than they do
from any living thing in the Barren Sea. In addition to the mundane
risks of storm and calm, the Barren Sea is known for scattered areas
of dead calm—areas of perfectly still water, sometimes suffused with
negative energy that attracts [[undead]]. These are believed to be [[manifest zone]]s to [[Mabar]].
Basilisks are predatory reptiles native to a variety of climates. They are not particularly fast on their feet, but they needn't chase prey. Meeting a basilisk's supernatural gaze can be enough to affect a rapid transformation, transforming a victim into porous stone. Basilisks, with their strong jaws, are able to consume the stone. The stone returns to organic form in the basilisk's gullet.
Some alchemists are said to know how to process the basilisk's gullet and the fluids contained within. Properly handled, the gullet produces an oil that can return petrified creatures to flesh and life.
Secret codicils to the [[Treaty of Thronehold]] listed war criminals wanted by each
of the [[Five Nations]], and ever since the end of the
[[Last War]], a group of [[Medani]] operatives known as
the Basilisk's Gaze has been charged with tracking down and apprehending these war criminals. Many of those named in the codicils are living openly elsewhere in [[Khorvaire]]. In the two years since the war’s end, under the leadership of the inscrutable [[Taldor d'Medani]], the Basilisk’s Gaze has apprehended dozens of
terrorists and war criminals, but that’s only a small
portion of the names listed in the codicils.
Basira Swamp covers the peninsula in northern [[Q'barra]] defined by the [[Torva|Torva River]] and [[Crimson River]]s. It is home to many sunken ruins dating back to the [[Age of Demons]], including [[Mar'saval]].
<<<
''Editor's Note''<br/>
In canon, this is called "Basura Swamp". "Basura" means "garbage" in Spanish. This area is literally called "trash swamp". I couldn't say it with a straight face, so I changed it for my game.
<<<
At the apex of the mountain, the walls of the Bastion protect the chambers and residences of [[Io'lokar]]’s powerful residents. These are the sages and scholars who direct the work of the [[colleges|Colleges of Io'lokar]], plan the city’s sanctioned expeditions to sites across [[Argonnessen]], and magically monitor the actions and intrigues of the [[dragon]]s of the [[Vast]]. Unlike in the lower wards, the Bastion’s wall gate is guarded by four of the [[Arnaaracaex]] and powerful magic wards.
!! Noteworthy Locations
<<list-links-article "[tag{!!title}category[location]sort[title]]">>
This division of the [[Harmonious Shield]] of [[Riedra]] works with the [[Thousand Eyes]] to maintain order in Riedran cities. This is
considered the worst duty within the Shield, since bastion
guards rarely see combat.
This organization of [[fire giant]]s seeks to dominate [[Xen'drik]] by forging
alliances with [[fiend]]s. Although this movement is less than a thousand years old, the
fire giants trace their ancestry back to Adaxus, an infamous prince of the [[Sulat League]] known for his demonic alliances. The [[wizard]]s of the Battalion lack Adaxus’s legendary power to bind and command fiends, but they frequently strike bargains with evil
spirits to gain greater power. Members of the Battalion of the Basalt Towers consider
it a great honor to be possessed by a fiend.
!! The Fire Storm
In [[946 YK|History of Stormreach]], the city of [[Stormreach]] came under
attack by the Battalion of the Basalt Towers. In addition to physical force, the giants
employed an artifact that called down meteor swarms
upon the city; some of the craters from this conflict
can still be seen today. In a curious turn of events, the
[[giants of Rushemé|Guardians of Rushemé]] joined with the [[Stormreach Guard]]
and the [[dragonmarked house]]s to turn back this assault,
not out of a desire to protect the city’s inhabitants but
to keep the city out of the battalion’s hands. The power
of the Basalt Towers was broken, but some of the giants
survived and recent reports from the interior suggest
that they have rebuilt their forces.
While holding this iron tower shield and use it push a creature within your reach at least 5 feet away, you can push that creature an additional 10 feet, knock it prone, or both.
The battle rod was developed as an alternative to the longer [[war staff]], and has gained popularity with [[wandslinger]]s across [[Khorvaire]]. This spellcasting focus enables the wielder to cast [[cantrip|spell]]s at up to twice the normal range.
A shifty, fat scoundrel of a man, his hair slicked back with a quart of whale grease, Baudry Cartamon likes to fancy himself an underworld kingpin, but
he is nothing of the sort. A dishonest merchant, an
amateur smuggler, and an inexperienced thief, Baudry
has delusions of grandeur and can often be found
with kindred spirits in the [[Wayward Lobster]]. Every
feud with another petty criminal he believes to be a
vendetta, every deal he makes is a matter of life and
death. Some get taken in by his act, and he has a gang
of similarly egotistical thugs, as well as the ear of a
few new arrivals who believe his nonsense. So far the
[[Bilge Rats]] have let him live, most likely as a source
of amusement.
Baudry works for the [[Night Tide]] and is interested in purchasing any treasure the PCs bring back from the jungle, but he always tries to hoodwink them.
The Bay of Madness lies off the coast of the [[Shadow Marches]], near the [[Crawling Swamp]].
The Bay of Swords lies the coast of [[Valenar]], and is fed by the [[Redwater River]].
''District Type:'' Marketplace and shops<br/>
''Buildings:'' Open-air market, temple ([[Sovereign Host]]), shrines (the [[Keeper]], [[Kol Korran]]), average
lodging (24), average food (85), exotic trades (30),
upscale trades (60), average trades (300), poor trades
(110), upscale services (20), average services (100),
poor services (40)<br/>
''First Impression:'' The crowd and noise of this
district are overwhelming. In addition to the shops
and stalls, the streets are full of people offering
questionable goods and deals; it seems like everyone has something to sell. The [[Watch|Sharn Watch]] maintains a
strong presence in the Bazaar, but they are more
concerned with preventing riots than in stopping
trade of illegal goods.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Underlook]] (west); [[Hareth's Folly]] (northeast); [[Stormhold]] (southwest); [[Callestan]] (below); [[Redstone]] (above)
The Bazaar of [[Dura]], the largest commercial district in [[Sharn]], sprawls out across a dozen towers.
The towers around the edges are devoted to shops
and services. Almost anything can be found in this
district, though the quality of any particular item or
service cannot be guaranteed. At the center of the
district, the open market from which the district
takes its name presents a labyrinth of shops, tents,
and makeshift stalls set up in the middle of the
street. A marketplace permit costs only 0.1c, though
many people try to avoid even this paltry sum. However, guards who catch such shirkers usually extort
far larger sums in exchange for a pass.
Of the four markets of Sharn, the Bazaar has the
highest concentration of criminal activity—illegal
services and trades, as well as pickpockets, bullies, and
con artists. These services are not as obvious as they
are in [[Lower Dura]] or the [[Cogs]], and quality and prices
are not as good, but shopping here is generally safer
than venturing to the lawless lower ward. The cost
of illegal services should be increased by 25%. The
[[Boromar Clan]] controls most of the illegal activities,
but [[Daask]] has been pressing up from below, and those
seeking services may be caught in the middle.
If an adventuring party displays obvious wealth—
if they are spreading gold around, wearing [[glamerweave]] or impressive magic armor or clothes—they
must deal with a constant stream of pleading beggars
and con artists. Pickpockets pose a constant threat,
and bullies try to lure shoppers into ambushes. When
doing business in the Bazaar, it's best to conceal
your wealth.
The Bazaar is a good place to dispose of random
acquisitions. Stolen goods aside (those requiring an
actual fence), most items can be sold here for 45%
of their actual value.
Almost any sort of mundane item can be found at
the Bazaar, including [[alchemical|alchemist]] goods. A merchant
might even have a few [[magic item]]s in stock, or at
least items that he claims are magical. Any magic or
masterwork items found in the Bazaar are certainly
secondhand, and might have a dubious or intriguing history.
!! Noteworthy Locations
* [[Caerlyn's Blade]]. A troop of [[Valenar]] mercenaries that calls itself Caerlyn's Blade uses the Bazaar as a base of operations.
* The [[Shrine of the Keeper]]. [[Gellis Candar]]'s pawn shop has a hidden back room with a shrine to the [[Keeper]], the [[Dark Six]] god of death and greed.
* [[Vundry's Curios]]. A pawnshop and well-connected fence for illegal or illegally obtained goods.
The [[Age of Giants]] ruin known as Bazek Mohl lies hidden deep in the jungles of [[Xen'drik]]. This ruin is intentionally left as a blank slate; feel free to populate it with [[yuan-ti]], [[drow]], [[quorcraft]], or anything you want. Perhaps these ruins hold secrets about the legendary [[Ker Marquan]].
This small black sphere measures 3/4 of an inch in diameter and weighs an ounce. Typically, <<dr "1d4 + 4">> beads of force are found together.
When you throw a bead, the bead explodes on impact and is destroyed. Each creature within a 10-foot radius of where the bead landed that doesn't dodge suffers force damage. A sphere of transparent force then encloses the area for 1 minute. Any creature that failed to dodge and is completely within the area is trapped inside this sphere. Creatures that are partially within the area are pushed away from the center of the sphere until they are no longer inside it. Only breathable air can pass through the sphere's wall. No attack or other effect can.
An enclosed creature can push against the sphere's wall, moving the sphere up to half the creature's walking speed. The sphere can be picked up, and its magic causes it to weigh only 1 pound, regardless of the weight of creatures inside.
This spongy, flavorless, gelatinous bead dissolves on your tongue and provides as much nourishment as 1 day of rations.
This spongy, flavorless, gelatinous bead dissolves in liquid, transforming up to a pint of the liquid into fresh, cold drinking water. The bead has no effect on magical liquids or harmful substances such as poison.
An enormous [[beasthide]] [[shifter]] woman
named Leara owns
the Bear's Rest inn. The inn is of average quality and
price, but Leara gives a 20% discount to shifters.
The inn has a remarkable collection of bearskins and exotic hides,
including blankets, carpets, and wall hangings.
The Bear's Wood is a forest in central [[Breland]].
A bearded [[devil]] (also known as a barbazu) is humanoid in form, with pointed ears, scaly skin, a long tail, and claws that clearly show its fiendish nature. These devils take their names from the snakelike growths that adorn their chins, which they use to lash and poison enemies, weakening them with their virulent venom.
Beasts are non-[[humanoid]] creatures that are a natural part of [[Eberron]]'s ecology. Some of them have magical powers, but most are unintelligent and lack any society or language.
<<list-links-article "[tag{!!title}category[creature]] -[tag{!!title}tagging[]category[creature]] +[sort[title]]">>
Stoic and solid, a beasthide [[shifter]] draws strength and
stability from the beast within. Beasthide shifters are
typically tied to the bear or the boar, but this subrace
could embody any creature known for its toughness.
On the Day of [[Mourning]], a cadre of [[warforged]] deserted its post at [[Fort Zombie]]
in [[Karrnath]] and entered the [[Mournland]]. These warforged took the name Godforged, claiming they each had a soul bestowed by a discorporate [[construct]] god.
Believing that a soul inhabits a body capable of consciousness only when the body is ready, the Godforged have taken it upon themselves to build a body for their god so it can walk among them.
The [[warforged]] believers also hold that a soul
becomes more powerful as the body increases in
power and size. Therefore, Godforged augment their
bodies with attached and embedded components. Warforged that die are believed to join the Becoming God, waiting for reincarnation in a new body or to
join the god in its physical form.
In addition to quests for self-perfection and to
build the Becoming God’s body, the Godforged seek
a way to build new [[warforged]]. This goal could bring
them into conflict with the [[Lord of Blades]], who controls a [[creation forge]].
Some believe that the Godforged hear the call of a [[fiend]] from [[Khyber]] or the being at the root of the [[Mourning]]. If this belief is true, the Becoming God could be a threat to [[Khorvaire]] and all of [[Eberron]].
Using honey from beehives in the [[Rubble Warren]], the food stall Beehive Pastries makes miniature cakes, which are so mouthwatering that people actively seek the stand out when they pass through the [[Sloths]]. The baker and owner, Sulman, hears a great deal and sees even more, giving him a side trade as an information broker.
This small metal beetle has spindly legs and a wind-up key on its back. While holding the beetle, you can wind it up and set it down. When you do so, the beetle walks 30 feet in the direction it was pointing when activated and emits loud noises for 1 minute, audible from as far away as 300 feet.
Out of the pages of the [[Sharn Inquisitive]], the simple lessons for living popularized by this anonymous street [[bard]] have become ingrained in the [[Brelish|Breland]] mindset. These include: “A copper piece in the cup is a copper piece earned,” “Never borrow, never lend,” “The silent man has no one to blame but himself,” and “A [[magewright]] in the town is worth an army in the wilderness.”
The serpentine behir crawls along floors and clambers up walls to reach its prey. Its lightning breath can incinerate most creatures, even as more powerful foes are constricted in its coils and eaten alive.
A behir's monstrous form resembles a combination of gigantic centipede and crocodile. Its scaled hide ranges from ultramarine to deep blue in color, fading to pale blue on its underside. Some behir, such as [[Glimmerdoom]], have developed shifting camouflage.
Some [[storm giant]]s in [[Xen'drik]] keep behir companions that are as loyal as hounds.
One glance at a beholder is enough to assess its foul and otherworldly nature. Aggressive, hateful, and greedy, these [[aberration]]s dismiss all other creatures as lesser beings, toying with them or destroying them as they choose.
A beholder's spheroid body levitates at all times, and its great bulging eye sits above a wide, toothy maw, while the smaller eyestalks that crown its body twist and turn to keep its foes in sight. When a beholder sleeps, it closes its central eye but leaves its smaller eyes open and alert. Each of these smaller eyes are capable of emitting a different ray of magical energy; the gaze from one eyestalk might result in petrification, while a different eye ray might disintegrate its target, and another might charm a [[humanoid]].
Beholders and their kin ([[gazer]]s, [[gauth]]s, [[spectator]]s, etc) are native to the plane of [[Xoriat]], and were part of the initial incursion of the [[daelkyr]] into Eberron along with other [[aberration]]s from the plane of madness. They are closely associated with the daelkyr known as [[Belashyrra]], the Lord of Eyes.
!! Birth of a Beholder
Beholders can produce others of their own kind, but the
process has nothing to do with biology and everything to do with psychology.
When a beholder sleeps, its body goes briefly dormant
but its mind never stops working. The creature is fully
aware, even though to an outside observer it might appear oblivious of its surroundings. Sometimes a beholder's dreams are dominated by images of itself or of other
beholders (which might or might not actually exist). On
extremely rare occasions when a beholder dreams of
another beholder, the act creates a warp in reality—from
which a new, fully formed beholder springs forth unbidden, seemingly having appeared out of thin air in a nearby space. This "offspring" might be a duplicate of
the beholder that dreamed it into existence, or it could
take the form of a different variety of beholder-kin, such as a
[[death kiss]] or a [[gazer]]. It might also be a truly unique creature, such as could be spawned only from the twisted imagination of a beholder, with
a set of magical abilities unlike that of its parent.
!! Physical Characteristics
As a byproduct of their unique method of propagation,
beholders in one part of the world tend to look similar,
with variations becoming more pronounced the farther
one travels from that area. Even a slight variation in the
shape of an eyestalk or the texture of its skin is enough
for one beholder to consider another a flawed abomination, which should be destroyed.
Use the following button to produce a variety of different appearances for beholders.
<<<
<$button>
<$action-chooserandom $dataTiddler="$:/BeholderBodyDiameter" $field="var1"/>
<$action-chooserandom $dataTiddler="$:/BeholderSkinTexture" $field="var2"/>
<$action-chooserandom $dataTiddler="$:/BeholderSkinColor" $field="var3"/><$action-chooserandom $dataTiddler="$:/BeholderSkinExtra" $field="var4"/>
<$action-chooserandom $dataTiddler="$:/BeholderSkinColor" $field="var5"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyeMetallic" $field="var6"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyeColor" $field="var7"/>
<$action-chooserandom $dataTiddler="$:/BeholderIrisDouble" $field="var8"/>
<$action-chooserandom $dataTiddler="$:/BeholderIrisShape" $field="var9"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyeSize" $field="var10"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyeSize" $field="var11"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyestalkShape" $field="var12"/>
<$action-chooserandom $dataTiddler="$:/BeholderEyestalkTexture" $field="var13"/>
<$action-chooserandom $dataTiddler="$:/BeholderMouthSize" $field="var14"/>
<$action-chooserandom $dataTiddler="$:/BeholderTeeth" $field="var15"/>
<$action-chooserandom $dataTiddler="$:/BeholderTeethDouble" $field="var16"/>
Generate Beholder Appearance
</$button>
The beholder is {{!!var1}} feet in diameter, covered in {{!!var2}},
<$list filter="[{!!var4}!is[blank]]" emptyMessage="" variable="noop">
<$list filter="[all[current]!var3{!!var5}]" emptyMessage="" variable="noop">{{!!var5}}-</$list>{{!!var4}} </$list>
{{!!var3}} skin. Its eyes are {{!!var6}}
{{!!var7}} with <$list filter="[{!!var8}!is[blank]]" emptyMessage="" variable="noop">{{!!var8}}-</$list>{{!!var9}}-shaped pupils. <$list filter="[{!!var10}!is[blank]]" emptyMessage="" variable="noop">The central eye is {{!!var10}}.</$list> The beholder's {{!!var11}} extra eyes are attached to eyestalks that are {{!!var12}}, and {{!!var13}}. The creature's {{!!var14}} mouth is filled with {{!!var16}} {{!!var15}} teeth.
<<<
!! Beholderkin
<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
Most of the [[overlord]]s of the [[Age of Demons]] are truly
bound, unable to affect the world in any meaningful
way. A few have frayed their bonds, however, and have
found ways to influence [[Eberron]] even while bound. Seven centuries ago, this overlord nearly escaped from his bonds. The [[paladin]] [[Tira Miron]] defeated him by becoming a vessel for the [[Silver Flame]], but the overlord never truly returned to his
slumber. For centuries he has lingered in the heart of
the Silver Flame, whispering to the weak-willed and
manipulating the path of the [[Prophecy|Draconic Prophecy]] to bring about
an age of darkness. He draws strength from every feud
and every act of betrayal, and the discord of the [[Last War]] increased his might significantly. If he breaks free, chaos and despair will surely follow. He is Bel
Shalor, the Shadow in the Flame. Some scholars claim
that he is one and the same as the deity known as the
[[Shadow]], and that he taught the [[dragon]] [[Ouralonastrix]]
the arts of magic at the dawn of time.
While he is bound, Bel Shalor has little ability
to directly influence the world. His power is one of
insidious inspiration, of whispers in the dark. He
has turned his prison against his captors, reaching
through the bars of the Silver Flame to touch the
minds of the faithful. Some followers of the Flame
have been corrupted to actively worship Bel Shalor; this cult is known as the [[Whispering Flame]].
His strength is his ability to trick good people into
performing evil deeds, something he has accomplished all too often over the millennia. See [[Silver Flame Heresy and Corruption]] for more examples.
If the Shadow in the Flame is freed, his influence will begin to extend out
over the land around him, first covering a few miles,
and ultimately spreading out across all of [[Thrane]] and beyond.
People who fall under his sway become selfish and
cruel, turning on one another instead of standing
against him. Within this sphere of influence, people grow pale and their
shadows become clearer and more vivid even in poor
lighting, often seeming to move of their own accord. It is said that the shadows conspire against their owners, telling Bel Shalor of their secret plans; you
must decide if this claim is true.
The exarch of Bel Shalor is a mighty [[rakshasa]] named
[[Durastoran]], known to legend as the Wyrmbreaker.
Belashyrra is the Lord of Eyes, also known to its cultists as the All-Seer or the Glorious Eye. Stories told of Belashyrra in the [[Shadow Marches]] whisper that the Lord of Eyes can see every evil deed a person commits, and that those touched by this [[daelkyr]] suffer terrible hallucinations that inevitably drive them to violence or death.
//''Dreadful Visions.''// The madness of Belashyrra is tied to sight: images that can't be unseen, horrific hallucinations, the fear of blindness and of being watched—or realizing that something else is using your eyes. Belashyrra can force its victims to question whether what they perceive is real, or can fill their world with such terrors that they willingly blind themselves to escape.
Belashyrra sees mortals as raw materials to be exploited or insects to be exterminated. However, the Lord of Eyes has been known to take an interest in specific mortals. Belashyrra's [[warlock]]s serve as its envoys in the world and are often directed to seek out creatures and sites that the daelkyr wishes to see through their eyes.
//''Belashyrra's Cults.''// The Lord of Eyes has followers across Khorvaire, and its cults are typically driven by mad visions. Devoted cultists, such as members of the [[Vigilant Eye]], can grow eyes in unusual locations, and might have darkvision or other supernatural abilities when they view the world through those eyes. [[Beholderkin|beholder]] often advise or lead Belashyrra's cults, and cultists typically treat these [[aberration]]s as divine beings.
This symbiotic crown is carved from dark purple and mauve stone, with ten points like stalks set with gemstones resembling the eyestalks of a [[beholder]]. To attune to this item, you must wear it on your head for up to an hour, during which the crown's hidden tendrils burrow into your scalp to bond with your skull.
While wearing the crown, you can see normally in darkness, both magical and nonmagical, to a distance of 120 feet. You can also use the eyestalk points to shoot magical rays of energy, much like a beholder. These magical effects include telekinesis, inducing fear or sleep in a person, slowing or halting a person in place, or even disintegrating someone or turning their flesh to stone.
The [[daelkyr]] [[Belashyrra]] made these crowns. While on the same plane of existence as the crown, Belashyrra can see through its eyestalks.
Commander Belew Yorgan is a [[dwarf]] who
leads the [[Sword Point]] [[garrison|Sword Point Garrison]] in [[Middle Central]].
He does his best to serve the interests of the nobles
and wealthy patrons in the [[Central Plateau]], and as a
result these wards are among the safest in [[Sharn]]. But
Yorgan's loyalties are first and foremost to his purse,
and the troops under his command serve whoever's
paying the most.
This cruel leather belt has shallow, sharp spikes along the inside. When worn, this belt can only be removed by the person who put it on. A certain command word must be spoken near the belt once per day. If the command word is not spoken, the belt will begin to poison the user, killing them slowly.
When you wear this belt and speak the command word, your size halves in all dimensions, and your weight is divided by eight. This effect can be used for a total of 10 minutes per day.
While wearing this belt, your physical strength matches that of a [[hill giant]]. Higher-rarity and higher-power versions of this belt exist.
When you wear this belt and speak the command word, your size doubles in all dimensions, and your weight is multiplied by eight. This effect can be used for a total of 10 minutes per day.
A finely crafted dark leather belt with three loops, each decorated with a shard of sapphire. The magic of the belt leaves an invisible mark on the surface of the weapons stowed in each loop and invisibly inscribes the name of the item on the sapphire shard.
Three one-handed throwable weapons can be 'attuned' to the belt. When a weapon, from the belt, is thrown at an object or creature, hit or miss, the weapon will return to the belt after a few seconds.
Visitors to the House [[Deneith]] [[enclave|Deneith Enclave (Stormreach)]] in [[Stormreach]] are met by Bereschel d'Deneith. Her blood calls her to battle and
adventure, but her duties to the house keep her acting
as a glorified greeter at the [[enclave]]. She spends her time
talking to mercenary captains, negotiating deals, and
acting as a public face for the house. Her irritation with
this occasionally slips out as an impolite outburst.
A distant cousin of the [[Wylkes family]], Berrigan Enge has secured a profitable position aiding the [[Harbor Lord|Jonas Wylkes]] in dealing with duty on goods making their way from the harbor to market—a position that affords him many opportunities to
skim some coin for himself. Berrigan takes a very
hands-on approach to his job, preferring to hire
help only on rare occasions. He is often seen at the
[[Harbormaster's House]].
The [[Blood of Vol]] isn’t an especially hierarchical faith in [[Stormreach]], and its adherents largely worship on their time and terms. But it still requires someone to lead rites and maintain [[Rosewood|Temple of Vol]] for the congregation. These duties fall to a quiet herbalist named Berrinessa. The local [[Karrn|Karrnath]]s think very highly of Berrinessa and are fiercely protective of both her privacy and her wellbeing. (One widely circulated story relates how thugs once tried to mug her and were, for their temerity, promptly stoned to death by half the population of [[Grindstone]].) Just about anybody who has been in
Grindstone for more than a day knows that if anything untoward should befall Berrinessa, the entire ward could very well erupt in violence. Although Berrinessa is certainly the most public Seeker in town, other influential Seekers of [[Stormreach]] keep their true religious
leanings to themselves.
You can hold this berry out to a bird you can see within 30 feet of you. If the bird is willing, it can eat the berry and become your eyes and ears for 10 minutes or until you shake your head and end this effect. During this time, you are deaf and blind in your own senses.
While the bird is within 100 feet of you, you can
telepathically communicate with it, telling it where to go
and what to do.
This magic axe is an extremely fine weapon, enchanted to pierce armor and improve the wielder's own vitality.
This axe is ''cursed'', and becoming attuned to it extends the curse to you. As long as you remain cursed, you are unwilling to part with the axe, keeping it within reach at all times. You also have disadvantage when using weapons other than this one.
Whenever a hostile creature damages you while the axe is in your possession, you have a chance of going berserk. While berserk, you must continuously attack the creature nearest to you with the axe, moving to attack the next nearest creature after you fell your current target. If you have multiple possible targets, you attack one at random. You are berserk until there are no creatures within 60 feet of you that you can see or hear.
[[Upper Tavick's Landing]] has always
had an isolationist attitude, in many ways considering itself to be a separate city within [[Sharn]]. Bestan ir'Tonn has represented this community for the last 30 years. A wealthy barrister from one of the [[Sixty]], he has strong connections to the [[Boromar Clan]]. He is a respected man who has always looked out for the interests of the wealthy of [[Tavick's Landing]], as well as for the Boromars. However, he has a secret: he is an agent of the [[Dreaming Dark]]. Fifteen years ago, the [[Inspired]] dominator [[Tirashana]] infected him with a [[mind seed]], and today he is one of three Inspired moles. While appearing to promote the agendas of his supporters, he has actually been stirring up dissent and discord.
High Elder Bhisma Na'kala of the [[Flamebrow Clan|Flamebrow Clanhold]] is the ruler of the [[dragonborn]] city of [[Ka'rhashan]]. He joined King [[Sebastes ir'Kesslan]] to represent [[Q'barra]] at the [[Treaty of Thronehold]] two years ago, and continues to advocate for peace.
Bhisma has called upon the [[dragonborn]] clans to hold to their ancient duties, and forbids attacks on [[human]] towns. But Bhisma’s authority is far from absolute, and even those who respect his words will still butcher outsiders who trespass onto the unhallowed grounds that the dragonborn protect.
Big Bronau's Boat is a riverboat casino at permanent anchor on the [[Koronoo River]] in [[Graystone]], [[Stormreach]].
//“My uncle used to run ships across the [[Thunder Sea]]. Bolts of silk mostly, and giant pottery shards on the way back. He refused to pay the Rats protection. His ship burned down to the waterline, and they never found him or his crew.”//
<div align="right">—Aldriss Rams, dockworker</div>
''Leader:'' [[Cartha]]<br/>
''Notable Members:'' Hes ([[changeling]] [[wererat|lycanthrope]]), Little Del ([[halfling]] [[wererat|lycanthrope]])<br/>
''Turf:'' [[Harbor]] district<br/>
''Portfolio:'' Extortion, robbery, theft, smuggling<br/>
''Tactics:'' Bribery, intimidation, politics, violence
There is a saying in [[Stormreach]]: “Everyone is afraid of
someone.” For many in the city, “someone” is the Rats.
As members of one of the oldest and most powerful
gangs in the city, the Bilge Rats have run the [[Harbor]]
district for decades. No one does business along the
waterfront without giving the Rats a taste, and nobody
crosses them on their home turf and gets away with it.
Every couple of years an up-and-coming gang makes a power play against the Rats, and every couple of
years a bunch of well-gnawed bones get dumped in
the harbor.
The Rats plan to grow stronger through aggressive
growth. They are working to strengthen their ties to
the [[Boromar Clan]] of [[Sharn]]. Head Rat [[Cartha]] intends
to become the Boromar’s counterpart in [[Stormreach]],
eventually controlling the entire city’s underworld.
!! Not Just A Metaphor
The Bilge Rats’ secret to success is simple—the Rats
are monsters in every sense of the word. The gang’s
higher-ranking members are infected with [[lycanthropy|lycanthrope]], which they refer to as “the Gift.” They are wererats, feral and cunning creatures with an instinctive feel for the shadows of the city. Dealing with most gangs in [[Stormreach]] means facing off against some young toughs. A sit-down with the Rats means confronting creatures that would just as soon gnaw off your face as cut you a deal.
The Bilge Rats keep their disease hidden from the general public. The [[Silver Flame]] has little influence in Stormreach, but knowledge of the presence of a powerful and dangerous group of wererats at the heart of a major city could be the bridge that mends
the [[gap|Keep of the Silver Flame]] between Stormreach and [[Flamekeep]], and the
last thing the Rats want is a sudden influx of templar rat-hunters. At the same time, they let enough gruesome rumors circulate in the underworld to keep their enemies nervous. The few associates of the Rats who know the true nature of the gang keep their mouths shut. Revealing the truth could cause trouble for the Bilge Rats—but it would likely be the last thing the informer would do.
The Bilge Rats are internally stronger than the other gangs of the city, thanks to the loyalty instilled by the disease. The members of other gangs backstab their way through the ranks and feed on their own, weakening the entire organization. Not so among the Rats, where a lesser simply does not raise their hand
against a higher-ranking member.
Because of this need to conceal their [[lycanthrope]]
nature, Bilge Rats spend most of their time in [[humanoid]] or [[dire rat|dire beast]] form, using hybrid form only when alone or dealing with people who are about to die. The [[Harbor]] district has a significant dire rat population, allowing
the Rats to use this form without drawing significant attention. Dire rat pets (a few of whom might be other Bilge Rats in dire rat form) always accompany upper-ranking gang members. The gang’s reputation for feeding its enemies to these rats is well established, another tool for concealing its true nature.
People who brush the Rats the wrong way end up in
a gutter with their lips, eyes, nose, and cheeks chewed
away. Residents of the [[Harbor]] call this “giving face,”
and people who don’t pay the gang respect in word and deed do so instead with the flesh of their features. Those in the know along the waterfront commonly whisper: “You let the Rats save face, and you get to save your own.”
!! Operations
The Bilge Rats have a few staple rackets that serve as the
bread and butter of the gang. They shake down smugglers and waterfront shopkeepers for a take of their action. They waylay drunken visitors carousing in
the [[Harbor]] district. And they steal goods from warehouses and ships—never taking enough to push the [[Storm Lords]] to action, just “claiming their cut.” Now
and then a Rat might be called upon to do something
more bloody, such as culling a traitor from the teeming ranks
of the dock vermin. Earning one’s keep is necessary,
but more important service to the gang lies in actively
squeezing out its enemies.
Rats keep their ears to the docks and listen closely
to the wind and the waves. Savvy Rats spend a good deal
of time spying on their enemies and keeping abreast
of the ebbs and flows of the smuggling tide. The gang’s
network of informants is extensive—nothing happens
in the Harbor without the Rats catching wind of it.
Members of the gang are also sent to lean on
[[Stormreach Guard]] members who won’t look the other way, or dole
out bloody punishment to people who refuse to pay
up their dues. The Rats stand aloof from much of the
underworld turmoil in [[Stormreach]], cemented in place
at the top by their longstanding reputation for ruthless
payback whenever their interests are challenged.
When competition rears its ugly head members are dispatched to handle it swiftly. As an opening (and often final) salvo, the Rats send a message by slaughtering a few members of the opposition and returning their bloody rat-gnawed bones in a sack.
Other criminals view the Rats
with a mixture of hateful envy and genuine admiration. To most members of the [[Guard|Stormreach Guard]], the Rats are a
permanent scar on the [[Harbor]], a necessary evil that
cannot be expunged. Truth be told, the downfall of
the Rats might be the worst thing that could happen
to the Harbor’s criminal scene. The bloody rush to fill
their power void would seriously disrupt Stormreach’s
thriving shipping trade.
Captain Birne is a former "savage" whom [[Greigur d'Deneith]]
rescued from barbarism and raised like an adopted
son. Sharing Birne’s distrust of magic and those who
wield it, Greigur encouraged Birne’s studies and
training specifically in that regard and now takes pride
in how potent an adversary for spellcasters his protégé
has become. Birne, a mountain of a man who stands
almost seven feet in height, is fiercely loyal to Greigur
and can often be seen standing off to one side of his
lord, leaning menacingly on the hilt of his masterwork
two-handed sword.
An expert in the practical impact of [[manifest zone]]s, Professor Oak of [[Morgrave University]] earned her degree in Otherworldly Anthropology at the School of Seven Silences in the Twilight Court of [[Thelanis]]. Any students who run afoul of the lesser [[fey]] found in the city are encouraged to speak to Professor Oak; office hours are Mol and Far, three bells to five.
The Bitter Sea lies between [[Khorvaire]] and [[Frostfell]]. It includes [[Eldeen Bay]] and [[Karrn Bay]] to the south. Floating icebergs are a serious hazard in these waters, particularly in the summer months when they shear off the Frostfell and drift south into important shipping lanes
just off Khorvaire. Despite its inland location, [[Thrane]] has always made
an effort to maintain a presence in the Bitter Sea alongside ships from
[[Aundair]] and [[Karrnath]].
[[Rak Tulkhesh]]'s heart [[demiplane]] is a crimson fortress, with stones soaked
in blood and walls studded with rusted iron spikes. Around
the tower's base, [[rakshasa]]s and other [[fiend]]s endlessly battle,
their pointless struggle reflecting the bloodlust of their master. [[Mordakhesh]] the Shadowsword often returns to the Bitter
Shield between schemes, and is hailed as lord of the fortress.
The Bitter Shield has the //Unquenchable Fury// and
//Bloodletting// properties of [[Shavarath]].
''District Type:'' Garrison<br/>
''Buildings:'' Garrison building, temple ([[Silver Flame]]), average lodging (20), poor lodging (4), upscale food (8), average food (15), poor food (15),
upscale trades (15), average trades (33), poor trades
(28), average services (40), average residences (160),
poor residences (40)<br/>
''First Impression:'' This district was designed to
withstand a full siege. Every bridge to the outer
realms has a guard post and a heavy portcullis that
can be lowered at a moment's notice. The walls are
unusually thick stone, and arrow slits and murder
holes can be seen in every wall. A massive tower of
black stone dominates the center of the district—the
garrison of the [[Sharn Watch]], and the city's first line
of defense against outside attack.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Foundation]] (west); [[Dragoneyes]] (northeast); [[Firelight]] (bridge, north); [[Little Barrington]] (above)
Black Arch is a dark, foreboding district. Without the
use of magic or flight, all traffic to the higher wards
must pass through Black Arch, and the district has
been built to hold off an invading army. Fortified
spires and guard posts are everywhere, and each of
the major entrances has a heavy portcullis enchanted
with arcane lock. During the [[Last War]] a detachment of
the King's Guard was stationed in Black Arch, but
today it is back in the hands of the [[Watch|Sharn Watch]]. The Watch
assigned to Black Arch takes its job very seriously, and
its members are among the most ethical and trustworthy to be found in Sharn, mostly due to the efforts
of the district commander, [[Iyanna ir'Talan]].
Most of the trades and services in this district
support the [[Watch|Sharn Watch]]. There are a host of smithies, and
it is an excellent place to obtain masterwork weapons and armor. House [[Jorasco]] maintains a house of healing near the garrison tower, and there is a House
[[Sivis]] [[message station|speaking stone]] and [[Orien]] courier post to ensure
quick communication between the garrisons.
With deep-socketed eyes and broad nasal openings, a black [[dragon]]'s face resembles a skull. Its curving, segmented horns are bone-colored near the base and darken to dead black at the tips. As a black dragon ages, the flesh around its horns and cheekbones deteriorates as though eaten by acid, leaving thin layers of hide that enhance its skeletal appearance. A black dragon's head is marked by spikes and horns. Its tongue is flat with a forked tip, drooling slime whose acidic scent adds to the dragon's reek of rotting vegetation and foul water.
When it hatches, a black dragon has glossy black scale. As it ages, its scales become thicker and duller, helping it blend in to the marshes and blasted ruins that are its home.
!! Magic and Breath Weapon
The black dragon's breath weapon is a spray of powerful acid. As innate spellcasters, adult black dragons can cast spells such as [[darkness]], [[vitriolic sphere]], [[sickening radiance]], and [[blight]].
{{DragonAgeCategories}}
The Black Freighter is a shiplike tavern on the [[Koronoo River]] in the [[Grindstone]] neighborhood of [[Southwatch]]. It’s common knowledge that if one has business with
the [[Emerald Claw]], the Black Freighter is the place to
go, and equally common knowledge that one probably
shouldn’t go looking for a fight there. Not only will
the numerous fanatical warriors of the Claw gladly
accommodate, but so will the [[Karrnathi militia|Swords of Karrn]], who
don’t take kindly to troublemakers intruding on their
territory, and the various and sundry other [[Karrn|Karrnath]]s
who patronize the tavern.
Known to locals as simply “the Freighter,” the Black Freighter was built atop a piece of unusual architecture left behind from when the [[thri-kreen]] ruled the area that would one day become the city of [[Stormreach]]. It sits in the water in [[Southwatch]], and
despite its reputation outside that district, hosts a packed house every time it opens its doors. The base of the structure—the piece of thri-kreen architecture—is
a vaguely hull-shaped piece of almost indestructible,
yet strangely buoyant, green stone. The bar was built
inside and atop this “hull,” and all visitors must walk
a plank (which is withdrawn every dawn when the bar
closes) to gain admittance.
Technically speaking, the [[Emerald Claw]] has no claim over the establishment. But everyone knows that its proprietor is friendly to the order’s cause and membership at
best, and an involved and important part of the order’s
[[Stormreach]] operation at worst. A ribald and garrulous
seadog named [[Smargat]] runs precisely the sort of place
that would appeal to [[Karrnath]]’s criminal element.
The food is the traditional cuisine of working-class
Karrns, the drink flows steady and cheap, and the air
is thick with Karrnathi verse, from the most raucous
sea shanty to the most somber of ballads that stoke the
fires of nationalism in the heart of every Karrn.
This smithy is run by a family of [[eneko]]. It buys and sells goods designed for large creatures and often trades with the [[giant]]s of the [[Tents of Rushemé]]. In addition to selling excellent goods, the smiths are happy to prepare people to deal with
the [[Rushemé giants|Guardians of Rushemé]].
Black Iron is run by the smith [[Hular]], one of the best in
the city.
A massive chasm in the [[Blackcap Mountains]], the Black
Pit is over a mile across and descends beyond the limits of sight. It's said to be an entrance to the abyss of
[[Khyber]], and foul creatures live among the caves that
honeycomb its walls. A nearby village—also called Black
Pit—provides a haven for deserters and other criminals
as well as a thriving black market.
If you have shady friends, you've likely heard of Black
Pit's reputation as a place to quietly "disappear." Similarly, if you have ties to the [[King's Dark Lanterns]], you
know where to find some of [[Breland]]'s worst criminals.
A black pudding resembles a heaving mound of sticky black sludge. In dim passageways, the pudding appears to be little more than a blot of shadow.
Flesh, wood, metal, and bone dissolve when the highly corrosive pudding ebbs over them. Stone remains behind, wiped clean. When attacked with a well-placed slash or lightning bolt, a black pudding can split into two or three separate oozes.
The largest of [[Io'lokar]]’s amphitheaters is known as the Black Stage for its shadow-magic-augmented performances. The master of the Black Stage is the [[gnome]] [[Thinrukidis]].
Music, drama, and oratory are the cornerstones of Io’lokar cultural life, and
performances in the [[Terrace]]’s and [[Sunward]]'s many theaters are attended
by all the [[folk of the city|Io'lokari]]. Epic dramatic works incorporate
[[illusion]] and [[planar magic|Externalist Theory]] in their production, while
incomparable musical and oratory performances make use of illusion and mild [[enchantment]] effects to heighten the audience’s perceptions. Lost works of pre-[[Inspired]] [[Sarlona]], ancient [[Xen'drik]], and the [[Dhakaan]]i Empire
are often heard here, possibly revealing ancient lore or
adventure hooks.
PCs can also seek to perform on the city’s stages—the
[[Io'lokari]] are always hungry for new tales and ballads from
distant lands. In addition to performers bartering their efforts for lodging and other favors, a successful performance improves dispositions within the city for one week.
In a city known for drinking and colorful characters,
no establishment in [[Stormreach]] has more of the two than the Black Wrack. Proudly declaring itself Stormreach’s biggest
tavern, the Wrack is nestled against the silver wall on
the [[Red Ring]]’s north side. The main room is spacious
and loud, with a ceiling high enough for the likes of the
[[minotaur]] [[Kolos]] to walk without stooping.
The Black Wrack is owned and operated by a no-nonsense but good-natured fellow named [[Handlon the Brick]]. Handlon has one rule: All are welcome to his hospitality, regardless of race or cultural heritage. If a squabble erupts, it gets taken outside immediately, or Handlon puts an end to it, often abruptly and painfully.
Everyone’s gold is good at the Black Wrack.
Today the tavern’s popularity is at an all-time high, thanks in part to its widely used wall of notices. What began as a way for [[Handlon|Handlon the Brick]] to add some color to his otherwise boring decor has grown into an invaluable resource for adventurers and explorers. It started when he invited his patrons to place job postings, want ads, and other notices on the tavern’s north wall. This proved so popular that Handlon soon formalized the practice, organizing the postings into different classifications. Within a few years, many adventurers who arrived in [[Stormreach]] knew to check the wall for opportunities that might be in the offing.
''District Type:'' Industry district<br/>
''Buildings:'' Temple ([[Onatar]]), poor lodging (2),
poor food (7), poor trades (60), poor services (30)<br/>
''First Impression:'' Heat and the smell of smoke fills
the air. The long passages are dimly lit and coated
with soot, and the inhabitants are dour folk focused
on their work.<br/>
''Social Class:'' Lower class
Blackbones is located under [[Tavick's Landing]], and
stretched west toward the center of [[Sharn]]. In most
respects it is similar to [[Ashblack]]; it is slightly newer,
and the corridors are a little wider and better lit. Like
Ashblack, there are a considerable number of [[warforged]] laborers in this district, and a few businesses have sprung up around these constructs.
!! Noteworthy Locations
* The [[Pool of Onatar's Tears]]. A small temple in the Blackbones district holds a pool said to be blessed by the god [[Onatar]]. Smiths come from across [[Khorvaire]] to dip their tools in the pool.
* The [[Red Hammer]]. The Red Hammer is Sharn's only inn maintained by and for [[warforged]]. It offers those who work in the Cogs opportunities to socialize, along with repair and cosmetic services.
* The [[Lava Pit]]. This hole-in-the-wall restaurant overlooks a gigantic forge powered by molten rock, the glow from which suffuses the place with lurid red light.
House [[Vadalis]] has an [[enclave]] near [[Stormreach]], but its location allows the local house members to maintain not only their policy of detachment, but their privacy and profitability as well. Near the coast north of the city stands House Vadalis’s sprawling ranch, Blackbriar. Named for the curious plant that grows wild in the region, Blackbriar is easily the largest private holding of any [[dragonmarked house]] in [[Xen'drik]]. Few know just how large it is, since rumor holds that the fields of blackbriar plants encircling
the ranch expand and contract at the [[housemaster|Tyris d'Vadalis]]’s
whim, but locals estimate its size at three hundred
acres or more. According to the few who have been
allowed to visit, the blackbriar grows higher and
thicker the closer to the ranch one goes and is well
over head-height when it breaks suddenly, revealing
a dirt path that winds its way through rolling grassy
hills toward a central manor and several outbuildings. A house member greets would-be visitors near
the road from [[Stormreach]] and, after grave warnings about straying too far, guides them through the
blackbriar personally. It is said that the briar itself
refuses to allow anyone not sanctioned by the house
to find the way through.
Blackbriar was established by a highly regarded [[druid]] named Mundir d'Vadalis, an avid naturalist who oversaw the house’s interests in [[Xen'drik]] during
the [[Last War]]. Today it is run by Viceroy [[Tyris d'Vadalis]]. All who work for Tyris are sworn to secrecy about
their activities, but some have implied that they were
hired to capture exotic animals from the wilds of the
continent’s interior on his behalf.
Jutting fiercely into the sky along the southern shores of [[Lake Galifar]], the Blackcap Mountains (or "Blackcaps") in [[Breland]] form the nation's border with [[Aundair]]. Few trees grow on the lower slopes of the ominous mountains, and thick banks of clouds cling to the bare peaks. The mountains take their name from the complete lack of snow on the dark stone. Explorers who have dared the heights report that the rock faces are almost uncomfortably warm day and night, and any snow that falls melts immediately as it hits the surface. Dozens of streams flow from the mountains into [[Lake Galifar]] and [[Silver Lake]].
The highest point in [[Breland]] is found in the Blackcap Mountains: Erix Peak, at 13,256 feet. But perhaps the strangest mountain in the Blackcaps is Kyrrilspire, which exists inside a permanent [[manifest zone]] to [[Kythri]]. The mountain changes shape from day to day.
The Blackcaps are also home to the infamous [[Black Pit]].
The Blackened Book is a special division of the [[Sharn Watch]]. It is an elite core of [[abjurers|abjuration]] and
[[diviners|divination]], charged with investigating and containing
magical threats. These [[wizard]]s are highly dedicated
to their work and their city, and generally don't take
bribes. It's up to the higher-ups, however, to decide what
missions to assign to the Blackened Book; if there's a
case that a noble doesn't want investigated, it probably won't be.
The town of Blackrock on [[Orthoss]] is the seat of the [[Wind Whisperers]]. It is a growing port, despite the remote location and fierce winter storms that buffet the island. The foundling [[Mark of Storm]] bearers within the Wind Whisperers can redirect or alleviate harsh weather somewhat, but their mastery of the weather pales in comparison to the powerful scions of House [[Lyrandar]] with their [[storm spire]]s.
Blackscale [[lizardfolk]] are hulking brutes that have been physically transformed by the power of [[Masvirik]], the Cold Sun. They inhabit [[Haka'torvhak]] and the surrounding jungles in [[Q'barra]], believing themselves to be the chosen champions of [[Rhashaak]]. Each blackscale has a sliver of a [[dusk shard]] embedded in their bodies, which is the source of their corruption; see [[Poison Dusk]] for more information about dusk shard creatures.
There are many shattered
temples in [[Fallen]], and the broken statues of the
[[Sovereign Host]] look down upon the ruins. Only one
temple still operates among the ruins—Blackstone
Church, [[Sharn]]'s first temple to the [[Silver Flame]].
Once this church was tended by dozens of acolytes
and filled with offerings and relics. Today, dust and
shadows hold sway, and a single priest administers to
the Flame. [[Faela]], not part of the church hierarchy of Sharn, saw
a need and took up residence in the abandoned
church. The [[Silver Flame]] is dedicated to fighting
the evil impulses of humanity as well as supernatural
evil, and Faela does her best to counter the darkness
she sees in Fallen. She provides nonmagical healing, acts as a mediator, and tries to defuse violent
situations. While the people of Fallen don't always
listen to Faela, she is the only priest that has not
abandoned them, and they generally look out for
her. She devotes most of her time to the poorest and
most wretched people of Fallen, trying to help these
unfortunates rise up from squalor and make a better
life. With her guidance, a number of the worst cases
have even managed to leave Fallen and start a new
life elsewhere in Sharn.
Blackwater Lake in [[Khorvaire]] forms part of the border between the [[Shadow Marches]] and [[Droaam]], and it feeds the [[Blackwater River]].
The Blackwater River in [[Khorvaire]] flows from the [[Blackwater Lake]] into [[Azure Bay]]. It forms part of the border between [[Droaam]] and the [[Shadow Marches]].
//“Xen'drik? Full of nothing but fools and primitives. They wouldn’t know a professional fighting force if it deployed a tactical flanking gambit at high noon.”//
<div align="right">—Lieutenant Commander Danforth, Blackwheel Company</div>
Following the gaping hole in military service created by
the [[Treaty of Thronehold]], a small corporation formed
to take advantage of the military expertise and discipline now lying fallow. Mackinnon “Mace” Maceck, a [[dwarf]] entrepreneur and former [[Cyran|Cyre]] battlefield
commander, created a transportation and security firm to contract out to the highest bidder. Under his charismatic influence, soldiers, adventurers, and support
personnel from every corner of [[Khorvaire]] found
gainful employment at the end of the war.
The Blackwheel Company began by taking the jobs that no other organization, including the [[dragonmarked house]]s, would touch. Clandestine smuggling missions into areas deemed too dangerous to risk valuable house or national resources became the company’s calling card.
As the company grew in reputation and prowess, the [[dragonmarked house]]s elected to commandeer this rising military power. A special meeting of the Committee of [[Twelve]] was convened, and the houses pooled their resources to essentially buy out the Blackwheel Company. By retaining their services indefinitely and exclusively, the Twelve created for itself a military force that could be deployed anywhere in the world to pursue the magical aims of the council.
As the first order of business, the Twelve dispatched the
company to the continent of
[[Xen'drik]], where Mace established
operations under a new flag—a
thirteen-spoked wheel surrounding
the motto “United Aim,” symbolizing
the shared interests of the [[Twelve]].
The group’s current base of operations, a massive [[airship]] named //Triskaideka//, provides the company with the mobility and firepower needed to operate in the most inhospitable regions of [[Xen'drik]]. The current focus of the company
appears to be furthering the arcane research agenda of the [[Twelve]]—securing [[dragonshard]] deposits, exploring ancient runes, and protecting vital artifacts in and around [[Stormreach]].
!! Joining the Company
Joining the Blackwheel Company is easy for those who
are eager to earn coin for their talents. The company’s
“no questions asked, no able hire turned away” policy
has allowed it to develop an impressively diverse membership. It is not uncommon to see [[gnoll]] barbarians and [[goblin]] rogues serving side by side with noble [[dragonmark]]ed heirs.
The company takes pride in providing its hires with the best in pay and equipment, so attrition is low. In return, the company demands a certain level of professionalism and discipline. This pragmatic organization finds most of its members among those of neutral alignment, but all are welcome. Hires are free to leave the company at any time, though they are stripped of all benefits.
Blackwheel recruiters can be found throughout [[Stormreach]]. The company typically maintains at least one storefront recruitment center for entry-level soldier positions. Rather than run hopefuls through an arduous application process, the company tends to accept whatever an applicant has to offer at face value, and assigns him or her out appropriately. With the backing of the [[dragonmarked house]]s, the company has no shortage of funds or equipment. Applicants who cannot cut muster are identified within a few days and simply drummed out of service.
Higher-level recruitment is typically handled in
a more private, even covert, manner. Some stories tell
of uniquely skilled adventurers being blackmailed or
otherwise coerced into taking one-off assignments
when a company expedition has a particular niche
to fill.
!! Playing a Blackwheel Operative
There’s a saying among Blackwheel veterans: “No one ever
leaves the company.” You know the truth in this, in more
ways than one. Blackwheel is the only choice for discerning professionals looking for work in [[Stormreach]]. The pay
is good, the support and equipment unmatched, and the
organization as a whole strong and efficient. In the lawlessness of Stormreach, the company provides structure
and security—especially for the new recruit. You know
how good you have it. Why would anyone leave?
You’re also aware of another meaning to that well-worn saying, one that tends to apply higher up the Blackwheel hierarchy. Stick around the company long enough,
and you will be privy to valuable secrets and information. In many ways, information is a commodity more valuable than gold. Officially, Blackwheel maintains its policy that operatives are free to leave at any time. Unofficially, it’s understood that the company has ways to ensure silence among those who leave service.
!!! Missions
Blackwheel is primarily tasked with recovering information and artifacts relating to the [[Caldyn Fragments]] of the [[Draconic Prophecy]]. In this endeavor, the company
competes primarily with three other main factions—the
[[Cabal of Shadows]], the [[Covenant of Light]], and the
[[Crimson Codex]]. Most often, this competition involves
racing into the wilds of [[Xen'drik]] to beat another expedition to a recently uncovered asset.
As the standing private army of the [[Twelve]], Blackwheel might also deploy resources to serve any objective that is in the collective interest of the [[dragonmarked house]]s. You might be ordered to raid an outpost of the [[Crimson Codex]], scout for new [[dragonshard]] deposits, or serve as protection on a diplomatic mission to the
[[Riedra]]n outpost of [[Dar Qat]].
Blackwood Bay lies off the southern coast of [[Aerenal]], between the mainland and the island of [[Thal Taluna]].
The Blackwood Jungle is a thick forest in the southern tip of [[Aerenal]].
The Blade Desert is a vast region that stretches across [[Valenar]] and the [[Talenta Plains]], from the [[Mournland]] to the [[Ironroots|Ironroot Mountains]] and [[Endworld Mountains]]. Every year, the desert seems to creep farther into the grasslands of the [[Talenta Plains]].
While holding this weapon, you can use the stored energy in the blade to cast the [[fire bolt]] spell once per day.
This brightly-colored shortsword is kept in a wooden scabbard with eternally blooming flowers. The blade is made of dull green steel, and its pommel is fashioned from hard rosewood. At-will, you may conjure a flowery mist which fills a 20-foot area around you with pleasant-smelling perfume. The scent dissipates after a few minutes.
A creature damaged by the blade has a chance of being [[charm]]ed by you for up to a minute. Creatures cannot be charmed this way more than once every 24 hours.
While holding this weapon, you can use the stored energy in the blade to cast the [[ray of frost]] spell once per day.
While holding this weapon, you can use the stored energy in the blade to cast the [[mold earth]] spell once per day.
<<<
{{mold earth}}
<<<
The [[Sulatar]] [[drow]] of [[Xen'drik]] believe that they are destined to cleanse the world in a wave of fire and blood. When this time comes, the greatest champion of the Sulatar will stand at the head of a [[Fernia]]n army, and they will bear the //blade of the burning promise//.
The blade is one of the most sacred relics of the [[Sulatar]], and should it fall into the hands of adventurers, the drow will go to any lengths to retrieve it. This two-bladed [[orichalcum]] sword has been carried by the war leader of the Sulatar since before the fall of the [[giant]] nations, handed down from one generation to the next. Few have fully mastered the powers of the //blade of the burning promise//, but each has carried it faithfully, waiting for the time when the final fire sweeps the land.
The blade possesses two tiers of magical power. Anyone who carries it can cause it to burst into flames, as a [[flame tongue]], but granting the wielder power to control the flow of the fire. But its greater power of full command of fire [[elemental]]s is hidden within. To gain access to the full powers of the blade, a character must prove themself
worthy of the weapon. There is no single path to follow. They could use the //blade of the burning promise// to start some great conflagration, survive a journey to [[Fernia]], or
defeat an immensely powerful foe. If and when the character has performed an act worthy of the blade, the glyphs inscribed around the black leather grip glow with a terrible red light, and the wielder will instantly know the full extent of its powers and how
to use them.
The spellcaster extends their hand and traces a sigil of warding in the air. For the next 10-20 seconds, the caster gains magical resistance against physical attacks. More skilled spellcasters can cast this cantrip on a companion.
Most ambitious members of House [[Deneith]] spend a year or two serving as soldiers in the Blademarks Guild. The guild has fewer soldiers than it did five years ago, to be sure, but those blademarks under contract are as busy as ever. The end of the war just meant that the blademarks were available to be hired by entities other
than armies in the field, such as other
[[dragonmarked house]]s, local nobles, and
countries beyond the [[Five Nations]].
(Allosaurus)
The allosaurus is a predator possessing great size, strength, and speed. It can run down almost any prey over open ground, pouncing to pull creatures down with its wicked claws.
A blast disk holds destructive arcane power. A typical blast
disk is about nine inches in diameter and one inch thick, made
from layers of different metal; [[dragonshard]]s are embedded in
the surface of the disk and arcane symbols are engraved in its
surface. Most blast disks are explosive (see below), but others can store different magical effects. Knowledge in arcana is necessary for a person examining a spell-effect blast disk in order to identify the spell effect contained within the disk.
There are three elements to a blast disk: the trigger, payload,
and charge. Each effect is selected at the time it is created.
//''Trigger.''// A spellcaster touching a blast disk can choose
to activate it. However, generally you don't want to be holding
a blast disk when it goes off. A blast disk can be created with
one of the following triggers, or with a more complex trigger of
the creator's choosing (e.g. to detonate when a certain word is
spoken, when a specific object comes within range, etc.):
* ''Time. ''When the disk is activated, the user can set a time delay of up to 10 minutes before it releases its effect.
* ''Proximity.'' 30 seconds after the disk is activated, it can trigger when someone comes within a certain distance of the disk or when someone first makes contact with the disk, then breaks that contact.
* ''Impact.'' The activated disk can be set to detonate on impact, then used by throwing or dropping it.
//''Payload.''// When a common explosive blast disk is triggered, it creates an explosion in a 20-foot radius centered on the disk. More rare and expensive spell-effect blast disks produces a magical effect when triggered, chosen when it was manufactured.
''//Charge.//'' A typical blast disk holds a single charge, the
[[dragonshard]]s shattering when the effect is triggered. However,
more advanced blast disks recharge at dawn; this increases the
rarity of the disk by one category.
!
The blast disk is the most common form of magical explosive
used in the [[Five Nations]]. While blast disks serve a similar
role to bombs or landmines, they can produce a wide range of
magical effects; a blast disk could trigger a burst of confusion
and start a riot, or summon a rampaging [[elemental]] into a
crowded town square.
All nations employed blast disks during the [[Last War]]; when
exploring abandoned battlefields, untriggered blast disks are
an ongoing threat. While all nations used simple force or fire
explosions, there were a few variations tied to specific nations:
* [[Aundair]] made extensive use of high-powered blast disks; they were infamous for [[dragonhawk]] squads equipped with [[cloudkill]] disks.
* [[Breland]] utilized the base model of explosive disks.
* [[Cyre]] experimented with psychoactive effects—confusion, fear, and explosions that dealt psychic damage.
* During the ascendancy of the [[Blood of Vol]], [[Karrnath]] created disks that first dealt necrotic damage, then inflicted effects that killed victims with the initial explosion then animated the corpses to prey on survivors.
* [[Thrane]] developed blast disks that dealt radiant damage—a useful tool against Karrnathi [[undead]]. Toward the end of the war, Thrane was working on disks that created a column of searing light that lasted for a minute or more.
While the basic blast disk is a common [[magic item]], under
the [[Code of Galifar]], they're illegal for civilians to own or carry.
House [[Cannith]] manufactures blast disks, but won't sell them
to civilians (at least, not openly). So if you're looking for a blast
disk, you'll need to have criminal connections or build your own.
More powerful blast disks can be created to serve the
needs of a particular story. A powerful explosive disk could
have a radius of hundreds of feet instead of just twenty, while
a [[cloudkill]] disk could unleash a force that expands as it moves
and lingers for hours or days.
[[Morrikan|Morrikan d'Kundarak]]’s nephew Blaurath believes his mission is to recover items stolen from House Kundarak’s vaults. Every such theft is a stain on
the honor of [[Kundarak]], Blaurath believes, so he hunts
down the thieves, kills them, and returns the goods to
the house. Blaurath’s home is in [[Korunda Gate]], but he
spends his time crossing [[Khorvaire]], pursuing thieves
or performing inspections of Kundarak’s vaults.
When you light this caged torch, you can control the fire like a 5-foot-long whip, cracking tongues of flame at your enemies.
Each [[Lord of Dust|Lords of Dust]] follows a discrete agenda on behalf of the [[overlord]] that they serve, but even such powerful and singular creatures
find it useful to meet in association on occasion. The
Bleak Congress is a collection of the exarchs that serve
the imprisoned overlords. Though the Lords of Dust
are active across [[Eberron]], they make regular pilgrimages to [[Ashtakala]] to exchange news and hone their
insidious plans. No more than a few of the Lords of
Dust meet at once, since they are a fractious lot, given
to treachery and infighting. However, rumors from the
[[Eldeen Reaches]] have told of a large number of caravans making their way to the [[Demon Wastes]], repelling
the [[Wardens of the Wood]] in their efforts to turn them
back. Are these servants of the [[Lords of Dust]]? If so,
why are they moving now, and why in such numbers?
Necromantic energy washes over a creature of your choice (not [[undead]] or [[construct]]) that you can see within 30 feet, draining moisture and vitality from it. On a hit, the target suffers rapid decay and necrotic damage.
If you target a [[plant creature]] or a magical plant, the spell is even more devastating.
If you target a nonmagical plant that isn't a creature, such as a tree or shrub, it simply withers and dies.
While wearing these boots, you can cast [[misty step]] once per day.
<<<
{{misty step}}
<<<
A blink dog takes its name from its ability to blink in and out of existence, a talent it uses to aid its attacks and to avoid harm. Blink dogs harbor a long-standing hatred for [[displacer beast]]s and attack them on sight.
The [[Blood Council]] of the [[Red Ring]] of [[Stormreach]] is made up of three stablemasters, deciding match-ups, types of bouts, policy for the Ring and
the [[Bloodbound]], and reaping most of the profits from bouts and special events. Other stablemasters must petition these three for the right to maintain a
stable of Bloodbound, and wait in hope of their favor
when it comes to arranging title bouts and getting
their best gladiators competitive matches to increase
their standing. The current council members are
detailed below.
* [[Malketh Zolark]]
* [[Ralzina Voraal]]
* [[Kolos]]
House [[Tharashk]] established this tiny port at the end
of the [[Last War]]. Built on the shores of [[Crescent Bay]] and regularly supplied by ships from [[Yrlag]], a large town across
the bay in the Shadow Marches, Blood Crescent serves
as House Tharashk’s long dreamed-of foothold in the
[[Demon Wastes]]. From this outpost, the house sends parties to scout for resources such as deposits of [[narstone]] and open pits of Khyber [[dragonshard]]s. Finding
the resources isn’t difficult; surviving the dangers of
the Wastes is. To date, it has survived lost expeditions, the [[Carrion Tribes]], and the malefic horrors of the Wastes, but few believe the outpost will last.
Blood Crescent is home to a mix of [[human]]s and
[[half-orc]]s, all [[Tharashk]] operatives. The ruthless, no-nonsense [[half-orc]] Baruk commands the outpost. The town welcomes adventurers, and PCs could make
the place a base of operations. In addition to hiring
adventurers as escorts for house scouts and prospectors, Tharashk knows that its presence in the outpost
is an effective hedge against [[Carrion Tribe|Carrion Tribes]] attacks.
Blood gin is a necrotic narcotic, distilled from berries from a [[Mabar]]an [[manifest zone]] that are fermented in the blood of someone who died by
violence. It induces euphoria while replaying the final moments
of the victim's life, but frequent users can suffer dreadful
nightmares. It is produced in [[Droaam]] and smuggled into the [[Five Nations]] and beyond.
Blood glass is dark volcanic glass, similar in appearance to obsidian but with a hint of crimson. It is formed when magma mixes with deposits of Khyber [[dragonshard]]s.
The Khyber resonance in the resulting fusion is strong
enough that minor [[elemental]]s can be [[bound|elemental binding]] into blood
glass without the need for an actual dragonshard.
Blood glass can be used to create exceptionally sharp blades, but weapons made of it are easily broken. A blood glass item weighs 10% less than the same item made of metal. Blood glass weapons and tools crafted using the firebinding techniques of the [[Sulatar]] and bound to a fire [[elemental]] can be morphed into any shape the wielder desires, the glass flowing into the new form and solidifying at will.
Like [[orichalcum]], blood glass is used by the [[Sulatar]] [[drow]] and is largely unknown beyond [[Xen'drik]].
* Everyone has a spark of divinity. Find that power within.
* Death is the end, [[Dolurrh]] is oblivion, and if the gods exist, they are cruel. Stand with those you care for; all we have is this life and each other.
Life is pain, a ceaseless struggle against hunger, disease,
and despair. Every day we're one step closer to the grave,
and all that lies beyond is [[Dolurrh]] and the disintegration of
the soul. What just god would create such a world? What
benevolent [[Sovereign|Sovereign Host]] would condemn their creations to
such misery?
But what if mortality is something
that can be overcome? Perhaps we
all have a spark of divinity within
us, a spark that can become a
force to rival the [[Silver Flame]].
Perhaps one day we can end
the cycle of death and misery,
so all can live long enough
to find their divinity within.
Until then, the best we can
do is to hold our family
and friends close, defy
cruel fate, and fight to
live as long as we can.
This is the message of the Blood of Vol. Life is suffering and death is annihilation, but you can defy this cruel fate—and perhaps even break the cycle for good.
The Blood of Vol is a grim faith, founded by a mythical individual named "Vol" who they believe was the first person to find the divinity within. It asserts that death is oblivion, that the universe is uncaring, and that if the [[Sovereigns|Sovereign Host]] exist, they are cruel. Its followers study the secrets of blood and life, and because they believe that death is the end, they see nothing wrong with using the bodies of the fallen to serve the living. Seekers of the Divinity Within (as the faithful call themselves) are glad to be
reanimated after death; at least they can do some good.
Because of this association with [[necromancy]], many
believe the Blood of Vol embraces death and its followers want to become [[undead]]. Both ideas are false. The Blood of Vol sees death as the ultimate evil. Seekers
don't want to become undead; they want to become
divine beings. The faith teaches that divinity is tied to
blood and soul, and the undead can never fully harness
that power. The [[mummies|mummy]] and [[vampire]]s of the Blood of
Vol have sacrificed their chance at divinity to guide the
living. They're martyrs, not something to envy.
In addition to a general revulsion toward the undead, the public opinion of the Blood of Vol is colored by the actions of the Order of the [[Emerald Claw]]. This extremist sect serves a [[lich]] known as the [[Queen of Death|Lady Illmarrow]], and it employs necromantic magic in acts of terror. However, most Seekers don't support the Emerald Claw.
The Blood of Vol has its strongest following in [[Karrnath]] and the [[Lhazaar Principalities]]. For a time, it was the national religion of Karrnath. Though fallen from
favor, the faith is still practiced openly in that nation.
!! Stronger Together
//"The universe is against us, and all we have is each other."// This is one of the most basic principles of the Blood of Vol. Despite its grim outlook, it is a faith that emphasizes the value of friendship, family, and community. There are no benevolent
gods looking out for us, so we have to look out for each other.
Death is the end, so we can't let it steal the people we care
about without a fight. And since there is no pleasant afterlife
waiting for us, we should treasure the time we have with those
we love. These values have kept the Blood of Vol alive through
the centuries: the deep commitment to community and to
working together even in the face of impossible odds.
!! Symbol
The power of a [[cleric]] of the Blood of Vol comes from within them. As such, every cleric chooses a unique holy symbol—an object that resonates with them. More generally, the faith is represented by a tear-shaped red gemstone or shard of glass. Priests of the Blood of Vol wear robes of red and black.
!! Rites
The services of the Blood of Vol focus on drawing the faithful together as a community and encouraging people to find power within themselves. The most important ritual of the faith is the Sacrament of Blood. After a sermon, each member of the congregation sheds a small amount of blood into a basin. This is a symbol of unity, and a message that members of the community would shed their blood to defend one another. In some temples, this blood is donated to [[undead]] champions of the faith; [[vampire]]s drink this blood, while [[oathbound|mummy]] or [[lich]]es may bathe in it. Through this, undead priests who have lost their own divine spark draw their power from the blood of the living faithful.
Seeker communities have often formed in or near [[manifest zone]]s to [[Mabar]]. While such areas are often inhospitable or dangerous, over the course of many
centuries, Seekers have learned how to tap the energies of these
places. Because Mabaran manifest zones are usually blighted,
outsiders often accuse the Seekers of causing blights. In reality,
the Seekers often perform rituals that limit the negative effects
of the manifest zones—so instead of causing the plagues and
blights associated with Mabar, they often prevent them.
!! Temples
A shrine devoted to the Blood of Vol requires only an altar and a means for collecting ritually spilled blood.
Temples of the Blood of Vol are fortified structures, built to serve as sanctuaries. In contrast to the [[Silver Flame]], such temples are stark and functional. Temples include vaults or catacombs, designed to hold [[undead]] or to store corpses.
The largest temple to the faith is the [[Crimson Monastery]] in [[Atur]], [[Karrnath]], led by High Priest [[Malevanor]].
!! Origins of the Faith
Most followers of the Blood of Vol identify as Seekers of the
Divinity Within—usually shortened to Seekers—though there
are other traditions within the faith (such as the [[Thieves of Life]]). The Blood of Vol has long been vilified, with outsiders often viewing it as a death cult,
falsely equating it with the cult of [[Katashka]] the Gatekeeper, or blaming its members for plagues and blights. In the midst of misinformation and fear,
what is the truth of the Blood of Vol?
Human settlers to [[Khorvaire]] brought the faith of the [[Sovereign Host]] with them, but the Blood of Vol is indigenous to the
continent. The line of [[Vol]] was a [[noble line|Aereni noble line]] of [[Aerenal]] with a long tradition of [[necromancy]] tracing its roots back to [[Xen'drik]]. When members of the line of Vol developed the [[dragonmark]] known as the [[Mark of Death]], they undertook a risky series of experiments designed to unlock its full powers. This ended when the [[Undying Court]] and the [[dragon]]s of [[Argonnessen]] joined forces to eradicate the bloodlines that carried the Mark of Death. In the aftermath of this brutal purge, those elves who had supported Vol but didn't bear its blood were given the choice of exile or swearing fealty to the [[Sibling Kings]] of [[Aerenal]]. This resulted in a wave of
exiled [[elves|elf]] settling in the [[Lhazaar Principalities]] and spreading west into the lands that are now [[Karrnath]].
These exiles brought the knowledge of [[necromancy]] along
with stories of how the heroic family of [[Vol]] had sought to attain
godhood, only to be destroyed by the jealous gods. The people
of the region knew nothing of [[Aereni]] traditions or [[dragonmark]]s,
and they blended this story with their own experience of life in a
harsh land, local tyrants, and the empty promises of [[Sovereign|Sovereign Host]] priests. And in the process, they somehow discovered something
real. The line of Vol had never sought the divinity within, but
these first priests found it, drawing divine power from their own
conviction and their own souls.
So despite its name, the religion was never practiced by the
line of Vol, nor by the infamous [[Erandis Vol|Lady Illmarrow]] herself, who was in
hiding during the period in which the faith evolved. It is a faith
born of the blending of elf and human myths and traditions.
While the faithful believe that “Vol” was the first person to find
the divinity within and challenge the curse of mortality, the faith
is based around the divinity within each of us, not the worship
of this mythical Vol. Even devoted priests of Vol do not know
Erandis Vol's identity, though they respect the name of “Vol” as
author of their core texts, believing that this Vol challenged the
Sovereigns, then was subsequently destroyed by these jealous
gods—a martyr of the faith. Modern Seeker scholars debate the
origins of the name, whether Vol was an individual or a group
of people, or related to the elven line at all. So if Erandis Vol
were to proclaim her true identity, many of the faithful would be
impressed by her lineage, but her bloodline alone wouldn't give
her divine authority.
!! War and Peace
Throughout its history, the Blood of Vol has been treated with
fear and suspicion by the people of the [[Five Nations]]. It's a faith
that has dwelled in the shadows. This changed early in the [[Last War]]. His [[nation|Karrnath]] crippled by famine, King [[Kaius I|Kaius ir'Wynarn I]] accepted the aid
of the Blood of Vol. The Seekers provided [[undead]] soldiers and
[[necromantic|necromancy]] expertise; with the resources of the crown behind
them, Seekers developed necromantic rituals and weapons never
before imagined. In exchange, Kaius elevated the Blood of Vol to
the official state religion. Warlords were encouraged to embrace
the faith, and Seeker families were given lands and titles.
For a time, the Blood of Vol spread and was celebrated—or
so it seemed. Most of the old warlord families still despised
the Seekers and felt that the use of undead in battle debased
the proud martial traditions of their ancestors. Toward the
end of the war, Regent [[Moranna]] turned on the faith and the
Blood of Vol became a scapegoat for all of [[Karrnath]]'s troubles.
Moranna claimed that the famines and plagues the people had
suffered were caused by the Seekers. Its nobles were stripped
of their lands. Chivalric orders of Seekers, such as the Order of the Onyx Skull, were disbanded. Some—notably the infamous Order of the [[Emerald Claw]]—refused to surrender, but most Seekers remained loyal to their nation even when it betrayed them.
Today, the Blood of Vol has returned to the shadows, though
there are still Seekers who serve the crown. [[Kaius III|Kaius ir'Wynarn III]] has
sealed most of his undead forces in the crypts below [[Korth]]
and [[Atur]], but he isn't willing to entirely surrender this strategic
advantage. [[Fort Bones]] and [[Fort Zombie]] remain bastions
of loyal Seekers. But the faith is no longer celebrated, and
the old warlord lines still mutter that they would have won
the war if only they'd relied on skill and steel instead of foul
magics. In playing a Karrnathi Seeker, do you support the
crown and believe that Kaius III is only doing what he has to
do to maintain the support of the warlords, or do you despise
Kaius III and Moranna for betraying your faith?
A small troupe of young elves known as the Bloodborne Players offers the darkest theatrical fare in [[Stormreach]]. Most of their performances lack any
narrative but instead assail the audience with haunting illusionary images and morbid displays of lifelike
brutality and violence. Even their more conventional
plays culminate in a horrific blood sacrifice enacted
with the aid of stunning illusionary magic... or so
most spectators believe.
Although most of the sacrifices are fake, some are
quite real. In these gruesome shows, usually before
small audiences, the victim is eviscerated on a dais, and
the heart and head are ripped and hewn from the body
shortly thereafter. Mostly these victims are captured or
duped bystanders, who believe it will all be an [[illusion]].
But on occasion the troupe holds secret performances
for its most loyal fans, one of whom volunteers to be
sacrificed, believing his or her soul will gain immortality and glory.
The leader of the Bloodborne Players, and always
the actor wielding the sacrificial blade, is a rail-thin and
black-haired [[elf]] named ''Vortras'', who sports an [[aberrant dragonmark]]. The backstage master
of visual effects is his cousin ''Dammerund'' though the two could easily be twins. These
twisted elves believe the act of blood sacrifice, fused with
the emotional outpouring of the enraptured audience,
grants them great power. If this belief is true, the elves
might have stumbled onto a secret of the ancient [[Qabalrin]]
elves. One thing is certain: Vortras seeks ancient works on Qabalrin
sacrificial rites. Many suspect the troupe is connected
to the [[Emerald Claw]] or the [[Shrouds]], yet the Bloodborne
Players have recently clashed with both.
//“Some are sold to it, some are sworn to it, some are born to it... but the only way to escape this life is to bathe in gallons of blood. Once you’re in the Ring, you come out victorious or not at all.”//
<div align="right">—Kel Giantsbane, gladiator</div>
The greatest gladiators of the [[Red Ring]] are the Bloodbound, the warriors who slake [[Stormreach]]’s thirst for blood sport in brutal battle. They are not casual fighters. Those who wish to dabble in arena combat are invited to do so at the [[Annual Games]]
held at the [[Red Ring]]. The Bloodbound are
gladiators who pledge their very souls to the
Red Ring and serve a stable master until the
day of their death. Some do it for glory,
others because they have no choice.
!! Baptized in Blood
Bloodbound face the fiercest horrors [[Xen'drik]]’s untamed jungles
have to offer. The lawlessness of [[Stormreach]] allows,
and even encourages, grisly contests of strength,
sweat, and blood.
All this considered, bloodbound don’t survive long without a code and the strictures of the Red Ring’s [[Blood Council]]. Obedience, faith in the stablemasters,
and a rigorous regimen of training dominate every
bloodbound’s life.
The most important distinction made among these gladiators is that between slaves and free bloodbound. Free bloodbound (chosen from qualifiers in the [[Annual Games]] or special exhibition matches) are fewer and fewer every year. Those who have other choices are rarely drawn to a life of constant bloodshed and agony, and the sacrifice made to become a bloodbound is extreme. These days, most stablemasters rely on slaves or recruit condemned criminals from the tribunals.
!! Beyond the Ring
Though it is rarely exercised, most stablemasters maintain a contract with the [[Stormreach Guard]] that allows the Guard to “borrow” a group of bloodbound
for dirty muscle-work, intimidation (when a bloodbound’s reputation in the [[Red Ring]] comes in very handy), or particularly “wet” (read: bloody) crackdowns. Private [[militia]]s strive to obtain these contracts as well, though a stablemaster rarely grants them, and
militias can rarely afford them.
Bloodbound slaves rarely leave the arena unless loaned
out as muscle. Free bloodbound can be encountered nearly
anywhere in [[Stormreach]]. PCs might face these gladiators
across the arena or in some darkened alleyway where
they serve the characters’ enemies as paid thugs.
Bloodcliff Bay lies off the coast of the [[Demon Wastes]].
When the [[Undying Court]] sought to destroy the [[Mark of Death]], all [[elves|elf]] carrying the blood of the line were slain. But the [[line|Aereni noble line]] of [[Vol]] had many allies beyond its blood relatives. The Undying Court allowed these elves to surrender, but there was no place for them on [[Aerenal]], and they left to find a new home on [[Khorvaire]]. Many of these refugees found their way to the island of [[Farlnen]], making a new home in the long shadow of the Fingerbone Mountains. Today, many elves choose to remain in isolated communities deep in the Fingerbones, but others have embraced [[Lhazaar|Lhazaar Principalities]] culture and the life of the sea. The largest of these is the Bloodsail principality, centered in [[Port Cairn]] (a town on the central southern coast of Farlnen).
The elves brought extensive knowledge of magic, archery, and woodworking to the Principalities; Bloodsail ships are some of the finest in the Lhazaar fleets. While the elves are interested in all fields of [[arcane|arcane magic]] knowledge, [[necromancy]] is especially important to them.
During the [[Last War]], the Bloodsails served as privateers for [[Karrnath]]. This changed when King [[Kaius III|Kaius ir'Wynarn III]] denounced the [[Blood of Vol]] and abruptly cut ties with the principality, and today the Bloodsails often raid Karrnathi ships and villages. Recently, the Bloodsails have formed an alliance with the [[Diresharks]] of [[Port Verge]].
The Bloodsails are one of the most stable principalities, and Prince [[Shaen Tasil]] has ruled for over a century. They currently possess seven ships. Tales say that they dye their dark sails with the blood of their victims—but this could be a story spread to inspire terror.
The Bloodsails are largely elves, with a few [[human]]s, [[half-elves|half-elf]], and [[changeling]]s spread throughout the populace. While most Bloodsail sailors are warriors, rogues, or swashbucklers, a significant number of [[cleric]]s and [[wizard]]s live in the principality.
!! Bloodsails and the Undead
The Bloodsails share the same roots as the [[Blood of Vol]], as the principality was founded by [[Aereni]] exiles. However, they have followed a different path
and hewn closer to the traditions of their ancestors. They
don't believe in the divinity within and readily seek immortality
through undeath. However, the island can only support a
limited number of [[vampire]]s, and Bloodsails must earn their
afterlife by paying //velgys//—blood money—to the [[Grim Lords]] of the
land. Those who fail to earn enough to buy a better afterlife
are instead bound to objects after death. This is similar to the
Aereni techniques of creating [[spirit idol]]s, but Bloodsail elves
are often tied to ships and sails, enabling their vessels to move
across a windless sea, sails driven by [[ghost]]s and tended by [[oathbound|mummy]]. The oldest sails are infused with the spirits of generations of sailors. These hosts of the fallen can propel the ship with a speed to rival any [[elemental galleon]]. They can deflect missiles or tear at enemy vessels, and the enchantments woven into the sails make them virtually immune to conventional harm.
Bloodsail elves often bear crimson tattoos that are tied to
their families and vessels. As an adventurer, you might
have been exiled from your island, or you could be searching
for a way to quickly earn the blood money you need to leave
mortality behind.
This powerful melee weapon is adorned with small black spikes that seem to soak up any blood that splashes across them. Gain a large advantage for any combat action immediately after incapacitating a [[humanoid]], [[monstrosity]], [[giant]], or [[dragon]] with this weapon.
A [[Darguun]] mercenary troop
known as the [[Ja'khor]] (a [[goblin|goblinoid]] word translating to
“Blackbloods”) uses this inn as a base of operations.
Bloodvine is a plant that grows in some [[Mabar]]an [[manifest zone]]s, including the [[Forest of Flesh]] in [[Droaam]]. The vines produce a substance much like human blood instead of sap, and can be used to create potent [[poison]]s and hallucinogens.
The sign above the door of
this inn displays a tilted clay mug, with what is presumably red wine trickling over the edge. This inn caters to visitors from [[Karrnath]], and the people of
the district often gather in the common room to
share a tankard of Nightwood ale and listen to traveler's tales, or engage in traditional Karrn chants and
dances.
There are no continents in this aquatic [[layer]] of [[Shavarath]], but a handful
of islands support the warring fleets. Grand and powerful
warships clash in the open waters and bombard settlements.
The ships may be familiar, but there are many other unusual
engines of war: constructed [[kraken]]s, submersible warships,
[[monstrosities|monstrosity]] and [[dragon]]s bound to service—wonders that
the people of Eberron can //imagine// but can't yet create. The
pirate queen [[Lhazaar]] surely has inspired a sword wraith in the
Bloody Sea... but which [[legion|legion of Shavarath]] does her sword wraith fight for?
Although there is a strong rivalry between
House [[Thuranni]] and House [[Phiarlan]], there is a strict limit to the feud:
no assassination. If a Phiarlan interferes with the mission of a Thuranni,
he’ll try to prove his superior skills,
but he won’t expose the rival spy. It’s
a game. But there is a third player,
and it doesn’t follow the rules. The
Bloody Shadows are the survivors of
the [[Paelion]] line, those skilled or lucky enough
to escape the extermination attempt. Though few in
number, the Bloody Shadows are lethal assassins,
careful and patient. The Shadows want to make their
cousins suffer; a Bloody Shadow might draw out his
vengeance against a [[Phiarlan]] PC over months or
years, causing as much pain as possible before striking the final blow.
A blue [[dragon]] is recognized by its dramatic frilled ears and the massive ridged horn atop its blunt head. Rows of spikes extend back from its nostrils to line its brow, and cluster on its jutting lower jaw.
A blue dragon's scales vary in color from an iridescent azure to a deep indigo, polished to a glossy finish by the desert sands. As the dragon ages, its scales become thicker and harder, and its hide hums and crackles with static electricity. These effects intensify when the dragon is angry or about to attack, giving off an odor of ozone and dusty air.
These dragons can be found in deserts, dry steppes, searing badlands, and rocky coasts.
!! Magic and Breath Weapon
The blue dragon's breath weapon is a powerful bolt of lightning. As innate spellcasters, adult blue dragons can cast spells such as [[wall of force]], [[wall of sand]], [[hold]], and [[dimension door]].
{{DragonAgeCategories}}
The frigid Bluespine Peaks are a mountain range in southeastern [[Xen'drik]]. The mighty [[silver dragon]] [[Ketheptis]], the One-Eyed Crone, makes her lair in a vast glacial shelf off the sheer face of these snow-shrouded mountains.
Bluevine is a village in [[Aundair]] known for being the source of some of the finest wine [[Khorvaire]] has to offer.
A bodak is a vicious type of humanoid [[undead]] whose soul has been ritually replaced with a writhing mass of negative energy from [[Mabar]]. The darkness within sheds all hair from the bodak's deathly pale skin, and twists its face into a horrifying scowl. A bodak's visage is so ghastly that it can kill with its gaze.
When a [[nightwalker]] slays a [[humanoid]], that nightwalker can ritually transform the slain creature's body and spirit into a bodak. The bodak then acts at the nightwalker's behest, serving whomever its master dictates.
The Bogwater Tavern, despite the name, is at the higher
end of the entertainment market in the [[Temple District]] of [[Stormreach]]. Built open to the sky, it is protected from the rain by colorful awnings. Here customers can listen to [[bard]]s’ tales, away from the district’s bustle.
Boldrei is the Sovereign of Hall and Hearth. She guides and protects communities and families, inspiring people to work together for the common good. Her symbols include a fire in a stone hearth or a [[copper dragon]].
''Date: '' [[9 Rhaan|Khorvaire calendar]]
Gatherings across [[the city|Sharn]] mark this celebration of
community. The wealthy compete to throw the grandest
parties, and the most generous among them will be remembered throughout the year for their largesse.
''District Type:'' Inn district<br/>
''Buildings:'' Temples ([[Boldrei]], [[Silver Flame]]), average lodging (60), poor lodging (75), average food
(45), poor food (55), average trades (40), poor trades
(43), average services (35), poor services (45)<br/>
''First Impression:'' Hotels, inns, and rooms for rent
seem to be everywhere in this district.<br/>
''Social Class:'' Lower middle class<br/>
''Neighbors:'' [[North Towers]] (northwest); [[Olladra's Kitchen]] (southwest); [[Myshan Gardens]] (west); [[Stoneyard]] (bridge, north); [[North Market]] (bridge, northeast); [[Blackbones]] (below); [[Sovereign Towers]] (above)
Boldrei's Hearth holds the [[Central Plateau]]'s largest concentration of hotels, inns, and other forms of lodging. It doesn't offer the elite hotels that are
found in [[Highest Towers]], [[Platinum Heights]], and
[[Ambassador Towers]], but a great number of very
comfortable rooms are available.
!! Noteworthy Locations
* [[Marquan's Rooms for Let]]. A respectable but unassuming inn with a dark secret.
This bracelet of twine with a single iron bead allows its wearer to escape any nonmagical bonds, including ropes, shackles, chains, and so on.
All of the cursed nobles of [[Mabar]]'s [[Kingdom of Bones]] bow before the Bone King,
who embodies the concepts of death and decay. A [[lich]] in rotting
finery, he stands as a warning that even the mightiest lords
eventually become dust and bone. He prefers to drain the life
slowly from fragments he claims; he wants his hostages to dwell
on their coming death while their land withers around them, for
lords to turn on their people before he finally kills them all.
The Bone King can serve as a patron for [[warlock]]s, and is known to teach mortal [[wizard]]s the foul rituals that allow ascension to [[lich]]dom. To all who serve him in this way, he grants titles in his kingdom—and the knowledge that when they die,
they'll be forever bound to serve in it. He makes few demands of
these servants; they feed him whenever they use the powers he
grants to slay the living. But a warlock may be tasked to destroy
a lich or [[vampire]]—or even another warlock—because the Bone
King desires them to serve in his kingdom.
Bone knights are [[Karrnath]]i commanders of [[undead]] troops. Clad in distinctive bonecraft armor, these fearsome warriors are trained in [[necromancy]] techniques that allow them to compel the allegience of lesser undead.
Before the development of intelligent [[Karrnathi undead]], the animated soldiers of Karrnath were mindless [[zombie]]s that required guidance. The first bone knights were appointed to provide this control. Devoted [[paladin]]s of the [[Blood of Vol]] were fused into suits of bonecraft armor, whose magic focused their divine gifts, allowing them to command units of mindless undead. Bonecraft armor can't be removed without killing the knight who wears it, and when donning it, each bone knight understood that their former life was over.
During the [[Last War]], many bone knights took service with the Order of the [[Emerald Claw]], helping that name strike fear into the enemies of [[Karrnath]]. In the last decade, King [[Kaius III|Kaius ir'Wynarn III]] of Karrnath has done much to ensure a peaceful end to the Last War. Under the terms of the [[Treaty of Thronehold]], Kaius sealed most of Karrnath's undead in deep vaults, and the Order of the Emerald Claw was disbanded. A few bone knights remained in service to the crown, but most were cast aside—still bound to their bonecraft armor and still convinced of Karrnathi supremacy. These bone knights felt that Kaius had betrayed both them and their nation, leading their once-proud order to find a new purpose in the service of [[Lady Illmarrow]].
Bone-coral is a form of coral that is artificially grown and hardened by the [[sea elves|sea elf]] of the [[Valraean Protectorate]] using arcane techniques. It used for everything from buildings to ornaments.
At the eastern end of the [[Blade Desert]] in the [[Talenta Plains]], where the [[Ironroot|Ironroot Mountains]] and [[Endworld|Endworld Mountains]] mountain ranges meet, a hidden valley is filled with the skeletons of countless [[dragon]]s. Ancient skulls form hillocks beneath the thin soil, and bones jut from the ground
like weathered ivory trees. Whether this place is an
ancient burial ground or the site of a long-forgotten
draconic battle remains unknown. [[Halfling|halfling]] legends
say that creatures that disturb the remains here draw
the attention of living [[dragon]]s. The plainsfolk take
these tales seriously, and local tribes drive off all outsiders foolish enough to approach the site.
The only regular visitors the Boneyard receives are also the only ones to whom the [[halfling]]s grant unfettered access. [[Dragonborn|dragonborn]] pilgrims from [[Q'barra]] travel for weeks to cross the [[Endworld Mountains]] and
skirt the desert to visit the site, but their reasons for
doing so remain unspoken. Many outside the plains
would love to learn what secrets this site holds, and
the [[human]]s of [[Q'barra]] have begun to speculate on
the plots the [[dragonborn]] might be hatching in this
ancient ossuary.
Boorne is a [[warforged]] [[envoy]] created toward the end of the [[Last War]], and one of the few warforged to have followed the [[Song|Covenant of Light]] to [[Xen'drik]]. He is a close companion of [[Gilead Rhoy]].
While you wear these boots, your steps make no sound, regardless of the surface you are moving across.
Only [[humanoid]]s can wear these boots. While wearing the boots, you can choose to have them leave tracks like those of another kind of humanoid of your size.
While wearing these boots, you can't be pushed by
nonmagical moving water while you have at least one foot
on the ground.
These boots are made from patched green leather. The wearer can detect and identify any plant they can see, and sense when fresh water is nearby. With every step, plants suddenly grow around the wearer's feet, and when they leave, the plants slowly wilt away back into the earth.
While you wear these boots, you can cast the [[levitate]] spell on yourself at will.
<<<
{{levitate}}
<<<
These boots are made from red leather with thin soles. While wearing these boots, the user becomes highly sensitive to ground vibrations. If their feet are touching the ground, they can sense any movement within 60 ft, and it becomes almost impossible to sneak up on them.
These black ankle boots are made of a strange material that glows with a shifting purple light. They leave behind faintly glowing footprints that fade quickly.
Once per month, if you charge these boots under the light of a specific full [[moon]], you can step into that moon's associated [[plane]], on a randomly determined [[layer]] and location.
These boots are made from mahogany leather with cork soles. They allow the wearer to jump from shadow to shadow, teleporting from one shadow to another within 60 feet.
These boots are made from white leather with blue silk laces. When the command word is spoken, the wearer floats one inch above the ground. Frost forms under their feet and the boots begin to slide, allowing the user to skate across the ground at high speeds.
Once you use this property, the effect stays active for 1 hour or until you speak the command word again. When the effect ends, you can't use it again for several hours.
While you wear these boots, you can run 50% faster, and jump three times the normal distance.
These furred boots are snug and feel quite warm. While you wear them, you gain resistance to cold temperatures, and your motion is not hindered by thick snow or slippery ice.
These worn leather boots have copper beads woven into the laces. They allow the wearer to walk long distances without growing weary.
Bor'ob is a [[slaad]]i merchant of [[Syrania]]'s [[Immeasurable Market]] specializing in
extradimensional spaces: [[bags of holding|bag of holding]], [[handy haversack]]s,
and the like. He's usually a gray slaad, but it varies from
week to week.
King Boranel ir'Wynarn, who has ruled [[Breland]] since 961 YK, leads the royal family of Breland from an ancient estate in the capital city of [[Wroat]]. Older than the other rulers of the [[Five Nations]] and with heirs that have as yet not inspired love and devotion, Boranel worries about
the fate of Breland when his head finally becomes too weak
to carry the crown.
An adventurer before his ascension, Boranel traveled
twice to [[Xen'drik]] in his youth. During the [[Last War]],
the king won hearts and minds by leading sorties
against enemy forces. He personally defeated an [[ogre]]
chieftain while his people in the west retreated across
the [[Graywall Mountains]] to escape the brimming violence of savage [[Droaam]].
[[Breland]] loves its king, and
the people would follow him just about anywhere.
The same, however, cannot be said of his children.
Boranel's heirs have not shown the king's impressive
leadership abilities, and many Brelish worry about
what the future holds. The idealistic believe that whoever takes the throne next will grow to fill the crown's
demands, but not all are so sure. There's even talk of
dissolving the monarchy and giving full power to the
parliament once Boranel dies.
Borian Haldorak ([[dwarf]] councilor for [[Upper Dura]]) owes his position to the powerful bankers and merchants of [[Highhold]]. He is also a member
of the Gold Concord of the [[Aurum]], and serves the interests of this conspiracy. He is disarmingly cheerful and often plays up his age, telling elaborate stories about the great deeds of his youth. But beneath this façade, he is a sharp and ruthless negotiator. Most
interactions between the [[Aurum]] and the [[Boromar Clan]] are resolved by Borian and [[Ilyra|Ilyra Boromar]].
In his youth, Lord Boroman ir'Dayne was a great hunter and explorer. He led the only expedition ever to reach the [[Frostfell]] and return to tell the tale; today, [[Dayne Bay]] bears his name. He wrestled [[ogre]]s in [[Droaam]], fought [[chuul]]s in the [[Shadow Marches]], and was the first [[halfling]] to travel south of the [[Titan's Teeth]] in [[Xen'drik]] and return. Dayne amassed a fortune in his day, but during
his final expedition to Xen'drik he contracted a slow,
wasting curse that no magic has been able to reverse.
He has a few years of life left, and while he no longer
has the strength to explore on his own, he still wants
to unlock the mysteries of the unknown. To this end,
he dedicated his fortune to establishing the [[Wayfinder Foundation]]—a guild for adventurers and explorers that funds dangerous expeditions to exotic locales, as well as
giving bold adventurers a place to display their trophies and tell tall tales.
Boroman has the final say on all expenditures of foundation funds, even overriding decisions of the Wayfinder Conclave. Despite his skills, Dayne has been crippled
by the wasting curse and rarely leaves the foundation's [[Headquarters|Wayfinder Foundation Headquarters]] in [[Fairhaven]].
Boroman ir’Dayne is a true philanthropist; he wishes
to have his name attached to the great adventures of the
future, since he himself can no longer participate in
the adventures of the present. His one ulterior motive
is the hope that an explorer may discover a cure for the
strange wasting curse that is slowly sapping his life.
The most powerful criminal organization in [[Sharn]]
started as a family of [[halfling]] immigrants from the [[Talenta Plains]]. Operating out of its headquarters and key
holdings in the [[Little Plains]] district of [[Middle Menthis]],
the Boromar Clan controls gambling, smuggling, and
theft in Sharn. Most of the city's burglars, pickpockets,
and fences either work for or pay tithes to the organization. The Boromar Clan's network of extortion, bribery,
and blackmail extends from [[Lower Dura]] to [[Skyway]].
The Boromars' influence extends beyond criminal
enterprises into many legitimate circles of power. [[Ilyra Boromar]] sits on the [[city council|Sharn Council]], and a number of
other councilors are close allies of the clan. The family
has ties by marriage to House [[Jorasco]]. A Boromar attends every [[Skyway]] party. The family owns tenements
throughout [[Sharn]] and invests in shipping, storing both
legal goods and contraband in many of the warehouses
in [[Precarious]] and [[Cogsgate]]. In many districts, local officials and [[Sharn Watch]] officers have been taking bribes
from the Boromars for generations.
The criminal nature of the Boromar Clan is an open
secret, and in some districts the Boromars are seen as
hometown heroes. They are immigrants who've made
good, common people who've risen to rival the barons
and kings. They give the people what they want, whether
it's untaxed gambling, cheap spirits, or [[dreamlily]]. The clan operates with a degree of impunity because its operatives adhere to an unspoken rule: whenever possible,
criminal acts against individuals should target tourists
and travelers. Boromar pickpockets don't prey on the
people they see every day. Instead, they seek out the
many strangers who move around the city all the time.
The [[Watch|Sharn Watch]] officer who turns a blind eye to a pickpocket
thus feels justified, since it's not the citizens of [[Sharn]]
that are victimized.
Boromar's longstanding status at the head of Sharn's
criminal enterprises has recently come under challenge.
After nearly a decade of slow growth, the [[Droaam]]ish
mob known as [[Daask]] has recently started targeting
Boromar holdings. The [[halfling]] clan hasn't faced such
a serious threat before, and it's scrambling to figure out
how to deal with Daask's guerrilla tactics.
!! Boromar Operations
The Boromar Clan has a hand in all types of crime in [[Sharn]]. Most Boromar leaders despise unnecessary violence, but the clan has a host of enforcers and a handful of capable assassins. The clan's web of extortion is so thoroughly woven into society that many residents simply consider it another form of tax. Boromar specializes in three fields of activity: gambling, smuggling, and thievery.
Gambling isn't illegal in Sharn, but all legal games are taxed by the [[Brelish|Breland]] crown and are required to follow regulations that spoil the experience for many. Boromar's operations are cheaper to participate in and offer the lure of greater profits.
Smuggling has become an increasingly important
business since the [[Last War]] disrupted many traditional
lines of trade. The clan's primary import is the narcotic
called [[dreamlily]]. But the Boromars traffic in a wide
range of goods, from arcane and alchemical weapons to
foreign luxury items that have been made scarce by embargoes and sanctions. Under [[Boranel|Boranel ir'Wynarn]]'s law, [[Aundair]]ian wine is heavily taxed in [[Breland]], so if you want the good stuff for cheap, you'll need to work with the Boromars.
Boromar-sanctioned acts of thievery include the activities of the ubiquitous pickpockets that can be found across the city as well as the well-planned jobs of professional burglars. As mentioned earlier, Boromar thieves focus their attention on visitors to [[Sharn]], thus avoiding friction with local law enforcement. When appropriate, stolen goods are transported out of the city by the fences and porters that drive the clan's smuggling operations.
!! Boromar Clan NPCs
The Boromar Clan employs people of all races, but most
of the organization and nearly all of its inner circle are
made up of [[halfling]]s. Some of the organization's most
important people are these:
* [[Saidan Boromar]] is the current patriarch of the family. He grew up in [[Lower Dura]] and worked as a thief and assassin there before taking over the organization.
* [[Mala Boromar d'Jorasco]] is an heir of House [[Jorasco]] and the Boromar family matriarch. Her position in the family ensures that important members of the Boromar Clan receive Jorasco healing services at no cost to them; Saidan reimburses Jorasco from the clan's treasury.
* Councilor [[Ilyra Boromar]] is the eldest daughter of Mala and Saidan and a member of the [[city council|Sharn Council]]. The Boromars' enemies on the council have grown bolder in the face of increased [[Daask]] attacks against the clan, and some of Ilyra's influence has eroded as a result.
* [[Halak Boromar]] is the family's chief enforcer. A recent immigrant from the [[Talenta Plains]], Halak leads the Clawfoots, the Boromars' personal guard, and is an accomplished warrior.
* [[Ilsa Boromar]] is the family's leader in [[Callestan]]. She is ruthless in protecting her family's interests.
* [[Castar]], a [[gnome]], is the lone non-halfling in the Boromars' inner circle. He serves as Saidan's chief advisor and the organization's intelligence expert. The family looks to Castar to come up with a plan to defeat [[Daask]], but so far none of his ideas have worked.
!!! Boromar Clan Contacts
| !<<dr d6>> |!Contact |
| 1 |[[Vundry]] ([[gnome]]) is a fence who runs a [[pawn shop|Vundry's Curios]] in the [[Bazaar]] of [[Dura]] and has ties to many smugglers, sailors, and burglars. |
| 2 |[[Canon]] ([[halfling]]) is a pickpocket who works across Sharn and is at home throughout the lower districts. |
| 3 |The [[Rake]] ([[dwarf]]) runs a handful of gambling dens and sets odds on the sporting events of Sharn. |
| 4 |[[Myri Olar]] (halfling) is a burglar and socialite, familiar with many of the mansions of the upper districts. |
| 5 |[[Hass Faldren]] ([[half-elf]]) is a smuggler and the captain of the elemental sloop //Ice Storm//. Hass is also well connected on the docks and in the warehouse districts. |
| 6 |[[Cala Boromar]] (halfling) is a lawyer by trade but with specialties in blackmail and intimidation. Cala loves engaging in the art of negotiation and is always interested in acquiring secrets. |
!! Shady Nightclubs
The Boromars control gambling dens and nightclubs throughout [[Sharn]]. The finer establishments are places for the Boromar Clan to wine, dine, bribe, and extort the city's powerful elite. At the other end of the spectrum, the run-down gambling halls and [[dreamlily]] dens in the poorer districts are places where those in the employ of
the Boromars plan heists, store smuggled goods, hide
bodies and wanted criminals, interrogate [[Daask]] spies,
make good on threats, and unwind.
These places are public and expertly run by the city's most powerful criminals, so an openly violent approach to problem-solving in such a spot is likely to end in tragedy for the characters. When combat does occur in one of these nightclubs, it's usually because the instigators have brought enough strength of arms to take on the Boromars.
The table below offers reasons for the characters to enter one of these dangerous places. If
the characters have a Boromar patron, that NPC could
use a shady nightclub as a base of operations.
| !<<dr d6>> |!Adventure Goal |
| 1 |Get accepted into a private high-stakes card game, and try to win the grand prize. |
| 2 |Find out which [[Sharn Watch]] captain has a private meeting with a Boromar fence, and steal whatever the captain is buying. |
| 3 |Track down a missing noble hunted by assassins. |
| 4 |Steal a hidden stash of [[dreamlily]]. |
| 5 |Broker a deal with the Boromars on behalf of a [[city councilor|Sharn Council]] who's too scared to face the family in person. |
| 6 |Find evidence that could be used to blackmail a member of a [[dragonmarked house]]. |
!! Boromar Villains
With few exceptions, Boromar villains shun violence and would prefer to bribe, deceive, or manipulate the characters rather than send a squad of goons to attack them. That said, any of these villains and their minions will respond in kind if they are attacked or threatened. Examples of Boromar Clan villains appear on the table below.
| !<<dr d6>> |!Villain |
| 1 |A [[halfling]] [[dreamlily]] dealer (an excoriate of House [[Ghallanda]]) smooth-talks new customers into sampling her wares. If pressed, she can call in favors from a number of dangerous clients. |
| 2 |A judge known as "the Turnkey" always rules in favor of Boromar Clan members. |
| 3 |A halfling pickpocket using alter self to pose as a child of another race plants contraband on people the Boromars are trying to frame. |
| 4 |A Boromar rogue has kidnapped the child of a strongly anti-Boromar [[city councilor|Sharn Council]]. |
| 5 |A [[kalashtar]] psychic serves the clan by detecting thoughts that suggest possibilities for blackmail. What stray thought might they pick up from an adventurer? |
| 6 |A Boromar smuggler is bringing unstable explosives or an especially addictive form of [[dreamlily]] into [[Sharn]], and innocents are being hurt. |
!! Boromar Clan Campaign Themes
The true power of the Boromar Clan lies in its institutions: watch officers who have been allied to the clan for generations, judges who are blackmailed into compliance, and officials who receive lucrative bribes in exchange for their cooperation. Adventurers who oppose the Boromars might discover that people they think of as friends and allies are in the pocket of the clan. The Boromars are villains in the noir tradition, and adventurers determined to tangle with them will be drawn down into the mud.
The Boromar Clan could serve as a group patron for a party of adventurers. The table below provides goals for adventurers who are working with the clan
| !<<dr d6>> |!Boromar Clan Assignment |
| 1 |Find evidence of an affair between two members of different [[dragonmarked house]]s. |
| 2 |Collect from a fence who is late with a payment. |
| 3 |Steal the bank records of a [[city councilor|Sharn Council]]. |
| 4 |Convince a [[Sharn Watch]] captain to aggressively root out [[Daask]] operatives. |
| 5 |Retrieve a package of dreamlily that has gone astray. |
| 6 |Discover the location of a [[Daask]] safe house. |
!! Boromar Clan Adventure Hooks
The table below presents ideas for additional adventures themed around the Boromar Clan.
| !<<dr d4>> |!Adventure Hook |
| 1 |[[Daask]] forces capture Boromar family members who are visiting [[Sharn]] from the [[Talenta Plains]]. The Boromars offer a reward for the safe return of their family and a larger reward for the kidnappers' heads, leading to gang violence in the streets. |
| 2 |A beloved [[Sharn Watch]] captain who openly spoke out against the Boromar Clan disappears. The Boromars claim they had nothing to do with it, but some [[Sharn Watch]] members use the incident as an excuse to go after the organization. |
| 3 |A [[changeling]] stole a smuggled artifact of great value from the Boromar Clan. Boromar enforcers shake down people all over [[Sharn]] to find it, and clan leaders consider going to war with the [[Tyrants]]. |
| 4 |The Boromars stage a festival in [[Callestan]] for [[Saidan|Saidan Boromar]]'s birthday. All of the family's allies will be there, creating opportunities for espionage and assassination. |
!
The Boromar Clan is the most powerful criminal organization in the city of [[Sharn]]. From its humble start as a gang of smugglers and thieves, the Boromars have risen to become one of the most influential forces in the city. They have a stranglehold on the smuggling trade and own the majority of the gambling halls in the city, while most of the fences and thieves in Sharn either work directly for the them or pay tribute in exchange for independence. The Boromars control a vast network of extortion, blackmail, and graft that extends throughout the city, and their influence reaches far beyond the criminal underworld. The early Boromar patriarchs invested wisely over the centuries, and today the Boromars are one of the [[Sixty]], the elite tier of Sharn's aristocracy. The Boromar Clan owns warehouses, taverns, and inns throughout the city, and it has a considerable interest
in the shipping trade. A [[Boromar|Ilyra Boromar]] heir sits on the city
council of [[Sharn]], and the current head of the clan is a
member of the Gold Concord of the [[Aurum]].
As much as some members of the [[Sharn Council]] and
the [[Watch|Sharn Watch]] would like to see the Boromars disbanded,
the syndicate is unlikely to collapse any time soon.
//''Membership.''// The core membership of the Boromar
Clan syndicate—comprising about one in six of its members—is an
extended family of [[halfling]]s descended from immigrants
who came to [[Sharn]] from the [[Talenta Plains]]. Another
third of the members are unrelated halflings, and the
rest belong to other species. The syndicate employs a
wide variety of bookkeepers and administrators as well
as burglars, con artists, smugglers, and other criminals.
When a situation calls for physical violence, the Boromars usually hire freelancers—members of the [[Sharn Watch]] or agents of House [[Tarkanan]]. The Boromar
family proper has a team of personal bodyguards called
the Clawfoots, who are mostly fierce [[halfling]] warriors
recently relocated from the [[Talenta Plains]]. They primarily defend Boromar holdings and headquarters in the
halfling district of [[Little Plains]].
//''Allies.''// The Boromar Clan has a reputation for omnipotence that makes even the forces of law and order in Sharn hesitant to cross it. It's far safer to be an ally of the syndicate, or at least to stay out of its way, than it is to be its enemy—and it's more lucrative to boot. The
following groups count themselves among the Boromar Clan's closest allies:
* ''House Jorasco.'' The head of the Boromar Clan, [[Saidan Boromar]], is married to an unmarked heir of House [[Jorasco]], [[Mala Boromar d'Jorasco]]. This marriage has created important ties between the Boromars and the [[halfling]] healers of [[Sharn]]. Members of the Boromar family can secure healing for free, and other members of the syndicate receive a 10 percent discount at Jorasco houses of healing.
* ''Sharn Council.'' Of the seventeen members of [[Sharn's city council|Sharn Council]], four have close ties to the Boromar Clan—including one, [[Ilyra Boromar]], who reports directly to the head of the syndicate. These four vote as a bloc to ensure that the council doesn't take direct action against the Boromars, while enough of the other council members fear the syndicate that they tend to carry the vote. A member of the Boromar Clan can call in a favor to secure an audience with one of these councilors, though such does not guarantee aid.
* ''Sharn Watch.'' The Boromars have been bribing captains of the [[Sharn Watch]] for generations. What's more, if the Boromar Clan collapsed, the underworld would erupt in anarchy as dozens of petty crime lords fought for territory and position. As a result, a member of the Boromars can call in a favor to get minor criminal charges dismissed.
''//Enemies.//'' Despite the Boromar Clan's position of strength in [[Sharn]], it has many foes, and their unrelenting assaults have put the syndicate in what might be its most precarious position ever. Currently, the following groups pose the greatest threats to Boromar interests:
* ''Daask.'' The monstrous criminal guild called [[Daask]], a pawn of the leaders of [[Droaam]], has started launching violent raids against Boromar holdings over the last two years. A mobile organization using guerrilla tactics, Daask has managed to circumvent Boromar security and avoid serious reprisals for a range of violent thefts and sabotages. Agents of Daask go out of their way to harm up-and-coming Boromar agents.
* ''Sharn Council.'' Despite four friends on the city council, the Boromar Clan has several enemies as well. At least three councilors oppose the Boromars because of genuine concern for their constituents; two more oppose the syndicate because they're part of rival organizations (the [[Aurum]] and the [[Tyrants]]). Because of their influence, the council has so far refused to devote any resources to combating the rise of [[Daask]], hoping the monstrous guild will bring down the Boromars. Individual members of the Boromar Clan can be sure that these councilors will oppose any petition they might bring to the council.
Borunan is homeland to [[ogre]]s. It's a barren and hostile
region, spread across the [[Andnemun Desert]] and the
[[Kelshak Mountains]]. Before the [[Sundering]], the ogres had
a brutal and aggressive culture, dominated by powerful
[[oni]] lords. Despite their martial might, the ogres
rarely threatened the other kingdoms; the Borunan clans
considered [[human]]s to be unworthy foes and devoted
their energy to internal struggles.
Over the course of the [[Sundering]] and the Unification,
the ogres were brought under [[Riedra]]n rule and forcibly
converted to the [[Path of Inspiration]]. Those who resisted
were killed or driven into [[Syrkarn]], where they spawned
the [[eneko]]. Today the ogres are a surprisingly peaceful folk,
their warlike culture expunged by the [[Inspired]]. Although
ogres form the bulk of the population in Borunan, all
villages have [[Chosen]] overseers, and [[human]] and [[shifter]]
troops are found in the bastion cities.
The people of Borunan tend to be cheerful and
straightforward. Feats of strength are admired; a human
isn't expected to match an ogre but still earns respect for
proving his prowess. Athletic events typically include
weightlifting and throwing contests.
The ogre village of [[Mokush]] lies on the Borunan frontier, near [[Syrkarn]].
When the cork of this bottle is removed, it will capture whispers of any conversation within 30 feet. As it captures these conversations, colorful smoke begins to swirl through the bottle. The colors are vibrant and diverse, each unique to an individual conversation. Once 5 minutes of conversation have been captured, the bottle is completely filled and can hold no more whispers until its contents are emptied.
When the bottle contains smoke, it can be tipped on its side to pour out conversations one at a time. Each of these conversations are written on a small piece of parchment wrapped up and bound by a colorful string that matches the color of smoke that was poured out of the bottle. There is no indication of who spoke the words written on the page; the participants are simply listed as "Speaker 1", "Speaker 2", etc.
Once the contents of the bottle have been poured out, it requires 24 hours to recharge before it can absorb additional conversations.
This bottle contains a breath of elemental air. When you inhale it, you either exhale it or hold it.
If you exhale the breath, you can expel a powerful gust of wind. If you hold the breath, you don't need to breathe for 1 hour, though you can end this benefit early (for example, to speak). Ending it early doesn't give you the benefit of exhaling the breath.
Chill winds howl as snow and hail fill the air. Explorers may
find themselves on an icy plateau or in a mountain pass; with
the vicious storm, visibility is limited to 60 feet, so there's no
knowing what lies ahead. Adventurers may find an occasional
cave or other shelter, but it's always possible that it's already
occupied by a [[remorhaz]] or other stranded [[monstrosity]]. As
this is one of the more dangerous [[layer]]s of [[Risia]], this is a good place
to search for the frozen bodies of other adventurers, held in
stasis beneath the ice.
The raging storm of the Boundless Blizzard never ends,
and adventurers face high winds and lethal cold. The layer is
permanently caught between night and day; due to the storm,
the light is dim at best, and areas of intense snow may be
heavily obscured.
This branch of the [[Unity]] of [[Riedra]] oversees agriculture.
Farmers are servants of the Horn, while Chosen administrators tend to storage, distribution, and planning. This branch also engages in [[magebreeding]]. [[Dul Maar]] is the seat of the Horn, and its high minister is Lady Tantashar, a [[hashalaq]] [[Inspired]].
A stiff but bendable chain makes up the curvature of this longbow. Each link of chain has a small pink pearl in the center.
When you shoot a creature that can fly with this bow, its ability to fly is hampered for the next hour, or longer if the creature doesn't have a chance to rest and recover.
You have advantage when using this bow while injured.
When using this bow, you may link a "blood arrow" to your life force. When you fire that arrow, if it hits a target, both you and the target take additional necrotic damage.
This silver bracelet is set with a pale opal. It allows the wearer to interact with spirits, [[ghost]]s, and other supernatural incorporeal creatures as if they were physical entities.
A small yet sturdy steel bracelet, set with a tiny pyramid of clear crystal. When activated, the crystal emits a delicate beam of light, pointing the user towards whatever destination they set, as the crow flies. Destinations must be found on common maps.
This heavy cuff of iron is etched with simple circles. When worn, it completely hides the wearer's aura. Any holy, fiendish, or magical auras become nearly impossible to detect.
While wearing this narrow silver bracelet, nothing can be removed from the user's person without their explicit permission. This includes clothing and items such as coins, weapons and jewelry (but not this bracelet itself).
This bracelet of bright red beads allows the wearer to perform the [[prestidigitation]] cantrip at will. The durations of the effects are ''limited to five minutes''.
<<<
{{prestidigitation}}
<<<
While holding these bracelets, you can speak a command word and turn them into a set of
manacles. Speaking a second command word turns the manacles back into a pair of bracelets.
You can change the command words by touching the bracelets together, then speaking the two new command words.
These two bracelets are each tied to a small volume of extradimensional space. They are woven from strings of red and glass white beads. While wearing the bracelets, one can store up to 20 pounds of items in each sleeve. There are no outward signs of the objects, and the user does not feel their weight. If the bracelets or clothing are removed, the objects will immediately spill out of the sleeves.
Placing these bracelets inside an extradimensional space
created by a [[bag of holding]], [[portable hole]], or similar item
instantly destroys both items.
See also [[gloves of storing]].
Powerful shamans and [[cleric]]s of [[Vulkoor]] work together
to create these scorpion-shell bracers to honor a clan’s
favored hunters. Although rare even among the [[drow]]
tribes, a few pairs of these bracers have made their way
into the hands of explorers, often through deadly combat
with the chosen of Vulkoor.
These black bracers are made from
the shell of a monstrous scorpion ritually sacrificed in
honor of the [[drow]] deity. One side of the bracers
is etched with prayers to [[Vulkoor]], while the other bears
the image of a scorpion poised to strike.
The bracers grant the wearer's skin and garb a slight camouflage effect, granting them advantage when hiding in a jungle environment. They also improve the wearer's reflexes and precision when attacking from stealth.
Brass is the finest architect of the [[dao]], and is responsible
for most of the grand palaces of the [[efreet|efreeti]]. She's always
intrigued by unusual architecture and has visited [[Sharn]]
a few times to study the towers. She's also celebrated for
her sculptures, and has produced everything from tiny
miniatures to towering colossuses, along with magical
marvels that begin as the former, then transform into
something far larger, like [[figurines of wondrous power|figurine of wondrous power]].
The most gregarious of the true [[dragon]]s, brass dragons crave conversation, sunlight, and hot, dry climates.
A brass dragon's head is defined by the broad protective plate that expands from its forehead and the spikes protruding from its chin. A frill runs the length of its neck, and its tapering wings extend down the length of its tail.
A brass dragon wyrmling's scales are a dull, mottled brown. As it ages, the dragon's scales begin to shine, eventually taking on a warm, burnished luster. Its wings and frills are mottled green toward the edges, darkening with age. As a brass dragon grows older, its pupils fade until its eyes resemble molten metal orbs.
!! Magic and Breath Weapon
The brass dragon can breathe a line of fire, as well as a cloud of sleeping gas. As innate spellcasters, adult brass dragons can cast spells such as [[wall of sand]], [[charm]], [[sending]], and [[tongues]].
{{DragonAgeCategories}}
This [[adamantine]] breastplate of ancient [[Dhakaan]] belonged to
a [[hobgoblin]] hero known as a mighty slayer of [[aberration]]s.
This breastplate is exceedingly well made, nearly impenetrable, and even provides protection against spells and magical effects. In addition, if the wearer successfully resists the "mind blast" ability of a [[mind flayer]] or other aberration, they are unaffected, and the effect is reflected back toward the aberration as if the cone originated from the wearer, including the aberration in its area of effect.
While sucking on this breath mint, you can mimic the
speech of another person for 1 hour. You must have heard
the person speaking for at least 1 minute.
[[Arcane artillery|arcane artillery]] requires a powerful surge of magical energy
to fuel the attack. [[Wizards|wizard]] and other spellcasters can prime
arcane artillery by expending their own power, but bombardiers (specialized [[magewright]]s) don't always have that option. Instead, a bombardier charges
the weapon by using the //breath of Siberys//—a small globe
containing a highly refined solution of [[dragonshard]]s held in a
suspended state. While priming arcane artillery, the operator
crushes the breath of Siberys against an engraved brass plate;
the sphere dissolves and the weapon is charged.
House [[Cannith]] [[artificer]]s are working to adapt
other charged items, such as traditional staves, to use breath of Siberys.
This translucent, bubble-like sphere has a slightly tacky outer surface, and you gain the item's benefits only while wearing it over your head like a helmet.
The bubble contains 1 hour of breathable air. The bubble regains all its expended air daily at dawn.
''Capital:'' [[Wroat]]<br/>
''Hallmarks:'' Espionage, industry, metalwork, organized crime, subterfuge
In the wake of the [[Last War]], Breland is one of the most
powerful nations in [[Khorvaire]]. Possessing a large population and abundant resources, Breland leads the continent in industry.
The Brelish are known for their pragmatism and independence. They lack the discipline of [[Karrn|Karrnath]]s and the faith of the [[Thrane]]s, but they excel at finding innovative
solutions to problems. The Brelish also have a talent
for intrigue and subterfuge. The [[King's Dark Lanterns]]
is one of the finest intelligence agencies in Khorvaire,
rivaled only by House [[Phiarlan]] and the [[Trust]] of [[Zilargo]].
The dark side of these aptitudes is a strong streak of
cynicism, which allows crime and corruption to flourish
in Brelish cities and temples. The [[Sovereign Host]] is the
dominant religion of Breland, but in general the Brelish
aren't as devout as citizens of other nations.
King [[Boranel ir'Wynarn]] rules Breland in conjunction
with an elected parliament. Boranel is a popular leader
celebrated for his exploits during the Last War, but his
children have yet to prove themselves, and a growing
movement advocates for abandoning royal rule when
Boranel passes.
!! Interesting Things About {{!!title}}
* [[Sharn]] is the largest city in [[Khorvaire]]. Almost a nation in its own right, the City of Towers is a hub for commerce and intrigue.
* The [[Boromar Clan]] is the oldest and most powerful criminal organization in Breland. The Boromar [[halfling]] leadership maintains ties to the [[Talenta Plains]]. Other notable criminal organizations include the monsters of [[Daask]] and House [[Tarkanan]], an alliance of assassins and thieves with [[aberrant dragonmark]]s.
* Breland's major cities are highly cosmopolitan. Due to its proximity to [[Droaam]], Breland's cities include more monsters—[[ogre]]s, [[orc]]s, [[goblinoid]]s, and even [[sahuagin]], [[harpies|harpy]], and [[gargoyle]]s—than elsewhere in the Five Nations.
!! Brelish Characters
As you develop a Brelish character or NPC, consider the following qualities:
* ''Slightly Shady.'' Many Brelish have a loose relationship with the law. Even if you're a hero, you might have questionable connections or friends in low places. Backgrounds such as criminal, spy, or charlatan can reflect this tendency, regardless of your class. You could also be a folk hero who challenges the laws to protect the innocent, or an entertainer who plays in every dive in [[Sharn]].
* ''Innovative and Independent.'' Find your own path in the world; don't simply follow established traditions. As a [[cleric]], you might challenge your church and follow your own divine revelations. As a [[wizard]], you could search for new techniques or attempt to unravel forgotten secrets.
* ''Practical.'' Whether it's about fashion, food, or conversation, the Brelish tend to be pragmatic. Why spend a fortune on a fancy meal when a simple one will do? You use whatever tool gets the job done, and you don't see a need for unnecessary flair.
!! Cities and Sites
Beyond the magnificence of Sharn, Breland hosts a vast spectrum of other wonders.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
For Breland, the Last War was an ever-shifting tangle
of enemies and alliances. Breland fought [[Aundair]], [[Cyre]],
[[Karrnath]], and [[Thrane]] at various points of the war, as
well as clashing with [[Darguun]] and [[Droaam]]. These conflicts caused many Brelish to embrace a cynical view of
the world, a sense that no one can be fully trusted and
that people need to look out for themselves. As a Brelish
character, you could have an axe to grind against any
of the other nations. This is balanced against a strong
belief in humanoid rights and dignity, convictions that
motivated the Brelish to shelter more Cyran refugees
than any other nation.
The major cities of Breland host significant populations of refugees, both Cyrans and Brelish from villages
lost in the war. This has increased the overall level of
poverty and desperation and contributed to an increase
in crime. The southern cities—including [[Wroat]] and
[[Sharn]]—suffered relatively little damage in the war, but
northern Breland was hard hit. The city of [[Vathirond]]
is still repairing the damage from Thrane attacks, and
many northern villages are either recovering or have
simply been abandoned.
Despite these struggles, the Brelish maintain a positive view of their future. The heart of Breland is as
strong as it ever was, and the citizens believe that had
the war continued, Breland would have triumphed.
[[Breland]]'s parliament consists of both elected legislators and hereditary noble legislators. The citizens of Breland elect legislators every two years. These elected lawmakers, selected by popular vote (one from each village or town, two from each city, and three each from the metropolises of [[Sharn]] and [[Wroat]]), are sent to the capital to participate in all parliamentary proceedings. The noble legislators gain their seats in the parliament based on the status of their families; each noble family holds one seat in the parliament. Each year, the recognized head of the family appoints a family member to parliamentary duty. In many cases, the yearly appointment is symbolic, and
each family has one representative who serves year in
and year out. Twenty-seven noble families serve the
crown of Breland.
The [[Breland]] parliament usually works in concert
with the [[crown|Boranel ir'Wynarn]], but the two branches of authority have
disagreed and even clashed on occasion. One noble in
particular, Lord [[Ruken ir'Clarn]] doesn't want to see the monarchy continue after
[[Boranel|Boranel ir'Wynarn]]'s death. He and a few trusted conspirators seek to
remove the crown's authority with the passing of Boranel,
thereby giving all ruling power to the parliament. The
parliament, in turn, would elect a prime minister to
preside over the council and the nation. Ruken envisions
himself initially filling that role.
For decades, [[Breland]] has maintained a consulate in the
heart of the [[Sloths]]. Its paint peeling and shutters askew,
the consulate is a stately building that has seen better
days.
When [[Stormreach]] was founded, the king of [[Galifar]]
established a consulate in the city. But as the age of
piracy came to an end and Galifar turned its attention elsewhere, the consulate became a position with no true power. In 894 YK, the [[Brelish|Breland]] consul
of Stormreach was a lord named Kainen ir’Ranek.
When word reached Stormreach that [[Jarot|Jarot ir'Wynarn]] was dead
and that [[Wroann|Wroann ir'Wynarn]] was defying her sister [[Mishann|Mishann ir'Wynarn]], Kainen was quick to act. Gathering the Brelish and supplementing his forces with [[Deneith]] mercenaries, he laid claim to the consulate. Neither Kainen
nor his successors ever managed to sway the [[Storm Lords]] to choose a side in the war, and none of the other [[Five Nations]] bothered to establish embassies in Stormreach.
Breland has maintained a consulate in [[Cross]] for decades but has had little influence. The consul serves at the pleasure of the [[Breland Parliament]], and the post
is currently held by Lady [[Rusila ir'Clarn]].
[[Breland]]'s
national museum is located in Farhaven Tower, near
the Bazaar Bridge leading to [[Middle Dura]]. It has two
main areas of emphasis: art representing the Brelish
spirit (which primarily means any artwork created
by a Brelish artist) and antiquities from [[Xen'drik]],
which certain people in the Brelish government
would like to view as a colony of Breland. Its Brelish art collection is unequalled, and includes some
world-famous works by great masters of antebellum
[[Galifar]]. Its collection of antiquities is also impressive, though it is small in comparison to that of the
[[Dezina Museum|Dezina Museum of Antiquities]] at [[Morgrave University]].
The baron of House [[Deneith]], Breven commands the
largest army remaining after the end of the [[Last War]],
but he’s not inclined to use it for his own ends. He
is surrounded by aggressive advisors, however, who
would like to see a Deneith sitting on the throne at
[[Thronehold]].
The Brey River in [[Khorvaire]] flows from [[Lake Brey]] into [[Scions Sound]]. It forms part of the border between [[Breland]] and [[Thrane]].
Breyn d'Orien is one of three [[dragonmark]]ed heirs of House [[Orien]] that run the [[Xen'drik]] teleportation circuit for the [[Transportation Guild]] (the tohers being [[Elari|Elari d'Orien]] and [[Dekker|Marishantar]]). Breyn a house veteran who rescued a handful of nobles in the [[Last War]] and who is not above accepting smugglers’ gold.
Briar the [[Greensinger|Greensingers]] spent decades wandering the eastern [[Eldeen Reaches]] and [[Aundair]], raising spirits and encouraging the farmers and plainsfolk to rise up against the absentee nobles. His actions set the wheels of secession in motion, ultimately resulting in the great split of 958 YK. Even then, Briar was not satisfied, though, and he continued to roam the borders, darting into Aundair and embarrassing the queen with his words and deeds. The crown devoted considerable resources to capturing the insurgent, and in 968 YK he was brought to justice. The queen knew Briar was a folk hero, and his execution might make him a martyr. Instead, he was sent to [[Dreadhold]], where he sits in a magically silent cell. He has not heard a sound in thirty years. A lesser man might have been driven mad by this experience, but Briar can still hear music in his head, giving him the strength to carry on.
The long, arcing, covered bridge
that connects [[Breland]] Spire (and the [[Commons]])
to Dalannan Tower serves as a center of student
life at [[Morgrave|Morgrave University]]. Shops line one side of the bridge,
including bookstores, paper makers, clothing and
equipment vendors catering to students, and related
businesses. Notices, such as announcements of
campus events, job opportunities, items for sale,
rooms for rent, and the like, cover the opposite wall
of the bridge.
The people of [[Oakbridge]] are generally a social and outgoing group, but the friendliest
inhabitants of the district are the members of Milana
family, who live in a small, comfortable townhouse
they have named Bright Wind. Jolan Milana ([[human]]) is a baker who sells his wares in
[[High Hope]], while his wife Sarina ([[human]]) is a seamstress who works out of their
home. They have three young children: Jalina (female,
12), Mesin (male, 8), and Jeral (male, 5). Anyone who
settles in Oakbridge soon receives a personal welcome
from the Milanas. In time, the family may be used as
a way to pull a party into an adventure. Perhaps one
of the children goes missing or overhears a conversation she shouldn't have. Maybe Jolan is infected with a [[Riedra]]n [[mind seed]]. Or perhaps this friendly family is
hiding a dark secret—a tie to a [[Radiant Cult|radiant idol]] or one
of the [[Cults of the Dragon Below]].
''Date: '' [[12 Nymm|Khorvaire calendar]]
Brightblade, the holy day of [[Dol Dorn]], the [[Sovereign|Sovereign Host]] Lord of Strength
and Steel, sees festivals occur in all of the temple districts of the city. Prizefights, wrestling matches, archery contests, and jousts occur throughout the day, culminating in a contest of champions at the [[Cornerstone]] arena in [[Middle Tavick's Landing]]. The
champions receive generous prizes, and a fortune can be made gambling on the contests.
Occasionally, even more fantastic conflicts have been staged on Brightblade—full-scale battles held on the training grounds of [[Daggerwatch]], free-for-all melees with hundreds of contestants, and similar spectacles.
Brightshield is a [[bronze|bronze dragon]] [[rogue dragon]] in [[Xen'drik]]. A
newly minted young officer in the Bronze Brigade of the
[[Light of Siberys]], Brightshield was framed for the horrible murder of one of his superiors at the [[Vortex]]. The dark deed was actually committed by an evil [[gold dragon]] commander. Brightshield eluded capture and fled to [[Xen'drik]], where he hides out on the bottom of a large lake. He spends his time either lamenting his woes, or devising plans to prove his innocence and expose his evil framer.
The Bringers of Fire are a [[Seren]] tribe that was founded by a chaotic and destructive [[red dragon]]. One of the largest and most dangerous tribes, they are one of the only tribes known to completely exterminate Seren clans that they view as unworthy. The Bringers of Fire paint their skin red before battle and make use of flaming oil. They are renowned for their volatile temperaments.
This wand is made from the bristles of a giant boar bound together with magical, silver thread. It weighs half a pound and is 8 inches long. The wand has a strong boar musk scent to it, which is difficult to mask. The wand is comprised of 5 individual bristles, and, while holding it, you may choose to remove a bristle to invoke one of the following effects.
* //''Ghostly Charge.''// You toss the bristle towards one creature you can see. A phantom giant boar charges 30 feet toward the creature.
* //''Truffle.''// You plant the bristle in the ground to conjure up a magical truffle. The mushroom can be consumed to rapidly heal from injuries.
So long as the wand has 1 bristle remaining, it regrows a bristle daily at dawn. Using the last bristle destroys the object.
The Broken Anchor is a tavern catering to [[Lhazaar|Lhazaar Principalities]] travelers. It one of the few places in [[Sharn]] where one can order salasta, a strong, clear alcoholic beverage from made using salas seaweed. Illusory sounds of gently crashing waves fill the tavern, creating a nostalgic environment for Lhazaarites far from home.
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression: ''Rows of stone houses circle the
central towers of this district. The stone is worn
and cracks are beginning to show. The streets are
surprisingly quiet and empty. The people view
strangers with suspicion and fear, and hurry toward
their destinations.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Tumbledown]] (northeast); [[Hareth's Folly]] (southeast); [[Underlook]] (southwest); [[Oldkeep]] (below); [[Highwater]] (above)
Early in the history of [[Sharn]], Barchan's Arch was
one of the finest residential districts in the city.
Barchan ir'Tyran, a powerful nobleman, along with
Hestian ir'Tain, helped shape the City of Towers.
Then, during the reign of King [[Galifar the Dark]],
the ir'Tyran family attempted to seize the throne of
the kingdom. Those ir'Tyrans who survived were
stripped of their noble rank and banished from [[Galifar]]. Since then, Barchan's Arch has been shunned
by the powerful families of Sharn, and it has fallen into disrepair; two hundred years ago, people began
calling it “Broken Arch,” and the name stuck.
Today, Broken Arch lies under the shadow of the
treason of the past. While it has a few manor houses,
these belong to the lesser families of Sharn or merchants trying to climb the social ladder. The district
rarely receives aid from the [[city council|Sharn Council]], and the
[[Watch|Sharn Watch]] patrols are lighter than in the other districts
of the ward. As a result, criminals from [[Lower Dura]]
often frequent the alleys of Broken Arch and prey
on the honest citizens. [[Daask]] bullies have become an
especially common threat over the past three years.
[[Dol Dorn]] stands between the treacherous [[Mockery]] and the honorable [[Dol Arrah]]. He is the [[Sovereign|Sovereign Host]] of the simple warrior, of anyone who pits their strength and skill against another in a fair fight. Legend says that when a soldier was set upon by three [[ogre]]s who sundered his sword (a gift of the [[Traveler]]), he called on Dol Dorn for guidance and miraculously slew his foes using only his hands, feet, and the hilt of his broken blade. He founded the order that continues to this day.
The Order of the Broken Blade is a religious [[monastic order|monk]]. Its devotees respect all the [[Sovereigns|Sovereign Host]] and honor them in their moments, but it is [[Dol Dorn]] who they look to for inspiration. While a Monk of the Broken Blade trains to become a weapon, they also honor the Sovereign of Strength and Steel through mastery of the longsword. The order teaches that their Sovereign speaks to them in battle, and while they learn the basics of their tradition in a monastery, it is only in true combat that they can learn directly from Dol Dorn. As such, monks of the Broken Blade wander [[Khorvaire]] in search of worthy struggles. Some followers of the Sovereigns welcome the presence of one of the Broken Blades and may ask the monk to help overcome a threat to their community. Others—especially followers of the [[Three Faces of War]]—see the Broken Blades as dangerous loners who are unwilling to work within the greater structure of an army.
The Broken Land of [[Lamannia]] is a volcanic region filled with high
mountains and lava plains. There are constant eruptions, and
the layer is home to many fire and earth [[elemental]]s that engage
in an ongoing environmental conflict. Fire elementals flow
out with the lava as volcanoes erupt; earth elementals work
to contain the eruptions and to rebuild the shattered peaks,
only to have them erupt again. Few beasts manage to thrive in
this layer, but some tough [[dinosaur]]s have clawed out a niche.
While this region has fewer connections to [[Eberron]] than the
[[Twilight Forest]], it's also possible to find remnants of other
travelers here; it's a harsh and deadly landscape for stranded
adventurers or for those who seek a lost relic from this place.
The {{!!title}} is a street gang of
Khoravar [[half-elves|half-elf]] in [[Sharn]] who often target
[[elves|elf]] with acts of violence, frequently
disfiguring their victims.
Twelve nations collapsed during the [[Sundering]], folded
into the realm of [[Riedra]]. Old customs were wiped away,
castles and cathedrals shattered and left in ruins. People
were told to forget the past. [[Sarlona]] had finally risen
from the nightmare of war into an age of peace.
Yet the past held as many wonders as terrors. Art, religion, philosophy, magic—each kingdom had its treasures, and many of those jewels are still out there. Study of the past is forbidden to Riedrans, but some find its lure
impossible to resist. Over the centuries, a secret movement has grown, an alliance of those who doubt the [[Path of Inspiration]] and seek to reclaim the traditions of the
past. These rebels call themselves the Broken Throne.
The Broken Throne is not a violent organization,
and its members have no plans to fight the [[Inspired]]. They simply want to preserve ancient traditions. To this end,
they gather relics of the past, both physical treasures and
knowledge. Illiterate recruits are usually taught to read,
so they can appreciate books and scrolls recovered from
the ruins. Many learn the traditional crafts of their culture, pushed into obscurity by the Inspired. A few study
the priestly traditions of [[Pyrine]] and [[Khalesh]], the [[psionic|psionics]]
teachings of the [[Maleeri|Dor Maleer]] [[wilder]]s, or the [[arcane magic]] of
the [[Corvagura]]n [[sorcerer]]s and [[Syrk|Syrkarn]] [[wizard]]s. Members of
the Broken Throne believe these are not the tools of dark
spirits but are instead wonders.
The Broken Throne is most active in villages located
near ancient ruins. Within the bastions, a few of its members hold significant positions in the [[Guiding Path]], and these pathfinders help cells communicate
with one another. A passive force, the Broken Throne takes
no direct action against the [[Inspired]]. Nonetheless, the
practices of the Throne are heresy, and the [[Thousand Eyes]]
(and most [[Riedrans]]) eliminate any cell that is exposed.
''Getting the PCs Involved:'' Members of the Broken
Throne have a critical trait most Riedrans lack: curiosity about other cultures. They might offer unexpected sanctuary or assistance to foreigners in trouble, and they
are often educated about nearby ruins. It's possible to
make contact with the Broken Throne in [[Syrkarn]], since
those fleeing the [[Thousand Eyes]] often come to this land
to continue exploring the past. A Throne refugee can
also provide a relic hunter with helpful contacts inside
[[Riedra]]. Of course, the help of the Broken Throne comes
at a price—those who plunder an ancient ruin might have
to give the Throne access to what they recover.
The royal residence of King [[Boranel ir'Wynarn]] of [[Breland]] rises
from an island in the middle of the [[Howling River]] in the nation's [[capital|Wroat]].
Two bridges connect the isle to the south bank.
Streets climb a steep hill and end at the tall gate set
in the castle’s high stone walls. According to legend,
the castle takes its name from [[Galifar]]’s conquest. At
one point while in these lands, he broke his blade in
battle but somehow managed to win the day. (This story has much in common with the founding myth of the monastic order of the [[Broken Blade]].) He had
the fortress built to commemorate the victory, and it’s
said the blade remains inside its walls still.
Brokenblade Castle contains royal apartments,
garrisons, armories, kitchens, and other rooms and
features necessary to keep the place in full operation. King Boranel spends two-thirds of every year traveling, so his brother [[Kor ir'Wynarn]] oversees the
castle when not attending to his responsibilities at the
[[King's Citadel]].
The {{!!title}} is a [[Sharn]] street gang of
[[Brelish|Breland]] veterans who antagonize [[Cyrans|Cyre]]
and former soldiers from other nations.
Bronze Bay is a body of water in [[Argonnessen]], located near its northern shore between the [[Great Barrier]] mountains and the [[Nestling Plateau]].
Bronze [[dragon]]s are coastal dwellers. A ribbed and fluted crest defines the shape of a bronze dragon's head. Curving horns extend out from the crest, echoed by spines on its lower jaw and chin. To help them swim, bronze dragons have webbed feet and smooth scales.
A bronze wyrmling's scales are yellow tinged with green; only as the dragon approaches adulthood does its color deepen to a darker, rich bronze tone. The pupils of a bronze dragon's eyes fade as the dragon ages, until they resemble glowing green orbs.
!! Magic and Breath Weapon
The bronze dragon can exhale lightning bolts, as well as a wave of repulsion that knocks creatures back. As innate spellcasters, adult bronze dragons can cast spells such as [[watery sphere]], [[storm sphere]], [[tidal wave]], [[control winds]], and [[fog cloud]].
{{DragonAgeCategories}}
This exceptionally hard wood, which only grows in [[Aerenal]] and in a
few groves hidden deep in the [[Towering Wood]], is useful in the manufacture of armor and
weapons. Unlike most woods, bronzewood can be used
instead of metal to fashion heavy armor and weapons—it
is somewhat shapeable during manufacturing, and it keeps
a sharp edge. Although dense and weighty compared to
other woods, it is still lighter than steel.
//Leafweave// armor is made from alchemically treated leaves of the bronzewood
tree, and can offer the same level of protection as studded
leather or a chain shirt.
While wearing this brooch underwater, you can twist it and cause it to become a large air
bladder. The bladder brings you to the surface at a rate of
10 feet per second. The air bladder turns back into a brooch
when you reach the surface, or when you pop it and end the effect.
This wooden broom, which weighs 3 pounds, functions like a mundane broom until you stand astride it and speak its command word. It then hovers beneath you and can be ridden in the air. It has a maximum flying speed of about 12 miles per hour. It can carry up to 400 pounds, but its flying speed drops with increasing weight. The broom stops hovering when you land.
You can send the broom to travel alone to a destination within 1 mile of you if you speak the command word, name the location, and are familiar with that place. The broom comes back to you when you speak another command word, provided that the broom is still within 1 mile of you.
A less "witchy" version of this item exists in the form of the ''skystaff''.
This finely carved pipe blows odorless bubbles instead of smoke when used. While you hold the pipe, you can create a 20-foot-radius sphere of bubbles centered on you, which heavily obscures the area.
Also, once per day, you can use the pipe to summon a bubbly steam [[mephit]] that obeys your verbal commands. It disappears in a harmless puff of steam after 1 minute or if it moves more than 60 feet from the pipe.
Bugbears are hulking, hairy [[goblinoid]]s typically reaching 7 feet in height and weighing in at around 300 pounds. They mature at about the same pace as [[human]]s and live about as long. Bugbears possess plenty of raw strength, but also exhibit a surprising capacity for stealth; they are fond of setting ambushes, and flee when outmatched.
The [[Dhakaan]]i word for bugbears is //guul'dar//, meaning "strong people".
<$list filter="[list{!!title}sort[title]]">
<$macrocall $name="tag" text={{!!title}}/>
</$list>
A bulette is a massive predator that terrorizes any lands it inhabits. Also called a "land shark," it lives only to feed. Irascible and rapacious, bulettes fear no other creature, and they attack with no regard for superior numbers or strength.
Bulettes use their powerful claws to tunnel through the earth when they hunt. Heedless of obstruction, they uproot trees, cause landslides in loose slopes, and leave sinkholes behind them. When vibrations in the soil and rock alert a bulette to movement, it shoots to the surface, its jaws spread wide as it attacks.
<$list filter="[tag[dragonmarked house]!has[article]]">
<$button>
<$action-setfield article="House "/>
<<currentTiddler>>
</$button>
</$list>
<ul>
<$list filter="[tag[Lower Central]!tag[district]sort[title]]">
<li><$button>
<$action-listops $tags="-[[Lower Central]]"/>
x
</$button> {{!!article}}<$link/>{{!!title}} ({{!!tags}})
</li>
</$list>
</ul>
As the caster holds their hands with thumbs touching and fingers spread, a thin sheet of flames shoots forth from their outstretched fingertips. The flames spread out in a cone that extends up to 15 feet from the caster.
The Burning Ring is not
a specific location in [[Firelight]]. It moves frequently
as the [[Sharn Watch]] keeps trying to shut it down, but
it seems to find a place to operate every night. It
offers blood sport, gladiator-style combat conducted
by amateur and professional warriors. The combat
is real—the combatants use a variety of weapons but
wear no armor—and sometimes matches end in
death. Ideally, the healer on hand for every fight
reaches a fallen combatant before he dies, but sometimes the fallen are beyond help. Death only seems
to make the crowds cheer louder.
The ringmaster is Hoas Junter ([[shifter]]), who has extensive connections to the [[Daask]]
gang. Sometimes his connections help him bring in a
monster as a combatant to the crowd's utter delight.
The monster usually wins.
Finding the Burning Ring on any given night requires gathering information from the locals in [[Firelight]] or [[Torchfire]].
The sky of this [[layer]] of [[Shavarath]] is filled with many [[airship]]s, some large enough to be floating towns. A few islands of rock float amongst the solid
clouds, but if there's any land below, it's hidden by deadly fog.
While there are skirmishes on the stone islands, most of the
action occurs in the skies. Winged [[angel]]s and [[fiend]]s circle and
duel, while [[conscript|manifestation]]s guide [[dragon]]s and other aerial mounts.
''Date: '' [[1 Therendor|Khorvaire calendar]]
Once a year in the week leading up to Therendor 1, to emerge from winter’s cold embrace and hasten into spring, [[Stormreach]]’s residents construct a titan of wood, wicker, and oil atop the cliffs east of the [[House Lyrandar Shipyard]]. The titan represents the [[ancient|Age of Giants]] kings of [[Xen'drik]], who were burned away in [[dragon]]fire. The building of the titan takes six days and is itself a time of great revelry. Most of [[Forgelight]]’s workers get the entire week off to help, House [[Phiarlan]] supplies entertainment around the clock, and
dozens of casks of gin are consumed by the builders.
The titan is set aflame at sundown on Therendor 1, and
an all-night celebration of wild dancing and drinking
ensues, with many revelers wearing dragon masks. The
[[giants of Rushemé|Guardians of Rushemé]] find the festival a distasteful display
but shoulder the unintentional insult graciously.
A creature that inhales this poison and can't resist its effects suffers significant poison damage to their lungs. The effect persists up to a couple of minutes after the initial attack, causing additional damage.
The Burnt Wood is a forest in [[Thrane]] near [[Shadukar]], on the shores of [[Scions Sound]]. The wood earned its name during the the reign of terror of [[Sarmondelaryx]], the Burning Dragon, in 22 YK. Although the forest regrew and thrived for several centuries, it was again burned during the destruction of [[Shadukar]] and has not yet fully recovered.
<ul>
<$list filter=[list{!!title}sort[title]]>
<li><$link/></li>
<<list-links-article "[tag{!!title}category[organization]regexp<capitalized>sort[title]]">>
</$list>
</ul>
Mined in the [[Byeshk|Byeshk Mountains]] and [[Graywall Mountains]] bordering [[Droaam]], this rare metal is prized by smiths for use in jewelry and weapons. It
has a lustrous purple sheen and is hard and dense. Byeshk weapons of any type are able to overcome the defenses of [[daelkyr]], which are resistant to all other weapons.
Byeshk is difficult to work, especially when attempting to make it into armor,
and it offers no significant advantage over iron armor. An item made of byeshk weighs
50% more than the same item made of iron.
This mountain range separates [[Droaam]] from the [[Eldeen Reaches]]. The mountains are named after the abundant veins of [[byeshk]] ore that are found here. The lustrous purple metal is particularly effective against [[aberration]]s.
//“The Traveler comes. Choose to be the instrument of his change, or a victim of it.”//
<div align="right">—Shadow Lupae, Child of Xoriat</div>
Cast out from their homes, touched by darkness, or consumed by madness and rage, the members of the Cabal of Shadows are a diverse group of troubled souls. Not all of them can be called evil, but none of the Cabal’s goals could be considered virtuous. The [[Caldyn Fragments]] speak of a time of shadow and change when a dark prince will rule. The Cabal believes that the [[Traveler]], or some agent of his, will bring this prince forth in this era and that it will rule under him.
The Cabal is made up of various cults, sects, and affiliations.
Each sect has its own organizational details and character, but all follow the mystical force known as the Calling. This force binds the various sects of the
Cabal together.
The few courageous scholars who have studied the phenomenon suspect that the
Calling is a magical aspect of the [[Traveler]] that manifests in the dreams and
unconscious minds of mortals. All Cabal
members initially experience the Calling as
a voice in their minds—an irresistible summons that draws them to [[Xen'drik]].
The quickest route to advancement within the Cabal is
to complete missions for the leader of a sect, sometimes
at the expense of other Cabal members. Such is the way
of the Calling, that the foolish and weak should perish
and the most skillful of deceivers should triumph.
It is equally important to eliminate rivals—the holy
fools of the [[Covenant|Covenant of Light]], the thuggish sellswords of the
[[Blackwheel Company]], and the bookish children of the
[[Crimson Codex]]. These impediments must be cleared
so that the Cabal can achieve its ultimate goal: acquisition of the hidden mysteries of the [[Caldyn Fragments]],
and finally the power of the [[Prophecy|Draconic Prophecy]] itself.
!! The Cabal in Stormreach
Sects within the Cabal of Shadows can be quite different indeed—a sect of chaotic [[changeling]]s can work together with a cult of plotting [[tiefling]]s,
or even form an uneasy alliance with a pack of mad [[ruinbound]] [[dwarves|dwarf]] covered with [[symbiont]]s. But the Calling unites them all
in fear and dread and hope for glory.
For the most part the Cabal is scattered throughout [[Xen'drik]], but as with any organization on the continent, the Cabal has interests in and around
[[Stormreach]].
As the name suggests, the Cabal of Shadows prefers to remain concealed in layers of darkness. Of all the societies in the city, the Cabal is the most
underground, literally and otherwise. Cabalists move
in the deepest [[catacombs and ruins|Undercity]] beneath [[Stormreach]], the darkest places where even the [[Bilge Rats]] fear to tread.
Very recently, rumors have swept through the city
underworld that the Cabal and the Rats are working
together to an unprecedented degree. Many suspect a
practical alliance has been forged. Cabalists care little
for the material trinkets the Bilge Rats covet, and the Rats in
turn have little use for the mystical artifacts collected
by their smugglers and fences.
!!! Structure
Each Cabal sect—and there are at least a dozen active in
[[Stormreach]]—has its own take on the Cabal’s mission
and how to achieve it. But four sects govern the overall direction of the Cabal through the ''Council of the Obscured'', a ruling body in which the leaders of the four largest sects preside. These sects are the ''Mourners of Yore'', the ''Defiance'', the ''Instruments of Change'', and the ''Children of [[Xoriat]]''. The council, it is said,
performs certain dark rituals below Stormreach and elsewhere in [[Xen'drik]] to channel the true voice of the
Calling and direct the actions of the Cabal as a whole.
Without these regular rituals, it is likely that the sects
would turn to savage infighting, collapsing the Cabal
from within.
One example member of the Cabal of Shadows is [[Steppin' Jaq]].
!! Mirror Images
Higher-ups in the Cabal of Shadows and the [[Covenant of Light]] are quite aware that the Calling and the Song seem to be virtually identical phenomena. Naturally, this fact disturbs both groups. Their leaders explain away such concerns by saying that their
opposite number is a twisted, invalid reflection of the true voice that only they hear clearly. But secretly they wonder why such a parallel exists, and if—unthinkable
as it would be—they really are the same in the end. And if that were true, what does the Singer (or the Caller) want from them all?
In [[Sharn]], in lieu of an embassy, the [[Valenar]] are represented by Caerlyn's Blade, a mercenary troop based in
the [[Bazaar]] of [[Middle Dura]]. When Valenar diplomat [[Daera Sorandal]] comes to the
city, she generally stays with these warriors. If adventurers need to do business with the [[Valaes Tairn]], they
should begin by speaking with [[Caerlyn Tyrell]], the commander of the Blade. If he
can't help them, he may at least know where Daera can
be found. Of course, he needs a reason to help them.
Caerlyn will shed blood in exchange for gold, but
his friendship cannot be bought—it must be earned.
A character who defeats Caerlyn in a duel or a race,
or even someone who challenges him and loses the
contest, is more likely to receive help than someone
who tries to buy information from him.
During the [[Last War]], Caerlyn's Blade earned great renown by aiding the [[Brelish|Breland]] evacuation of its western lands, riding into battle against the [[ogre]]s and [[troll]]s of [[Droaam]] with deadly skill.
A small, elite force, the Cairdal Blades are the elite soldiers and agents of the [[Sibling Kings]] of [[Aerenal]]. They consist mostly of light skirmishers, along with a
few [[wizard]]s to provide magical support. A few [[deathless]]
soldiers of legendary reputation bolster the Blades’ power.
Due to the traces of [[Phiarlan]] blood still coursing through
Aerenal, the [[Mark of Shadow]] appears once or twice in each
generation. Elves bearing this mark are always inducted
into the Blades and generally trained as spies and assassins.
Superbly trained and well equipped, the Cairdal Blades
provide [[Aerenal]] with a highly effective force that can operate
across [[Eberron]]. In theory, the Blades serve the [[Sibling Kings]],
but some believe that their first loyalty is to the [[Undying Court]]; is there a cabal within the Court carrying out plans that the living rulers of Aerenal know nothing about?
Unusually intelligent for one of his
kind, Cairngorm is a [[nabassu]] [[gargoyle]] and the lord of
[[Grimstone Keep]]. He holds the loyalty of a host of gargoyles that have long dominated the [[orc]]s and [[goblin]]s
of the region. The [[Daughters of Sora Kell]] have placed
a troop of [[troll]]s under Cairngorm’s command, but
these servants are charged with watching the wily
gargoyle as much as assisting him.
//"Some call the ability to see the connections and collisions between all things 'genius.' Others call it 'madness.' I lean toward the former."//
<div align="right">—Ohnal Caldyn</div>
Four divergent power groups—the [[Blackwheel Company]], the [[Cabal of Shadows]], the [[Covenant of Light]], and the [[Crimson Codex]]—are motivated by one event:
the discovery, collection, and translation of various pieces of the [[Draconic Prophecy]] into a single document by a [[Korranberg|Library of Korranberg]] scholar named Ohnal Caldyn.
Even as a child, Ohnal could talk to a [[dragonmark]]ed individual, or see a [[dragonshard]], or study the skies, and he would make a prediction that at first
seemed to go unfulfilled—only to be confirmed later in a different context. Taking to the life of an adventurer, Ohnal made it his mission to gather knowledge and insight into the [[Draconic Prophecy]]. He began to understand that his ability to see the shifting patterns of reality tapped into a force that flowed through [[dragon]]s, going back to the very [[first great dragons|Progenitor Dragons]] whose forms created the world.
The notes that Ohnal Caldyn recorded in his red-covered tome became known as the Caldyn Fragments. The most frequent mistake made by students
of the Prophecy is to use “Draconic Prophecy” and
“Caldyn Fragments” interchangeably. They are not
the same. The [[Draconic Prophecy]] is an ever-changing
and ephemeral force that, as far as anyone can tell,
moves like a shadow behind reality, both reflecting
and predicting the ebb and flow of all things living on,
above, and beneath [[Eberron]]. The Caldyn Fragments
are the result of Ohnal Caldyn’s efforts to capture a small part of the Prophecy in a form that could be easily manipulated, almost all of which focused on Prophecy's interactions with the shattered lands of [[Xen'drik]].
Caldyn founded the [[Crimson Codex]] to use his
insights to promote peace and stability throughout
Eberron. But as people outside the organization
learned about the existence of the Caldyn Fragments,
others scrambled to obtain copies of the work that could
supposedly predict the future. Now, each of the four
groups focused on the Caldyn Fragments tries to shape
and manipulate the predictions to its own ends.
''District Type: ''Inn district<br/>
''Buildings:'' Temples ([[Olladra]], the [[Traveler]]), average
lodging (35), poor lodging (100), average food (5),
poor food (40), upscale trades (2), average trades
(35), poor trades (70), upscale services (2), average
services (30), poor services (70)<br/>
''First Impression:'' The inns and taverns in this
district are dark and grimy. Vermin run like water
through the streets on a stormy day, including rats
that scurry into shadows and foul men and women
who study you with avaricious eyes.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Precarious]] (west); [[Gate of Gold]] (northeast); [[Oldkeep]] (north); the [[Stores]] (south); [[Ashblack]] (below); the [[Bazaar]] (above)
When [[Sharn]] first rose from the ruins of Shaarat,
Callestan (sometimes called "Hostelhome") was the center for trade and commerce.
Today, it serves as a center for illegal trade and
activity. The people who come to stay in the inns of
Callestan sacrifice comfort to avoid the watchful eyes
of the law, and many crooked deals are arranged in
these dark taverns.
Until recently, Callestan was a stronghold of
the [[Boromar Clan]]. The [[Tyrants]] and House [[Tarkanan]] both conducted business in the district, but
the Boromars collected tribute from the merchants,
and the fences, [[dreamlily]] dens, and gambling halls
all owed allegiance to the [[halfling]] crime lords. Over
the last two years, however, [[Daask]] has been posing a
significant threat to the Boromar position in Callestan. Daask soldiers have beaten and killed Boromar
operatives. Businesses with ties to the Boromars have
been threatened, robbed, or even destroyed. [[Tarkanan]] and the [[Tyrants]] have taken advantage of this
conflict to strengthen their own positions, expanding
their businesses and contacts in the region.
Most of the average services and trades, and all
of the upscale services and trades, offered in this
district are criminal in nature. Callestan is the best
place to go to find a fence, arrange for a burglary,
or acquire forged papers. All of these things can
be found elsewhere in the city, but in Callestan
you don't have to worry about the [[Watch|Sharn Watch]] taking an
interest. At this point, the district has become a crossroads for the four major criminal powers of
[[Sharn]], and one must deal with different groups for
different services. House [[Tarkanan]] usually handles
assassination and theft; forgery, deception, and
prostitution are typically tied to the [[Tyrants]]; and
smuggling, gambling, petty theft, and illegal goods
are the realm of the [[Boromar Clan]]. [[Daask]] takes the
role of a wild card that could intrude on any of these
areas, but usually deal in violent crime.
!! The Shape of Callestan
The heart of Callestan is the plaza called the
Bridge. This central square serves as an open
market and speaker's corner. It's not on a bridge;
rather, the center of the plaza contains the
wreckage of a bridge that fell from one of the
higher wards.
More recently, the Bridge has taken on
another meaning: it's the line between Boromar
territory and the wilds. Everything to the west
of the Bridge is still under Boromar dominion.
Fences, [[dreamlily]] dens, gambling holes—if it's
Westbridge, the Boromars take a cut and will act to protect it. The [[halfling]] [[Ilsa Boromar]] is the local clan leader. Eastbridge is a blend of Boromar
loyalists, [[Daask]] insurgents, refugees and veteran
soldiers driven here by war, even a small band of
[[warforged]]. Westbridge is as safe as Callestan gets,
while anything goes in Eastbridge.
Westbridge has a significant [[halfling]] population.
In Eastbridge, a group of [[goblin]]s, [[kobold]]s, and
[[gnoll]]s have taken up residence in a block of
condemned tenements known as the Kennels.
Aside from this, Callestan is incredibly diverse,
and members of any race can be found here.
Callestan is an inner district, which means
that it's largely enclosed in one of the massive
core towers of [[Dura]] Quarter. However, it's large
enough that it extends out to the walls of the
tower. Many people live in or on the walls, in
tenements or shops carved into the thick stone.
!! Noteworthy Locations
* The [[Anvil]]. This fading [[Ghallanda]] inn struggles to maintain its poor to modest quality. It's known to be under the protection of the [[Boromar Clan]], which makes it one of the safest establishments in [[Lower Dura]].
* The [[Crooked Mirror]]. A curious tavern owned by a family of [[changeling]]s, the Crooked Mirror changes its appearance and theme every week. It's rumored to be connected to the [[Tyrants]].
* The [[Silvermist Theater]]. A remnant of Callestan's glory days, this place is a shadow of the grand establishment it once was. The current owners are known for staging bizarre events at the Silvermist. Since the [[Sharn Watch]] stays out of Callestan, anything can happen here.
* The ''Butcher's'' is a combination butcher shop and bar in Eastbridge. It's popular with the local [[gnoll]]s and is the best place to find Daask soldiers, though not all monsters in the region have ties to Daask.
* The ''General'' is a headless statue in a small square in Eastbridge. It's hundreds of years old and no one actually knows who it represents. The most destitute inhabitants of the district often sleep around the General.
You attempt to suppress strong emotions in a group of people. Each [[humanoid]] in a 20-foot-radius sphere centered on a point you choose within 60 feet is affected by this enchantment, if they cannot resist it or choose not to resist it. The effect lasts up to one minute, or until your concentration breaks.
You can suppress any effect causing a target to be charmed or frightened. When this spell ends, any suppressed effect resumes, provided that its duration has not expired in the meantime.
Alternatively, you can make a target indifferent about creatures of your choice that it is hostile toward. This indifference ends if the target is attacked or harmed by a spell or if it witnesses any of its friends being harmed. When the spell ends, the creature becomes hostile again, unless the DM rules otherwise.
Calynden d'Lyrandar oversees [[Falconer's Spire]], the House [[Lyrandar]] [[enclave]] in [[Stormreach]], and has served in this position since the end of the [[Last War]]. In the past, Calynden served as a seneschal of [[Lyrandar]]. Some say
that Baron [[Esravash|Esravash d'Lyrandar]] sent Calynden to [[Stormreach]]
because she disliked the old man’s cruel and calculating ways; others believe that Esravash is more cunning than she appears and that she sent Calynden
to extend her domain. Within Lyrandar, Calynden is known as "the Kraken" because he is deadly and powerful but never seen until he strikes. A masterful negotiator, Calynden specialized in weather extortion during his time in [[Khorvaire]]—bargaining with
generals or farmers at times when the weather played
a vital role, offering Lyrandar’s assurance that the
weather would go their way—with the clear implication
that it could be made otherwise. It’s possible that he
is continuing this practice in [[Stormreach]]; someone
who can control the weather is a powerful force in a
port city.
Whether the assignment was intended as punishment or opportunity, many significant events have occurred since Calynden’s arrival. Foremost among
these is the mysterious death of [[Harbor Lord Graden Wylkes|Wylkes family]] and the ascension of his son [[Jonas|Jonas Wylkes]]. The new Harbor Lord is far more pliable than his predecessor. Calynden showered young Jonas with gifts and galas, and in the process renegotiated the arrangements made with prior lords. Having finally secured the rights to the eastern peninsula, Lyrandar is in the process of building its own shipyard. Once complete, this facility could allow Lyrandar a level of freedom unprecedented under the [[Korth Edicts]]. Calynden also hopes to wrest the secrets of [[elemental binding]]
from the depths of [[Xen'drik]] to build new [[galleon|elemental galleon]]s
without relying on [[Cannith]] or [[Zilargo]]; however, this plan is only a dream at present.
House [[Lyrandar]] has spent decades cultivating relations with the [[sahuagin]] of the [[Eternal Dominion]] in order to ensure safe passage across the [[Thunder Sea]]. Dominion emissaries are often seen in the house’s harbor facilities, and Calynden frequently dines with [[Ta'har]] priests, conversing with them in their own
tongue. Most likely, this alliance is simply a matter of
business—something that gives [[Lyrandar]] an edge over
independent captains. However, some in the house say
that Calynden is one of the leaders of the [[Storm Front]],
a cult that ascribes the powers of the [[Mark of Storm]]
to the [[Devourer]] and that advocates the conquest of
[[Khorvaire]]. If this belief is true, Calynden’s hospitality
might hide a dark purpose.
These small [[layer]]s of [[Fernia]] reflect the comfort fire can offer. A campfire
layer can be a literal campfire, a lonely light out in the darkest
wilderness. Another campfire layer is an inn called the First
Hearth, where the [[angel]]ic barkeep Ashe offers warm drinks
around the fireplace from which the inn takes its name. Campfire
layers are safe havens, and a perfect place for travelers to rest.
This slender taper is dedicated to a deity and is imbued with the essence of that deity's domains and moral alignment.
The candle's magic is activated when the candle is lit. After burning for a total of 4 hours, the candle is destroyed. While lit, the candle sheds dim light in a 30-foot radius. Any creature within that light whose moral alignment matches that of the candle or is performing an action associated with that deity (e.g. [[Dol Dorn]] and fighting, [[Onatar]] and crafting) gains advantage on that action. In addition, a wielder of [[divine magic]] who is dedicated to that deity can cast their spells as if they were one [[tier|spell tier]] lower.
Alternatively, when you light the candle for the first time, you can cast the [[gate]] spell with it. Doing so destroys the candle.
The flame of this candle is not extinguished when immersed in water. It gives off light and heat like a normal candle.
The [[Thrane]]-dominated [[Embers]] ward in [[Stormreach]] is short on places to
drink, but it has plenty of places to eat. The Candlelight is
one of the best, specializing in Thrane desserts. It has private rooms for customers who have a little spare coin and a desire to discuss things away from curious ears. These
rooms are often used by Thranes harboring secrets, either
shameful deeds from the [[Last War]] or heretical beliefs
they feel they cannot share with their neighbors.
''Leader:'' Cannith East, [[Zorlan d'Cannith]]; Cannith West, [[Jorlanna d'Cannith]]; Cannith South, [[Merrix d'Cannith]]<br/>
''Headquarters:'' Cannith East, [[Korth Enclave]] ([[Karrnath]]); Cannith West, [[Aundair Enclave]] (near [[Fairhaven]], [[Aundair]]); Cannith South, [[Cannith Tower|Cannith Enclave (Dragon Towers)]] ([[Sharn]], [[Breland]])<br/>
''Dragonmark:'' [[Mark of Making]]
//My house built the modern world. [[Orien]] may drive the [[lightning rail]], but it's Cannith who builds the cars and lays the stones it travels on. Cannith makes the [[everbright lantern]]s hold the night at bay. Smith, carpenter, [[alchemist]]—the best all carry my seal.//
<div align="right">—Baron Merrix d'Cannith</div>
House Cannith dominates all forms of manufacturing,
both mystical and mundane. [[Gorgon|gorgon]]-marked Cannith
forgeholds use streamlined forms of production to
quickly produce common goods. Even independent
artisans often learn their trade at Cannith academies
and adhere to Cannith standards. The House of Making
builds the tools the other houses rely upon, and it has
always been the unspoken leader of the [[Twelve]].
The [[Last War]] was a time of great opportunity for
Cannith. Every nation wanted weapons and [[warforged]],
along with mundane arms and armor. The war raised
the house up, and then tore it down. House Cannith was
based in [[Cyre]], and the [[Mourning]] destroyed the house
leadership and key facilities. Now three barons jockey
to fill the leadership vacuum: the [[alchemist]] [[Jorlanna|Jorlanna d'Cannith]] of
[[Fairhaven]], weaponsmith [[Zorlan|Zorlan d'Cannith]] of [[Korth]], and [[Merrix|Merrix d'Cannith]] of [[Sharn]], innovator of [[warforged]]. It remains to be seen
whether one of these leaders will unite the house, or if it
will shatter under the strain. If you're an heir of House
Cannith, you should decide which of these barons you
serve or if you have other ideas about the house's future.
!! History of House {{!!title}}
The [[Mark of Making]] first appeared among the [[human]] traveling tinkers and artisans of the Cannith clan of [[Cyre]] almost 2,500 years ago. Between the magic of the mark and its members’ natural inventiveness, Clan Cannith steadily increased its power and influence, creating its own areas of jurisdiction throughout Cyre and central [[Khorvaire]]. An active and enthusiastic participant in the [[War of the Mark]], House Cannith found itself one of the most powerful of the [[dragonmarked house]]s after the war.
House Cannith used that power to forge partnerships. At the end of the
[[War of the Mark]], House Cannith
worked with the other [[dragonmarked house]]s to establish the
[[Twelve]]. They allied with the [[elemental]]
binders of [[Zilargo]] and the scions of
House [[Lyrandar]] to create [[elemental ships|elemental galleon]] to sail Eberron’s seas. Emboldened by that success, House Cannith’s [[magewright]]s collaborated with House [[Orien]] on the [[lightning rail]]. House Cannith also helped
to establish the network of [[message stations|speaking stone]] that
House [[Sivis]] uses to facilitate communication across
[[Khorvaire]].
!!! The Last War
When the [[Last War]] began, House
Cannith found itself acting as arms dealer to all five
of the combatant nations, a position that allowed it to
amass fantastic wealth and an unparalleled degree of
influence among the [[Five Nations]]. But selling weapons and armor was only the beginning. In 965 YK, the first [[warforged]] soldiers marched out of Cannith’s
forgehold at [[Whitehearth]], and soon House Cannith was supplying not only weapons but also the soldiers that wielded them.
House Cannith’s unbounded prosperity lasted
almost thirty years. But in a single moment on the
Day of [[Mourning]], House Cannith lost its leader,
Baron [[Starrin d'Cannith]], many of its [[dragonmark]]ed heirs, and the [[Whitehearth]] forgehold. The [[Treaty of Thronehold]] made matters worse for the house,
because it set the [[warforged]] free and banned House Cannith from making more. With the [[Five Nations]] at peace, Cannith’s role as arms dealer to the world
diminished.
These recent setbacks have made House Cannith’s leaders more determined than ever before to reverse the house’s fortunes, and have highlighted the rivalry among the house’s leadership. At any given moment, Cannith’s inventors are sequestered in secret laboratories across [[Khorvaire]], trying to create something even more dramatically world-changing than the towers of [[Sharn]], the [[lightning rail]], or the [[warforged]].
Since 994 YK, Cannith has been a house divided. So
many of [[Starrin|Starrin d'Cannith]]’s heirs and the house’s elders died on
the Day of [[Mourning]] that not only was it unclear who
would succeed Starrin, but in the weeks and months
after the disaster, House Cannith couldn’t gather
together enough leaders to enable the succession to
be determined. Eventually three rivals emerged, each
having only a distant link to Starrin d’Cannith. The
contenders claim roughly equal support within the
house, so the matter cannot be resolved through consensus. Each would-be baron is involved in multiple plots against the other two.
!! Three Canniths
[[Merrix|Merrix d'Cannith]], [[Jorlanna|Jorlanna d'Cannith]], and [[Zorlan|Zorlan d'Cannith]] are each determined to become the next leader of House Cannith. Between
them, they have divided the lords seneschal so evenly that
a new baron will likely never be chosen. As it stands,
the divided leadership makes it increasingly likely that
only death or disaster will change the balance of power.
!!! Cannith South
Under [[Merrix d'Cannith]], Cannith South is considered
by many to be the closest replacement for [[Whitehearth]]
the house will ever see. With his [[enclave]] concealing the
last Cannith [[creation forge]], Merrix rules his house’s
southern interests (including expeditions to [[Xen'drik]]
and the [[Mournland]]) with an iron fist.
Cannith South workshops and enclaves dot [[Breland]],
[[Zilargo]], and even [[Darguun]], making Merrix the most
expansion-minded leader House Cannith has seen in
an age. Some say he plans to open facilities in [[Xen'drik]]
to support his expeditions and interests there. Merrix has already secured
holdings to expand the enclave in [[Stormreach]]. Only
Merrix himself knows that he plans not just a workshop,
but a second Cannith [[creation forge]]—outside [[Khorvaire]],
where the [[Treaty of Thronehold]] has no sway.
The heirs of Cannith South are driven to achieve—advancement is dependent on how closely one’s ideals and ambitions match those of Merrix. Worship of the [[Traveler]]
in his [[artificer]] aspect has taken a slow hold among the members of Cannith South. This affiliation with one of the [[Dark Six]] troubles members of Cannith West in particular, but Merrix shows no sign of sharing their concern.
!!! Cannith West
The relationship between [[Aundair]] and [[Cyre]] was close
during the [[Last War]]. When [[Jorlanna d'Cannith]] was sent
away in disgrace for her affair with a House [[Deneith]] heir, she went to Aundair, living there in seclusion for a year. Even after her exile ended, she soon
returned to hone her diplomatic talents. Jorlanna negotiated house access to the [[Eldeen Reaches]] through the [[Wardens of the Wood]], allowing Cannith sages to study ruins and magical locales under the [[druid]]s’ supervision.
Members of Cannith West are expected to be socially
adept. In [[Aundair]], they engage in scholarly pursuits, especially those connected to magical sites in western [[Khorvaire]]. They have more contact with other [[dragonmarked house]]s and local nobility than other Cannith branches do.
Jorlanna plans to rebuild the goodwill of the [[Five Nations]] toward the house and make a greater investment in the [[Twelve]], with hopes of seeing it regain its power. Since the Twelve is headquartered in [[Korth]], it vexes [[Zorlan|Zorlan d'Cannith]] that
Jorlanna’s status within the organization exceeds his.
!!! Cannith East
Though [[Zorlan d'Cannith]] grew up in [[Cyre]],
he traveled to [[Karrnath]] as a house
emissary along with the first [[warforged]] ordered by that nation. He
took up residence there, advising
[[Kaius II|Kaius ir'Wynarn II]] and strengthening his
house’s influence. He used profitable arrangements with the [[Mror Holds]] and
the [[Lhazaar Principalities]] to fill his coffers
and make himself an advisor to the Gorgon, [[Starrin|Starrin d'Cannith]].
Where Cannith once had only an outpost in [[Karrnath]], Zorlan’s leadership has seen the house’s wealth and prestige there grow. Before the Day of [[Mourning]], many
Cannith heirs were sent to Karrnath to study administration and diplomacy, and to receive martial instruction from [[Rekkenmark Academy]]. This training ended with
the fracture of the Cannith leadership, but many heirs
still proudly recall their “Karrnath years.”
Though the steady stream of [[warforged]] into [[Karrnath]] has ceased, Cannith East still has expertise in siege warfare, and house members serve as advisors to
Karrn generals.
The Karrnathi culture has left its mark on Cannith East. Members take a callous view of mortality, viewing the [[undead|Karrnathi undead]] as little more than the necromantic equivalent of [[warforged]]. Though invention is Cannith East’s strength, clandestine research at its [[enclave]] seeks to create a new
form of construct [[undead]], animated
with eldritch power and a bound,
ghostly intelligence.
Living among the Karrns has led many of Cannith to become followers of the [[Blood of Vol]]. [[Zorlan|Zorlan d'Cannith]] is a devout member, even aspiring to a position in the cult’s lay clergy and personally conducting services for house members on special occasions.
!! Guilds and Organizations
The house has two [[guild|trade guild]]s that are responsible for the lion’s share of Cannith’s postwar profits.
* the [[Fabricators Guild]]
* the [[Tinkers Guild]]
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
Cannith Enclave inhabits
the whole of Cannith Tower. In both [[Highest Towers]]
([[Upper Central]]) and [[Granite Halls]] ([[Lower Central]]), members of House [[Cannith]]'s [[Fabricators Guild]] operate artisans' shops in the tower. [[Merrix d'Cannith]] leads House Cannith's [[Sharn]] [[enclave]].
The tower extends down into the [[Cannith Forgehold]] in [[Ashblack]], Merrix's heavily warded personal domain.
House [[Cannith]] played a major role in the development of [[Sharn]], and as the
towers of the city rose up into the sky, the Lords of
Cannith sunk their roots into the ground. The [[enclave|Cannith Enclave (Dragon Towers)]]
in [[Dragon Towers]] is used for trade negotiations and
diplomatic purposes, but the Forgehold is the heart of
House Cannith. This subterranean fortress includes
a wide range of forges, alchemical workshops, and
mystical facilities. It is an [[artificer]]'s dream, and
[[Merrix d'Cannith]] spends most of his time there.
The Forgehold has many secrets. The first is a
shrine to the [[Traveler]], who was revered by the early
[[Cannith]] tinkers. The greatest secret is hidden even
from other members of the house. In an ancient
chamber hidden behind [[illusion]]s and arcane seals,
Merrix has preserved one of the [[creation forge]]s used to
produce the [[warforged]]. This chamber is largely operated by warforged, although Merrix has confided in a few of his closest associates.
The Forgehold is one of the finest fortresses built
by the House of Making. It is designed to withstand both
magical and physical assaults, and a thief or spy must
overcome a wide range of deadly traps to even approach
its secrets. A force of warforged soldiers and [[Sharn]]'s five
members of the Darkwood Watch, the elite wand adepts
of House Cannith, protect the place. The existence of
the [[creation forge]] is a terrible secret—but not one that is
likely to be revealed any time in the near future.
Different versions of these small tokens exist, each with a different single-use effect. Creatures with a [[Mark of Making]] can activate the effect of the token.
//''Anchor.''// You can touch the token to a
boat, ship, or other vehicle. For the next 24 hours, the vessel can't be
moved by any means. Touching the token to the vessel
again ends the effect. When the effect ends, the token
disappears.
//''Bird.''// You can toss the token 5 feet
into the air. The token disappears and an enormous,
multicolored bird with a 200-foot wingspan takes its place. The bird obeys
your simple commands and can't attack. It can carry
up to 500 pounds while flying at its maximum speed
(16 miles an hour for a maximum of 144 miles per day,
with a one-hour rest for every 3 hours of flying), or 1,000 pounds at half that speed. The bird disappears after flying its maximum distance for a day or if it is incapacitated. You can dismiss the bird at will.
//''Fan.''// If you are on a boat or ship, you can toss the token up to 10 feet in the air. The token disappears, and a giant flapping fan takes its place. The
fan floats and creates a wind strong enough to fill the
sails of one ship, increasing its speed by 5 miles per
hour for 8 hours. You can dismiss the fan at will.
//''Swan Boat.''// You can touch the token
to a body of water at least 60 feet in diameter. The token
disappears, and a 50-foot-long, 20-foot-wide boat shaped
like a swan takes its place. The boat is self-propelled
and moves across water at a speed of 6 miles per hour.
While on the boat, you can command it
to move or to turn up to 90 degrees. The boat can carry
up to thirty-two humanoid-sized or smaller creatures. The boat remains for 24
hours and then disappears. You can dismiss the boat at will.
//''Tree.''// You must be outdoors to use this token. You
can touch it to an unoccupied space
on the ground. The token disappears, and in its place
a nonmagical oak tree springs into existence. The tree
is 60 feet tall and has a 5-foot-diameter trunk, and its
branches at the top spread out in a 20-foot radius.
//''Whip.''// You can throw the token to a
point within 10 feet of you. The token disappears, and a
floating whip takes its place. You can then mentally control the whip, directing it to attack a creature within 10 feet of the whip. The whip deals magical force damage. You can continue to direct the whip to attack and fly around. The whip disappears after 1 hour, when you dismiss it, or when you are incapacitated or die.
While wearing this cap underwater, you can speak its command word to create a bubble of air around your head. It allows you to breathe normally underwater. This bubble stays with you until you speak the command word again, the cap is removed, or you are no longer underwater.
Cape Far is a peninsula in the mainland [[Lhazaar Principalities]], [[Khorvaire]], that extends into the [[Lhazaar Sea]], forming the boundaries of several smaller bodies of water including the [[Eel Bay]] and the [[Far Strait]]. The island prison of [[Dreadhold]] is located near the tip of Cape Far.
Capshaw the Crier is engaged in an endless—and largely ignored—struggle on behalf of
[[Stormreach]]’s poor people. From his shack near the
[[Leaky Dinghy]], Capshaw has long tried to undermine
the power of the [[Storm Lords]] and the [[dragonmarked house]]s, through propaganda leaflets and less-than-flattering tales told by his self-appointed town criers. As more visitors listen to them, Capshaw might lose his
status as a mere nuisance and become a serious concern
to the powers of [[Stormreach]]. He and his criers might soon be
in for trouble, something a “champion of the people”
like Capshaw would welcome.
This candle is affixed to the skeletal hand of a dead
necromancer. When lit, the candle sheds bright light in a 5-foot radius, and dim
light for an additional 5 feet. The light lasts 1 hour and is
''only visible to you''.
Once you have used this property, it can't be used again
until the next dawn.
Carrion crawlers are terrifying monstrosities resembling giant, toothy centipedes between three and four feet long. Thin tentacles protrude from their heads, which exude a poison which paralyzes their prey on contact. Carrion crawlers scour putrid flesh from carcasses and gobble the slimy bones that remain. They aggressively attack any creature that trespasses on their territory or disturbs their feasting.
//''Carrion Eaters.''// A carrion crawler follows the scent of death to its food, but it prefers not to compete with other scavengers. These foul creatures thus hunker down in territories where death is plentiful and other carrion eaters have limited mobility. Caves and passages of [[Khyber]], sewers, dungeons, and forested marshes are their favored lairs, but carrion crawlers are also sometimes drawn to battlefields and cemeteries.
A carrion crawler roams on the hunt, its tentacles probing the air for the scent of blood or decay. In tunnels or ruins, carrion crawlers scurry across the ceiling as they move toward food. In this way, they avoid contact with [[ooze]]s, [[otyugh]]s, and other dangerous inhabitants of the darkness, even as they surprise potential meals that don't think to look up.
//''Patient Predators.''// Whether in subterranean darkness or while hunting at night, light signals a potential meal. A carrion crawler might follow a light source from a distance for hours, hoping to pick up the scent of blood. Despite their great size, carrion crawlers can also easily set up ambushes by waiting around blind corners for prey to come to them.
When facing potential prey or intruders, a carrion crawler lets its poison do the work. Once a victim goes rigid with paralysis, the carrion crawler wraps it with its tentacles and drags it away to a high ledge or isolated passageway, where it can be killed safely. The monster then resumes patrolling its territory while waiting for its meal to ripen.
This poison must be harvested from a dead or incapacitated [[carrion crawler]]. A creature that makes physical contact with this poison and can't resist its effects is poisoned for up to 1 minute. The poisoned creature is paralyzed, unable to move or speak.
Against all odds and expectations, clans of [[human]]s and [[tiefling]]s make their homes in the [[Demon Wastes]]. They are the descendants of settlers who crossed the sea from [[Sarlona]]. Long years in proximity to the evil suffusing this land have left them corrupted—altered in body and mind to become the savage servants of the ancient [[overlord]]s. The Carrion Tribes lead nomadic lives, hunting and preying on each other in a state of perpetual warfare. Resources are scarce, and many tribes have turned to cannibalism to survive. Many tribes practice ritual scarring and mutilation along with varieties of [[cosmetic transmutation]] to give themselves [[fiend]]ish features.
The tribes often clash with outposts of [[dragonmarked house]]s as well as the [[Ghaash'kala]] of the [[Labyrinth]].
!! Carrion Tribes
<<list-links-article "[tag{!!title}sort[title]]">>
By the time he was seventeen, Cartha was an assassin
for hire, murdering ship hands and wharfmasters in
the [[Stormreach]] [[Harbor]] for 2c each. Already a natural
killer and a valued member of the [[Bilge Rats]], Cartha’s
natural tendencies were sharply enhanced when he
was infected with [[lycanthropy|lycanthrope]]. Even though he is an afflicted wererat rather than a natural lycanthrope,
his bite is incredibly potent and capable of infecting
others, and he quickly used his newfound abilities to
dominate the Rats.
Few outside the gang know Cartha is a wererat, but
many suspect he is no mere human. An oft-recounted
tale in the [[Harbor]] concerns a night when eight members of the now-defunct Stingrays ambushed Cartha. He left all eight dead, three with their throats torn
out. Cartha emerged from the fray without a scratch on him.
Cartha typically wears a tattered gray cloak and cowl, stained tunic, black sash, at least eight daggers, and a plain ivory ring—a trophy from his first hit.
Cask is a [[changeling]] [[artificer]] allied with [[Daask]]. His specialty is [[alchemy|alchemist]], and he provides
Daask with [[wrath]], [[noxious smokestick]]s, and other alchemical weapons. More importantly, he plays a key role in the [[dragon's blood]] trade, selling from
his [[shop|Wounded Dragon]]. Dragon's blood is smuggled into [[Sharn]] in
an inert, unrecognizable solid form. Cask prepares
a special salve; when this is applied to the dragon's
blood, it restores the drug to its proper consistency.
Cask cannot create dragon's blood on his own, and
he does not know the ingredients of the drug.
Caskar Halavik ([[halfling]] councilor for [[Middle Menthis]]) was born in the [[Talenta Plains]]. When he first came to Sharn, he worked as an enforcer for the [[Boromar Clan]]. He was also a remarkably skilled [[clawfoot]] racer, and in time he became a celebrity in [[Little Plains]]. [[Saidan Boromar]] helped him transform his fame into political cachet, eventually earning him a seat on the Council. Caskar enjoys the prestige of his position, but he prefers to leave political maneuvering on behalf of the Boromars to [[Ilyra Boromar]] and [[Bestan ir'Tonn]].
''District Type:'' Shops<br/>
''Buildings:'' Temple ([[Onatar]]), shrine ([[Gatekeepers]]),
average lodging (15), average food (40), exotic trades
(15), upscale trades (50), average trades (140), poor
trades (40), upscale services (10), average services
(40), poor services (8)<br/>
''First Impression:'' Citizens rush by with their arms
full of packages in this shop district. There is a definite foreign element to some of the architecture and
the goods for sale, not to mention the people.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Warden Towers]] (north); [[Everbright]] (northeast); [[Rattlestone]] (bridge, west); [[Kenton]] (bridge, south); [[Downstairs]] (below); [[Seventh Tower]] (above)
Cassan Bridge is a fairly unremarkable shopping
district, unique only in the small community of
human immigrants from the [[Shadow Marches]] who
make their homes and livings here. Several importers bring Marcher crafts into [[Sharn]], and specialty
groceries carry ingredients favored in Marcher cooking. Although no buildings need be built on
stilts in [[Middle Menthis]], some of the architecture
of Cassan Bridge echoes the styles of the Marches
as well.
Cassia Lyrriman Dal is a [[gnome]] priestess of [[Aureon]] in [[Sharn]] who works at the [[Zilargo Embassy|Zilargo Embassy (Sharn)]]. Like her companion Holas, she is a supernatural spy, using [[augury]], [[scrying]], [[speak with dead]] and other [[spell]]s to help [[Doran Del Doras]] gather information and formulate plans. She is fascinated by all religions, and whenever she encounters another
adept or priest she tries to start a discussion about
her own theories about the nature of the gods and
the foundation of [[divine magic]].
You can doff this armor in an instant.
Castar ([[gnome]]) is the intelligence expert of the [[Boromar Clan]] and
[[Saidan|Saidan Boromar]]'s chief advisor. He is the lone non-[[halfling]] in the Boromars' inner circle. Saidan expects Castar to
come up with a solution to the problem of [[Daask]], but so far none of his ideas have worked, and the gnome worries he may find himself at the bottom of
the [[Dagger River]] if he doesn't come up with an
idea soon.
The troops of the would-be conqueror [[Mishva Garodya Stormhorn]] gather at Castle Garodya, a sturdy stronghold in southwestern Q'barra. Mishva’s army is made up primarily of young [[dragonborn]] eager to prove their worth. Subordinate leaders assign these members to units based on skill and desire. Castle Garodya has a large body
of soldiers, arcanists, priests, and support personnel.
[[Mishva|Mishva Garodya Stormhorn]]’s fortress is still incomplete, and her army is
relatively small. However, she garners more power and support among the [[Q'barra]]n [[dragonborn]] each day. With the power of [[Argonnessen]] behind her, control of [[Ka'rhashan]] is within her grasp.
The [[Forgotten Prince]] dwells in the Castle of Lost Things in
[[Thelanis]]. The castle seems to be its own distinct [[layer]] of
Thelanis; if it exists in some other realm, its location has been
forgotten. There are no doors that allow exit from the castle,
and all windows are sealed and show scenes of places that
have been forgotten. The only way to enter or leave the castle
is through magic, whether by [[spell]], through a [[manifest zone]],
or through a portal. Such portals can take many forms, such as
a simple burlap sack; normal people forget the location of a portal within an hour of discovering it, though player characters and other remarkable people could be
immune to this effect. It's possible characters could discover
that what they assumed to be a normal [[bag of holding]] can
serve as a portal to the Castle of Lost Things.
//“Four cataclysms ended four [[ages|era]]. What eldritch secrets were lost? And what sun will rise, a bucketful of blood, to wash away the [[Current Age|Modern Age]]?”//
<div align="right">—Ordla-esth, cataclysm mage, writing in The //T’gorn Variorum//</div>
Cataclysm mages seek after [[Eberron]]’s most powerful mysteries, long lost to the past. [[Storm giant|storm giant]] cabals of the [[Eshtarn Empire]] tearing lightning from the sky against the advancing tide of [[quori]], the last [[Dhakaan]]i emperor to sound [[Ghaal'duur]] the Mighty Dirge against the flesh-shapers of [[Xoriat]], the [[couatl]]s who sang down the walls of [[Ashtakala]] even as they were lost in the whirlpool of their own magic—within the destructive ends of all these ages are the secrets sought out by the cataclysm mage.
Intense arcane study and an obsession with ancient history, lost empires, and the [[Draconic Prophecy]] are the keys to becoming a cataclysm mage. As they uncover the secrets of each past age, starting with the [[Age of Monsters]] and working backward in time, they gain insights and power no other mortal creature has access to.
Endless tunnels of gray stone wind through the Catacombs, the
destination of [[humanoid]] spirits. Some passages are painfully
tight, while others widen into grand halls with ceilings lost in
darkness. The Dead are everywhere, [[shade]]s pleading for release,
[[husk]]s keening in the shadows. The chambers of the Catacombs
might contain vast wells filled with moaning mist, or [[nalfeshnee]]s
herding [[shade]]s into pens and scraping [[lemure]]s off the walls.
The Catacombs may be larger than [[Khorvaire]], or even
[[Eberron]] itself. A mortal could wander forever through these
winding tunnels—at least until they're consumed by ennui.
However, there are junction points that transcend the logic of
distance. If one knows the right symbols to follow, they can
cross the vastness of the Catacombs quickly or pass to other
layers—perhaps in search of a shade to rescue.
[[Sharn]]'s most important temple to the [[Silver Flame]], named in honor of the church's role in cleansing [[Khorvaire]]
of the stain of evil, ironically may also be its most
corrupt holy institution. The Archierophant of
the region, [[Ythana Morr]], helps foster this corruption, while many of the
clergy and other staff simply covet privilege, power,
and material wealth. The Archierophant, however,
actively cooperates with the [[rakshasa]] [[Zathara]], who
lives in the [[Cogs]] district of [[Khyber's Gate]].
No matter where one stands in [[Flamekeep]], the Grand Cathedral of the [[Silver Flame]] is visible. Situated at the highest point of the city, the massive cathedral sports alabaster walls and flying buttresses fitted with brilliant stained glass
windows depicting religious and historical scenes.
Icons, angelic beings, and gargoyles decorate the
exterior.
Inside, the walls are black marble inlaid with silver patterns, testifying to the church’s wealth and power. The nave can hold thousands at a time, with pews spreading out among the supporting pillars, each of the four transepts, and balconies hanging just
below the clerestory. A raised area before the presbytery can hold a choir of one thousand children, each selected for their ringing voice.
Beyond the presbytery, behind two enormous wooden doors, is the Chamber of the Flame. This place is where the holy light of the [[Silver Flame]] burns
and where the [[Keeper of the Flame]] comes to commune with the [[Voice of the Flame|Tira Miron]] upon the mosaic encircling the fiery pool.
The cathedral also has cloisters in the rock below. Labyrinthine passages lead to cells where high-ranking priests attending the cathedral live, pray, and reflect on their devotion. The lower levels also contain the offices of the [[Council of Cardinals]], a garrison for the church’s divine warriors, and the [[Keeper of the Flame]]’s personal apartments.
Following the spread of the Church of the [[Silver Flame]] in
[[Thrane]], the Cathedral on the Hill (also called the Cathedral of the [[Sovereign Host]], located in [[Metrol]], [[Cyre]]) became the primary seat of Vassal devotion in [[Galifar]]. Many of the rulers of Galifar would build an addition to the Cathedral as a way of
showing their piety. By the reign of King [[Jarot|Jarot ir'Wynarn]], it was a wonder
indeed. Nine colossal statues encircled the temple, illusory displays within depicted scenes from the faith, and it held a vast collection of relics and artifacts. Since the [[Mourning]], the fate of the Cathedral and
its treasures remains unknown.
The cathier, a small, harmless herbivore native to the [[Eldeen Reaches]] and similar to a hare, has a magical ability to camouflage itself. Its spleen aids in the casting of [[illusion]] [[spell]]s and the creation of [[potion]]s that have illusory effects.
This spell awakens the sense of mortality in the target creature, causing it to become deathly terrified. The spellcaster chooses a creature (but not an [[undead]] or [[construct]]) within 60 feet; if the creature lacks resolve, it will be filled with fear for up to a minute.
Cavallah is a disciplined [[oni]] and the current leader of the [[Daask]] cell in [[Sharn]]. She is the mastermind of the organization's machinations against the [[Boromar Clan]], a scholar obsessed with studying Sharn's [[manifest zone]], and a devoted servant of [[Sora Katra]]. The oni wears a [[hag eye]] that enables Sora Katra to both see and hear what occurs in her presence.
Also known as the Stonelands, this is
a rocky region surrounding the ruins of an [[ancient|Dhakaan]] [[hobgoblin]] metropolis. The city was abandoned after the [[daelkyr]]
released a horde of [[basilisk]]s, [[gorgon]]s, and [[cockatrice]]s from
the depths of [[Khyber]]. The streets of the ruined city are
still filled with petrified [[goblin]]s and [[hobgoblin]]s, although
most of these statues have been shattered or eroded by
the ravages of time. The monsters that ravaged the city in
ancient times still dominate the region, and other strange
anomalies are found here, such as petrification-resistant
[[gargoyle]]s and places where trees and other vegetation have
become petrified.
The passage to [[Khyber]] near the center of the ruined
city remains open, even after nine thousand years. Two
hundred twenty years ago (778 YK), a band of [[medusa]]s
came up from [[Khyber]] and took possession of Cazhaak
Draal, renovating a few of the buildings for their own
use. The medusas have domesticated many of the other
creatures in the region and have slowly expanded their
power base. The city's physical size is far larger than
that of the [[Great Crag]], but the medusas inhabit only a
small part of it, and their individual lairs are often some distance apart. Over the years, they have been exploring the ruins and searching for treasures left behind by
the [[goblinoid]]s. However, other beasts have come from
[[Khyber]] as well, and there are things hidden in Cazhaak
Draal that even the medusas fear. Queen Sheshka currently leads the medusa community, styling herself as
the [[Queen of Stone]].
Celestials are [[immortal]] creatures of good formed in the expanse of [[Siberys]], or in another plane such as [[Shavarath]], [[Irian]], or [[Syrania]]. Celestials cannot be destroyed; unless they are bound, they will always reform some time later after being killed.
Included among their number are [[angel]]s, [[couatl]]s, and [[pegasi|pegasus]].
The Celestial Vista
is the most well known of [[Skyway]]'s elegant restaurants, and the most in demand. The maitre d'hotel
cheerfully turns away visitors who have no reservations, and even those with reservations can be forced
to wait an hour or more to be seated. The menu is
similar to that of the [[Azure Gateway]], but offers some
less exotic fare as well to accommodate throngs of
not-very-adventurous tourists who come for the view
rather than the food. The owner of the Celestial
Vista is [[Evix ir'Marasha]], who is also Skyway's representative on the
[[City Council|Sharn Council]].
Celyria ir'Tain, the current matriarch of the
[[Sharn]] branch of the [[family|ir'Tain family]], is the queen of high
society, and her monthly [[gala|Tain Gala]]s at Tain Manor define
the social order within the city. In addition to the
great families of Sharn, Lady ir'Tain always invites
a handful of more exotic people to entertain her
guests—artists, poets, adventurers, or oddities such
as [[Flamewind]]. An adventurer known to be a friend
of Lady ir'Tain finds that many closed doors suddenly open, and may receive invitations to other events or other forms of special consideration.
''District Type:'' Average residential<br/>
''Buildings:'' Average residences (280), poor
residences (80)<br/>
''First Impression:'' Orderly collections of townhouses
ring the towers of this district.<br/>
''Social Class:'' Lower middle class<br/>
''Neighbors:'' [[Forgelight Towers]] (northwest); [[Torchfire]] (northeast); [[Firelight]] (southeast); [[Downstairs]] (southwest); [[Granite Halls]] (bridge, north); [[Foundation]] (bridge, south); [[Everbright]] (above)
Center Bridge tries to be a quiet residential district,
but with [[Torchfire]] and [[Firelight]] on one side and
[[Downstairs]] on the other it can't help but smolder
with seedy activity. Its residents include a number of
people associated with [[Morgrave University]], since it
is located directly below the [[University District]] and
it offers much cheaper housing than can be found
in the ward above. In fact, groups of students share
inexpensive housing here, so close to the illicit
pleasures of [[Lower Menthis]], and are responsible for
much of the rowdiness that sometimes disturbs the
peace of Center Bridge.
The power and wealth of [[Sharn]] are concentrated in Central Plateau. Whether you're looking to deal with powerful merchants, [[city councilor|Sharn Council]]s, [[dragonmarked|dragonmarked house]] barons, or the ambassadors of other nations, Central Plateau is the place where big deals are made.
* [[Upper Central]]
* [[Middle Central]]
* [[Lower Central]]
Central Plateau has bridges to [[Northedge]] and [[Menthis Plateau]]. It is not directly connected to [[Dura]] or [[Tavick's Landing]].
!! Things to Do in Central Plateau
Looking for work or amusement in this quarter? Some
of the things you can do here include:
* ''Attend an auction.'' The [[Aurora Gallery]] in [[Platinum Heights]] is the finest auction house in Sharn and specializes in auctions of exotic magic items and relics from [[Xen'drik]]. You never know what's going to be available—or who will be bidding against you.
* ''Plan a heist.'' Perhaps your goals depend on recovering an item a villain has hidden in the [[vaults|Vaults]] of [[Korranath]]. Can you penetrate the most secure facility in Sharn?
* ''Go to jail.'' The [[King's Citadel]] in [[Ambassador Towers]] is also Sharn's high-security prison.
* ''Worship.'' The primary temples of the [[Sovereign Host]] and the [[Silver Flame]] are located in [[Middle Central]], along with a host of shrines to specific sovereigns and lesser faiths. Take part in a festival or drop in for some spiritual guidance!
* ''Engage in espionage.'' Whether you work for your nation or get entangled in the schemes of the [[dragonmarked house]]s, [[Middle Central]] is home to a lot of powerful people who have a use for capable agents.
This ominous [[fiend]] wears chains like a shroud. Driving lesser creatures before it with its fearsome gaze, a chain [[devil]] (also known as a kyton) animates the chains that cover its body as well as inanimate chains nearby, which sprout hooks, blades, and spikes to eviscerate enemies.
Chain devils act as sadistic jailers and torturers in [[Daanvi]] and [[Shavarath]], relishing pain and living to inflict it on others.
While holding this simple silver necklace, you can speak
its command word to cause it to turn into a
10-foot chain. You can speak the command word again to
turn the chain back into a necklace.
This hooded lantern is affixed to the end of a 10-foot chain.
While lit, it burns for 6 hours on 1 pint of oil, shedding
bright light in a 30-foot radius and dim light for an
additional 30 feet. If you lower the hood, you can reduce the light to dim light in a 5-foot radius.
If you hold one end of the chain and speak the command word, the chain animates. You can command the other end to move toward a destination you choose or cause the chain to stiffen and move with you.
This chalice has six buttons around the base. You can press one of the buttons and cause the chalice to produce fragrant smoke. You can choose between vanilla, jasmine, lavender, frankincense, sandalwood, and cinnamon. The scent fills a 30-foot radius, originating from the chalice.
You can press the button again and cause the chalice to stop producing smoke.
Conspiracy theorists insist that a network of [[dragon]]s
is hidden in [[Khorvaire]], and these mighty creatures use
powerful magic and [[humanoid]] agents to work their will
across the continent and beyond. These claims are usually dismissed as madness, but they are in fact correct. The Chamber is a cabal of dragons that have monitored
Khorvaire for thousands of years, treating humanoids
as pawns in an ancient game.
First and foremost, the [[dragon]]s of the Chamber are
observers, gathering information about new aspects
of the [[Draconic Prophecy]] and sharing it with their elders in [[Argonnessen]]. They are also charged with stopping any
creature that seeks to use the Prophecy for its own ends.
This responsibility sets them against the [[Lords of Dust]],
who must manipulate the Prophecy in order to release
their fiendish [[overlord]]s. It also leads them to recruit
or eliminate any humanoid who learns too much about
the Prophecy.
The Chamber is loosely organized. Each dragon monitors its own small corner of the world and maintains a network of humanoid agents. Although the mission of
the Chamber is one of observation, individual dragons
often have their own agendas. Some seek to manipulate the Prophecy personally, directing the future along a particular path. Others conduct experiments
on [[dragonmark]]ed humanoids, trying to understand the
connection between these creatures and the [[Prophecy|Draconic Prophecy]].
Still others are obsessed with the [[Lords of Dust]] engage in century-spanning games of cat-and-mouse with their
fiendish counterparts. In general, the Chamber seeks to
maintain the status quo and opposes [[demon]]s, so agents
of the Chamber can often be useful allies or patrons.
But ultimately [[humanoid]]s are just pawns in the dragons'
eyes, and they readily sacrifice any of those pawns to
ensure the sanctity of the Prophecy and the defeat of the
Lords of Dust.
!! The Chamber and the War
The lives of humanoids and the welfare of their nations
mean little to the ancient dragons. A member of the
Chamber who is friendly now might turn out to be little
more than a war criminal, responsible for horrible atrocities while directing critical events of the war to ensure
that a skirmish or an untimely assassination didn't derail some crucial stanza of the [[Prophecy|Draconic Prophecy]]. An even more
disturbing prospect is that the [[Mourning]] might have
been orchestrated by the Chamber, either as part of its
struggle against the [[Lords of Dust]] or even directly in
response to the dictates of the Prophecy.
Whatever the truth, the [[Last War]]'s impact on the
Chamber was small in the grand scheme of things.
[[Planar observatories|planar observatory]] were damaged here and there,
humanoid servants died in droves, and the clash of
armies derailed short-term plans. But even the effects of
a hundred years of war are minor in the context of plans
that span continents and millennia.
!! The Chamber in Argonnessen
The headquarters of the Chamber is located in the [[Tapestry]] of [[Argonnessen]]. The [[Conclave]] and the [[Eyes of Chronepsis]] both have
serious doubts about the actions of the Chamber,
and whether the cabal should be allowed to continue
its work abroad. The surviving elders of the Chamber—the dragons who founded the movement—are now great wyrms. While the younger dragons explore the
world, their elders fight to keep their order alive. The ancient dragons of the Chamber include accomplished prophets and [[loredrake]]s, and their insights into the
[[Prophecy|Draconic Prophecy]] have helped to mollify the great powers of
[[Argonnessen]]. But it is an ongoing struggle, with no
rest for the wise.
This small leather pouch contains 3 pieces of hard candy.
When eaten by a creature, the candy tastes like that
creature's favorite food. The candy disappears 1 hour after
being removed from the pouch.
The pouch replaces any candy that has been removed
from it daily at dawn.
Chanaakar, the Speaker of the Word, is the fifteenth
person to hold the position of spiritual leader of [[Adar]].
!! Chanaakar's Story
He was born the son of a servant. Geetru, the Speaker at
that time, encountered him in the halls of [[Kasshta Keep]].
The five-year-old Chanaakar was reciting complex codes
of magic to his sister, [[Luunkashtai]], as the two played a
game imitating their father's arcanist employers. Amazingly, the boy was reciting the formulas correctly.
Geetru immediately took the boy to her private
quarters and questioned him. Chanaakar's abilities were
astounding, and Geetru began to suspect that he was a
reincarnation of a former [[Keeper of the Word|Keepers of the Word]]. The boy's
integrity and love became clear when he refused to be
separated from his sister in order to train, even though
his training occurred within the keep. Geetru allowed
Luunkashtai the chance to pass one of the tests for entering the Keeper order. She did.
Chanaakar mastered philosophies and preparatory
spellcasting techniques quickly, at the same time showing himself to be affable and humble. The boy devoured
history and learned the lore of [[Riedra]] and the [[Inspired]].
At the same time, he trained in the citadel's martial techniques, learning forms quickly and keeping his body fit
so he didn't fall asleep in meditation as many others did.
He showed himself balanced in body and mind.
When he was nineteen, however, Chanaakar became
restless. He broke with tradition and secretly left [[Kasshta Keep]] with his sister. With the aid of a mountaineer named Kaala, they ventured deep into [[Adar]]. Chanaakar
saw what life was like in this harsh land, and he came to
love its people. For their part, many folk returned the
affection—Chanaakar, [[Luunkashtai]], and Kaala became
known for solving problems, helping the needy, and
even slaying a monster or three. The stories of these days
tell that the trio never asked for payment and humbly
received any reward forced upon them, giving what they
could in the form of work or service.
This break from tradition might have actually assured
Chanaakar's ascension to the position of Speaker. Geetru
watched his travels with interest. She knew her time on
Eberron was ending, and she knew her replacement must
be chosen from among those serving at [[Kasshta Keep]].
Chanaakar, even better than she, knew not only the ways
of the [[Keepers|Keepers of the Word]], but also the ways of [[Adar]]. In Chanaakar's
absence, Geetru declared him her successor—much to the
chagrin of several of her closest advisors.
Chanaakar was descending the slopes of [[Korrandar]]
after seeking to speak to a [[Storm Guardian|Storm Guardians]] (whether he
succeeded in this mission is unknown) when word came
ordering him to return to [[Kasshta Keep]]. They arrived to find
Geetru had passed from the world. The elders of Kasshta
Keep approved her choice for successor, and a shocked
Chanaakar became Speaker of the Word.
Chanaakar appointed his sister and Kaala as two
of his Hands, persons who serve the Speaker and act as
his agents. As Speaker, he changed little of Kasshta's
traditions. Perhaps because he had never been a part of
the Keep's hierarchy and because he had been away for
so long, Chanaakar didn't remove anyone from power
or make any reforms, thinking he didn't need to. He
was wrong.
The respected Kasshta teacher [[Raadu Xeel]], corrupted by dark magics, allied with the [[Endseekers]] and attempted to assassinate Chanaakar. But they failed, thanks to
[[Luunkashtai]], Kaala, and the monks. Still, Kaala, Chanaakar's friend, guard, and secret love, died that night as a storm gathered over [[Kasshta|Kasshta Keep]]. When the truth of the plot was uncovered, the elders had Xeel executed and his
family banished from Kasshta Keep, despite Chanaakar's
request for mercy.
Chanaakar has now been Speaker for nearly forty
years. His reign has been just and his popularity has
strengthened the position of [[Kasshta Keep]] among the
monasteries of [[Adar]]. Many young mountainfolk seek
tutelage at Kasshta, and the Speaker's word carries more
weight with [[Adarans]] than it ever has in the past. Chanaakar uses this influence to help keep Adar secure and its people on a righteous path, encouraging adherence to
the [[Path of Light]]. He also has a cadre of nearly a hundred followers and students within Kasshta Keep.
[[Dragoneyes]] has quite a few rowdy gambling halls, but Chance is a more sophisticated casino. In addition to running the standard games and making odds on the various races and sporting events that occur throughout the city, Chance has a reputation for being able to arrange and cover almost any bet. Can you survive for two days with House [[Tarkanan]]
trying to assassinate you? Can you seduce the ambassador from [[Aerenal]] in the next 24 hours? Chance makes the odds, takes the bet, and makes the arrangements required to set the challenge in motion.
The casino is owned by a [[changeling]] named Chance, who is also a priest of the [[Traveler]]. Almost nothing is known about Chance; the changeling wears a different guise
every night, and the only way to recognize Chance is by the distinctive amulet they wear.
Chance is not an agent of the [[Tyrants]]. They respect the guild and may provide magical assistance to guild members, but they serve the [[Traveler]] in their own way and stand above the guilds and politics of the city.
//Long ago, there was a woman named Jes, and she had one hundred children. Her rivals conspired against her and swore to kill her children. Jes begged the [[Sovereign|Sovereign Host]]s for help, but their only answer was the wind and rain. In the depths of her despair, a lonely traveler took her hand. "I will protect your children if they follow my path. Let them wander the world. They may be shunned and feared, but they will never be destroyed." Jes agreed, and the traveler gave her his cloak. When she draped it over her children, their old faces melted away and they could be whoever they wanted to be. And so it remains. Though the children are shunned by all, the gift of the [[Traveler]] protects them still.//
<div align="right">—[[Chance]], changeling priest</div>
Changelings can shift their forms with a thought. Many
changelings use this gift as a form of artistic and emotional expression. It's also an invaluable tool for grifters,
spies, and others who wish to deceive. This leads many
people to treat changelings with suspicion.
!! A Hidden People
Wherever [[human]]s live, changelings reside also; the
question is whether their presence is known.
Changelings are born to one of three paths. A few
are raised in stable communities where changelings
are true to their nature and deal openly with the people
around them. Some are orphans, raised by other races,
who find their way in the world without ever knowing
another like themselves. Others are part of nomadic
changeling clans spread across the Five Nations, families who keep their true nature hidden from the single-skins. Some clans maintain safe havens in major
cities and communities, but most prefer to wander the
unpredictable path of the god known as the [[Traveler]].
In creating a changeling adventurer, consider the
character's relationships with people around them.
Does the character conceal their true changeling nature? Do they embrace it? Do they have connections to
other changelings or are they alone and in search of
companions?
!! Masks and Personas
In their true form, changelings are pale, with colorless
eyes and silver-white hair. It is rare to see a changeling
in that form, for a typical changeling changes their shape
the way others might change clothes. A casual shape—one created on the spur of the moment, with no depth or
history—is called a mask. A mask can be used to express
a mood or to serve a specific purpose and then might
never be used again. However, many changelings develop
identities that have more depth. They build an identity
over time, crafting a persona with a history and beliefs.
This focused identity helps a changeling pinpoint a particular skill or emotion. A changeling adventurer might
have personas for many situations, including negotiation,
investigation, and combat.
Personas can be shared by multiple changelings; there
might be three healers in a community, but whoever is on
duty will adopt the persona of Tek, the kindly old medic.
Personas can even be passed down through a family,
allowing a younger changeling to take advantage of contacts established by the persona's previous users.
!! Changeling Names
A changeling might use a different name for each mask
and persona and adopt new names as easily as they
change faces. The true name of a changeling tends to
be simple and monosyllabic; however, there are often
accents to a changeling's name that are expressed
through shapeshifting, something single-skins will
likely miss. So, two changelings might have the name
//Jin//, but one is //Jin-with-vivid-blue-eyes// and one is //Jin-with-golden-nails//.
Changelings have a fluid relationship with gender, seeing it as one characteristic to change among many.
//''Changeling Names:''// Aunn, Bin, Cas, Dox, Fie, Hars, Jin,
Lam, Mas, Nix, Ot, Paik, Ruz, Sim, Toox, Vil, Yug
!! Changelings of Sarlona
The [[Inspired]] have embraced the changelings of [[Riedra]],
and these shapeshifters are treated with far more respect
than their cousins in [[Khorvaire]] are. This acceptance
comes at the price of individuality, however. Riedran
changelings are taught to set aside personal identity, in
order to fully serve the Inspired.
Riedran changelings are invariably drawn into the service of the [[Thousand Eyes]] (see [[masquer]]) or the [[Iron Gate]], and most are deeply loyal. As a result, changelings
are often feared and distrusted in the other lands of
[[Sarlona]]. The role of changelings in Riedra presents
many opportunities for foreign shapeshifters, who can
blend in with their kin. The [[dragon]]s of [[Argonnessen]]
use changeling agents as observers in [[Riedra]], and
other nations might find changeling agents ideal for
Riedra operations.
In the wake of the Day of [[Mourning]], [[Merrix d'Cannith]] assumed control of House [[Cannith]]’s southern operations. Merrix dispatched one of his personal
protégés, an [[artificer]] named Channa of the Vown family, to take over the [[Stormreach]] facilities and replace the majority of the staff with people loyal to Cannith South, displacing former Viceroy [[Toven d'Cannith]].
[[Merrix|Merrix d'Cannith]] has directed Channa to focus resources on researching the [[warforged]], and [[Cannith]] expeditions are directed
toward finding [[docent]]s, [[quorcraft]] components, ancient
[[creation forge]]s, or anything else that could further
Merrix’s work in [[Sharn]].
Channa is a devotee of the [[Traveler]].
Head of the [[Thousand Yard Stare]], Channara d'[[Medani]] is torn between the
crisis-a-day matter of rebuilding [[Arythawn Keep]] and assessing the field reports from the [[Mournland]] patrols, and wanting to venture out into the field herself. Neither Channara’s counterparts in the [[Thrane]] and [[Brelish|Breland]] governments nor her superiors within
House [[Medani]] have any idea how vast the Mournland’s western border is. The Thousand Yard Stare is stretched to the limit, and Channara regards every
[[Mournland]] monster that makes it into Thrane or
Breland as a personal failure.
Channara is also aware that the [[Thousand Yard Stare]] doesn’t venture far into the Mournland. She’s curious about what the interior of the Mournland is
like, but she doesn’t have the personnel to find out
herself. She’s willing to contract with explorers to
scout deeper into the Mournland than her patrols can
go, but given the reputation of the Mournland, she
has found no takers so far.
A channeling wand is a short metal wand tipped with a Siberys
[[dragonshard]]. Each wand is tied to a specific [[dragonmark]], such
as the [[Mark of Healing]] or the [[Mark of Making]], and you can only
attune to it if you possess that dragonmark.
While holding the wand, you can expend some of its stored power to enhance your dragonmark abilities (double the range, double the duration, halve the casting time, cast twice). You can do this between 5-10 times before the wand is depleted and must recharge overnight.
The Chanthwood is a small forest in western [[Aundair]], near the town of [[Wyr]].
In recent months, a number
of vessels have vanished from what were thought to
be safe sea lanes near the [[Lhazaar Principalities]]. No
known pirates have claimed responsibility, and no
wreckage has been found.
At the same time, pirates and merchants have
reported seeing a bizarre fleet of ships on the horizon
of the [[Lhazaar Sea]]. The lead vessel appeared to be a
[[Lhazaar|Lhazaar Principalities]] warship, but the ships that flanked it were
oddly misshapen. Mysterious colored lightning was
said to dance between the masts of this ghostly fleet.
In truth, these rumors are connected. For the moment, Captain [[Magwroth]] of the Chaos Fleet seems content to attack and raid lone vessels. However, the ships and crews he destroys are taken under his control, and so the Chaos Fleet has begun to grow, as malign [[elemental]]s possess the crew like zombies and advance the captain's apocalyptic agenda.
The Chaos Fleet consists of half a dozen to two
dozen vessels, its numbers changing from day to
day. Most of the ships, including [[Magwroth]]'s //Devourer’s Hand//,
are mortal-built wrecks kept afloat by the elemental power that now infuses their waterlogged hulls, and are manned by [[elemental drudge]]s in the shape of their former crews. Their horrid features include eyes of fire, teeth and fingernails of ice, and wounds that bleed mud. The other ships hail from the mysterious [[demiplane]] where the [[drudge|elemental drudge]]s originated, and are driven by the power of fire and air. Though they appear to be roughly carved of rock or ice, these
chaos ships are impossibly swift and can run down
even [[elemental galleon]]s.
Where raw unmaking has scarred the Material Plane, chaos pools form like pustules of entropy. A chaos pool is often the place where a great [[fiend]] or being of chaos died or was imprisoned, or it is near such a place.
Chaos pools are condensations of wild potential. They are pits of flashing light, welling darkness, bubbles of cacophonous sound, and spurts of wind and other materials. They are easy to spot and hear. Ground surrounding a chaos pool is destroyed and remade
constantly, changing shape and even composition. A chaos
pool hungrily pulls at those near it. Bones are scattered
about it. Wisdom seems to dictate against nearing the pool,
which whispers of dissolution and doom.
Several chaos pools exist within [[Uutkleza]], the [[wild zone]] to [[Kythri]] located in the mountains of [[Adar]]. The
[[githzerai|gith]] of that place guard the pools against interlopers.
A joint venture between House [[Ghallanda]] and House
[[Phiarlan]], the Chapterhouse serves as a tavern, hostel,
and performance space. Run by Sorala d’Ghallanda,
it provides inexpensive accommodations at a variety of comfort levels and excellent
entertainment. The hostel almost always has rooms
available, with one drawback: if you stay at the Chapterhouse, you can be certain someone knows exactly where you are.
The Chapterhouse is a wonderful place to find information. A PC might learn about a recent jungle expedition, a piece of gossip about a [[Storm Lord|Storm Lords]], a ship with a
mysterious cargo, or some other bit of interesting news.
Whenever you roll this six-sided die, you can control which number it rolls.
While wearing a pair of charlatan's gloves, you can produce an illusory image that fits in the palm of your hand. The image lasts for 1 minute or until your concentration ends (as if you were concentrating on a spell). The image can't create sound, light, smell, or any other sensory effect. Physical interaction with the image reveals it to be an illusion, because things can pass through it.
You attempt to charm a [[humanoid]] you can see within 30 feet. If the creature fails to withstand your enchantment, it is charmed by you for up to one hour or until you or your companions do anything harmful to it. If you or your companions are fighting it, you have disadvantage on this spell.
The charmed creature regards you as a friendly acquaintance. When the spell ends, the creature knows it was charmed by you.
If you are able to cast rare-tier spells, you can cast this as such to target a non-humanoid creature. Alternatively, you can target up to three humanoids with this spell simultaneously; the targets must be within 30 feet of each other when you target them.
This light green apron is embroidered with lovely little artichokes. Once per day, the apron's pockets fill with the ingredients for a different recipe. While worn, the user instantly knows hundreds of recipes, and becomes very adept at cooking.
Chervina "the Architect" is a prominent heir to House [[Ghallanda]]. Her rivals within the
house whisper that she’s mad, but most of the house’s
viceroys believe that Chervina d’Ghallanda, a powerful [[wizard]], has a mystical connection to the [[Draconic Prophecy]]. Chervina has convinced Baron [[Yoren|Yoren d'Ghallanda]] (and, by extension, House [[Ghallanda]]) that there is a prophetic
imperative for the house to build [[enclave]]s and offer
hospitality in specific places—even if those places are almost deserted at present. So far, Chervina has overseen construction of new Ghallanda enclaves on
the southeast border of the [[Demon Wastes]], the shore
of [[Lake Dark]] in [[Karrnath]], the middle of the [[Blade Desert]], and even on the [[Xen'drik]] coast.
Food and other perishable items do not age or decay while inside a //chest of preserving//. The chest is 2½ feet long, 1½ feet wide, and 1 foot tall with a half-barrel lid. The chest has a lock, which can be picked with [[thieves' tools]]. Smashing the lock or any other part of the chest renders it nonmagical.
''Sovereigns:'' [[Arawai]], the [[Devourer]]
All natural life sprang from the [[progenitor dragon|Progenitor Dragons]]
[[Eberron]], and the child of Eberron honors the Great
Mother and defends her works. Many draconic prophets
are children of Eberron, since the [[Prophecy|Draconic Prophecy]] appears
in soil and stone. Others are guardians, protecting
the land. And a few—such as [[Vvaraak]]—become allies of
the lesser creatures, teaching non-[[dragon]]s the secrets
of nature.
This [[archetype|Sovereign archetype]] embodies two paths to ascension. One follows nature’s bounty, which humans would associate with [[Arawai]]. Other children of Eberron embrace nature’s fury, the role of the [[Devourer]]. These dragons can be fearsome ravagers, but they can also be stalwart guardians, bringing the full force of nature to bear against [[fiend]]s and [[aberration]]s.
//We, the Children of Winter, preserve the natural cycle of life and death. Disease and decay cull the weak and strengthen the whole. We must destroy undead and ensure that the cycle continues. //
Death, disease, and decay are all part of
the natural order. Disease keeps populations
under control, death weeds out the weak and
makes room for new life, while decay sustains
the future. The Children of Winter embrace
this reality as the harshest of truths. They
firmly believe that if this natural order falls out
of balance, [[Eberron]] will act to correct things
on her own. If civilization goes too far, an
excruciating summer or winter will devastate
any hope of harvest to feed nature, and such
famine will brutally restore the balance, wiping
out all modern nations to start anew. Most
outsiders regard this as apocalyptic nonsense,
until the [[Mourning]]. Many of the Children of
Winter believe the Mourning is the beginning of
Eberron’s cleansing, and they might be right.
The Children of Winter are a grim sect with
grim responsibilities. They firmly believe in
survival of the fittest, sometimes testing those
who oppose them for the sake of that balance,
but rarely to the death. [[Druid|druid]]s tied to this
sect can be tasked to hunt down and destroy
creatures that defy the cycle of life and death,
search for the answer to the [[Mourning]], or
fight to stop the coming apocalypse. On the darker side, there are others in the sect who believe that civilization must be brought to heel. Typically, these are extremists who unleash plagues in the great cities of [[Khorvaire]] and spur conflict to weed out the weak.
The spellcaster creates a ghostly, skeletal hand near a creature within 120 feet. The hand attempts to grab and cling to the target, assailing it with the chill of the grave. The hand clings for 10-20 seconds, during which time necrotic energy seeps into the target and prevents magical healing, and then the hand vanishes. The spell is particularly effective against [[undead]], making them sluggish and dizzy.
This hollow metal tube measures about 1 foot long and weighs 1 pound. You can strike it, pointing it at an object within 120 feet of you that can be opened, such as a door, lid, or lock. The chime issues a clear tone, and one lock or latch on the object opens unless the sound can't reach the object. If no locks or latches remain, the object itself opens.
The chime can be used up to ten times, after which it cracks and becomes useless.
These multi-headed monstrosities are the result of the twisting chaos of [[Kythri]], having entered [[Eberron]] through [[manifest zone]]s centuries ago.
A typical specimen has the hindquarters of a large goat, the forequarters of a lion, and the leathery wings of a dragon, along with the heads of all three of those creatures. The monster likes to surprise its victims, swooping down from the sky and engulfing prey with its fiery breath before landing.
A chieftain of the [[Chuniigi]] Chok tribe, Chok-Palla
is desperate to find help battling the [[Kalaak]] raiders. One
of the few tribal leaders still trying to unite the struggling nation, he despairs that the conflict is wearing at
the very soul of the people—turning tribe against tribe
as resources dwindle. Chok-Palla is actively seeking alliances with the southern [[shifter]] nations, the [[Icebinder|Icebinders]] [[frost giant]]s, and the lowland clans of the [[Dorann Holds]].
He also visits [[Whitetooth]] and [[Winterstead]] regularly,
seeking small bands of adventurers willing to scout the
[[Kalaak]] homeland in the [[Krertok Peninsula]].
Chokers are small, rubbery humanoid [[aberration]]s capable of striking with astonishing speed and reach. Believed to be warped [[halfling]]s, these creatures lurk in dark places and squeeze into narrow fissures where they can surprise and throttle the unwary with their starfish-shaped hands.
This is a simple choker of red ribbon, with a silver clasp. When worn, the necklace tightens and strangles the wearer whenever the command word is spoken. It can only be removed when a second command word is spoken.
Set above the [[rabble|Riedrans]] of the workers and commoners of
[[Riedra]], the Chosen have been touched by the divine
force of the nation. Or so they're told. The truth of the
matter is much more sinister. The Chosen are in actuality "empty vessels" designated as host bodies for the [[extraplanar spirits|quori]] of [[Dal Quor]] (the terms Chosen and
empty vessels can be used interchangeably, but the former
is preferred in Riedra because it represents the esteem
with which these beings are held). The result of generations of controlled breeding (originating as [[human]]s [[magebred|magebreeding]] with traces of [[elf]] and [[fiend]] blood) and [[psionic|psionics]] manipulation, the Chosen enjoy a life of privilege in Riedra... all in
preparation for inhabitation by a [[quori]].
Although the Chosen are granted luxuries unknown to
most [[Riedrans]], they do not lead lives of indolence. Chosen
hold important positions—even those who are never possessed become military officers, village overseers, and administrators in the arms of the [[Unity]]. A Chosen who
has the potential to be a primary host undergoes especially intense training, ensuring that they have skills useful to the [[quori]] who claims them.
Every Chosen family is bound to a specific quori
spirit. That spirit can possess any Chosen of its line at
will. There is no warning, no chance to resist. Most quori choose one particular vessel of
their line to serve as primary host, and this is the being
[[Riedrans]] come to think of as the [[Inspired]] tied to that
spirit. However, this arrangement places no limitations
on the quori; they can leave their host at any time to inhabit
another of their Chosen. Important [[quori]] often spread
their vessels across [[Riedra]], allowing them to quickly
manifest in different cities. Likewise, a vain quori often
abandons a host who becomes old or suffers significant
injuries, but they can always return when they want. Most
Chosen are eager participants in the possessing process,
and as such, a particular family might be used as hosts
by multiple quori; however, only one has the irresistible
bond to their vessels.
The Chosen are bred to be ideal hosts in a complex
process involving mingling of bloodlines, and metacreative and telepathic manipulation. Superficially, the Chosen are very similar in appearance to the [[kalashtar]],
displaying a beauty so unnatural that some find it disturbing. They also have an innate bond to [[Dal Quor]], which
manifests itself as natural [[psionic|psionics]] talent.
It is extremely difficult to drive a [[quori]] from a
Chosen host. Many of the more powerful quori simply can't
possess normal [[human]]s, because there are no mundane
humans who can contain them; the Chosen can.
When a [[quori]] first takes a primary host, it spends
a considerable amount of time drilling its beliefs and
personality into the vessel. The Chosen are taught to
embrace this, surrendering their personality to the
divine spirit. The net result is somewhat similar to [[mind seed]]—the vessel does not actually gain the knowledge
of the quori, but after a month of the quori thinking
with her brain, she behaves much like the quori even
in its absence. Discarded hosts, who have served as
[[Inspired]] for decades, are often indistinguishable from
the quori patron; all traces of their human personality
are long lost.
It is important to bear in mind that while the quori
gains access to the memories of the Chosen, the reverse
is not true. Chosen that serve in administrative positions
might know very little of the grand goals of the [[Dreaming Dark]]; they only know that the Inspired seek to create a stable and stagnant society, and they do not question this
goal. The critical exception to this rule are the "''shadow lines''"—those Chosen dedicated from birth to serving the true quori agenda. These Chosen are taught the nature of [[il-Lashtavar]] and their quori masters, and they are loyal to
the Dark as opposed to [[Riedra]], believing that
through their service they're destined to become [[quori]]
after death. The shadow lines provide
the [[Inspired]] with agents who can be trusted with covert
and disturbing assignments. [[Dul Catun]], [[Dar Ulatesh]], and [[Dar Mirn]] are centers of the shadow lines.
As most of the Chosen are utterly dedicated to
[[Riedra]] and the [[Inspired]], they are best suited for use as
NPCs. However, the life of a vessel who has turned on their
masters has many interesting hooks.
Chronepsis, the Unblinking Eye, is the [[Dragon God|Dragon Gods]] of Fate, Death, and Final Judgment. He is silent, unconcerned, and dispassionate. Chronepsis judges the souls of [[dragon]]s after death; it is believed that Chronepsis decides if a
dragon soul will fall into [[Dolurrh]] or ascend along the
[[Sovereign|Sovereign Host]] paths as laid out in the [[Thir]] faith.
However, Chronepsis has another role that is even more important. He is the Lord of Fate
and Prophecy. The [[Draconic Prophecy]] is the will of the [[Progenitors|Progenitor Dragons]], but many dragons believe that Chronepsis chooses how it will be revealed. An ongoing philosophical debate centers on the question of whether Chronepsis expects [[dragon]]s to follow the path fate lays before them—the traditional view—or whether the Prophecy exists to help mortals choose their own destinies.
Chronepsis, like [[Tamara]], looks harshly on any magic that allows a dragon to escape his judgment, from [[raise dead]] to the [[undead]] existence of the [[dracolich]]. Dragon priests usually cast an [[augury]] before raising the dead; this action informs the caster whether the god of fate approves of this action. No automatic consequences for raising a
creature against the will of Chronepsis exist; after all, the deity might not actually exist. However, a DM could choose to inflict misfortune on a dragon raised against the will of destiny. Certainly, the [[Eyes of Chronepsis]] would seek to slay the transgressor and return him to his judgment.
The Chuniigi are the most nomadic of the three [[shifter]] tribal nations of [[Sarlona]], and the roam the largest area of the [[Tashana Tundra]]—all inland territories west of the [[Tiiki River]] and north to the [[Eska Mountains]]. But the Chuniigi populace is
sparse relative to their territories, and they share the wild northern lands with many [[human]] tribes. In recent years, the northern Tashana has been ravaged by the terrible [[Kalaak]] barbarians, and these incursions have reduced the Chuniigi's
numbers further still.
See also [[Culture of the Tashana shifters]].
''Chok'', one of the tribes of the Chuniigi, is led by chief [[Chok-Palla]].
The Church of the Wyrm Ascendant worships the [[Sovereigns|Sovereign Host]]
in the same groupings and names as the [[Pyrinean Creed]].
However, the church asserts that the champions who fought the
[[overlord]]s were [[dragon]]s, depicting them as such. The church
is very focused on wealth and economic power; members
are expected to contribute to the hoard of their local temple,
and the priests often engage in behavior that outsiders might
consider to be corrupt. They hold the unorthodox belief that
mortals can ascend to become Sovereigns themselves—that
by emulating a particular Sovereign, a mortal can eventually
take their place. Popular rumor holds that the founder of the
[[Library of Korranberg]], [[Dorius Alyre ir'Korran]], built the library
as part of a quest to assume the mantle of [[Aureon]]. While this
Sovereign ascension is believed to occur after death, some
priests teach that devoted members—especially those who
donate great sums to the temple hoard—can actually become
[[dragon]]s in life. While this seems unlikely, it could be an
interesting background for a draconic [[sorcerer]];
it's not that you have draconic ancestry, but rather, due to
your devotion, you appear to be evolving into a dragon.
Wyrm Ascendant Vassals believe the dragons themselves are
divine tools and emissaries of the Sovereigns and Six, though
few dragons have ever acknowledged the church in any way.
It's thought that the [[dragon]]s themselves follow a form of this faith known as [[Thir]]—Draconic for “three”—but the traditions of
[[Argonnessen]] are rarely revealed to people of [[Khorvaire]].
The Wyrm Ascendant is strongest in [[Aundair]] and [[Zilargo]],
though it remains an obscure sect, and has noteworthy temples
in [[Stormreach]], [[Korranberg]], and [[Fairhaven]].
Chuuls are large, lobster-like [[aberration]]s that infest shallow waters in the lands surrounding the [[Thunder Sea]]. Chuuls continue to grow as they age; the largest chuuls are over eight feet long. In addition to their powerful claws, chuuls have a mass of thin tentacles emerging from their mouths, which can induce paralysis in a victim, much like the tentacles of a [[carrion crawler]].
!! Minions of Aboleths
Chuuls are crustaceans the [[aboleth]]s modified and endowed with rudimentary sentience during the [[Age of Demons]], so that the influence of the [[Lurker in Shadow]] could extend out of the seas and into the surface world. They follow the ingrained directives of their creators, as they have done since the first age.
Perfectly obedient, the chuuls collected sentient creatures and magic at the [[aboleth]]s' command. Chuuls were designed to endure the ages of the world, growing in size and strength as the eons passed. When the [[Lurker in Shadow]] was bound at the end of the [[Age of Demons]] and the [[aboleth]]s fled to the depths, the chuuls were cast adrift. However, these creatures continue to do what they did for the aboleths, slowly collecting humanoids, gathering treasure, amassing magic, and consolidating power.
Chuuls can sense magic at a distance. This sense couples with an innate drive that leads them to slay explorers, take their gear, and bury it in secret locales aboleths dictated eons ago.
After all these eons, the psychic bonds between [[aboleth]]s and their created servants remain intact. Chuuls that come into contact with aboleths immediately assume their old roles and fall into service.
Under normal circumstances, only [[Aereni]] (and
their companions) are allowed into [[Thaendyr's Rest]].
This policy is enforced by the inn’s guardian, Chyn
Mendyrian and his animal companion, a mandrill (baboon)
named Faith. One of the few [[deathless]] soldiers stationed beyond [[Aerenal]], Chyn is an object of reverence for the local [[Aereni]]. His presence is a sign of the difficulties the [[elves|elf]] have had to overcome in the past, and daily services are held in the local shrine to sustain his undying existence. Chyn rarely leaves the Rest unless he is tracking someone who has harmed one of the Aereni, but most of the [[Harbor]] thugs
know the hideous warrior by reputation and leave the
Aereni alone.
Somewhere in the deep interior of [[Xen'drik]], where
even the [[drow]] refuse to tread, lies a tremendous stretch
of blasted boughs and burnt-black trees. The Cinder
Sisters prowl this wasteland and vie for the boiled blood
of anyone foolish enough to trespass. The heads of this
[[fiend]]-touched [[hydra]] bicker constantly, although whether
they possess individual intelligence or the demonic
monstrosity is merely mad, no one knows. A few junior
members of the [[Lords of the Hunt]] of [[Stormreach]] have succeeded
in bringing back one or more of the Sisters’ heads,
claiming to have slain the beast, but the veterans in the
organization know this is foolish presumption.
The Circle of Song is an informal organization in [[Sharn]], open
to any [[bard]] who knows its customs and who can find
an outpost. It has no membership dues; you're expected
to make a donation if you make significant use of the
group's resources. Membership provides the following benefits:
* You can always find food and lodging at a circle outpost, though you might be expected to entertain the patrons in exchange. If times are tough, your food and lodging might be a step lower than the usual quality of the inn, but at least it's free.
* You have advantage on ability checks made to perform research or gather information while in a circle outpost, provided you have an opportunity to peruse archives and talk with other members.
* Circle members are often willing to do minor favors for other members—gathering information, embarrassing a minor noble, causing a distraction. There's no cost for such a service, but anyone who helps you will expect you to provide similar assistance when they need it.
The first and oldest outpost of the Circle of Song is the
[[Golden Horn]] in the [[University District]] of [[Upper Menthis]];
a few bards are almost always in residence and willing
to share news and stories. Other, less elaborate outposts
are maintained in Sharn, and over the centuries the
circle has established outposts in most major cities and
many smaller communities across [[Khorvaire]]. These
sites are usually taverns or inns that have hidden areas
accessible only to members of the circle.
Bards are expected to set aside personal rivalries
while in a circle outpost, and any kind of combat or violence is prohibited. Violating this rule results in immediate expulsion from the circle, at the least.
Scattered around the city of [[Stormreach]] are twelve stone rings, each
radiating an aura of [[illusion]] magic. About once a month, a programmed image appears at night in the center of one of the circles. Sometimes the image
is lovely, and sometimes a long-dead [[giant]] appears,
whose name and history are no longer known. Other
times these illusions are disturbing, showing images
that people believe to be forewarnings or showing
places deep in [[Xen'drik]]’s jungles that are believed to
have been outposts of the giants or their enemies.
While wearing this circlet, you can cast the [[scorching ray]] spell with it once per day.
<<<
{{scorching ray}}
<<<
This silver crown is set with a crystalline orb set in the center. While worn, it allows the user to cast [[lesser illusion]] at will. If the wearer can cast [[rare-tier|spell tier]] spells, they can also cast [[greater illusion]].
This copper circlet is set with a sphere of polished granite. The wearer can cast [[meld into stone]].
<<<
{{meld into stone}}
<<<
This rugged crown is made of black feathers and copper wire. If you are able to channel [[primal magic]], you can cast [[polymorph]] on yourself to transform into a crow. You retain your mental capabilities while in crow form.
This elegant circlet of emerald and silver defends the wearer's mind. While it is worn, the user's mind cannot be read, and they have a large advantage to defend against magical [[enchantment]]s such as fear, [[charm]], sleep, or any spells that would alter the user's mental state.
[[Belashyrra]]'s prison [[demiplane]] is the Citadel of Lidless Eyes, located deep in [[Khyber]], a site that appears to have been molded from molten stone, chitin, and flesh. Across its warped and liquid expanses, thousands of eyes of every size and shape peer into the endless darkness. [[Beholder|beholder]]s, [[dolgrim]]s, and stranger [[aberration]]s dwell within the halls of the citadel, which is one of the few places where such creatures are willing to live side by side.
Some beholderkin serve Belashyrra as guards and agents, while others spend their lives in deep meditation, pursuing inner visions known only to the Lord of Eyes. It's rumored that anyone who sits on the citadel's throne can see through the eyes of any sentient creature on [[Eberron]] or in [[Khyber]].
In the dawn of [[Sharn]], there were three [[wizard]]'s circles: The [[Esoteric Order of Aureon]], the [[Guild of Starlight and Shadows]], and the [[Closed Circle]]. The wizards of the Closed Circle were interested in the lore of the [[daelkyr]], and soon developed strong ties to the [[Cults of the Dragon Below]]. Eventually their work began to frighten the other two circles; it came to a war of wizards, and the Closed Circle was sealed in its fortress in the undercity. Now, centuries later, the Dragon Below has returned to this arcane fortress. A [[mind flayer]] named Chyrassk has emerged from [[Khyber]] and broken the seals of this ancient dungeon. Chyrassk brought a small force from Khyber—[[dolgaunt]]s, [[dolgrim]]s, and an [[umber hulk]]—but he has begun to build up a [[human]] following, especially among the refugees of [[Cyre]]. He has found many disturbing and powerful relics in this fortress.
The tallest tower in
[[Hope's Peak]] is the Citadel of the Sun, a temple dedicated to [[Dol Arrah]], the [[Sovereign|Sovereign Host]] lady of Sun and
Sword. The stone of the tower has been enchanted to
shine like gold, but it is still stone—something that
has proven to be a grave disappointment to many a
beggar who has sought to scrape a shaving from the
wall. Aerela Tal, a
devoted priest who served with distinction in the war
before retiring, maintains the temple. Aerela may provide assistance
in exchange for services; she is distressed by the
darkness in [[Sharn]], and would like to see light shed
on the shadows of the city.
This large and beautiful temple's tower rises far
above the other districts of [[Upper Dura]]. At the top
lies a garden, where three golden [[griffon]]s—half-celestial creatures said
to have been touched by the lady of the sun—reside.
The griffons rarely stray from the tower, but an
oracle has said that they will rise and fight at the time
of Sharn's greatest peril. Killing one of these creatures would be a heinous crime that would outrage
the devotees of the goddess.
As part of House [[Kundarak]]’s agreement with the city of [[Stormreach]],
[[Coasthold]] hosts the only official outpost of the [[Twelve]]
in [[Xen'drik]]. Soon after the [[dwarves|dwarf]] acquired the
land, they set to work on building the citadel, complete
with offices for all the [[dragonmarked house]]s, with
the largest offices reserved for those houses that did
not already have [[enclave]]s in the city (all houses except
[[Deneith]], [[Jorasco]], [[Lyrandar]], [[Phiarlan]], [[Tharashk]], and
[[Kundarak]] itself).
With exploration of the continent’s interior playing
such a vital role in [[Stormreach]]’s economy, the citadel
does a good business in selling both [[magic item]]s and
[[spell]]casting services. Only one person at the citadel is capable of
casting [[rare-tier|spell tier]] spells—a reclusive [[wizard]] named [[Toven d'Cannith]]—so a PC’s timing has to be right when seeking such magic.
The [[Storm Lords]] make a pretty penny on the
taxation of citadel services, and House [[Kundarak]] takes
its own cut in rent and security fees. To offset these
expenses, the citadel charges an extra 5% for all [[magic item]]s and spellcasting services, though this premium is waived for high-ranking members of a [[dragonmarked house]].
After [[Toven d'Cannith]], the most accomplished
spellcaster at the citadel’s disposal is [[Amilene Santor d'Sivis]]. She
spends most of her time next door, in the [[Kundarak enclave|Kundarak Enclave (Stormreach)]]. If her services are needed or requested, however,
she gladly pops over to help and maintains good relations
with most of the other spellcasters at the citadel.
!! Dragonmarked House Offices
!!! House Cannith
House [[Cannith]] has no true [[enclave]] in [[Stormreach]], but
the house maintains a small facility within the Citadel
of the Twelve and has developed strong ties with the
[[Stormreach Forge]]. Cannith’s interest in [[Xen'drik]] has
grown considerably over the last century because of
the magical secrets that have been recovered from the
interior; it’s thought the breakthrough that produced
the [[creation forge]] was the result of [[Aaren d'Cannith]]’s
travels in the depths of [[Xen'drik]]. The Cannith workshop in the Citadel of the Twelve isn’t designed for production; it’s built for research, focused on analyzing [[magic item]]s and [[schema]]s recovered from the ruins of the shattered land.
!!! House Medani
House [[Medani]] has little interest in [[Stormreach]]. The house has a single apartment in the Citadel of the Twelve, and now and again the house sends a representative to the citadel to observe events in the city.
Typically, Medani heirs found in the city are either
on direct assignment from [[Khorvaire]], or else they’re
free agents pursuing their own agendas.
Although no Medani true heirs are in permanent residence, one man in Stormreach has the [[Mark of Detection]]: [[Culan Silvereyes]].
!!! House Orien
[[Xen'drik]] lacks both [[lightning rail]]s and major [[trade routes|Orien trade roads]]. [[Orien]]’s major financial interest in [[Stormreach]] lies in arranging teleportation between the city and [[Khorvaire]]. Few travelers have the funds to afford such a trip, but when the need for speed and security outweigh any question of cost, House Orien is there to answer the call. The house operates out of quarters in the Citadel of the Twelve, under the capable hand of [[Uskal d'Orien]].
At least once every three days, an [[Orien]] heir who
has the [[Siberys|dragonmark]] [[Mark of Passage]] teleports to [[Stormreach]] from [[Khorvaire]]. The [[Transportation Guild]] charges 500c for people who have made reservations in advance to travel with an heir
through use of the mark’s teleportation ability.
Even if there are no customers ready to be teleported
to Khorvaire, the heirs teleport to Stormreach with
messages and packages for the [[Couriers Guild]].
Currently, three heirs run the [[Xen'drik]] teleportation circuit: [[Elari|Elari d'Orien]], [[Breyn|Breyn d'Orien]], and [[Dekker|Marishantar]].
!!! House Sivis
House [[Sivis]] runs one of the smallest operations of any
[[dragonmarked house]] in [[Stormreach]], but that’s not to
say that it has no presence, thanks in large part to the
efforts of its ever-approachable leader, First Stonespeaker [[Amilene Santor d'Sivis]]. The Sivis [[gnome]]s maintain no [[enclave]] per se in the city, but they keeps private offices inside the nearby [[Kundarak enclave|Kundarak Enclave (Stormreach)]].
Most business of a mundane nature is conducted at the Sivis offices in the Citadel of the
Twelve, where the local [[Notaries Guild]] is headquartered. Legal services there are overseen by barrister [[Wernor Lyrriman|Wernor Lyrriman d'Sivis]].
!!! House Thuranni
Like Houses [[Medani]] and [[Orien]], House [[Thuranni]] has no public presence in [[Stormreach]] aside from a sparsely staffed office in the Citadel of the Twelve. Unlike those houses, however, a substantial difference exists between the house’s public presence and its private one. In truth, House Thuranni is a force to be reckoned with in Stormreach, having grown over a period of time and with the calculated precision that comes with the long-lived outlook of the elf race. The brothel known as [[Shadows]] in [[Locksmith Square]] is effectively a Thuranni [[enclave]].
!!! House Vadalis
No [[dragonmarked house]] has a smaller presence in
[[Stormreach]] than House [[Vadalis]], but that situation
is precisely how the [[local Vadalis head|Tyris d'Vadalis]] likes it. Where
House [[Medani]] and House [[Orien]] distance themselves
from affairs in Stormreach, House Vadalis is entirely
absent from city politics, having no [[enclave]] within the
city proper. This absence is a calculated artifice. House Vadalis does have an enclave near Stormreach, the sprawling ranch known as [[Blackbriar]], but its location allows the local house members to maintain not only their policy of detachment, but their privacy and profitability as well.
This large, windowless building
near the top of Vasha Tower contains the nearly endless legal and historical records of [[Sharn]]. Copies of
birth records, marriage rolls, and death certificates
are kept in the archives, as well as property records,
copies of letters of marque, and records of identification papers issued in the city. Agents of the [[Citadel|King's Citadel]]
have unrestricted access to the records, and other
characters with contacts in the government or in a
[[dragonmarked house]] might be able to gain access to
a specific set of records for a single use by calling in
a favor.
<$list filter="[list{!!title}sort[title]]">
<$macrocall $name="tag" text={{!!title}}/>
</$list>
The sole metropolis in [[Fernia]], the City
of Brass is the glorious city of the [[efreet|efreeti]], a place of marvels.
Here, a towering statue of an efreeti holds a sphere of [[continual flame]] the size of an [[airship]]. The statue reshapes itself to match
the appearance of the efreeti who currently dominates society;
both the statue and whichever efreeti it depicts are known as
the Sultan. Currently, the Sultan is [[Azhalar]] of High Hearth.
All efreet have mansions in the City of Brass, though at any
given time, many dwell within their island estates. Likewise,
there are always a few [[dao]] in residence showing off their latest
creations and taking new commissions. The streets are filled
with [[mephit]]s and [[salamander]]s. Visiting mortals are a curiosity,
but most elementals are too busy to take much time on them.
The City of Brass is ringed with [[teleportation circle]]s, linking it
to all of the estates and major foundries.
This [[layer]] of [[Shavarath]] looks like it was once a city of marvels, with towers
rivaling those of [[Sharn]], gilded monuments, museums,
gardens, and more. But the City of Knives lies between vast
armies of the Legion of [[Justice]] and the Legion of [[Tyranny]],
and it represents the impact of brutal war on a glorious city.
Ongoing bombardment is a constant threat. The civilian
conscripts are fighting their own war for shelter and supplies;
some rally together for the common good, while others have
become looters and brigands. Justice and Tyranny hold their
positions on either side of the city, relying on bombardment
and occasional assaults. The Legion of [[Cruelty]] spreads terror
within the city, while the [[celestial]]s of the Legion of [[Freedom]]
seek to rally the common people against all enemies.
Look to the cliffs to the north of [[Sharn]], and you'll see
a collection of crypts embedded into the cliff face. This
is the City of the Dead, the final resting place of the
wealthiest citizens of Sharn. Common folk are cremated
after death, but members of the [[Sixty]] Families and others with sufficient wealth have their remains interred in
the tombs and tunnels of this necropolis.
Few people reside in this area. Among its major features are [[Aureon's Holt]], a temple of the [[Restful Watch]],
where [[Sovereign|Sovereign Host]] priests conduct funerals and serve
as the caretakers of the tombs. [[Warden Tower]] is an
outpost of the Church of the [[Silver Flame]], staffed by a
single hermit tasked to watch for supernatural threats.
Though the City of the Dead is largely peaceful, stories circulate about dark powers lurking there. Some
parents warn their children of the [[Lich|lich]]-Priest [[Gath]], who
steals disobedient children and forces them to work in
his kingdom of the dead, polishing the bones of his skeletal subjects.
Clade is the first level of underworld power for the [[Dream Merchants]] in [[Dar Myan]]. Seemingly a mousy and reserved man, Clade wears
a mask of calm, pretending to be nothing more than an
apothecary. He is discreet and observant, cunning and
careful. He's also a cold killer who helps facilitate the
[[dreamlily]] trade through Dar Myan. Long ago, he lost all
faith in the [[Path of Inspiration]], but he doesn't know the
true power behind the Dream Merchants.
You create an invisible sensor within 1 mile in a location familiar to you (a place you have visited or seen before) or in an obvious location that is unfamiliar to you (such as behind a door, around a corner, or in a grove of trees). The sensor remains in place for up to 30 minutes, and it can't be attacked or otherwise interacted with. You can see and hear through the sensor as if you were in its space.
A creature that can see the sensor (such as a creature with [[truesight]]) sees a luminous, intangible orb about the size of your fist.
The only major theater in
[[Middle Menthis]], the Classic lives up to its name by
performing only traditional works written before the
start of the [[Last War]]. While the [[Grand Stage]] in the
[[University District]] also performs more recent works
echoing the classical style, the Classic has a stated
policy of not even considering new works. Every performance in the Classic features archaic language,
outmoded social customs, and the idealistic outlook
of a world that has utterly vanished from [[Khorvaire]],
yet its thousand seats fill up every night.
The Claw Islands sit just off the eastern coast of the [[Thousand]] in [[Argonnessen]].
The [[aboleth]]s created the lobster-like [[chuul]]s as living weapons
and unleashed them against the [[sahuagin]]. The high priests of
the [[Eternal Dominion]] responded by consuming the chuuls and
taking their power. A Claw of Sha’argon is a mighty [[sahuagin]]
champion—an armored powerhouse possessing deep faith and
wielding [[divine power|divine magic]]. While barons lead sahuagin into battle,
the Claws of Sha’argon are the spiritual leaders of the [[Eternal Dominion]] who lead its inquisitions and crush its enemies with
claw and spell.
//''Claw and Tentacle.''// The powerful claws of a sahuagin priest
are deadly weapons. It manipulates objects and casts spells
using its facial tentacles. These tentacles are fully prehensile
limbs capable of delicate work, but are not as strong as its limbs.
//''Devoted Priests.''// Only the greatest spiritual leaders of the
[[sahuagin]] are nominated for the ritual that produces a Claw of
Sha’argon, and only those possessing the most unshakable
faith survive this agonizing process. The Claws of Sha’argon
see themselves as chosen vessels of the [[Devourer]], channeling
the fury of the wild. A Claw of Sha’argon casts spells as a [[cleric]] up to [[rare-tier|spell tier]].
(Deinonychus)
Clawfoot [[dinosaur]]s are two-legged saurians with sharp
teeth and toe claws that resemble deadly sickles. They
are imposing creatures, about the size of a tall human,
and are fierce enough to take down even larger prey.
In the wild, an untrained clawfoot can easily hold its own in combat, but they are even fiercer when hunting in packs. Their instinct for pack structure has made these dinosaurs a traditional war mount for the [[halfling]]s of the [[Talenta Plains]], with clawfoots quickly and eagerly responding to training and control.
The Claws of Kylaryx are a chain of islands off the northern coast of the [[Thousand]] in [[Argonnessen]].
These heavy gauntlets of brown iron are forged in the shape of an [[umber hulk]]'s claws, and they fit the wearer's hands and forearms all the way up to the elbow. While wearing both claws, you can tunnel through soil at a rate of 3 feet per second, and you can tunnel through solid rock at a rate of 4 inches per second.
You can use a claw as a melee weapon while wearing it. While wearing the claws, you can't manipulate objects.
A cleansing stone is a sphere 1 foot in diameter, engraved with mystic sigils. When touching the stone, you can activate it and remove dirt and
grime from your garments and your person.
Such stones are often embedded in pedestals in public
squares in [[Aundair]] or in high-end [[Ghallanda]] inns.
While most people think
of [[dwarves|dwarf]] as grim and stoic individuals, the
merchant princes of the [[Mror Holds]] take great
pride in their appearance and clothing. Run by
Hellien Clamas Clebdecher, Clebdecher's Loom
specializes in fine clothing in Mrorian and [[Zil|Zilargo]]
styles. Clebdecher is one of the finest workers of
[[glamerweave]] in the city, and many [[human]] lords and
ladies come to [[Highhold]] to avail themselves of her
talents. As a result, there is usually a considerable
wait for Hellian's services; anyone preparing for an
important event needs to plan ahead to purchase a
Clebdecher gown or suit.
Through prayers and rituals of their faith, clerics are [[divine|divine magic]] spellcasters that combine the magic of healing and inspiring their allies with spells that harm and hinder foes. They can provoke awe and dread, lay curses of plague or poison, and even call down flames from the heavens to consume their enemies.
Most clerics are priests of a [[religion]] with the devotion required to perform miraculous deeds. Their magic may not be as predictable or flexible as a [[wizard]]'s, but it can produce incredible phenomena that no [[arcane|arcane magic]] spell can reproduce.
Cliff's End is a bay off the coast of mainland [[Lhazaar Principalities]] near [[Cliffscrape]], and is fenced in by [[Traglorn Isle]] and [[Tempest Isle]].
Cliffscrape is a town in mainland [[Lhazaar Principalities]]. It has a high population of [[dwarves|dwarf]] and [[orc]]s with family ties to the [[Ironroot Mountains]].
Cliffside encompasses the docks and waterfront of
Sharn, running along the edge of the [[Dagger River]] and
up the cliff above it. Massive lifts levitate goods up to the
skydocks in the district of [[Precarious]]. The area's rough
and poor, filled with sailors and dockworkers. Many of
these boisterous folk love the life in Cliffside; as a common saying goes, "Better a tankard of ale in Cliffside than a barrel of [[Central|Central Plateau]] wine."
Plenty of legitimate services can be found here—ships
need supplies and repairs, goods need to be stored,
captains need to hire crew, and sailors need a dry bed to
sleep in once in a while—but other businesses meet different kinds of demands. These services include bordellos, taverns, gaming dens, and shadier entertainments
for sailors to spend their off duty hours and wages on.
Even though the [[Sharn Watch]] has a token presence
here, Cliffside remains one of the most crime-ridden
districts in the city. This situation is exacerbated by the
presence of [[sahuagin]], who sell their services as guides
to help ships traveling to [[Xen'drik]]. In fact, the sahuagin
rarely initiate violence, but there have been clashes between them and aggressive, drunken sailors.
!! Districts and Noteworthy Locations
* [[Grayflood]]. This seedy waterfront district fills roughly the northern half of the docks and wharves running along the Dagger River.
* [[Mud Caves]]. This shantytown sits on the edge of Cliffside, where generations of destitute people have carved out homes in the cliff walls. It's a wretched existence, but most of the inhabitants have no other options. It also makes an excellent hiding place for fugitives.
* [[Sharn's Welcome]]. Also known as the docks of Cliffside, this area is rough and dirty. Its taverns frequently host brawls, while the inns offer travelers a wide variety of ways to be cheated or robbed.
* [[Ship's Towers]]. Drifting alongside the Cliffside docks is a collection of rafts, ships, and houseboats lashed together to form a floating community.
''District Type: ''Adventurer's quarter<br/>
''Buildings: ''Shrines ([[Silver Flame]], [[Sovereign Host]],
[[Dol Dorn]], [[Dol Arrah]], [[Olladra]]), average lodging
(25), poor lodging (45), average food (20), poor
food (60), upscale trade (1), average trades (25), poor
trades (60), average services (20), poor services (60),
average residences (20), poor residences (80)<br/>
''First Impression:'' The towers of this district are
drab gray granite, but the crowds that fill the streets
are quite colorful. People of all races and cultures
can be seen. An [[Aundair]]ian wizard compares notes
with a [[kalashtar]] monk in the shade of a tavern, while
across the street a [[Lhazaar|Lhazaar Principalities]] privateer and a [[Valenar]] [[elf]]
compare blades. Clifftop is a fairly dingy district—but
it attracts an interesting crowd.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Highwater]] (southwest); [[Hope's Peak]] (south); [[Tumbledown]] (below)
This district attracts those willing to devote sword,
spells, or skills to risky but profitable endeavors. Anyone looking for a discreet bodyguard, a mercenary soldier, or a guide to the wilds of [[Xen'drik]] can
find what they need in Clifftop. Adventurers looking for a patron may find one here.
Clifftop is a curious blend of wealth and poverty.
Most of the businesses in the district are serviceable,
but not exceptional, providing for the needs of the
adventurer who rarely has more than a few pieces of
gold in his purse. It also provides services for the lucky
explorer or privateer who has returned home with
gold to spare, with commercial spellcasters, shops
selling used wands and old mageworked weapons, and
other exotic goods readily available. While similar in
many ways to the [[Deathsgate]] district, Clifftop has a
better and generally well-deserved reputation.
The district provides a number of services
adventurers may find useful. A wide variety of hirelings can be found here, and all of them are used
to putting up with the odd demands of adventurers. Likewise, as adventurers have a way of getting
into trouble with the law, there are a considerable
number of barristers and advocates in the district.
The pawnshops of Clifftop offer 45% of value for
almost any sorts of goods, except those that are obviously stolen; fences that deal in stolen goods must be
found in the [[lower levels|Lower Dura]] of [[Dura]].
!! Noteworthy Locations
* The [[Augury]]. A shop specializing in [[divination]] services.
* The [[Clifftop Adventurers' Guild]]. An institution that provides adventurers with camaraderie and profitable work.
* The [[Drunken Dragon]]. A tavern frequented by members of the Clifftop Adventurer's Guild. The food is modest, but it has the widest selection of exotic alcohol in Sharn.
* The [[Esoteric Order of Aureon]]. The guildhall of one of Sharn's most prestigious arcane orders. A reliable source for arcane spellcasting services.
* The [[Korranor]]. A theater focused on tales of adventure.
* The [[Mystic Market]]. A collection of shops specializing in different categories of [[magic item]]s. Most merchandise is common or uncommon, but rare items are occasionally available.
* A [[House Sivis Enclave|Sivis Enclave (Clifftop)]] specializing in legal services and translating texts from [[Xen'drik]].
* A [[House Tharashk Enclave|Tharashk Enclave (Clifftop)]] specializing in exploration and prospecting, with a focus on [[Xen'drik]].
* [[Kavv's]]. A small little-known restaurant that offers flavors of [[Xen'drik]].
* [[Kurala's House of Healing]]. A [[Jorasco]] house of healing.
A dwarf named
Shekkal Korranor established the Clifftop Adventurers' Guild 150 years ago, intending it as a place where
explorers and wanderers could find support and good
company. Shekkal died in the [[Last War]], but the guild
remains—a social club for adventurers and a one-stop
marketplace for anyone seeking capable champions.
Located in the
[[Clifftop]] district of [[Upper Dura]], this organization has a
sterling reputation as a source of reliable explorers and
champions. Clifftop adventurers are known for their
courage and integrity, and guildmaster [[Sumara "Summer" Korranor|Summer Korranor]] holds members to a high standard of virtuous behavior. As a Clifftop adventurer, you're expected to keep
your word, to stand by your comrades, to uphold the law,
and never to intentionally endanger innocents with your
actions. Many of the local businesses cater to adventurers, and if you're a member of the guild, you can expect
a warm welcome in the taverns of Clifftop.
The Clifftop Adventurers' Guild headquarters is the physical and social center of its district,
a massive stone edifice built with the riches acquired
over a lifetime of adventuring. Part quiet library, part
comfortable inn, part active gymnasium, and part rowdy
tavern, the guildhall contains practically every facility
adventurers could need to train, study, and socialize.
The neighborhood around it caters to adventurers' other
needs with its variety of shops and services.
While wearing this cloak, you can make it billow dramatically at will.
While you wear this cloak, it projects an illusion that makes you appear to be standing in a place near your actual location, much like a [[displacer beast]]. If you or the cloak take damage, the property ceases to function for 5-10 seconds. This property is suppressed while you are incapacitated, restrained, or otherwise unable to move.
(See also [[Thuranni cloak]], the lower rarity version of this item that requires a [[Mark of Shadow]].)
While you wear this cloak with its hood up, you gain a large advantage to hide, as the cloak's color shifts to camouflage you.
(See also [[cloak of shadows]], the lower rarity version of this item that requires a [[Mark of Shadow]].)
This olive green cloak is pinned with dozens of long yellow ribbons. On command, the cloak will fly off the user's shoulders and attempt to entangle and distract an enemy within fifteen feet.
While wearing this cloak, you can speak its command word. This turns the cloak into a pair of bat wings or bird wings on your back for 1 hour or until you repeat the command word. The wings allow you to fly at a speed of up to 20 miles per hour. When they disappear, you can't use them again for several hours.
The wearer of this tattered black wool cloak can cause it to billow at will. Smoke issues out from under the cloak's hem, and the wearer's eyes seem to glow faintly red. Gain an advantage when intimidating.
While wearing this loosely-woven cashmere cloak, you can pull its hood over your head to cause yourself to become invisible. While you are invisible, anything you are carrying or wearing is invisible with you. You become visible when you cease wearing the hood.
After 2 total hours of use, the cloak ceases to function. For every uninterrupted period of 12 hours the cloak goes unused, it regains 1 hour of duration.
This simple black cloak is covered in a layer of long, silky feathers. When a feather is removed, it hardens and can be used as a throwing knife, though the feathers shatter after one use. <<dr 1d6>> feathers regrow overnight.
This cloak is made of deeply violet silk, hemmed in gold and royal red. The collar is high and lined with golden beads.
Once per day, the user can summon the cloak's magic to greatly increase the strength of a single [[arcane|arcane magic]] spell.
In order to attune to this magic item, you must possess the [[Mark of Passage]].
This cape smells faintly of brimstone. While wearing it, you can use it to teleport yourself from your current location to any other spot within 500 feet. You arrive at exactly the spot desired. It can be a place you can see, one you can visualize, or one you can describe by stating distance and direction, such as "200 feet straight downward" or "upward to the northwest at a 45-degree angle, 300 feet."
You can bring along objects as long as you can carry them. You can also bring one willing creature of your size or smaller who is carrying gear up to its carrying capacity. The creature must be within 5 feet of you when you use this effect.
When you disappear, you leave behind a cloud of smoke, and you appear in a similar cloud of smoke at your destination. The smoke lightly obscures the space you left and the space you appear in, and it dissipates at the end of your next turn. A light or stronger wind disperses the smoke.
This property of the cape can't be used again until the next dawn.
This cloak provides allows you to cast [[mage armor]] on yourself once per day. However, the duration is only four hours.
<<<
{{mage armor}}
<<<
To use this cloak's effect, you must have the [[Mark of Shadow]].
While you wear this cloak with its hood up, you gain a large advantage to hide, as the cloak's color shifts to camouflage you.
(See also [[cloak of elvenkind]], the higher rarity version of this item that does not require a [[dragonmark]].)
While you wear this cloak, it does not billow in the wind.
While wearing this cloak, you have advantage when hiding or skulking. In an area of dim light or darkness, you can grip the edges of the cloak with both hands and use it to fly at a speed of 7 mph. If you ever fail to grip the cloak's edges while flying in this way, or if you are no longer in dim light or darkness, you lose this flying ability.
While wearing the cloak in an area of dim light or darkness, you can [[polymorph]] yourself into a bat. The cloak can't be used this way again until the next dawn.
This huge cloak is made from the entire skin of a grizzly bear, clasped with rough iron hooks. If you are a spellcaster, you can cast [[polymorph]] on yourself to transform into a grizzly bear. However, there is a small chance you will forget that you were once human, in which case the spell does not wear off after 1 hour, and you will be unable to remove the cloak without magical assistance such as [[dispel magic]] or [[remove curse]].
This dark indigo cloak with a tattered, golden hem allows the wearer to create an illusory double of themselves up to three times per day. The double looks, sounds, and smells identical to themselves, and persists up to 1 hour, but the illusion is not solid, and will disappear if touched.
While wearing this cloak with its hood up, you can breathe underwater, and you have a swimming speed of 15 mph.
This thick cloak is made of a strange smooth leather that has a faintly blue hue. If you are able to channel [[primal magic]], you can cast [[polymorph]] on yourself to transform into a shark.
This bright yellow cloak has a huge golden sun emblazoned on the back. If the wearer is a [[cleric]] or [[paladin]] of [[Dol Arrah]], they rapidly recover from injuries while they stand in strong daylight.
This simple grey cloak billows with an eternal breeze. The cloak contains a bound air [[elemental]]. The user can freely change the direction of the wind, and once per day, can summon a huge blast of wind in a 30-foot cone.
Made of awakened vines, this cloak normally acts as a garment, but comes alive and acts on its wearer's will when needed.
While wearing the cloak:
* You can cause the vines to flail out and attack hostile creatures within 5 feet of you, piercing them with poisoned thorns.
* You can climb as fast as you can run, as the vines animate and pull you up even sheer surfaces.
* You gain a resistance to poison.
* If you would knocked prone or into a wall, the vines animate, cushion your fall and restore your balance.
Cloakers earned their names for the resemblance they bear to dark leathery cloaks. Lurking in remote dungeons and caves, these stealthy predators wait to slay lone or injured prey stumbling through the darkness.
A cloaker's body is composed of cartilage and muscle. With its tail and fins unfurled, it flies through darkness and lurks among the shadows of caverns the same way a stingray glides through water and hides on the ocean floor. Parallel rows of round, black eyespots run along its back like buttons, and the ivory-colored claws on its cowl resemble bone clasps.
When a cloaker unfurls and moves to attack, it reveals its pale underside and makes its true nature evident. Red eyes glow above rows of sharp teeth, and a long pendulous tail whips behind it.
//''Opportunistic Predators.''// When hunting, cloakers glide through the shadows at a safe distance behind groups of other creatures. They follow parties of humanoids to prey on the wounded after a battle, or pursue herds of cave beasts, attacking the sick, the weak, or the straggling.
Cloakers strike quickly and consume their meals as swiftly as possible, enveloping and devouring their victims. While it feeds, a cloaker uses its swift, whiplike tail for defense, although it rarely takes a stand against dangerous foes or groups of creatures. As an added defense, cloakers can create illusory duplicates of themselves.
//''Haunting Moan.''// Cloakers' thoughts are alien to other life-forms, and they communicate with one another through subsonic moans inaudible to most creatures. At higher intensities, a cloaker's haunting moan becomes audible, evoking sensations of doom and dread in creatures that hear it.
//''Cloaker Conclaves.''// Cloakers prefer isolation, but they sometimes convene with other cloakers for defense or to exchange information about new dangers, suitable hunting grounds, or developments that might affect their habitats. When this convergence is complete, the cloakers separate again.
This copper amulet contains tiny interlocking gears and is powered by magic from [[Daanvi]], a [[plane]] of clockwork predictability. A creature that puts an ear to the amulet can hear faint ticking and whirring noises coming from within.
When you make an action while wearing the amulet, you can forgo rolling the dice to get a low-[[impact]] [[partial success]]. Once used, this property can't be used again until the next dawn.
There is one dark stain in the
shared history of the [[arcane order]]s. Three hundred
years ago, a third order arose in [[Sharn]]—a sinister cabal
called the Closed Circle. This order specialized in [[transmutation]] and [[necromancy]] and dabbled in the forbidden
lore of the [[daelkyr]] and the [[Dragon Below|Khyber]]. It's said that
the members of the Closed Circle went mad and sought
to summon terrible things; whatever the truth, the guild
was wiped out more than two hundred years ago by the
combined action of the Church of the [[Silver Flame]], the
[[Esoteric Order|Esoteric Order of Aureon]], and the [[Guild of Starlight and Shadows]].
Hidden workshops of the Closed Circle might still be
found in Sharn, where vengeful [[lich]]es or other [[wizard]]s
of the Circle practice their dark arts in hiding.
This elegant outfit magically mends itself to counteract daily wear and tear. Pieces of the outfit that are destroyed can't be repaired in this way.
Like the [[Azure Gateway]], the Cloud Dragon is an upscale,
elegant restaurant with breathtaking views, but without the crowds and long waits typical of the [[Celestial Vista]] Restaurant. Its menu concentrates on the best
of [[Brelish|Breland]] fare—spicy ginger soup, sautéed garlic
beef, curried chicken, and the like. In contrast to the
secretive owner of the Azure Gateway restaurant, the
owner of the Cloud Dragon is very forthright about
her identity, making sure to meet and greet every
customer and ensure that everyone has an enjoyable dining experience. Ironically, Kathya Morn is a shapechanger, an [[aranea]] in
[[human]] guise. She has no far-reaching evil agenda;
she just wants to run her restaurant in peace. She does
engage in shady business deals and has ties to at least
one of [[Sharn]]'s criminal organizations, but those take
a back seat to her interest in her establishment.
Cloud [[giant]]s are muscular with light skin and have hair of silver or blue. They are able to turn into mist and create clouds of billowing fog. Average height: 24 ft.
The spellcaster creates a 20-foot-radius sphere of acidic, yellow-green fog centered on a point within 100 feet. The fog spreads around corners, and its area is heavily obscured. The fog lasts for 1-10 minutes, or until dispersed by a strong wind. The vapors are heavier than air and roll along the surface of the ground.
Each creature in the cloud that can't withstand the effects of the fog suffers painful acid burns. Creatures are affected even if they hold their breath or don't need to breathe.
Near the center of [[Skyway]],
where Azure and Brilliant meet, Cloudpool Park
stands as a testimony to the fantastic power of magic.
Wispy cloudstuff is shaped throughout the park to
resemble exquisitely detailed trees, whose leaves rustle
in the ever-present breeze. The cloudscape rolls in
gentle hills, forming beautiful lawns where the residents of Skyway enjoy picnics and long walks. At the
center of the park lies a large “pool” of crystal-clear ice
that affords a spectacular view of [[the city|Sharn]] below to those
brave enough to stand on it or peer over the edge.
Led by Prince [[Mika Rockface]], the Cloudreavers are a powerful band of [[dwarf]] and [[orc]] marauders based in [[Port Krez]] on [[Krag]] Island. The Cloudreaver Principality is in some ways the antithesis of the [[Seadragons]]. If High Prince [[Ryger|Ryger ir'Wynarn]]’s rule represents stability for the [[Lhazaar Principalities]] as the nation moves forward to a new future, the Cloudreavers represent the violent instability of a return to the old ways of bloodthirsty piracy.
Currently the Cloudreavers have a fleet of six vessels, but these ships are remarkably swift; the Cloudreavers possess a number of //windsail//s, which are [[magic item]]s that can shift the wind in their favor. These treasures allow the Cloudreavers to range far from their homeland and to match the speed of [[elemental galleon]]s. Typically, the Cloudreavers prey on the southeastern shores of [[Khorvaire]], striking at [[Q'barra]]n, [[Aereni|Aerenal]], [[Darguul|Darguun]], and [[Zil|Zilargo]] vessels and villages; occasionally Cloudreaver captains even head into [[Brelish|Breland]] shipping lanes, attacking ships en route to [[Stormreach]] or [[Trolanport]]. The Cloudreavers prefer to strike at night, taking full advantage of the darkvision possessed by most of their sailors.
Many Cloudreavers worship the [[Devourer]], and some develop [[divine magic]] abilities as a result of this devotion. The principality takes its name from this practice; tales speak of Cloudreaver pirates calling lightning from the sky to shatter enemy sails and ships.
Clovis Forlaine, pirate and fence, runs various gray-market operations in [[Whitetooth]], acquiring [[Tashanan lichens|Tashana lichen paste]], art, and other valuable resources of the [[Tundra|Tashana Tundra]].
Originally a privateer from the [[Lhazaar Principalities]],
Clovis has operated out of Whitetooth for more than a
decade now. He has a hand in, or an eye on, every significant transaction that takes place in Whitetooth. Clovis
keeps several different safe houses in town and often conducts business on vessels anchored in the waters west
of Whitetooth. Clovis's true identity is a carefully guarded
secret, and he "officially" presents himself as a slickly
dressed male human of conspicuously Lhazaar origin.
The easternmost portion of [[Stormreach]] is easily the
city’s most unusual subdivision. A massive trench in the
ground once demarcated the eastern border of the old
city and today marks the start of Coasthold, the domain
of House [[Kundarak]]. When the [[dwarves|dwarf]] first arrived
in force, they found no substantive construction to
the north and east of the trench, though they found
nothing wrong with the land itself. It was as though
previous civilizations intentionally chose to stay away
from the plot of land, despite its prime location along
the region’s eastern coast. Sensing opportunity, the
dwarves approached the [[Storm Lords]] with a proposal to
purchase the undeveloped land from the city outright.
With the help of their allies in the [[Amanatu family]], the
deal went through, and House [[Kundarak]] immediately
set to work on the two massive stone bridges that today
link the ward to the rest of [[Silverwall]].
House [[Kundarak]] owns every inch of Coasthold, from the harbor to the south to the [[river|Koronoo River]] mouth in the north. The agreement with the city affords the house a number of perks that other houses cannot claim, chief among them being the right to turn away even the [[Stormreach Guard]] at their gates. Despite this apparent loss of power, the [[Storm Lords]] have all profited from House Kundarak’s presence, and all seem to appreciate the legal loopholes created by having such a reservation in their midst.
!! Noteworthy Locations
* the [[Citadel of the Twelve]]
* [[House Kundarak Enclave|Kundarak Enclave (Stormreach)]]
* [[House Lyrandar Shipyard]]
* the [[Titanswalk]]
* the [[Tower of Kol Korran]]
This armor is a creation of the [[daelkyr]] [[Belashyrra]], the Lord of Eyes. Made from a tough, leathery material, a coat of many
eyes is warm to the touch. It is covered with eyes—eyes of many
different types of creatures, constantly glancing around as it
studies your surroundings. When you attune to the armor, it
binds itself to your flesh and shares its insight, granting the
following benefits:
* The armor lets you see in all directions, and you have advantage on perception attempts that rely on sight.
* You have darkvision with a range of 120 feet.
//''Gifts of the All-Seer.''// All coats of many eyes are linked to
[[Belashyrra]], and while wearing one you may receive visions—flashes of things the Lord of Eyes wishes to see through you. If you follow through with these tasks, your armor can evolve, gaining additional powers and increasing its effective rarity.
* A rare coat also grants you an advantage to dodge physical threats, and allows you to see invisible creatures and objects within 120 feet.
* A very rare coat also grants you the ability to cast [[arcane eye]] with it once per day.
The cockatrice looks like a hideous hybrid of lizard, bird, and bat, and it is infamous for its ability to turn flesh to stone. These omnivores have a diet that consists of berries, nuts, flowers, and small animals such as insects, mice, and frogs—things they can swallow whole. They would be no threat to anything else if not for their fierce and frenzied response to even a hint of danger. A cockatrice flies into the face of any threat, squawking and madly beating its wings as its head darts out to peck. The smallest scratch from a cockatrice's beak can spell doom as its victim slowly turns to stone from the injury.
The [[Galifar]] Code of Justice (or "Code of Galifar") was the intricate system of
laws, rights, and regulations that defined the legal structure of the unified kingdom of Galifar before the [[Last War]].
The Galifar code survives intact in [[Breland]] and [[Aundair]].
[[Karrnath]]’s [[legal code|Code of Kaius]] is more rigid and less forgiving than
the Galifar code on which it was based, and [[Thrane]]’s
theocratic government has replaced the code with a
more stringent set of religious laws. The other nations of
[[Khorvaire]] use their own systems of laws and justice that
trace their ancestry in varying degrees back to the Code
of Galifar.
The laws presume innocence, provide for judgment by
peers, and establish a complex legal system. If someone
winds up in trouble with the law, it is highly recommended
that the subject obtain the services of a solicitor or councilor
skilled in the Code of Justice. Even with laws and enforcers,
the Code leaves enough loopholes and gaps in the system
for experienced criminals to take advantage of.
While the [[Galifar Code of Justice|Code of Galifar]] provides the basis for civil rights in [[Karrnath]], the Code of Kaius that developed from it over the last few hundred years is more rigid and less forgiving; its laws and regulations almost promote a society where might makes right. Indeed, the nation has labored under martial law since the earliest days of the [[Last War]].
The Cogs lie deep beneath [[Sharn]], below the [[sewers|Sewers of Sharn]]
and [[Old Sharn]]. Streams of [[Fernian|Fernia]] lava flow through this area, and over the
centuries, House [[Cannith]] has helped [[Breland]] establish
vast foundries that tap this mystic resource. The Cogs are a honeycomb of passages, just wide enough for the carts and caravans that transport goods to and from the surface. The heat is palpable, and smoke and sulfur scents the air. [[Ashblack]]
and [[Blackbones]] are industrial districts, largely inhabited by [[warforged]] laborers and miserable workers of other races. It is said that House Cannith maintains a
forgehold in the Ashblack district, and that this is where Baron [[Merrix d'Cannith]] conducts his experiments.
The [[Sharn Watch]] maintains a presence in the Cogs,
and overseers from House Cannith are stationed here
to keep things in order. Beyond these industrial districts lies the deeper tunnels of [[Khyber's Gate]], a tenement district.
!! Districts and Noteworthy Locations
* [[Ashblack]]. The first foundries of Sharn were built here. The district is devoted to industry, and the environment here is sweltering and claustrophobic.
** [[Keldoran Forge]]. Though most of the foundries in the Cogs are devoted to large-scale industry, the [[dwarf]] Antos Keldoran maintains a small forge and produces bespoke arms and armor.
* [[Blackbones]]. Blackbones is newer than Ashblack, and it shows. The district's corridors are wider and better lit. The foundries are well maintained, and the district has a few thriving businesses. Most of the [[warforged]] that reside in Sharn work in Blackbones.
** The [[Pool of Onatar's Tears]]. A small temple in the Blackbones district holds a pool said to be blessed by the god [[Onatar]]. Smiths come from across [[Khorvaire]] to dip their tools in the pool.
** The [[Red Hammer]]. The Red Hammer is Sharn's only inn maintained by and for [[warforged]]. It offers those who work in the Cogs opportunities to socialize, along with repair and cosmetic services.
* [[Khyber's Gate]]. On its surface, this is a wretched, stifling [[goblin]] tenement district. But [[Sharn]]'s darkest secrets can be found within the Gate's tunnels.
''District Type:'' Warehouse district<br/>
''Buildings:'' Warehouses (50), poor trades (20), poor
services (40), poor residences (400), other (3)<br/>
''First Impression:'' This district is filled with sturdy
warehouses and storage towers. Teamsters and
laborers haul goods to and from storage vaults. A
sulfurous smell wafts up from the shafts that lead to
the [[Cogs]] far below.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Terminus]] (northwest); [[Wroann's Gate]] (northeast); [[Torchfire]] (bridge, southwest); [[High Walls]] (south); [[Blackbones]] (below); [[Grawand]] (above)
Travelers who arrive at [[Wroann's Gate]] or [[Terminus]]
may take [[skycoach]]es up to the higher wards, but cargo
is brought to the warehouse district of Cogsgate.
The [[Guardians of the Gate]] and the Wharf Watch
both perform customs investigations, and there are
three tariff offices where merchants can pay the taxes
levied on their goods, or where local landowners can
come to pay their taxes to the [[Brelish|Breland]] Crown. After
customs inspections, goods are usually stored in one
of the many warehouses until they can be distributed
throughout the city or transported to the docks.
Cogsgate is the gateway to the [[Blackbones]].
Ore from [[Zilargo]] and [[Karrnath]] is carted down the
long tunnels into the darkness, and the sulfurous
smell of the [[Cogs]] occasionally lingers the district.
Most of the Cog workers live in this district, and it
can be a rough place.
One new area of tension revolves around the
war between the [[Boromar Clan]] and the criminal
organization known as [[Daask]]. The Boromars have
financial interests in many of the warehouses, and
the monsters of Daask have been striking Boromar
holdings across the city. To date, Cogsgate has been
left largely untouched, but at any time a Daask commando force could emerge from Blackbones to strike against a Boromar holding.
There is a small House [[Deneith]] outpost in this
district where travelers can arrange for additional
warehouse security, long-term bodyguards, or short-term escorts to the higher levels of the city.
House [[Kundarak]] maintains five high-security warehouses in this district. These warehouses are especially secure, combining a variety of magical [[abjuration]]s with mundane traps. These warehouses cost twice as much to use as other warehouses in Cogsgate, but merchants with a serious interest in security readily pay the price.
This scintillating copper coin sheds dim light in a 5-foot radius. If dropped a distance greater than 5 feet, the coin issues a melodious ringing sound when it hits a surface. Any creature that can hear the chime can determine the distance the coin dropped based on the tone.
Cold fire is a form of [[continual flame]] that occurs
naturally in [[Fernia]]; the flames have the texture of warm putty.
Fernian ashes are created from the wood of rare trees found
only in the [[Sea of Fire]].
[[Human|human]]s have no memory of the [[Age of Demons]]. Even
the ancient [[elves|elf]] were born long after the [[overlord]]s
were bound in [[Khyber]]. But the [[lizardfolk]] were there
when [[fiend]]s sacrificed [[couatl]] on obsidian altars.
Their race is as ancient as the [[giant]]s or the [[dragon]]s
themselves.
During the long uprising, the [[lizardfolk]] of ancient [[Q'barra]] aided the [[couatl]] in their struggle. Toward the end of that war, the couatl planted a seed in the collective unconscious of their lizardfolk allies to ensure that they would always remember the horrors of the past. To this day, when the lizardfolk of Q’barra sleep, they dream of the [[Age of Demons]]. They dream of the battles their ancestors fought. They dream of dragonfire and radiant serpents. And they dream of [[Masvirik]], the [[demon]] [[overlord]] known as the Cold Sun. Unlike the [[Uul Dhakaan]], the shared dreams of the lizardfolk are not a persistent dreamscape in the [[Ocean of Dreams]]; they are pre-programmed memories and lessons implanted by the [[couatl]]. One might say that the lizardfolk dream in the [[Silver Flame]] rather than in [[Dal Quor]].
The [[lizardfolk]] of [[Q'barra]] call themselves the
''Masvirik’Uala''. The direct translation of this is the Cold
Sun Federation, but the settlers who interact with the
lizardfolk have long misinterpreted this name. The
Masvirik’Uala aren’t the Federation //of// the Cold Sun—they are the league that stands against it.
Their shared dreams define their culture, and they
stand ready to face the [[overlord]] should he rise again.
They fight the [[Poison Dusk]] whenever their paths
cross. And they watch over the web of light that the
great serpents planted in the earth—the [[dawn shard]]s,
[[dragonshard]]s charged with the light of the [[Silver Flame]].
!! The Cold Sun Federation Today
The [[lizardfolk]] of the Masvirik’Uala are a loose alliance of small tribes. They are hunters and gatherers who split to form new tribes any time their population
grows to a level that cannot be supported by local
resources. Many tribes are nomadic, but those that
live in the areas rich in natural resources have established permanent villages.
The Masvirik’Uala have always kept their distance
from settlers. There were clashes when the settlers
first arrived, but the lizardfolk proved willing to cede
certain regions to the outsiders.
Duke [[Ven ir'Kesslan]] brokered the [[Newthrone]] Accords,
a series of maps establishing the regions the
Masvirik’Uala held dear and would fight to maintain.
The [[lizardfolk]] have no concept of legal documents.
For them, the Accords were simply a statement of fact,
not a binding document. Nonetheless, whenever the
settlers have held to the territories of the Accords,
there has been peace with the lizardfolk.
Now the peace has been broken. Federation lizardfolk are raiding caravans, killing prospectors, and attacking mining camps. Settlers have fought the
[[Poison Dusk]] for decades, but this new wave of violence has shocked them with its brutality. When the [[lizardfolk]] are victorious in battle, they leave no survivors and no structure standing.
Lord [[Khalar Velderan]] of House [[Tharashk]] has condemned
the [[lizardfolk]] as a threat to all the people of [[Q'barra]].
The facts are more complicated. Adventurers who
investigate violent incidents will discover that all
the attacks are tied to [[dragonshard]] mining. Only
shard caravans are attacked. The villages that have
been struck have all been supporting mining work,
whether through House [[Tharashk]] or independent
prospectors.
The most curious aspect is the fate of the shards
themselves. The [[lizardfolk]] break every tool and kill
every settler they find, but they leave behind large
quantities of [[dragonshard]]s. Among those leavings,
there are never any [[dawn shard]]s or [[dusk shard]]s.
The attacks are carried out by nomadic tribes of
lizardfolk. It is difficult to find these raiders in the
deep jungles, though all of the tribes know of the
violence. If questioned, a Masvirik’Uala elder will
acknowledge the attacks and say that the warriors are
“defending the light in the land.” The outsiders are
“stripping the light away and spreading the darkness,
but the [[Cold Sun|Masvirik]] will rise again.” Given that most
outsiders know nothing of the ancient history of the
region, most interpret the rise of the Cold Sun as a
threat tied to the lizardfolk themselves, not realizing
that the Cold Sun is actually what the lizardfolk seek
to stop with their action.
The lizardfolk mean well. They oppose the horror they see in their dreams. But they do not understand the outsiders. In their minds, the miners are one with the [[Poison Dusk]]—servants of [[Masvirik]] who seek to extinguish the light and spread the [[dusk shard]]s. Those who serve the Cold Sun must be eliminated.
Perhaps there is a way to forge an understanding between [[Tharashk]] and the Masvirik’Uala, but this won’t happen unless the prospectors are persuaded to abandon the lucrative trade in [[dusk|dusk shard]] and [[dawn shard]]s. It will take more than [[scale|scales]] superstition to accomplish that.
!! Masvirik'Uala Culture
Common dreams define the culture of the [[Q'barra]]n
[[lizardfolk]]. The dreams bind the tribes together, but
they have also kept lizardfolk culture stagnant; they
live the same lives as their ancestors and model their
actions on dreams.
The lizardfolk have no written language. Their
most important stories and teachings come to them
every night. The language of the tribes is an unusual
and rather limited dialect of Draconic, and they are
irritatingly concise in conversation. This is because
of the shared dreams. Every lizardfolk has the same
cultural references, and it is impossible for them to understand how an intelligent creature could fail to grasp these things. Thus, a lizardfolk priest will say “that one is Kurall’s Claw” when he means “that one is a traitor who will kill you in your sleep.” The priest doesn’t know how to say it another way, and he doesn’t understand why he’d need to—everyone knows the tale of Kurall’s Claw. Effects such as comprehend languages are of limited use; the communication gap is not a question of translation but of context.
This has defined interaction with the [[lizardfolk]]
ever since [[human]]ity arrived in the region. It has led
to many misunderstandings, so that both lizardfolk
and settlers consider the others to be simpletons.
Player characters have an opportunity to be the first
explorers to bridge this gap and establish a new bond
between lizardfolk and settlers.
Another aspect of the shared dreams can impact
players: the [[Draconic Prophecy]]. The dreams are
records of events, but they also hold messages from
the [[couatl]], who mastered the lore of the Prophecy
long ago. If the player characters have a role in the
Prophecy, the lizardfolk may know of it. Depending
on the characters’ destiny, the lizardfolk may welcome them as heroes or greet them with inexplicable hostility. Though the Prophecy is never certain, this
is an opportunity to set adventurers on a particular
path. The Masvirik’Uala may know that the Stormchild with the Sixfold Scar must find the crystal sword and face the Black Wyrm in the Obsidian
Tower. They don’t know for certain that the outsider
will triumph in this battle with [[Rhashaak]].
Dragonshards play a vital role in [[lizardfolk]] society. Masvirik’Uala lizardfolk wear [[dawn shard]]s as jewelry, and they embed the shards in weapons or
tent poles. Villages deep in the jungle often have pits
of [[dusk shard]]s. Despite the seemingly casual attitude
toward these, lizardfolk place a high value on the
shards when trading or selling them. It is difficult
for them to explain their reasons in terms explorers
understand. Like so many things, to the lizardfolk,
their reasons are common knowledge. Dawn shards
hold the light; dusk shards channel the darkness and
must be kept away from the [[Poison Dusk]].
While the [[lizardfolk]] and the [[dragonborn]] both
oppose the [[Poison Dusk]], they rarely work together.
The dragonborn consider the lizardfolk to be superstitious primitives, while the lizardfolk have the same problems communicating with the dragonborn as
with [[human]]s. Besides that, they still remember that
it was the first failing of the dragonborn that nearly
unleashed [[Masvirik]] ages ago.
While their appearance often leads adventurers
to assume that theirs is a [[druid]]ic culture, lizardfolk
devotions draw on [[divine power|divine magic]], not [[primal|primal magic]] spirits.
They revere a nameless force of light that holds back
darkness, symbolized by the silhouette of a winged
serpent encircling a stylized, black sun. A student of
religion who observes them long enough may recognize the truth: they are devoted to the [[Silver Flame]].
While it looks more like a
fortress than a place of worship, Coldflame Keep is
the local church devoted to the [[Silver Flame]]. Established during the [[Purge|Silver Crusade]] as a garrison of the church
templars, Coldflame Keep has slowly dwindled as
the hierophants have drawn resources away to the
temples of [[Sovereign Towers]] and [[Pinnacle]]. Today,
the keep is a shadow of its former self. Flamebearer
Mazin Tana ([[human]] [[cleric]]) does his
best to maintain the temple and serve the community. His acolytes consist of two teenagers and one
crippled scribe.
The garrison was built to house
a hundred soldiers, but currently there are only
eight templars in residence. While these soldiers are supposed
to protect the district from supernatural threats,
Mazin believes that they have been chosen by the
[[Archierophant|Ythana Morr]] to keep an eye on the aging priest—to
make certain that Mazin does not try to interfere
with the powers that control the [[Church|Silver Flame]] in [[Sharn]].
While he is disillusioned with his superiors, Mazin
still believes in the ideals of the Church and does his
best to help those in need. If the party needs the aid
of a true priest of the [[Silver Flame]], Mazin is one of
the few people who can help them.
Coldwake Pond is a deep body of water near the great gate
that leads into [[Stormhaven]]. The pond—a cistern in centuries past—is much colder than other bodies of water in and around the city. Every day mist rises from the pond
as warm, damp air meets its iciness. Speculation is rife
about what causes the pond to be so cold.
The four great colleges of [[Io'lokar]] represent a storehouse of theoretical and
historical knowledge greater than any in [[Khorvaire]].
The colleges are divided into disciplines defined by the [[dragon]]s when [[Io'vakas]] was first built: the arcane sciences (including [[arcane magic]], [[arcane theory]], [[alchemy|alchemist]], and astronomy), the natural sciences (including [[divine magic]], [[primal magic]], and biology), the conscious sciences (including [[psionics]] and psychology), and the unconscious sciences (including history, sociology,
and dream study). Study of the [[Draconic Prophecy]] is spread out
among the four colleges, since the Prophecy touches all
aspects of the world.
Spaced around the [[Height]], the four colleges are
multistoried affairs of granite and marble. Each features
a huge open courtyard at which morning and afternoon
lectures are given by resident sages or [[dragon]] scholars
visiting the city. All citizens of [[Io'lokar]] are welcome to
these events.
The City of Knowledge gets few visitors, and its scholars take no chances on useful lore being overlooked. In particular, recent events and developments in [[Khorvaire]], [[Xen'drik]], or [[Sarlona]] are of great interest to the Colleges, and PCs who have information to share might find themselves invited to lodge at the [[Height]] for
an extended time.
PCs might also find themselves in possession of information whose value they do not fully understand. Like the draconic scholars they model, the sages of
[[Io'lokar]] often draw lines of meaning between apparently unrelated events. The PCs’ previous adventures might carry dark portents, and could lead to the [[Io'lokari]] requesting the party’s aid on an upcoming academic mission.
You speak a one-word command to a creature you can see within 60 feet. If the target cannot resist your magical imperative, they must follow the command. The spell has no effect if the target is [[undead]], if it doesn't understand your language, or if your command is directly harmful to it.
Some typical commands follow, though you might issue a command other than one described here. If the target can't follow your command, the spell ends.
* ''Approach''. The target moves toward you by the shortest and most direct route.
* ''Drop''. The target drops whatever it is holding.
* ''Flee''. The target moves away from you by the fastest available means.
* ''Grovel''. The target drops to the ground and lies face down.
* ''Halt''. The target stops moving.
If you are able to cast rare-tier spells, you can cast this as such to affect up to three creatures with this spell simultaneously.
Pleasantly situated atop [[Breland]]
Spire, the Commons is a large open-air plaza with
a commanding view of the neighboring towers and
lower reaches of the city. Every morning, vendors
wheel their carts up to the Commons and offer a
mouth-watering variety of food from a dozen different cuisines, from [[Karrnath]]i sausage to [[Talentan|Talenta Plains]]
kebabs. The offerings are hardly haute cuisine, but
they are authentic and generally delicious.
This sealed glass jar is filled with jiggling slime that sheds dim light. The jar can be thrown, and when it is shattered, the compressed [[gelatinous cube]] inside rapidly expands to its full size, engulfing any object or creature within its new volume.
For up to one hour, you understand the literal meaning of any spoken language that you hear. You also understand any written language that you see, but you must be touching the surface on which the words are written.
This spell doesn't decode secret messages in a text or a glyph, such as an arcane sigil, that isn't part of a written language.
This item appears to be a piece of simple silver cutlery,
stored in a leather case. Different types of concealable
cutlery exist, each with a different effect. The DM chooses
the kind of cutlery or determines it randomly.
While you are holding a piece of cutlery, you can speak its command word to cause it to turn into another item (listed below) for 1 hour or until you return it to its case and end this effect. Once you have used this property for a given piece of cutlery, it can't be used again until the next dawn.
|!Cutlery |!Transformed Item |
|Butter Knife |Torch |
|Dessert Fork |Crowbar |
|Salad Fork |Trident |
|Soup Spoon |Shield |
|Steak Knife |Longsword |
|Tea Spoon |Shovel |
Concealable cutlery can be found individually or in
complete sets. A utility set contains a butter knife, a
dessert fork, and a tea spoon. A warfare set contains a
salad fork, a soup spoon, and a steak knife.
You can hold this conch to your ear and gain the ability to understand and speak with fish for 10 minutes. You learn about the fish's experiences over the
last day, as well as local places and creatures.
If your DM allows, the fish may also complete a small
task for you, if you can successfully convince it to do so.
Once you have used this property, it can't be used again
until the next dawn.
When the [[dragon]]s first gathered to plot their rebellion in the [[Age of Demons]], it was the eldest among them who laid out their plans. This tradition continues to the present day. For a dragon, age is power, and the oldest of the dragons direct the destiny of their
kind. It was the Conclave that brought an end to the
age of draconic expansion, ordered the destruction of
[[Xen'drik]], and authorized the [[Chamber]] to operate in
distant lands. Aside from their own personal power as
great wyrms, the members of the Conclave command
the militant [[Light of Siberys]], and few dare challenge
their rulings.
Members of the Conclave come from all territories of [[Argonnessen]]. Each flight or dominion sends a single great wyrm to represent its interests; younger
dragons have no voice in the Conclave. In theory, color plays no role. In practice, charisma and sheer might gives the gold, silver, bronze, and red dragons
greater influence than others. The council meets at the [[Great Aerie]] of the [[Thousand]] once every decade, with emergency sessions called as necessary. In these
meetings (which can last weeks or even months),
dragons discuss recent developments in the [[Draconic Prophecy]],
the actions of rogues and the [[Lords of Dust]], and any
news sent in by spies or [[dragon]] guardians. Issues are
resolved through debate; ultimately a vote settles any
disputes. Voting involves a magical artifact, the //Orb of [[Ourelonastrix]]//. This vast crystal sphere is set into the floor
of the Aerie’s council chamber. Each member of the
Conclave sends a vote as a pulse of magical energy, and the orb shows
the results. The orb evaluates the mind of each voter,
and indicates if a voter is under the influence of magical or psionic coercion.
Dragons must physically attend the Conclave to vote.
Those who do not wish to vote can take part in debates
through arcane proxy.
To date, no nondragon has ever been allowed to attend
a session of the Conclave. Nondragon servants—mostly
[[stone giant]]s and trusted children of [[Io'lokar]]—maintain
the [[Great Aerie]], but the meetings of the Conclave are attended only by [[dragon]]s and their colossal iron [[golem]] sentinels. Any nondragon found to have spied on the Conclave without permission faces fearsome punishment.
To the casual observer, the Conclave appears to have little impact on the daily lives of the [[dragon]]s. Still, the Conclave decides the direction of the [[dragon]]s as a race. A decision made at any of the rare and momentous Conclave gatherings can change the shape of [[Eberron]]. It is in Conclave that the dragons could decide to destroy the [[dragonmarked house]]s, drive the [[Inspired]] from power, or bring a halt to the activities of the [[Chamber]].
A pulse of energy tears ripples through the air, dealing minor
damage over a wide area. The spellcaster chooses a point within 60 feet; each
creature within a 20-foot-radius sphere centered on that point experiences a deafening shockwave.
These large, glowing orbs are a necessary component of the [[lightning rail]] coaches run by House [[Orien]]. Alone, a single conductor stone has no peculiar properties except for glowing with a bright internal light (equivalent to a [[sunrod]]). When two conductor stones are within 5 feet of each other, they create a magical conduit allowing rapid travel through the space between the stones. The orbs repel each other strongly; even the great weight of a lightning rail coach can't force two conductor stones closer together than a few feet. The interaction of the conductor stones creates a visible field of electrical energy (from where the name “lightning rail” comes) that leaps between adjacent stones and also arcs over the top of the body of the coach.
While the [[lightning rail]] is the most successful implementation of the magic of conductor stones, it is not the only possible implementation. Entrepreneurs and scoundrels have experimented widely with alternative vehicles designed to run along conductor stone lines. Smaller vehicles incorporating conductor stones can often attain high rates of speed, but are prone to mishap without the great weight of a lightning rail coach counteracting the repulsion effect of the conductor stones.
Conjuration spells involve the transportation of objects and creatures from one location to another. Some spells summon creatures or objects to the caster's side, whereas others allow the caster to teleport to another location. Some conjurations create objects or effects out of nothing.
!!! <<showspells-school {{!!title}}>>
The spellcaster calls forth an [[elemental]] servant. They choose an area of air, earth, fire, or water that fills a 10-foot diameter sphere within 90 feet. An elemental of that type appears in that space. The elemental is friendly to the caster and obeys their commands for up to one hour, or until the spellcaster dismisses it, at which point it disappears. If, however, the spellcaster's concentration is broken, they lose control of the elemental, and it acts according to its nature until it disappears up to an hour later.
This strategic board game is played across [[Khorvaire]], but is particularly popular in [[Karrnath]]. It was reputedly invented by [[Karrn the Conqueror]] himself.
Whenever you earn a [[partial success]] or [[failure|bad outcome]] for a roll, you typically suffer some sort of consequence. There are five categories of consequences.
!! Stress or Harm
This consequence represents your increasing fatigue or physical injuries you suffer. See [[stress]] and [[harm]] for more information.
!! Reduced Effect
This consequence represents impaired performance. The PC's action isn't as effective as they'd anticipated. You hit him, but it's only a flesh wound. She accepts the forged invitation, but she'll keep her eye on you throughout the night. You're able to scale the wall, but it's slow going—you're only halfway up. This consequence essentially reduces the effect level of the PC's action by one after all other factors are accounted for.
!! Worse Position
This consequence represents losing control of the situation, putting you in a more dangerous situation. Perhaps you make the leap across to the next rooftop, only to end up dangling by your fingertips. A situation might go from controlled, to risky, to desperate as you get deeper and deeper in trouble.
!! Complication
This consequence represents trouble, mounting danger, or a new threat. The GM might introduce an immediate problem (the room catches fire, you're disarmed, the target evades you and now it's a chase, reinforcements arrive), or, the GM might create or tick a clock for the complication. Maybe there's a clock for the alert level of the guards at the manor, or for the suspicion of the noble guests at the masquerade party.
!! Lost Opportunity
This consequence represents shifting circumstances. You had an opportunity to achieve your goal with this action, but it slips away. To try again, you need to try something different—usually a new form of action or a change in circumstances.
Constructs are made, not born. Some are programmed by their creators to follow a simple set of instructions, while others (namely, [[warforged]]) are imbued with sentience and capable of independent thought. [[Golems|golem]] are the iconic constructs. Many creatures native to the plane of [[Daanvi]], such as [[modron]]s, are constructs shaped from the raw material of the plane as embodiments of pure law.
<<list-links-article "[tag{!!title}category[creature]] -[tag{!!title}tagging[]category[creature]] +[sort[title]]">>
<<list-links-article "[tag{!!title}sort[title]]">>
A flame, equivalent in brightness to a torch, springs forth from an object that you touch. The effect looks like a regular flame, but it creates no heat and doesn't use oxygen. A continual flame can be covered or hidden but not smothered or quenched.
You take control of the air in a 100-foot cube that you can see within 300 feet. Until the spell ends up to 1 hour later, you can blow gusts of wind at any intensity up to gale force, in any direction.
Causing the wind to blow in a horizontal direction can deflect missiles or push creatures or objects away. A downdraft can force flying enemies to the ground, or standing enemies prone. An updraft can increase jump height and soften falling damage.
''District Type:'' Professionals<br/>
''Buildings:'' Temple ([[Sovereign Host]]), shrine ([[Kol Korran]], [[Onatar]]), garrison, average lodging (15), upscale food (11), average food (25), exotic trades
(11), upscale trades (15), average trades (40), upscale
services (40), average services (80), upscale residences
(40), average residences (80)<br/>
''First Impression:'' A massive copper arch stretches over
the center of this business district. The streets are filled
with well-to-do citizens and professionals, conducting
business or heading to their homes and offices.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Twelve Pillars]] (north); [[Dalan's Refuge]] (southwest); [[Den'iyas]] (bridge, west); [[Dancing Shadows]] (below)
Copper Arch is a professional district, similar in
most respects to [[Twelve Pillars]].
!! Noteworthy Locations
* The [[Three Towers]]. A fortress [[enclave]] of House [[Deneith]]. One tower is a garrison for the [[Blademark|Blademarks Guild]] mercenary forces that police Upper Tavick's Landing. The second is dedicated to house business and training. The third is a private mansion for Deneith heirs.
* [[Magical Pigments]]. A gallery displaying paintings by local artists.
* [[Transmutation]]. A beauty salon that employs both [[magical|cosmetic transmutation]] and mundane cosmetic techniques.
* [[Wyredd's Spirits]]. Wyredd deals in fine wines and exotic spirits. Wyredd's has the finest selection in Sharn, but his prices are high.
Copper [[dragon]]s are incorrigible pranksters, joke tellers, and riddlers that live in hills and rocky uplands. Despite their gregarious and even-tempered natures, they possess a covetous, miserly streak, and can become dangerous when their hoards are threatened.
A copper dragon has brow plates jutting over its eyes, extending back to long horns that grow as a series of overlapping segments. Its backswept cheek ridges and jaw frills give it a pensive look.
At birth, a copper dragon's scales are a ruddy brown with a metallic tint. As the dragon ages, its scales become more coppery in color, later taking on a green tint as it ages. A copper dragon's pupils fade with age, and the eyes of the oldest copper dragons resemble glowing turquoise orbs.
!! Magic and Breath Weapon
The copper dragon can exhale an acidic spray, as well as a cloud of gas that slows other creatures, forcing them to move as if in slow-motion for up to a minute. As innate spellcasters, adult copper dragons can cast spells such as [[polymorph]], [[invisibility]], [[stinking cloud]], [[greater illusion]], and [[charm]].
{{DragonAgeCategories}}
Coralonyn is an ancient [[gold dragon]]. He rode at [[Galifar|Galifar ir'Wynarn]]’s
side in human form, as a spy for the [[Chamber]]. Through
his studies of the [[Draconic Prophecy]], he possesses knowledge of
the past and of the possible paths of the future. He has
fought [[rakshasa]]s in the [[Demon Wastes]], and gazed on
[[Tiamat]]’s prison in the [[Pit of Five Sorrows]]. He spent a
decade as a [[Lhazaar|Lhazaar Principalities]] prince and a century studying ruins
in [[Xen'drik]]. Coralonyn is immensely powerful physically, but he is far more. He has knowledge it would take a [[human]] fourteen lifetimes to gain. He has contacts across the world, and has negotiated with [[angel]]s and argued with kings. With force of will and the sorcerous power of his blood, he can make his very wishes reality.
Cord Ennis is a professor of Arcane Sciences at [[Morgrave University]] in [[Sharn]]. Professor Ennis served [[Breland]] for twenty years as a specialist in arcane bombardment, and received the Star of Breland for his actions during the Siege of [[Vathirond]]. As a scholar, Cord Ennis is widely recognized for his contributions to [[Siberyan Theory]], as well as his work regarding [[sphinx]]es. Despite his highly publicized clashes with [[Arcanix]] and the [[Arcane Congress]], Morgrave stands by Ennis’ work and is proud to have him on faculty.
''District Type:'' Tavern district<br/>
''Buildings:'' Temple ([[Dol Dorn]], [[Olladra]]), average
lodging (14), poor lodging (80), average food (25),
poor food (120), poor trades (40), poor services
(40), poor residences (80)<br/>
''First Impression:'' The streets are full of noise and
laughter, as people stagger into and out of the many
inns and taverns of the district. A large arena occupies the center of Cornerstone, and occasionally a
ragged cheer rises up from the amphitheater.<br/>
''Social Class: ''Lower class<br/>
''Neighbors:'' [[Tavick's Market]] (west); [[Grawand]] (south); [[Holdfast]] (bridge, northwest); [[Wroann's Gate]] (below); [[Pinnacle]] (above)
For those people who want a slightly more respectable
level of entertainment than that offered in [[Dragoneyes]], Cornerstone offers a host of inns and taverns—they may not be the best in [[Sharn]], but prices are cheap
and a few at least have good food and comfortable beds.
The district has a strong interest in sporting events;
quite a few windchases are based in [[Cornerstone]], and
there is always activity at the great arena. While the
large gambling halls are located in [[Dragoneyes]], there
are always people (mostly aligned with the [[Boromar Clan]]) taking bets in taverns and at the arenas, and a
character who wishes to place a few silvers at risk will
have no trouble finding a taker.
!! Noteworthy Locations
* The [[Cornerstone|Cornerstone (arena)]]. A massive arena that hosts a wide array of sporting events. These include jousts and races, both on foot and through the air. The ''Stone Trees'' is an offshoot of the Cornerstone that serves as the playing field for [[hrazhak]] competitions.
* The [[Tooth and Nail]]. A comfortable tavern devoted to the sport of [[hrazhak]]. Most of the clientele are [[shifter]]s, but anyone willing to talk hrazhak will find friends here.
“[[Cornerstone]]” is a district in [[Middle Tavick's Landing]]. “''The Cornerstone''” is the
massive arena in that district. The Cornerstone holds a wide variety of sporting events, ranging from foot races to equine jousts and [[skyblade]] matches. When circuses come to town, they often perform in the
Cornerstone arena. The Cornerstone is considerably
more respectable than the [[Hollow Tower]] of [[Hareth's Folly]], and the competitors are generally nobles or celebrities; you can't come in off the street and expect
to participate in a race at the Cornerstone.
The ''Stone Trees'' is a small offshoot arena of the Cornerstone and is the one formal
[[hrazhak]] forum in [[Sharn]]. There is a considerable
[[shifter]] population in the district, and over the centuries these crafters and merchants raised a considerable sum to invest in the arena. While it is far smaller
that the Cornerstone, it has an extremely versatile
design, allowing different configurations of obstacles
to be set up for each match. These obstacles include
unusual metal and stone sculptures designed to mimic
trees—hence the name of the arena.
Cornerstone is the largest of the [[slaad]] cities, located on one of the [[Shifting Islands]] of [[Kythri]]. Its architectural style and precise layout are constantly changing, but it's always
a sprawling city that houses hundreds of thousands of slaadi.
If Cornerstone is held by the Concordance of Iron, it has
vast armies drilling (though their tactics and units constantly
shift). If it's under the influence of the Final Regency, there
are immense temples and countless shrines to the slaadi
interpretation of the [[Sovereigns|Sovereign Host]].
The attitude of slaadi toward adventurers depends on the
active culture. The Final Regency may welcome adventurers who
profess devotion to the Sovereigns, provided they don't question
the Regency interpretation. The Confluence of Reality celebrates
extraplanar visitors, desiring their stories and performances.
Meanwhile, the Cornerstone of the Glorious Union of Flesh is
a very dangerous place to visit! Regardless, Cornerstone is the
best place to acquire Kythrian artifacts or magical services.
The Corpse Collectors are the royal [[necromancers|necromancy]] of [[Karrnath]]. Their numbers have greatly diminished since [[Kaius III|Kaius ir'Wynarn III]] pledged to stop creating new [[Karrnathi undead]], but the agency still maintains and trains undead specialist forces such as [[bone knight]]s at their stronghold, [[Fort Bones]].
The commander of the Corpse Collectors is known only as the [[Kind]], a title given to him by Gyrnar Shult (the creator of the [[Odakyr Rites]]) long ago. It is overseen by Count [[Vedim ir'Omik]], [[Karrnath]]'s Minister of the Dead.
A land of lush jungles and fertile plains, Corvagura is in
many ways the heart of [[Riedra]]; it has the highest population density of any region in [[Sarlona]], and both the capital city of
[[Durat Tal]] and the primary port, [[Dar Jin]], are located here.
The people of Corvagura once served a tyrannical dynasty
of [[sorcerer]]-kings, but the [[Inspired]] helped overthrow these
dictators. In addition to having the highest population
of the eight provinces, Corvagura also has the greatest
number of monoliths ([[hanbalani|hanbalani alta]]), a fact that undoubtedly
contributes to the fanatical loyalty of the inhabitants.
Many branches of the [[Unity]] are based in the bastions
of Corvagura. A few of the other bastions are dedicated to
research; noteworthy subjects include behavior modification, [[humanoid]] [[magebreeding]] (specifically, the breeding of improved [[vessels|Chosen]] for the [[Inspired]]), and [[planar|plane]] theory.
Politically and in terms of population, Corvagura is
the crown province of [[Riedra]]. The inhabitants are deeply
devoted to the Inspired, and the bulk of [[Riedrans]] who
are allowed to interact with foreigners—including most
sailors and merchants—are Corvaguran.
A [[magewright]] beautician
can perform a range of minor transformations—for a price.
Minor cosmetic [[transmutation]] is quite common; most
professional beauticians can change your hair or eye color.
Unnatural effects are rarer, seen mainly in [[Aundair]] and [[Zilargo]];
metallic hair colors are a recent fad in [[Fairhaven]], and in the
days before [[Galifar]], the nobles of [[Thaliost]] would adopt [[elf]]
features. The effects of cosmetic transmutation typically last
a week, but if you're dealing with a magewright of sufficient
skill, you can extend the effect to one month. In some cities,
you might even find an expert who can make the change
permanent. The more complicated the transmutation, the
more costly—and hard to find—the service becomes.
!! Cosmetic Transmutation Services
|!Type |!1 Week |!1 Month |!Permanent |
|Minor (natural) |1c |2c |5c |
|Minor (unusual) |2c |4c |10c |
|Moderate |4c |8c |20c |
|Major |6c |12c |30c |
//''Minor (Natural).''// Simple transmutation can temporarily
change the color of your hair, skin, or eyes within the standard
parameters for your species.
//''Minor (Unusual).''// If you're seeking unnatural effects—cat's
eyes or moving tattoos—you'll need a highly skilled beautician.
//''Moderate.''// Significant physical transformation allows
you to alter your weight, height, or sex. These substantial
transmutations require an expert in their trade.
//''Major.''// Specialized or exotic physical transformation can
match the appearance of a specific individual or change your
apparent species. While this alters your appearance, you
don't gain the racial traits associated with your selected form.
Those seeking to imitate another's appearance must be wary.
Duplicating the appearance of another person is a crime under
the [[Code of Galifar]]—malicious theft of identity—and even those
who can perform the magic won't do so without good reason.
It's always up to the DM to decide what services are
available in any given community, and as with any [[magewright]],
beauticians are often specialized; a hairdresser might be able
to give you permanent silver hair but be unable to change
any other feature. In [[Sharn]], [[Transmutation]] in [[Upper Tavick's Landing]] and The [[Veil of Flesh]] in [[Upper Northedge]] are salons that specialize in cosmetic transmutation. A House [[Jorasco]]
clinic can help with gender transition, shaping muscle tone, and
similar services, while the criminal [[Tyrants]] of [[Tavick's Landing]]
are the masters of exotic physical transformation.
Couatls are benevolent serpentine beings of great intellect and insight. Their brilliantly colored wings and gentle manner speak to their [[celestial]] origins.
Couatls are a race born from [[Siberys]] at the dawn of time. Along with the [[dragon]]s, they battled the [[fiend]]ish [[overlord]]s of [[Khorvaire]] and [[Sarlona]]. Ultimately,
the couatls sacrificed most of their number and combined their souls to form a prison to hold the overlords.
Scholars have theorized that their combined souls eventually became the force that is worshiped by the Church
of the [[Silver Flame]]. The church is ambivalent on the
topic, preaching that regardless of how the Flame was
first kindled, there is a place within the Flame for all
noble souls.
The few couatls that remain on [[Eberron]] are devoted
servants of the light. They are most often found guarding the prison of the ancient [[overlord]]s, and individuals sometimes act directly to aid adventurers who
fight the forces of darkness.
[[Sharn]]'s seventeen-member [[city council|Sharn Council]] meets at the top of Sun Tower. Surrounded by
a colonnaded gallery and crowned by an observation
deck, the council hall offers some of the most spectacular views in the city. The council meets weekly,
and an elite troop of soldiers (privately employed
by the council) guards the hall during meetings.
When the council is not in session, the hall is a tourist attraction, though aides and lesser bureaucrats
bustle through its lower halls unceasingly.
The Council of Cardinals supports the [[Keeper of the Flame]] and attends to running the country of [[Thrane]]. In theory, the council is subject to the Keeper of the Flame in the hierarchy of the Church of the [[Silver Flame]]. Given the youth and inexperience of the current Keeper, the council has a relatively free hand, leaving spiritual matters to
the Keeper of the Flame and reserving political matters for itself.
As one might expect, the power of the High Cardinal, the Council of Cardinals, and lesser church officials breeds corruption, but it’s not
widespread. The beneficent ideals of the church
govern the behavior of the majority of church officials, who have only the best interests of [[Thrane]]’s people in mind. Still, other religious figures, High Cardinal [[Krozen]] in particular, seek ever more dictatorial power and view Thrane as their personal domain.
!! Organization
Archbishops serve as governors and mayors throughout [[Thrane]], while bishops and archpriests run individual cathedrals and churches within Thrane and abroad; all ultimately report to the Council. Cardinals rarely conduct ceremonies of their own and have little to do with directly governing affairs in individual cities, delegating such tasks to archbishops.
Cardinals must be nominated and elected by sitting cardinals, and therefore the overwhelming majority of them come from the ranks of the archbishops. Most of these are from the Order of Ministers, with a notable few coming from the Order of Templars. Only rare individuals rise from the missionary Order of Friars.
Second only in grandeur to the temple inside the [[Ascended Plaza]], this temple is
open to any in the city of [[Shae Mordai]] who wish to honor the [[Undying Court]] or other ancestors. Priests hold regular devotional rites here. It’s also the primary place in which the living, other than priests and the [[Sibling Kings]], can meet with a member of
the [[Undying Court]].
You attempt to interrupt a creature in the process of casting a spell. If the creature is casting a spell of "rare" tier or lower, the spell fails and has no effect.
If you are able to cast legendary-tier spells, you can cast this as such to counter other legendary-tier spells.
Courage is a stimulant that grants a user an alchemical propensity to avoid being frightened; however, long-term use causes paranoia and
can leave someone in a state of catatonic terror. It is made in [[Droaam]] and smuggled into the [[Five Nations]] and beyond.
Courdain is an island in the [[Lhazaar Principalities]], located in [[Turnaway Sound]].
This guild of House [[Orien]] specializes in the delivery of small goods, including the post. The guild licenses independent messengers and couriers, and maintains an elite force trained to make deliveries into dangerous locations. The development of [[teleportation circle]]s is revolutionizing the Couriers Guild.
The covadish plant grows on the island of [[Aerenal]]. Its [[necromantic|necromancy]] properties make it a valuable component for enhancing [[spell]]s that channel life energy from either [[Irian]] or [[Mabar]].
//“Lead by your example; inspire by your presence.”//
<div align="right">—Lady Lirashana, Founder of the Covenant</div>
A compassionate and charismatic woman named
Lirashana founded the Covenant of Light. Although
she appears to be a [[kalashtar]], the rumor persists that
she is actually a divine spirit—an [[aasimar]] or perhaps even a [[planetar]] of [[Daanvi]] unable to ignore the pain and suffering she saw on [[Eberron]].
To the Covenant, the search to unlock the mysteries
of the [[Caldyn Fragments]] is nothing less than a crusade
for the powers of good.
It is said that when Lady Lirashana first endeavored to establish the Covenant, she was visited by overpowering celestial music, a force that she would
later call the Song. The Song compelled her to create
the Covenant in [[Xen'drik]], and to include in its noble
mission the pursuit of the [[Draconic Prophecy]]. Followers of the Covenant also hear and follow the Song and believe that an era of enlightenment and peace can be brought forth by the collective power of virtue in
action. Members are expected to behave in a virtuous
manner in all aspects of their lives.
Mystics of many different religions have been drawn
to the Covenant, and all have their own explanation for
the Song. Worshipers of the [[Sovereign Host]] claim that it
is the voice of [[Dol Arrah]], calling the virtuous to battle.
Followers of the [[Silver Flame]] attribute it to the [[Voice of the Flame|Tira Miron]]. The [[kalashtar]] say that it is a manifestation of the noble impulses that exist within all mortal
minds—the harbinger of [[il-Yannah|Path of Light]], the glorious light
of the next age. Regardless of its source, all Covenant
members initially experience the Song directly as music
in their minds—a bright and irresistible summons that
draws them individually to serve in [[Xen'drik]].
Members of the Covenant always keep the greater good in
mind and never act at the expense of others of charitable
will. Such is the way of the Song, that the righteous
and brave should triumph and in unity achieve the
ultimate goal. To this end, the forces of darkness must
be staunchly opposed—especially those who would violate the [[Prophecy|Draconic Prophecy]], twisting it to wicked or irrelevant purposes. This opposition particularly includes the vile mockery that is the [[Cabal of Shadows]], and also the
misguided mercenaries of the [[Blackwheel Company]]
and the amoral academics of the [[Crimson Codex]].
!! The Covenant in Stormreach
//“Girded are we in Light and Song, but when to Shine, and where to Sing?”//
<div align="right">—Covenant of Light, Psalm XVII</div>
The Covenant of Light encompasses many distinct
flames, from [[Adar]]an seers and [[paladin]]s of [[Thrane]]
to [[Sovereign|Sovereign Host]] priests and ascetics of a dozen different
holy [[monastic orders|monk]]. The Song has called out to more
unlikely places as well, drawing [[shifter]] shamans from
[[Sarlona]]’s [[Tashana Tundra]], utopian cultists from the
marshes of [[Q'barra]], and even repentant rogues from
the gutters of [[Stormreach]].
As with the other factions that pursue the secrets of the [[Caldyn Fragments]] in [[Xen'drik]], the Covenant of Light is principally interested in Stormreach as a way station, a stable port from which to mount expeditions to the interior. The leadership of the Covenant also recognizes that Stormreach is the likely port of call for new aspirants following the summons of the Song. As such, the Covenant keeps a standing force in the city, based out of several small temples located throughout various districts.
Lady Lirashana mandates
that the disciples of the Covenant are not to become involved
in local affairs on any level.
Stormreach is a dangerous, lawless place, and the Covenant
is not trying to clean it up. Disciples are in Xen’drik on a far greater mission—shaping the [[Draconic Prophecy]] to righteous ends. Still, members might
stray from the leadership’s dictates out of simple compassion, bringing
the Covenant reluctantly into play.
!!! Structure
The Covenant of Light is divided into three branches.
* The ''Scions'' are the standard adventurers and agents of the Covenant of Light; most adventurers will be Scions in the organization.
* The ''Radiance'' is a leadership level in the Covenant; all members of the Radiance are [[aasimar]], [[kalashtar]], or are chosen or ordained in some way by a patron [[celestial]].
* The ''Nightstars'' is a very small branch, unknown to most members of the Covenant of Light. It counts stealthy agents among its number and performs services for the organization that serve the cause of good but must be achieved through methods that are less than honorable.
Among the residual force the Covenant maintains in the city of [[Stormreach]] is a small group of [[cleric]]s and warriors known as [[Gilead’s Flock|Gilead Rhoy]].
!! Mirror Images
Higher-ups in the [[Cabal of Shadows]] and the Covenant of Light are quite aware that the Calling and the Song seem to be virtually identical phenomena. Naturally, this fact disturbs both groups. Their leaders explain away such concerns by saying that their
opposite number is a twisted, invalid reflection of the true voice that only they hear clearly. But secretly they wonder why such a parallel exists, and if—unthinkable
as it would be—they really are the same in the end. And if that were true, what does the Singer (or the Caller) want from them all?
This loosely woven cowl is made of pale-yellow cashmere. If the wearer is able to channel [[primal magic]], they can transform into a swarm of bees at will, as a [[rare-tier|spell tier]] [[spell]]. The transformation lasts for up to an hour.
Cragwar sits in the foothills of the [[Blackcaps|Blackcap Mountains]] along
the border between [[Aundair]] and [[Breland]]. During the
[[Last War]], the town fell many times, switching hands
from [[Aundair]] to [[Thrane]], and back to Breland again.
Monsters crawling from the [[Black Pit]], tumbling down
from the mountains, and raiding from the [[Greenhaunt]] keep Cragwar’s soldiers on constant alert.
Since the region is so unstable, Cragwar is more
a military outpost than a town. Traders, adventurers, and crafters do settle here, or at least travel to
the town for commerce. Cragwar presents a united
face to hostile forces, but it’s said that [[Aurum]] agents
infect the place like a cancer, undermining the
military’s authority and risking the town’s defense
for commerce. The wealth of the region has also
attracted at least two members of the Aurum’s Gold
Concord. ''Daeluse d'Kundarak'' ensures the safety
of the Aurum’s interests in the Blackcaps, while a
[[changeling]] named [[Zeed]] has an ambitious plan to
secure a place on the Platinum Concord: starting a
war between [[Breland]] and [[Thrane]] with the ultimate
goal of creating a tiny nation-state in southern Thrane
belonging to the [[Aurum]]. Zeed’s incautious activities
have attracted the attention of the [[King's Citadel]].
Crafted by the [[daelkyr]], the crawling gauntlet appears to be the
forearm of a monstrous [[humanoid]]. When you attune to it, it
surrounds your hand and forearm, fusing to your flesh.
When you make an unarmed strike, you can slash with the
talons on the gauntlet. Additionally, you can project an ectoplasmic duplicate of the
gauntlet, allowing you to manipulate objects at a distance. While
wearing this gauntlet, you can cast [[mage hand]] at will.
The Crawling Swamp is a large region of wetland in the western [[Shadow Marches]]. It is home to a variety of bizarre sites, such as [[Slug Keep]], the [[Pond of Shadows]], and the [[Aberrant Scar]].
You pull wisps of shadow material from the weave of raw magic
to create a nonliving object of plant-based matter within
30 feet: soft goods, rope, wood, or something similar. You
can also use this spell to create mineral objects such as
stone, crystal, or metal. The object created must be no
larger than a 5-foot cube, and the object must be of a
form and material that you have seen before. The spell takes one minute to cast, and requires a tiny piece of matter of the same type of the item you plan to create.
The duration depends on the object's material. If
the object is composed of multiple materials, use the
shortest duration.
|!Material |!Duration |
|Vegetable matter |1 day |
|Stone or crystal |12 hours |
|Precious metals |1 hour |
|Gems |10 minutes |
|[[Adamantine|adamantine]] or [[mithral]] |1 minute |
Using any material created by this spell as another
spell's material component causes that spell to fail.
If you are able to cast [[legendary-tier|spell tier]] spells, you can cast this as such to make objects up to a 15-foot cube in size.
A creation forge is a spherical chamber that contains a
floating obelisk. This obelisk creates [[warforged]] souls
and places them in newly constructed warforged bodies.
Only [[dragonmarked|Mark of Making]] members of House [[Cannith]] can
create and maintain such devices, and though the [[Treaty of Thronehold]] mandated the destruction of all creation
forges in [[Khorvaire]] after the [[Last War]], at least one creation forge is rumored to exist in the bowels of [[Sharn]].
A creature's tier is a general indicator of how powerful or dangerous an average specimen is.
# ''Tier 1'' creatures include most "natural" creatures of [[Eberron]], including most [[humanoid]]s and [[beast]]s. (Roughly corresponds to D&D 5e's CR 0-½.)
# ''Tier 2'' creatures are extremely dangerous threats to the average non-combatant. This category includes some of the mightiest natural and [[dire beast]]s of the world, including elephants, lions, orca whales, giant scorpions, and [[dinosaur]]s like the [[clawfoot]]. But this category also includes pure [[elemental]]s, [[troll]]s, [[intellect devourer]]s, and most [[ooze]]s. (CR 1-5.)
# ''Tier 3'' creatures can rout a well-trained unit of soldiers single-handedly. These include the [[medusa]], [[mind flayer]], [[deva]], [[chain devil]], [[wyvern]], [[efreeti]], [[frost giant]], [[treant]], and [[swordtooth titan]]. (CR 6-11.)
# ''Tier 4'' creatures possess power that transcend the wildest possibilities of the natural world. These include the [[vampire]], [[rakshasa]], [[kraken]], adult [[dragon]], [[night hag]], [[planetar]], and [[beholder]]. (CR 12-17.)
# ''Tier 5'' creatures are the stuff of legends. These include the [[solar]], [[balor]], [[elder tempest]], [[kalaraq]], [[inevitable]], most [[archfey]], and the oldest living [[dragon]]s. (CR 18-23.)
# ''Tier 6'' entities are godlike archbeings of unfathomable influence. The [[daelkyr]]. The [[overlord]]s. The mightiest [[archfey]] of [[Thelanis]]. The [[Architect]]s of [[Irian]]. The [[Dark Power]]s of [[Mabar]]. (CR 24+.)
''[[Creature Tier|creature tier]]: ''''{{!!tier}}''
The small [[Eldeen|Eldeen Reaches]] town of Cree, located on the shore of [[Lake Galifar]], doubles as both a farming and fishing community. Farms spread out to the
west and north, while fishing vessels ply their trade on the
crystal-blue waters of the lake.
One notable sailor is Captain Notak Ninefinger who commands the vessel
Smooth Sailing. When Notak and his crew aren’t engaged in
fishing, they can be hired to transport passengers and
cargo across the lake. As such, this Cree vessel can often
be seen in the ports all along the Lake Galifar shore, in
the [[Eldeen Reaches]], [[Aundair]], and [[Breland]].
The Crescent Bay lies between the [[Shadow Marches]] and the [[Demon Wastes]].
!! Criminal Activities
Under the laws of [[Sharn]], crime takes many forms. Any
sort of theft is illegal, including "malicious theft of identity"—the use of shapeshifting abilities or [[illusion]] magic
to impersonate someone with the intent to cause harm.
Assault, murder, and fraud will all land you in hot water.
Other activities walk the edge of legality. Gambling and
prostitution are legal in Sharn, but these industries are
heavily taxed and regulated. Likewise, smuggled goods
include illegal merchandise such as drugs and mystical
explosives, but also heavily taxed goods, such as the
drug known as [[dreamlily]].
Although crime occurs throughout [[Sharn]], it is most
apparent in [[Lower Dura]] and the [[Cogs]]. The [[Sharn Watch]] has a minimal presence in these wards, which
are the easiest places to sell stolen goods or to hire
an assassin. Of course, they're also good places to get
robbed or caught up in a street brawl.
Sharn is home to a large number of minor gangs and
independent criminals. Even so, most criminal activities
in the city come under the purview of one of four criminal organizations: the [[Boromar Clan]], [[Daask]], House [[Tarkanan]], and the [[Tyrants]]. Even independents usually
have an arrangement with one of these power groups. If
your character has the criminal background, work with
the DM to determine which of these organizations you're
connected to.
!! Forces of the Law
In [[Precarious]], a [[dwarf]] tries to smuggle a [[portable hole]]
filled with treasures pillaged from [[Xen'drik]] past the
guards of the [[Sharn Watch]].
In [[Clifftop]], a patrol of guards calls on two dueling
barbarians to throw down their weapons; the fierce warriors just snarl and rush at each other once more.
In the court of [[Upper Central]], a magistrate orders the
Justiciar of Aureon to blind the prisoner in preparation
for his sentence of perpetual darkness.
The law is a force to be reckoned with in [[Sharn]]. Even
in places where the watch is notoriously ineffective,
those who would break the law still need to be wary of
zealous guards resistant to bribes or threats.
* The [[Sharn Watch]]
* The [[King's Citadel]]
* The [[Redcloak Battalion]]
!!! Crimes and Punishments
Officers of the watch can levy fines on the spot when they catch culprits, which is the typical way that minor crimes are dealt with. For a serious offense, the perpetrator is taken to a garrison and held until a trial can be arranged. A criminal who is considered to be a serious flight risk will be taken to the most secure facility in Sharn—the [[King's Citadel]] headquarters.
Typically, a prisoner's case comes to the attention
of a local magistrate within <<dr 1d4>> days. The magistrate
reviews the facts of the case and asks the victim to
confirm or deny their role in the crime while under the
influence of a [[zone of truth]] spell. The magistrate will
then propose a punishment to the accused; if the offer is
refused, the case goes to trial.
Punishment for convicted criminals varies, but longterm imprisonment is quite rare. Prisoners who deemed
to be too dangerous to be allowed to roam free are more
likely to be executed than imprisoned. Typically, a long
prison sentence is used only for criminals who can't be
allowed to go free, but whose deaths would have negative diplomatic repercussions.
Fines are the typical form of punishment. The amount
of a fine is generally based on the nature of the crime,
but a magistrate has the right to increase a fine to ensure that it is an effective punishment. For example,
a fine of 2 crowns is crippling to a commoner but can be
inconsequential to an adventurer or a member of the
[[Aurum]], and in such cases it will be increased. Also, the
court can confiscate possessions in lieu of receiving
payments in gold; you might not care about having to
pay a fine of 20c, but having your grandfather's magic
sword confiscated instead might sting. If a criminal
can't afford to pay a fine, the sentence might be changed
to hard labor—or, in the case of adventurers, performing
special services on behalf of the city or the Crown.
Other kinds of punishment include branding (generally in a visible location, warning others of your criminal
actions), exile, or several magical measures: an ongoing
curse, a period of induced blindness, and so on. A repeat
offender might be declared an outlaw, which status is
often indicated by a brand. An outlaw is stripped of the
protection of the law, and anyone can take any action
against them without fear of legal retribution.
!! Criminal Organizations
* the [[Boromar Clan]]
* [[Daask]]
* House [[Tarkanan]]
* the [[Tyrants]]
!! Street Gangs
<<list-links-article "[tag[gang]tag[Sharn]sort[title]]">>
The only justice in [[Stormreach]] is justice you make for yourself, or justice you pay for. On the city’s mean streets, skulduggery and foul play are legitimate means
of making a living. Victims of violent crime are blamed
for their own fate by some citizens and are a source of
amusement for others.
!! Law and Order
Though laws exist on record in [[Stormreach]], few
bother to enforce most of them. The true law of the
land is simple: Don’t make trouble for the [[Storm Lords]]. You can often make all the trouble you want for someone else. As long as a crime does not impact
the city’s economy or security too greatly, it is most
likely to be ignored by the powers that be. That said,
if you cross the wrong people, you can quickly find
yourself on the business end of a [[guard|Stormreach Guard]]’s sword or an
[[Iron Watch]] armblade.
Crime and punishment is subjective in Stormreach. Whom you know determines what you can get away with, and whom you anger determines the ramifications of a crime. You can rob ten people in the morning and laugh about it with corrupt members of the [[Stormreach Guard]] in the afternoon. But knock out the tooth of Lord [[Jonas Wylkes]]’s cousin or kill the fence who’s working for Lady [[Kirris Sel Shadra]], and
those same guards will beat you to death in the middle of the street without even saying hello.
The most effective way to get away with crimes in Stormreach is not to rock the boat. Any act that disrupts the city’s lucrative trade, or stops the steady
stream of gold from flowing into the Storm Lords’
coffers, brings the full weight of the city’s power down
on the perpetrator.
!!! Iron Watch
Rowdy adventurers and power-crazed spellcasters
might not fear the [[Stormreach Guard]], but the city has
a second line of defense to deal with serious threats:
the [[Iron Watch]]. This is an elite company of [[warforged]]
soldiers, [[construct]]s built for battle and sworn to the
service of [[Stormreach]]. These warforged are well
equipped, highly skilled, and utterly fearless. They are
not wasted on simple patrols, but if the Guard cannot
handle a problem, the warforged are deployed.
!!! Magistrates
Magistrates appointed by the [[Storm Lords]] (mostly
[[gnome]]s of the [[Sel Shadra|Sel Shadra family]] line) pass judgment over offenders. Summary justice is the rule, and the
accused are nearly always found guilty. However, the
city’s erratic sense of justice can occasionally work in
the accused’s favor; when crime runs rampant, general amnesties are occasionally handed down from the
Storm Lords for no other reason than to relieve the
magistrates of their burdens.
People guilty of minor infractions (petty theft,
brawling, and the like) rarely go before a magistrate,
assuming they paid off the [[Stormreach Guard]]. If they
do end up on trial, they are usually levied hefty fines
for clogging the wheels of justice as a result of not bribing a guard. Those who cannot pay a fine are subject to exile; the lucky ones get put on the next boat to
[[Khorvaire]], and the unlucky are sent into the wilds of
[[Xen'drik]]. The city has only two punishments for more
serious crimes: death and the [[Red Ring]].
Public executions are carried out in the [[Marketplace]] on Sar, the seventh day of the week. The executions have a carnival atmosphere and bring out families
in droves to take in the gruesome spectacle. The exact
means of death is decided by the magistrates: hanging,
drawing and quartering, evisceration, flaying alive,
and any other method that pleases the crowd.
Criminals sentenced to the [[Red Ring]] are given the chance to fight their way to freedom. Their status can be appealed after a period of time set by the magistrate, and anyone who wins a title bout is automatically paroled. PCs who commit, or are framed for, crimes might end up in the ring fighting for their freedom
and survival.
!!! Inquisitives
The [[Stormreach Guard]]’s indifference to many
crimes means that independent sleuths are in high
demand. When people want a theft or murder investigated and have coin to pay, they might hire a House [[Tharashk]] [[inquisitive]] to ascertain the particulars of
the crime. Citizens lacking the funds for a Tharashk
scion can turn to freelance inquisitives licensed by
the [[Finders Guild]].
Those with the skills to ferret out criminals can
make a good living in [[Stormreach]], provided they
stay alive long enough to spend their wages. In a city
plagued by crime and corruption, someone who hunts
criminals for a living can survive only through cunning and powerful friends. Catching criminals in the city is a matter of dancing with the devils you know in
order to catch the ones you don’t; most inquisitives
make deals with gangs and corrupt officials. Some
inquisitives promise to lay off any case involving the
[[Bilge Rats]] in exchange for information about someone
else’s crimes. Others cozy up to powerful [[militia]] leaders, [[Red Ring]] stablemasters, or the [[Stormreach Guard]] in the hope they will offer protection when criminals
come looking for payback.
!! Crime
[[Stormreach]] has [[Xen'drik]]’s treasures and resources at its finger tips. Where opportunity arises, so does crime. The city is crawling with scam artists, thieves, murderers, and escaped felons from the [[Five Nations]]. Many come to the city looking for a new start in the [[Stormreach Guard]] or to reinvent themselves as upstanding citizens. But most cannot leave their criminal tendencies behind and end up weaving new schemes, waylaying the unwary, and slitting purses or throats.
The city is the perfect place to lie low after committing some horrible act in [[Khorvaire]] or to spend the profits of a heist. Ill-gotten coin is as good as honest currency in [[Stormreach]], and criminals come here to launder large amounts of it or to sell stolen goods that are too hot for the fences of Khorvaire.
Stormreach is home to a large number of gangs and other criminal groups. Here are a few examples.
* The [[Bilge Rats]]: A vicious gang that dominates the [[Harbor]] district. Their name comes from their fondness for trained [[dire rats|dire beast]], and for having said rats chew off the faces of anyone who crosses the gangs.
* The [[Hollow Shards]]: An alliance of forgers and con artists spread across the city. Augurs, cartographers, guides, and others can always turn out to be members of the Hollow Shards.
* The [[Night Tide]]: The black market of [[Stormreach]], a source of many goods restricted under the [[Code of Galifar]].
* The [[Quickfoot Gang]]: An organization supposedly coordinating the activities of many criminal organizations in the city.
* The [[Shrouds]]: A street gang whose members walk the streets wrapped in crimson shrouds. Rumors say that their numbers include [[ghoul]]s and [[zombie]]s.
* The [[Titans]]: A gang of [[eneko]] brawlers, who frequently pick fights with the smaller races.
!!! Other Gangs
<<list-links-article "[tag[gang]tag[Stormreach]!title[Bilge Rats]!title[Hollow Shards]!title[Night Tide]!title[Quickfoot Gang]!title[Shrouds]!title[Titans]!title[Bloodbound]sort[title]]">>
<<list-links-article "[tag{!!title}sort[title]]">>
This wide, heavy cuff of blackened iron can only be removed by the person who put it on. It appears to be a simple cuff; however, when the command word is spoken, the cuff suddenly weighs 500 lbs, forcing the wearer to the ground until the command word is spoken again. If spoken by the wearer, the command word has no effect.
//“For every riddle there is an answer. For every answer, another riddle.”//
<div align="right">—Ingrim Jarell, Prophet of the Crimson Codex</div>
The secret society known as the Crimson Codex has a twofold purpose—to study and manipulate the [[Draconic Prophecy]]. The organization’s ultimate goal is to
avoid another confrontation on the scale of the [[Last War]], reunite [[Galifar]], and return to a golden age of peace and enlightenment. The Codex believes that knowledge is by far the most powerful weapon, and that the Prophecy is the ultimate knowledge.
To that end, the Crimson Codex has a network of spies and informants within all major civilized governments of [[Khorvaire]]. This network ensures that treaties are upheld and peace remains a priority. Of the four factions pursuing the [[Caldyn Fragments]], the Codex has the strongest connection to the [[dragon]]s and their kin, even at times coordinating with agents of the [[Chamber]]. Like the great wyrms, the Codex is capable of waiting many years for plans to come to fruition.
Although the Codex is a global operation with interests in each of [[Eberron]]’s continents, it continues to focus considerable resources in [[Xen'drik]] in pursuit of the ultimate prize: the potent knowledge contained in the [[Caldyn Fragments]].
The Codex does not publicly recruit new members in the manner of the [[Blackwheel Company]]. Instead, Codex operatives at every level of society constantly
scout for new blood and like-minded souls. New members are never coerced into joining—endlessly patient, Codex recruiters know that the truth of their cause will ultimately persuade all who are meant to enter the Codex.
!! Playing a Codex Operative
Taking the name Crimson Codex after the tome
compiled by [[Ohnal Caldyn|Caldyn Fragments]], this group pledged to use
the [[Prophecy|Draconic Prophecy]], as well as the secrets locked away in the
continent of [[Xen'drik]] and elsewhere, to reestablish
control over the events of [[Khorvaire]] and increase its
members’ power throughout Eberron. In this way,
the ultimate goal of the Codex is lasting peace and a
unified kingdom in Khorvaire through the study and
manipulation of the [[Draconic Prophecy]]. However,
whenever there is great power such as that held in the
Prophecy, there are people who would seek that power
for their own ends.
The [[Last War]] left Eberron on the brink of collapse.
You know that the tenuous [[Treaty of Thronehold]]
must not only be maintained, they must be built upon
and expanded so that the traditions of [[Galifar]] can be
restored. Only with sustained peace can the pursuit of
knowledge be furthered. You adventure not for fortune and glory, but for the very soul of Eberron.
You and your comrades in the Codex have determined, without a doubt, the source of ultimate knowledge. You know that the [[Prophecy|Draconic Prophecy]] is the ultimate and abiding reality. If this is the sole mystery that has
occupied the great [[wyrms|dragon]] for time uncounted, what
could be more important? It is the Great Game, the
essential riddle of the times.
Many groups and factions vie for power in Eberron—churches and nations, houses and guilds, monsters and madmen. But only the Crimson Codex has the knowledge
and the will to piece together the final puzzle. Wisdom
is foresight. Knowledge is power.
A notable member of the Codex in [[Stormreach]] is Professor [[Ingrim Jod Jarell]].
The Crimson Covenant is a circle of the oldest and most powerful [[undead]] champions of the [[Blood of Vol]], some of whom were guiding the Seekers before [[Erandis Vol|Lady Illmarrow]] even knew the faith existed. They dwell in the catacombs beneath [[Atur]] in [[Karrnath]], and their existence is only known to a select few.
The [[necromantic|necromancy]] rites that created these ancient [[vampire]]s, [[oathbound|mummy]], and [[lich]]es were adapted from [[Aereni]] techniques; it was never as sophisticated as the techniques used by the [[Bloodsails]] or the line of Vol. As a result, these ancient undead are beginning to deteriorate, both physically and spiritually, and must be protected and tended by Abactor [[Malevanor]] and the other priests of the [[Crimson Monastery]] in [[Atur]].
[[Lady Illmarrow]] covertly influences the Crimson Covenant through handpicked agents she has sent to infiltrate the circle, trying to shape it to her agenda. In this way, she has prevented the Covenant from taking direct action against the Order of the [[Emerald Claw]].
Named members of the Crimson Covenant include:
* ''Duran'': The most ancient member of the Crimson Covenant, Duran was its first [[lich]]; but while his will is strong, his enchantments are unable to maintain his body and he exists now as a demilich, a floating skull with ritually crafted soul gems in his eye sockets.
* the ''Silent Knight'': a death knight who spends much of her time meditating on the pain and shame of her tragic life. She does not speak and can extend an aura of magical silence at will.
* ''Lady Dusk''
Some champions of the Covenant were destroyed in the [[Last War]].
The [[Blood of Vol]] might not have the influence it once did, but the [[crown|Kaius ir'Wynarn III]]’s distancing from the faith did not sway the bulk of [[Atur]]’s
citizens. The Crimson Monastery perches above the
city, a sprawling complex spanning several acres and
serving as the heart of the faith. Inside is a maze of worship halls, ritual chambers,
shrines and vaults, cells, and residences. Buried deep,
beyond the prying eyes of the common worshipers, dwell the elder [[undead]] of the [[Crimson Covenant]] in the catacombs beneath the city.
The high priest of the Crimson Monastery is Abactor Hass [[Malevanor]].
The Crimson River in [[Q'barra]] is a distributary of [[Torva River]], branching off near the [[dragonborn]] settlement of [[Ka'rhashan]] and flowing into [[Tempest Strait]].
Before the [[Mourning]], a spring in the eastern part
of [[Cyre]] fed the Rushing River as it traced a short but
fertile path south to [[Kraken Bay]]. The Rushing River is
now as dry and barren as the rest of the [[Mournland]],
and the location of the spring is marked by the Crimson Water, a stagnant lake of blood-red water.
The shores of the Crimson Water are littered with the bones and corpses of animals and foolish travelers that have strayed into the [[Mournland]] and sought to slake their thirst with a drink from the lake. Its depths hold the ruined [[Cyran|Cyre]] town of Eastwood Springs, which once served as a resort town for the
leisured classes of [[Cyre]]. But even [[Ikar's Salvage]] has not dared mount an expedition into the toxic waters to recover any treasures that may lie within
the ruins.
Despite its toxic waters, however, the lake does support life—of a sort. Water [[elemental]]s, their forms the same deep red as the Crimson Water, have been seen around the lake, particularly on the southern shore. Their purpose and origin are unknown.
The Crooked Mirror is a quiet, unremarkable inn, notable for the number
of [[changeling]]s and [[shifter]]s among its clientele. In
fact, the inn serves as a front for the [[Tyrants]], and
anyone who wants to do business with the Tyrants
can find someone to talk to here. Any [[changeling]]
receives a bonus to attempts to gather information while in
the Crooked Mirror.
A shrine dedicated to the [[Keeper]] is hidden in
the basement of the Crooked Mirror, and many of
the regular customers participate in secret ceremonies to this deity. The [[doppelganger]] Zaz maintains the shrine. While
Zaz gets along well with the [[Tyrants]], her true loyalty
lies with the [[Cabinet of Faces]], the mysterious cult of
the [[Traveler]] hidden in the shadows of [[Khorvaire]].
She generally helps the Tyrants, but she often sets
her own bizarre schemes in motion.
The owners and staff of the Crooked Mirror appear
to change on a weekly basis—one week the innkeeper is
a cheerful male [[dwarf]] named Mrogab, the next week
she's a surly female [[half-orc]] named Traaka. In fact,
the staff consists of two [[doppelganger]]s (not counting
Zaz) and six [[changeling]]s. These eight take turns playing various roles at the inn and performing work for
the [[Tyrants]]; they enjoy creating elaborate dramas with
these roles, and each trip to the Crooked Mirror should
involve colorful new personalities. While the on-duty
staff generally assumes the forms of other races, most
of the doppelganger or changeling clientele maintain
their natural forms while at the inn.
''Population:'' Mostly immigrants from [[Breland]] and
[[Cyre]] as well as most of the city’s [[orc]]s and [[half-orc]]s.<br/>
''Character:'' Crowded with an air of faded glory.<br/>
''Businesses:'' Street stalls, cottage industries, and the [[House Tharashk Refinery]].<br/>
''Key Personalities:'' [[Durgran Torrn]], [[Kurn Velderan]], [[Miraan]], and [[Rusila ir'Clarn]].<br/>
''Overseer:'' Lord [[Varen Lassite]].
//Cross is all abustle.//
//The main streets lead to and from the city’s other districts, making
it a busy place to pass through. Above the streets hang clotheslines and
rope bridges between ruins and the places where people have built precariously perched homes.//
//Conversation flies everywhere, accent and idiom most typically
from [[Cyre]] and [[Breland]], while street hawkers, selling food, try to sound
cosmopolitan, despite the parochial nature of their wares.//
With access to five other districts of [[Stormreach]], Cross connects almost
as much of the city as the [[Marketplace]] does. For most
people in Stormreach, Cross is a place you travel through
on your way somewhere else, but it is also home to [[Brelish|Breland]]
expatriates and a great number of [[Cyran|Cyre]] refugees.
Much passes through Cross, so its street dealers and
children hear about a good number of things, making
Cross a good place to get information if you’re willing to
part with a little coin to get what you need. The people here
are often poor, but they are also proud of their heritage.
!! Wards and Noteworthy Locations
* [[Dannel's Pride]]
* [[Graystone]]
** [[Havulak Prospecting]]
** [[House Tharashk Refinery]]
** [[Big Bronau's Boat]]
* [[Saltire]]
** the [[Rubble Warren]]
* the [[Sloths]]
** [[Beehive Pastries]]
** the [[Brelish Consulate|Brelish Consulate (Stormreach)]]
!! Adventure Hooks
* A trader arrives in [[Stormreach]] with a [[Mournland]] artifact that has some significance to the people of [[Dannel's Pride]]. They can’t afford it, but in their desperation to get it, they are willing to pay adventurers and lie to them, painting the trader as a thief. The [[Cyrans|Cyre]] try to convince the heroes to board the trader’s ship to “recover” the artifact.
* In the [[Sloths]], adventurers stumble into the middle of a standoff between a group of corrupt [[guards|Stormreach Guard]] and members of the [[Storm Hammers]]. Both were attempting to mug the same merchant, and now they are fi ghting over the spoils. Neither has any sympathy for the people of the ward. Will the PCs interfere?
* [[Cadroc|Rubble Warren]]’s young “adventurers” in the [[Rubble Warren]] have vanished, and their parents are beside themselves with worry. Cadroc has led his group into some tunnels beneath the Rubble Warren because he heard adults complain about the rats down there causing trouble. Something bigger than a rat lurks there, though, more than Cadroc can cope with alone.
!! Overheard in Cross
//“Hey, Mister, where did you get that axe? Is it magic?
Have you ever seen a dragon? Did you kill it? Where
are you from? Can you cast spells?”//
//“Apples! Get your apples! Pickled apples, sweet and
tangy. Good for you sailors, and good for a treat!
Spiced, pickled apples! A delicacy, green or red, sweet
or sour. Get your pickled apples here!”//
//“Things can happen, things can happen all the time.
You can’t trust these people or the Guard; they’re
not like us. We can protect you. We wouldn’t stiff a
countryman like yourself. All we require is a little
donation from time to time, like a tax paying for a
city watch. Only we’re better than the regular watch.
What do you say?”//
Crown Island is an island in the [[Lhazaar Principalities]].
The high walls of Crownhome, the hereditary home of [[Karrnath]]’s royal
family and the dwelling of King [[Kaius ir'Wynarn III]], rise atop King’s Hill in the Highcourt Ward of [[Korth]]. The structure is more a military base than a palace. With over a thousand soldiers stationed here and backed by siege engines and other defenses,
Crownhome embodies the nation’s preoccupation
with battle.
In this grand foundry, tended by [[shadar-kai]] and guarded by
newly forged [[marut]]s, the [[immortal]] spirit known as the Smith of Souls refines the essence of faded spirits into [[husksteel]].
From these lingering scraps of memory and emotion, she forges the armor and weapons of the shadar-kai, and creates
the maruts from the husks of brave souls. She also creates
smaller and stranger items from husksteel.
The Smith wears a mask of black steel and an apron of
dragonhide. When forging [[marut]]s, she takes the form of a
[[giant]], and when crafting tiny trinkets, a [[gnome]]. It's possible
that she collects the memories of mortal artisans, and can
replicate their works at her forge.
Developed during the [[Last War]] in [[Thrane]], this small order of adepts and
[[artificer]]s crafts [[magic item]]s drawing on the power of the [[Silver Flame]].
Most [[demon]]s of [[Shavarath]] serve the Legion of Cruelty. They torture civilians, have
no concern for collateral damage or their own losses, and make
little effort to hold territory. Their focus is purely on inflicting
maximum damage on foes and their own region alike. The
Century of the Salted Earth devastates the regions they fight in,
while the Century of Terror creates hideous displays with the
corpses of their victims and delights in psychological warfare.
The Legion of Cruelty slaughters [[devil]]s and [[angel]]s with equal
glee, and is despised by [[Justice]] and [[Tyranny]] alike.
All manner of demons can be found in the Legion of Cruelty;
their form reflects their military role, and many wear battered
armor, steel scales, or are simply coated in fresh blood.
[[Barlgura|barlgura]]s and [[hezrou]]s are brutal shock troops. [[Chasme|chasme]]s and
[[vrock]]s flood the skies, while [[goristro]]s are living siege weapons.
[[Marilith|marilith]]s and [[balor]]s command centuries, while cohorts may
be led by even greater demonic beings.
Many within the Century of Terror wear the flayed skins of their foes and
assert that the [[Mockery]] is part of Cruelty Command.
''Color:'' (not visible)<br/>
''Associated [[Dragonmark|dragonmark]]:'' (none) <br/>
''Associated Plane:'' [[Dal Quor]]
This moon is believed to have been destroyed by the [[Cul'sir]] Dominion during the [[Age of Giants]], using an [[eldritch machine]] described as a "vast altar of obsidian and brass". In so doing, the [[giant]]s completed a ritual that permanently severed the [[plane]] of [[Dal Quor]] from the Material Plane, erasing all [[manifest zone]]s to the plane and preventing it from becoming coterminous ever again.
A stretch of land east of the town
of [[Ghalt]], the Crying Fields saw battle after bloody battle
as [[Thrane]] and [[Aundair]] fought for control of what is now
southern Aundair. Today, no one farms these fields, no
animals graze upon the crimson-tinged grass. The place
has a forlorn, melancholy atmosphere, as though a thick
and cloying fog hangs over it. On nights when the primary
moon of the month rises full, the sounds of battle can be
heard rolling across the empty expanse, and some claim
that the dead soldiers even appear to continue their endless
struggle for the land.
The name of the area comes from the sound the wind
makes when it blows from [[Lake Galifar]] and crosses into
Thrane. That’s when sounds of anguish and despair claim
the fields. Low and distant during the day, the cries grow
louder and more distinct at night.
The Crypt of the Guard was built a hundred years
ago to honor the dead of the [[Stormreach Guard]]. This
turned out to be a backhanded compliment; traitors
were buried alongside heroes, and the crypt was built
too close to the water.
Lack of upkeep and regular water damage make the crypt an unpleasant place to visit, and it has been raided by [[Emerald Claw]] [[necromancers|necromancy]] in need
of [[undead]] muscle. Guards today try to save enough
money to be buried elsewhere, so the crypt has become
the pauper’s option.
This crystal sphere is typically about 6 inches in diameter. While touching it, you can cast the [[scrying]] spell with it.
<<<
{{scrying}}
<<<
''District Type:'' Wealthy residential<br/>
''Buildings:'' Upscale residences (248), average
residences (32)<br/>
''First Impression:'' Manors and mansions surround
penthouse towers, the sheer size of these estates hinting at the wealth of the residents within. Walls and
bridges are covered with thick panels of glass and
[[crysteel]], causing a brilliant kaleidoscope of color
when sunlight strikes the towers.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Oak Towers]] (northwest); [[Pinnacle]] (bridge, southeast); [[Silvergate]] (bridge, south); [[Korranath]] (Korran-Thiven) (bridge, southwest); [[Holdfast]] (below)
While many of the most influential citizens of [[Sharn]]
prefer to live in [[Upper Central]], closer to the center of
government and trade, Crystal Bridge is home to many
of Sharn's wealthiest denizens. A number of [[dragonmark]]ed heirs maintain private residences in Crystal Bridge or [[Oak Towers]], along with [[Brelish|Breland]] aristocrats
and merchant princes. Crystal Towers is a quiet,
peaceful district, and many of its inhabitants employ
private guards to ensure that it remains peaceful.
!! Notable Inhabitants of Crystal Bridge
* [[Haras Kant]]. A wealthy aristocrat and member of the [[Aurum]].
* [[Ilia Merith]]. A philanthroper and patron of the arts.
[[Riedra]]n architecture often
incorporates a form of [[crysteel]]. When properly treated
and charged with energy from a [[monolith|hanbalani alta]], a structure
containing that material sheds colorful light. A bastion
city can be a remarkably beautiful sight at night. In a village, buildings are not actually constructed of crysteel,
but beacons are set at key points to provide illumination.
[[Riedran communities|Riedrans]] have two grids of light—key regions
remain lit at all times, but other areas (such as living
quarters) are shut off after curfew. Light is a gift of the
[[Inspired]]; they provide it, and they take it away.
At first glance, a crystal waste appears to
be a plain of smooth, glittering ice except for its coloration,
often a deep red or pale purple. Closer examination reveals
such plains to be massive sheets of solid crystal. Crystal wastes
are inhospitable environments, even more unforgiving than
deserts. They hold no oases, no place for vegetation to flourish, and no shelter for animal life. However, the [[Riedra]]ns prize the crystal of the plains for its [[psionic|psionics]] resonance, and the slabs they mine there form the base of Riedran [[crysteel]]. Riedran mining camps dot the edges of crystal wastes, where workers quarry blocks out of the plains and prepare the material for transport to [[Dar Qat]].
The most dangerous places in a crystal waste are the fields where [[Siberys shard|dragonshard]]s have struck the glass, shattering the crystal and creating
fields of razor shards that can be whipped up to create a deadly flaywind.
''Date: '' [[9 Olarune|Khorvaire calendar]]
During the [[Last War]], saboteurs caused a [[floating tower|Glass Tower]]
to fall into [[Lower Dura]]. This devastation can still be
seen today in the district now known as [[Fallen]]. On 9
Olarune, people in [[Sharn]] gather to remember those who were
lost that day. Many of them carry on a tradition of crafting elaborate ice sculptures and throwing them into the [[Dagger River]].
Crystals of Denion is a magic emporium that buys and sells
[[magic item]]s of considerable value. Most of Denion's
goods are related to [[charm|enchantment]] effects or enhancing one's charisma. He also has a variety of extremely expensive magical art; while fascinating and beautiful, these
have no practical value for adventurers.
The [[Inspired]] lords of [[Riedra]]
supervise the mining of a crystalline substance that can
be alloyed with iron to form Riedran crysteel. Crysteel
makes excellent weapons, and the crystalline component
makes them resonate with [[psionic|psionics]] power.
This cube is about an inch across. Each face has a distinct marking on it that can be pressed. When you press one of the cube's faces, a barrier of invisible force springs into existence, forming a cube 15 feet on a side. The barrier is centered on you, moves with you, and lasts for 1 minute, until you deactivate it or it is deactivated by a magical effect such as [[disintegrate]] or [[passwall]].
The barrier allows nothing to pass through. You can allow certain objects (such as walls, floors, and ceilings) to pass through, as well as certain categories of matter or phenomena (e.g. gases, nonliving matter, living matter, or [[spell]] effects).
If your movement causes the barrier to come into contact with a solid object that can't pass through the cube, you can't move any closer to that object as long as the barrier remains.
You can create this barrier five times per day before it must be magically recharged.
This bracelet is made of stained braided leather with a brass buckle. While wearing it, the wearer leaves behind no footprints, fingerprints, scent trails, or other signs that could be used to track them.
These two golden bracelets are designed to be worn by two people. While worn, each person is always aware of the other's exact location and well-being.
This plain steel breastplate is studded with dents and holes from arrowheads. Once donned, the armor can only be removed by magical means, such as the [[remove curse]] spell. All projectiles that pass within 15 feet of the wearer, such as arrows, rocks, and magical missiles, curve in midair to hit the wearer.
//No creature could match the Titan King Cul'sir in power or greed. His strength was immeasurable. He knew one thousand spells and held the treasures of a continent in his vaults, and yet he still hungered for more. He held the elves in his thrall, yet some were sly enough to slip through his fingers and find refuge in the wilds.//
<div align="right">—excerpt from the [[Tairnadal]] legend of Vadallia and Cardaen</div>
Cul'sir was the mightiest titan of the [[Age of Giants]], and united the titans of [[Xen'drik]] into the single largest civilization of the age, the ''Cul'sir Dominion''. These mighty ancestors of modern [[giant]]s sought to dominate all reality, exploring the [[plane]]s as well as [[Eberron]].
It was Cul'sir and his empire that warred with the [[quori]] of [[Dal Quor]], culminating in the giants' destruction of the moon [[Crya]] and severing the [[plane]]'s direct connection to [[Eberron]].
Although no [[Medani]] true heirs are in permanent residence, one man in [[Stormreach]] has the [[Mark of Detection]]. Culan Silvereyes is an expatriate, expelled from the house after he knowingly withheld information that caused the death of his employer. He is driven by oracular visions (or so he believes), and these might
cause him to seek out adventurers or act against them.
Most of the time he works as a freelance [[inquisitive]],
with a knack for showing up at the moment when a
prospective client decides to seek help.
* A paradise exists within the world, a vale bathed in the light of the Inner Sun. Earn your passage with the blood of worthy foes.
* Our existence is a chrysalis state, preparing us for transcendent immortality within the bowels of the [[gibbering mouther]].
* The [[Lord of Eyes|Belashyrra]] sees all secrets. Its gaze elevates the worthy and slays the unbeliever. Drive doubt from your heart, and you will see reality through new eyes.
The Cults of the Dragon Below are wildly diverse. The
tenets above describe the beliefs of three different
cults. [[Warlocks|warlock]] draw power from [[demon]] [[overlord]]s, and
[[daelkyr]] cultists serve [[mind flayer]]s and [[beholder]]s. Others embrace deep convictions that others see as madness. Outsiders use the term "Cult of the Dragon Below"
as a blanket term to describe these disparate beliefs,
but the cultists don't use this name or see themselves as
part of a greater whole.
Cults of the Dragon Below are based on madness or
power. A cult that seeks power chooses to serve a dark
force because of the gifts they receive from it. A cabal of
scholars might serve the demon [[overlord]] [[Sul Khatesh]]
in exchange for secrets of magic. In the [[Mror Holds]],
dwarf [[clans|Mror clan]] bargain with [[Dyrrn]] the Corrupter to gain
[[symbiont]]s and sinister gifts. The [[Shadow Marches]] contain cults devoted to the [[daelkyr]] [[Belashyrra]] and [[Kyrzin]]. Membership in such a cult is voluntary, and spellcasters are more likely to be [[warlock]]s or [[wizard]]s than [[cleric]]s;
their power comes from bargaining, not from faith.
Cults driven by madness have a warped view of reality. A cultist might believe [[aberration]]s are a higher form of life and that the [[daelkyr]] will elevate mortals.
Other cultists may not recognize the true nature of the
beings they serve. A cult of [[Rak Tulkhesh]] might truly
believe their lord will bring peace to the world, even if
that peace must begin with bloody war. Joining such
a cult isn't a choice, it's something you fall into due to
madness. New cults can spring up anywhere, as seeds
of madness take root and spread.
Cults of the Dragon Below often appear as antagonists. However, your character could be a member of a relatively benign cult. You might have been raised in a
cult but broke free from its influence. If your character
was or is part of a cult, work with your GM to develop
the details of your sect.
!! Symbol
Many cultists carry pieces of volcanic glass or small
Khyber [[dragonshard]]s, but the cults have
no unified symbol. Individual cults develop a symbol
based on their fiendish patron or mad visions. Eyes, tentacles, and broken weapons are all common themes.
!! Rites
Cult rituals are intense and often violent, including blood sacrifice and ritual combat. Many cultists consume unnatural substances, seeking a closer communion to [[aberration]]s. They perform rituals in Undercommon, though most cultists don't have a full
understanding of the language.
!! Temples
Cults meet underground, whether in caverns or sewers.
Rural cults seek out places twisted by the powers of the
plane of [[Xoriat]] or [[Khyber]].
!! Examples of Cults of the Dragon Below
<<list-links-article "[tag{!!title}category[organization]sort[title]]">>
For a millennium since its founding, [[Cyran|Cyre]] culture blended the
traditions of other nations. However, the [[Last War]] built walls
between [[Cyre]] and the other nations, and each evolved in this
century of relative isolation. Cyrans know the old [[add-a-verse]]
songs beloved by [[Aundair]]ians, but few know the [[Epic of Valiant and Vigilant]], a tale of martial bravery close to the heart of every modern Aundairian. Nor do they know the maxims of [[Beggar Dane]] that now serve as a cornerstone of [[Brelish|Breland]] culture.
Even so, Cyrans see their culture as being founded on the
best principles of [[Galifar]], and can still find some common
ground with people of any nation. A Cyran can play [[Conqueror]]
with a [[Karrn|Karrnath]], sing an [[add-a-verse]] song with an [[Aundair]]ian,
and debate religion with a [[Thrane]]. This reflects the founding
principles of [[Cyre]]—to gather the best aspects of [[Galifar]] and
to build upon them. Cyrans believe there's no single perfect
path; diversity is a source of strength, but there’s always room
for improvement. Cyran culture is thus a strange chimera—a
blend of familiar elements from across [[Khorvaire]] combined
with a steady, ongoing evolution. A Cyran musician might play
[[Karrnath]]i funeral dirges in the style of a [[Thrane]] devotional; it’s
a puzzle where the pieces are known, but they’re constantly
being arranged in new ways. Some citizens of the other nations
believe this is appropriation—that the Cyrans are [[carrion crawler]]s who steal from others while arrogantly believing they can do better. But the Cyrans themselves assert that this approach is rooted in love, not arrogance, and call it the
“Cyran appreciation."
In playing a Cyran, you can find familiar things anywhere you
go. But what do you treasure in your memories of Cyre? Do
you cling to the past, or do you embrace the Cyran principle of
always striving to find a new and better way?
!! Fashion
Cyran fashion blends practicality with endless diversity. Cyran
clothing begins with a simple foundation—this base layer may
be colorful, but it’s first and foremost practical and durable.
Whether breeches, skirts, shirts, or gowns, a Cyran starts with
whatever the wearer finds most comfortable. Again, this base
level is well made, but it’s more functional than decorative.
After starting with simplicity, the Cyran adds flair. Cloaks
and gloves are both integral parts of Cyran fashion. Gloves can
be short and sturdy for work or war, or long and decorative
for more formal occasions. Cloaks likewise vary between
the practical and decorative: a heavy cloak for traveling, a
short cape for casual socializing, and a long, light cloak with
a [[glamerweave]] lining for an evening at the Grand Stage. In
addition to clothing like gloves, boots, and cloaks, jewelry and
other accessories are important parts of Cyran fashion. Often
made from copper, leather, wood, or glass, Cyran jewelry is not
a display of wealth, but rather a way to express individuality.
Feathers and bells are also common accessories; there is a
Cyran dance that involves belled bracelets and anklets. Finally,
masks are often worn at formal or festive occasions. Cyran
masks aren’t intended to conceal identity or intent; rather, they
are a way of enhancing identity and expressing a mood.
Traditionally, Cyran fashion is filled with color (often
accentuated with [[glamerweave]]). In the wake of the [[Last War]],
many Cyrans have adopted Mourningwear—clothing cut in the
Cyran style, but entirely in black. Others celebrate their nation
by preserving its styles. Because of the emphasis on durability,
your Cyran character may still have the clothes they were
wearing on the Day of [[Mourning]]. What was that outfit, and do you
still wear it? Do you favor a mask, and if so, what is its design?
!! Cuisine
Cyran cuisine reflects the Cyran principles of working with the
best of all traditions while continuing to explore. In many ways,
this is similar to the [[Sharn]] fusion found in the City of Towers,
and a number of Cyran refugees are rising stars in Sharn’s
culinary scene. Cyrans blend the thrakel spices of [[Thrane]] with
traditional [[Karrn|Karrnath]] stews, and add the heat of southern [[Breland]]
to the delicate pastries of [[Aundair]]. While many refugees cling
to family recipes as a way to remember the fallen nation, others
continue the tradition of Cyran appreciation—adopting new
favorites from the place they’ve found shelter and looking for
ways to improve them.
!! Religion
The [[Silver Flame]] had some devoted followers and temples in
central [[Cyre]], though the [[Sovereign Host]] was the dominant faith.
However, religion is driven by faith and tradition, and Cyrans
have always been encouraged to question and search for new
paths. Outer Cyre is a different story. The nobles of Eastern Cyre (now [[Valenar]])
were and are devout [[Vassal|Sovereign Host]]s, convinced they have a divine right
to leadership. The people of Southern Cyre (now [[Darguun]]) are less arrogant,
but most hold to a quiet, steadfast faith in the Sovereigns.
The war drove some Cyrans to embrace their faith more
tightly, but for others it was another source of doubt. Likewise,
the [[Mourning]] threw many devout Cyrans into a crisis of faith,
while for others, it actually strengthened it. A devout follower
of the [[Silver Flame]] doesn’t question the cause of the Mourning,
they simply seek to protect the innocent from harm. Vassals
of the [[Sovereign Host]] trust that there is a purpose to their
suffering. Meanwhile, in the wake of the Mourning, some
Cyrans have turned to the [[Blood of Vol]] or [[Cults of the Dragon Below]], cursing the gods they once worshiped or following a darker vision. There are also a number of new strains of the old faiths, Cyran twists on the Flame and the Host that seek to
adapt traditions to make sense of the war and the world.
In playing a Cyran, whether a [[divine|divine magic]] caster or other religious
character, consider the impact the [[Mourning]] had on your faith.
Are you conflicted and struggling to hold to your beliefs? Or
was the Mourning a source of inspiration—you know you have
a divine purpose, that your people need you? If you’re tied to an
existing faith, do you follow the standard traditions or have you
found an unusual path?
!! Magic
Traditionally, Cyrans viewed [[arcane magic]] as an art form
as well as a practical tool. This lent itself to a wider study of
[[illusion]] and [[enchantment]] than found in other nations. But it’s
also about the presentation of magic, regardless of its school.
Whether [[magewright]], [[bard]], or [[wizard]], Cyrans often put more
show into the performance of magic than even the [[Aundair]]ians.
For a wizard who’s studied at the [[Wynarn Institute|Wynarn Institute of Art]], somatic
components are almost a dance, while verbal components have
the cadence of song or poetry. This echoes the Cyran love of
flowing capes and cloaks. As a Cyran spellcaster, you are truly
a student of arcane arts; consider how your casting reflects this.
While all citizens of [[Droaam]] serve the [[Daughters of Sora Kell]],
each region is independently governed by a [[warlord]] in the
name of the Daughters, and beneath them, chibs rule local
communities. All citizens are expected to serve their nation
when called upon, and to do whatever is asked of them. In
exchange for loyalty and service, they receive sustenance, shelter,
and pride—driven in part by the knowledge that they are defying
the arrogant nations of the east. The people of Droaam are
encouraged to believe that they are part of something glorious,
something that has yet to be fully formed. “Today may be difficult,
and tomorrow may be harder still. But look what we've done in
one decade, and imagine what we'll achieve in the next!”
Within Droaam, some citizens have concrete, defined jobs—miners, masons, soldiers. Others are part of a general labor pool and may change jobs daily. This is especially true in the great cities, which are constantly expanding. However, Droaam
isn't yet a highly organized bureaucracy, and it's easy to slip
through the cracks if you choose to. Within the major cities,
many citizens pursue their own businesses. Those who appear
to be indolent or who cause trouble are swept up by a press
gang, but people displaying industry and contributing to their
city are largely ignored. Ultimately, Droaam is still a frontier;
the nation is only ten years old, its cities are still being built,
and there's much change yet to come.
While many outsiders may think Droaam's system sounds
oppressive, most of its citizens are sincerely committed to their
new nation. Their lives before the Daughters were brutal and
ugly. Now they have all the [[grist]] that they can eat, a roof and a bed in the local hall, and most of all, a sense of purpose. A [[goblin]] may spend their day in
the mines, but they know they're building a great city, not just
serving the crude whims of a crass [[ogre]] chief. Additionally, many
citizens are truly in awe of the [[Daughters of Sora Kell]], a careful
balance between fear and wonder—the practical fear of [[Sora Maenya]] and her [[Fist|Maenya's Fist]], and the dreams inspired by the words of
[[Sora Katra]]. The people of Droaam know that the Daughters of
Sora Kell are legends, that they possess untold powers, and that
[[Sora Teraza]] knows what the future holds. Most truly believe that
Droaam has a grand destiny, that they'll defy the expectations
of the world, and that together, they'll build something glorious.
!! Language
Droaam has several exotic languages, from the chattering of the
[[Znir Pact]] [[gnoll]]s to the [[medusa]]s that communicate with each
other through the hissing and weaving of their snakes. However, this region was once dominated by the Empire of [[Dhakaan]] and Goblin has long been the common language of trade. Almost every Droaamite speaks, or at least understands, Goblin. Some communities of Gaa'ran [[orc]]s only speak a dialect of the ancient orcish language, which has vanished elsewhere on [[Khorvaire]].
Common is used as a trade language, and in modern times,
many creatures speak it in addition to Goblin. Even before the
arrival of the [[Daughters|Daughters of Sora Kell]], the people of the eastern Barrens
often knew a little Common from interacting with Brelish
settlers and the Westwind Riders. Today, the Daughters are
encouraging the spread of Common, and have even begun
providing regular classes in the language in [[Graywall]] and the
[[Great Crag]], as understanding Common is useful for commerce
and for creatures who could serve as [[Tharashk]] mercenaries.
Ultimately, it's up to the DM to decide if a particular creature
should speak Common—and if so, just how much it speaks. It's
possible that an NPC may only know a few specific phrases
in Common, or that a player character will have to work a little harder to convey their meaning to a creature that understands little of the language.
Literacy is common in the more civilized regions of Droaam.
[[Medusa|medusa]]s, [[tiefling]]s, and [[changeling]]s are generally literate, as is
anyone who works as a merchant or envoy. But at the moment,
much of the general populace is illiterate, in contrast to the [[Five Nations]], where education has long been considered a basic right.
While Droaamites speak Goblin, they aren't "dar" like the
[[Dhakaani|Heirs of Dhakaan]]; they have no interest
in //muut// or //atcha//, and don't use many other words integral to
Dhakaani culture. Notably, they don't use the terms //chaat'oor//
or //gath'dar// to refer to [[human]]s and their kin. Instead, they use
//aravaat//—easterner—to refer to people of the Five Nations, and
more generally, to refer to [[human]]s, [[halfling]]s, [[dwarves|dwarf]], [[elves|elf]],
and similar species. Most Droaamites don't bother to learn the
names of the different nations of [[Khorvaire]]. The West is the
[[Shadow Marches]], home to [[Tharashk]] and the former home of
[[Sora Katra]]. The North is the [[Towering Wood]], former home of
[[Sora Maenya]]. Everything else is the East, and that's all most
people really care to know about it.
!! Cruel World
Mercy and compassion are alien concepts in [[Droaam]], neither
expected nor offered. There's little difference between justice
and revenge, and if you want either, you'll likely have to seize it.
The world is split into predators and prey—and it's always better
to be the predator. Surviving to the end of a day is a victory,
and having shelter and food should be celebrated, not taken
for granted. The people of Droaam are steadfast allies to those
they count as friends, and fight to protect the things they love.
But they care nothing about the fate of strangers: if protecting a
friend means causing suffering to a stranger, so be it.
Bear this in mind when creating characters from Droaam. If
you are cruel to strangers, it's because you believe the world to
be a cruel place. You may pursue noble goals and be the most
reliable friend anyone could wish for, but you were born in a
harsh world, and it's the only life you've known.
This cruel world is changing. The Daughters dangle the
dream of a better world; [[Katra|Sora Katra]] urges Droaamites to think of
all of their comrades as family. Serve the [[Daughters|Daughters of Sora Kell]] and you'll
have food and shelter. But that's all balanced by the fact that if
you challenge them, they will crush you without mercy. And to
most Droaamites, that's a perfectly reasonable arrangement.
!! Droaam's Economy
Droaam has no established currency; the standard reward for
daily labor is sustenance and shelter. Most Droaamites rely
on barter for goods, skilled labor, or luxuries. However, most
merchants in major cities accept the coins of the East, as
well as two secondary “currencies.” Miners often trade using
slivers, small chunks of precious metal or gemstone shards.
It's also common to barter and gamble with bounty-marked
teeth. The [[Daughters of Sora Kell]] (through the chibs) offer
a bounty on certain dangerous animals, paid by the tooth. A
Goblin symbol identifying the animal it's from is carved on
each tooth, but most merchants won't accept teeth unless they
personally recognize the tooth—so you can't just carve “[[wyvern]]”
on wolf teeth. While the DM could treat bounty-marked teeth as
another form of coinage—”the old goblin offers three [[displacer beast]] teeth, worth 10 silver”—adventurers who kill a dangerous [[monstrosity]] might wonder what the bounty is for their teeth. However, the tooth currency is based on the value the Daughters have placed on each bounty, and not every creature has a golden mouth. Some dangerous creatures might have a high value while others are worthless. The bounty is a way to encourage the elimination of threats, and if a creature doesn't threaten the people of Droaam—or is perhaps even an ally—there won't be a bounty on its teeth.
While bartering can be more time-consuming than dealing in
coins, it's also an opportunity to introduce interesting adventure
hooks. Perhaps a [[goblin]] merchant can't make change for a
platinum piece, but she offers a scrap of vellum in exchange; it
looks like a piece of a map, and she says it came from below the
city. [[Dhakaan]]i relics, odd remnants of the [[daelkyr]] war, an object
pawned by a [[Brelish|Breland]] deserter—any of these could be worth little
to the one offering it, but priceless to those who receive it.
Droaam's main exports—brokered through House [[Tharashk]]—are [[byeshk]] and other ores from the mountains, [[Eberron shard|dragonshard]]s from the plains, and the mercenary services of its people. But it's also the source of unsavory goods that are often illegal in the [[Five Nations]]. [[Poison|poison]] is a simple example, but there are other more exotic substances, such as [[dragon's blood]], [[courage]], and [[blood gin]]. These are just a few examples, and Droaam is home to many unnatural goods that can't be found anywhere else. It's a source of organs and hides from exotic creatures, which may be critical components for creating a [[magic item]]; if you need the eyes of a [[leucrotta]], the [[Graywall]] marketplace may be your best chance. The markets of Droaam also receive the spoils from bandits and odds and ends from deserters, war criminals, and renegades who come from the [[Five Nations]]. All in all, you never know what you might find in a goblin market!
In describing goods from Droaam, consider the vast range of
styles and quality that can be found throughout the region, some
of which are described on the Droaamish Artisanship table below. The
Barrens raiders had no smiths and fought with simple weapons
of wood and stone, or with equipment supplied by [[Aundair]] or
[[Karrnath]]. However, the [[Daughters|Daughters of Sora Kell]] have been working to improve the situation, and [[gnoll]] and [[medusa]] artisans can be found
working in many of the more diverse cities. And the [[Venomous Demesne]] is a mystically advanced society; while they lack the
industrial capacity of House [[Cannith]], they're skilled in producing
magecrafted treasures beyond those of the Five Nations. Most
[[magic item]]s used by Droaamites come from the [[Demesne|Venomous Demesne]].
| !Droaamish Artisanship |<|
| !<<dr d8>> |!Style |
| 1 |''Barrens Primitive.'' The work of [[ogre]]s and [[orc]]s, primitive and with no consistent style. Materials are stone, wood, and bone. |
| 2 |''Znir Gnoll.'' Created by the artisans of the [[Znir Pact]]. Ugly to human eyes, but functional and very reliable. Excellent use of wood and leather; limited metalworking. |
| 3 |[[Cazhaak Draal]]. Made by skilled [[medusa]] artisans. More elegant than Znir or Barrens work, with smooth curves and engraved patterns. Reasonable metalwork, but they also work with stonewood, an exceptionally hard wood from the Stonelands. |
| 4 |[[Maenya's Fist]]. Crafted for the elite soldiers of [[Sora Maenya]]. These include heavy armor and metal weapons. The metalwork is excellent; the style is brutalist in form, intended to intimidate. |
| 5 |[[Venomous Demesne]]. Magecrafted with superior arcane science. Fine metals and ceramics are common, and tools have colorful materials and enamels. Even simple items may have common magical properties. |
| 6 |''Aravaat.'' Objects from the East—generally the [[Five Nations]]. These may be supplies given to Barrens raiders during the [[Last War]], or brought in by traders or brigands in recent years. |
| 7 |''Patchwork.'' Useful things scavenged and pieced together, a common practice among Droaamites—especially [[gnoll]]s. A [[Dhakaan]]i axe head could be on a haft of [[Znir|Znir Pact]] design, or a suit of armor could be made from pieces of three different suits. |
| 8 |''Ancient Dhakaan.'' Recovered from one of the [[Dhakaan]]i ruins of the region. These goods are extremely ancient and may be well worn, but remain functional. |
!! Religion
Droaam is a tapestry of many cultures with diverse beliefs.
The [[minotaur]]s revere a being known as the Horned Prince,
but each clan has its own private name for their patron. The
[[harpies|harpy]] say they sing with the [[Fury]]'s voice, but believe the Fury
was Eberron's cry of pain when she gave birth to the world. The
[[changeling]]s of [[Lost]] believe themselves to be the chosen people of the [[Traveler]]. The [[gnoll]]s of the [[Znir Pact]] refuse to bow to any
god or [[fiend]], while the [[warlock]] lords of the [[Venomous Demesne]]
believe that there is no difference between gods or fiends; there
are only powers that can be bound or bargained with.
Despite this vast diversity, there is broad acknowledgment
of the [[Dark Six]] throughout the region. While each different
subculture has its own favored deities and personal twists,
most people know the basic principles of the ''Cazhaak Creed''—an
interpretation of the [[Sovereigns and Six|Sovereign Host]] codified by the [[medusa]]s
of [[Cazhaak Draal]]. Every multicultural city in Droaam has a host
of shrines and idols tied to the lesser paths, but the true temple
is one of the [[Shadow]], most likely tended by a medusa priest.
The Cazhaak Creed acknowledges that the [[Sovereigns|Sovereign Host]]
exist, but portrays them as tyrants who make demands of
their worshipers while giving nothing. By contrast, the [[Dark Six]] support freedom and fair exchange. Under the creed, the [[Shadow]] is the patron of all those considered “monsters” by the people of the East. [[Aureon]] and the Nine hoarded their power,
whereas the [[Shadow]] gave its children wondrous gifts: the
[[medusa]]'s gaze, the [[troll]]'s regeneration, the [[ogre]]'s strength. As
such, the Shadow is the deity most generally invoked by those
seeking divine guidance or intervention.
Overall, the Cazhaak Creed assigns the same values to the
Dark Six as does the [[Pyrinean Creed]] of the [[Five Nations]], but
it sees these concepts as virtues. The [[Shadow]] is the Sovereign
of ambition and helps you find your path to power, even if
that means stepping on others on the way. The [[Fury]] is the
Sovereign of instinct and if you embrace your emotions, she'll
guide you through them; she's also the Sovereign of revenge,
which is merely the other side of justice's coin. The [[Mockery]]
shows the path to victory in battle, even if that requires you to
embrace treachery or fear; in [[Droaam]], courage and honor take
a back seat to victory and survival. The [[Devourer]] wields the
power of the wilds; he winnows out the weak, but those who
survive his tests grow strong. Priests of the [[Keeper]] perform
funerary rites, which vary by species—from the [[medusa]]s that
petrify their infirm so they never die, to the [[troll]]s and [[ogre]]s that
eat their dead. The priests also act as healers, for disease and
infection are tools of the Keeper, and a priest can remove them
for a price. The Keeper is the Sovereign of wealth and greed,
and his priests are always willing to help a petitioner propose
a bargain. The [[Traveler]] is rarely worshiped directly by any but
the [[changeling]]s, but it is always acknowledged.
All these are echoed in Droaam in many minor ways. For
example, revels are ecstatic celebrations devoted to the [[Fury]],
where participants are encouraged to abandon all restraint and
embrace their emotions. In battle, many Droaamites dedicate
a kill to the [[Keeper]], hoping to earn favor by adding souls to the
Sovereign's hoard; likewise, it's customary to sacrifice part of an
unexpected windfall to the Keeper so he doesn't grow jealous.
Droaamites are very indulgent of the beliefs of others, despite
(or because of) the many different faiths and practices. The [[Znir|Znir Pact]]
[[gnoll]]s despise [[demon]]s, but don't interfere with the practices of
the [[minotaur]]s or [[tiefling]]s. [[Harpies|harpy]] don't argue with [[medusa]]s
over the nature of the [[Fury]]; they know the true answer, and
that's sufficient. Everybody generally honors the [[Shadow]], even
if that means different things to different people. This principle
generally applies to easterners as well. Droaamites think
worshiping the [[Sovereign Host]] is foolish, but aren't upset if you
invoke [[Aureon]], and don't care what [[kalashtar]] or [[elves|elf]] believe.
There's one exception to the religious tolerance of Droaam—the Church of the [[Silver Flame]]. The Church considers it their mission to defend the innocent from supernatural threats, and many of the inhabitants of Droaam are considered
“supernatural threats.” The Silver Flame has led many raids
and quests into the Barrens, and the [[Dark Pack]] won't soon
forget the [[Lycanthropic Purge|Silver Crusade]]. Anyone who openly wears
symbols of the Silver Flame receives, at best, a hostile reaction
from most Droaamites, and it's wise to never wander off alone.
!! Cuisine
Why did it take so long for the people of the Barrens to build
great cities? In part, this was because they couldn't feed the
population of such a city. Many of Droaam's inhabitants are
carnivorous, and those who aren't lacked the discipline for the
large-scale agriculture required to feed large populations like
those found today in [[Graywall]] or the [[Great Crag]]. This simple
issue of food kept the population of the Barrens in check.
While the [[Daughters of Sora Kell]] enforce their rule with
[[Katra's Voice]] and [[Maenya's Fist]], they also buy loyalty with food.
The Daughters of Sora Kell promise that anyone who serves
them will have shelter and sustenance. They have lived up to
their promise, providing a seemingly endless supply of food.
The staple is a ground meat called [[grist]].
For those with slivers or teeth to spare, there are many more
options. Meat is a staple of Droaamish cuisine, and most like it
nearly raw; in fact, many [[ogre]]s and [[troll]]s prefer to eat their
meals live. Some food can be downright dangerous for [[human]]s;
for example, trolls like to chew dried [[carrion crawler]] tentacles,
which have a dramatic numbing effect on most creatures. Some
dishes are served with a tiny living [[ooze]], which Droaamites
believe aids with digestion. Wherever you go, the cuisine reflects
the exotic beasts of the region. Steamed [[chuul]] is much beloved
on the coastlines, while spicy [[displacer beast]] is popular inland.
!! Medicine
The chirugeons of Droaam employ methods that
are more gruesome than those of House [[Jorasco]], but these
techniques are nonetheless effective. Broodworms are a form
of maggot whose secretions help to both anesthetize a patient
and cleanse infected wounds; tiny [[gelatinous cube]]s are also
used as an unusual anesthetic. While it's not yet in wide use,
the [[Daughters|Daughters of Sora Kell]] have been experimenting with //troll's blood//, a
salve with remarkable healing properties that may in fact be
exactly what it proclaims to be. Droaam is a harsh land, and
most of the time when people suffer the answer is “suck it up,”
but the Daughters have pledged to make a better world in days
to come. If they manage to perfect and mass-produce troll's blood, it could revolutionize public health.
!! Entertainment
The people of the East know of the [[harpy]] as
a monster whose voice can lure innocents to their death. But
a gifted “songbird” can produce a far wider range of effects
than just the irresistible lure. The song of a talented harpy can
inspire hope or despair, instill joy or bring tears to the eyes
of listeners. Harpies call the start of each work shift, drawing
workers to their tasks. Every grist mill has a songbird whose
magical voice soothes weary workers at the end of a shift. As
harpies can project with supernatural volume, songbirds also
call out the hour and serve as town criers, relaying important
news across a community.
[[Changeling|changeling]] entertainers use their shapeshifting aesthetically,
creating exotic or ever-changing patterns across their skin.
Skindancing is a changeling art that blends physical motion
with transformation, and it can be a remarkable experience.
As a newcomer to [[Stormreach]], you’ll notice a wild
diversity in the citizens’ wealth. Although none of
the oldest families are nobles in the traditional sense,
they have turned the treasures of their pirate ancestors
into vast fortunes. The city’s unique opportunities lure
[[dragonmarked|dragonmarked house]] heirs, nobles from the [[Five Nations]],
and explorers who have recovered great wealth from the
continent’s interior. Menial laborers mingle with them,
along with war refugees, especially [[Cyrans|Cyre]]. The [[Storm Lords]] are working to find gainful employment for them and other unfortunates, but this will take time. For now,
wealthy visitors are advised to take their evening entertainment in [[Respite]], the [[Marketplace]], or the [[Temple District]]. The [[Harbor]] district, [[Locksmith Square]], and [[Dannel's Pride]] are best avoided after sunset.
The city was established by people from across [[Khorvaire]], from the [[Shadow Marches]] to the [[Lhazaar Principalities]], so immigrants from the [[Five Nations]]
have always made up a large part of the population.
Even before the [[Last War]], many settlers were patriots
who sought a place out of [[Galifar]]’s reach to practice
their traditions. Now that the old kingdom is broken,
this patriotic spirit is even greater. Many of the city’s
wards have been settled by people of a particular
nationality, and travelers are warned to consider that
when visiting; [[Thrane]]s rarely receive a friendly welcome in the [[Karrn|Karrnath]]-dominated [[Grindstone]] ward.
!! Five Things Every Stormreacher Knows
# ''The Storm Lords:'' [[Stormreach]] is a small city, and the [[Storm Lords]] are prominent public figures. The streets buzz anytime new gossip emerges about Lord [[Jonas Wylkes]] or whenever the [[Lassites|Lassite family]] throw a party at [[Molou's Distillery]]. Lady [[Kirris Sel Shadra]] maintains a low profile, but people are always speculating about the power she wields in the shadows. People might love them or hate them, yet the Storm Lords are a common topic of conversation whenever people gather.
# ''Tall Tales of Xen’drik:'' Every Stormreacher can spin tales of horrific monsters, lost expeditions, and fabled treasures found in the depths of [[Xen'drik]]. Some stories are passed down over the generations. Others are embellishments of personal experiences in the dungeons below the city or on trips to the continent’s interior. When people gather in Stormreach taverns, they typically tell tall tales, with each storyteller trying to top the one before.
# ''Languages:'' Stormreach is extremely cosmopolitan for its size. The inhabitants not only deal with a steady influx of travelers and merchants from [[Khorvaire]] but also with [[drow]], [[elves|elf]] from [[Aerenal]], [[giant]]s, and [[sahuagin]]. Most Stormreachers learn at least one additional language. Beyond this, a number of words and phrases from other languages have fallen into the basic vocabulary. A Stormreacher might not speak Sahuagin, but he can certainly swear in it.
# ''No Justice:'' The [[Stormreach Guard]] serves the [[Storm Lords]] and their interests. The guards are a force to be avoided, not a source of security. They arrest and sometimes execute criminals, but only if this benefits the Storm Lords; no moral principle is at work.
# ''Gangs and Militias:'' Groups described as gangs are typically criminals driven by selfish desires. Whether they are muggers, pickpockets, burglars, [[dreamlily]] dealers, or worse, they prey on the city’s people. Militias are armed groups based on political or religious ideology. Often they are supported by the inhabitants of their wards, who perceive them as a source of stability and vigilante justice. Whether they support or despise them, Stormreachers are familiar with the gangs and militias in their home wards.
!! Art
[[Stormreach]] is beyond boundaries. The [[Code of Galifar]] is a far-off murmur, and conventions of civility are often thrust aside here on the savage shore. It is a place
where artists break out of tradition and frequently
turn their backs on mass appeal. For good and for ill,
the city has no aesthetic elite looking down its nose at
unconventional artwork, and no royal decrees interfere with artistic vision.
Patronage of art can be a [[lightning rail]] to status
in Stormreach. Many wealthy residents commission
what they hope will be the latest masterpieces; others
fund theatrical troupes whose performances would be
considered licentious, or even treasonous, in a Khorvairian playhouse.
As a result, Stormreach’s art scene is more vibrant than is typical in a city of its size. Many artists, performers, and playwrights banished from [[Khorvaire]] choose to spend their exile in Stormreach, plying their craft far from their enemies. Also, the city’s remoteness from civilization inspires local artists to pursuits most of their Khorvairian counterparts would not imagine. The wealth of ancient sculpture, [[drow]] folksinging, and tribal dance offers the city’s artists a feast of inspiration. Today’s popular art is born of yesterday’s avant-garde, and for explorations into art’s
outer limits, Stormreach is hard to beat.
The city is more than a haven for the avant-garde.
Bawdy burlesques performed nightly in [[Forgelight]]
pander to the district’s exhausted and companionship-starved laborers. Meanwhile the classics of the [[Five Nations]] are brought to life in the extravagant [[Livewood Theater]]. Elegant galleries throughout the [[Temple District]] and [[Respite]] cater to those with a taste for fine art, offering up paintings and sculptures in classic styles.
From cathartic tragedies, sometimes played
with real blood, to stunning landscape paintings of
[[Xen'drik]]’s interior, the city has something for most
artistic palates.
!!! Notable Art and Theater
* the [[Onyx Fountain]]
* the [[Livewood Theater]]
* the Plays of [[Karklos ir'Ilsir]]
* the [[Bloodborne Players]]
* [[Mazrath the Maker]]
!! Religion
Diversity is one of [[Stormreach]]’s greatest strengths,
and this is as true in matters of religion as in anything
else. The city’s founders came from across [[Khorvaire]],
and over the decades, citizens have examined both the
old ways of Khorvaire and the mysteries of [[Xen'drik]].
Stormreach is therefore home to many faiths.
For those who seek comfort in the traditional
faiths, the [[Temple of the Sovereign Host]] can be
found in the [[Forgelight]] district. The [[Keep of the Silver Flame]] is found in the [[Temple District]], along with [[Temple Row]], home to an ever-changing array of
shrines. More adventurous travelers can take the traditional swim out to [[Shargon's Talon]] in the harbor or visit the [[Tents of Rushemé]] and watch one of the rituals
of the ancient [[giant]] faiths. One can also try to observe a ceremonial bloodletting at the [[Temple of Vol]] in the [[Grindstone]] ward, though the priests of [[Vol|Blood of Vol]] have little patience for tourists.
!! Festivals and Diversions
Life in [[Stormreach]] is hard. The day-to-day struggle to
survive the city’s corrupt politics and rampant crime can
break the spirit of the hardiest citizens. Festivals are not
only relief from the grit and grind of life; they are also
key to the survival of the city by helping its citizens keep
their spirits up. Public executions are grand events, as
are the revelries hosted by [[Storm Lord|Storm Lords]] [[Varen Lassite]]
every few months. Religious groups observe the same
holidays as their counterparts in [[Khorvaire]]. But a few
festivals and sports, described below, are unique to Stormreach.
<<list-links-article "[tag[holiday]tag[Stormreach]] [tag[sport]tag[Stormreach]] +[sort[title]]">>
!! Fashion
Clothes tell a story, and [[Mror|Mror Holds]] [[dwarves|dwarf]] love to tell tales with
them—of clan and family, faith, and personality. As with most
Mror possessions, the quality of clothing comes first. Because
of this, dwarves from lesser families may only have a single set of clothing, but these are durable and well made. Though their
basic outfits may be few, Mror place great stock in accessories,
and a Mror outfit typically has elements that can be reversed,
shifted, or removed. Brooches have important cultural
significance, and can depict family crests, the seal of the ruling
clan, the symbol of a [[Sovereign|Sovereign Host]] whose favor is sought, or even
moods; some brooches mean “leave me alone” or “looking for
company.” Other forms of jewelry—rings, chains, bracelets—are commonly worn by dwarves of both genders; this is an
opportunity to show wealth, but decorative ornaments of iron
are also worn by common folk. The //dultar//—blood blade—is
a dagger worn both as a utilitarian tool and as a statement of
allegiance; each of the ruling clans has a distinct style of dultar.
Any Mror dwarf can immediately identify another dwarf's [[clan|Mror clan]]
from their dultar.
Many Mror clans favor a martial aspect to their attire,
especially in the wake of [[Dol Udar|Mror History]]. However, not everyone
wants to wear heavy steel all day, and the Mror generally use
light alloys and thin layers of metal to craft their armor. Many
Mror wear lightweight decorative armor that evokes the general flavor of a heavier breastplate—though anyone proficient in medium or heavy armor
immediately recognizes the decorative nature of it.
Facial hair is common among the Mror, but styles vary by
clan and family. Some families prefer neatly trimmed beards.
Many clans weave beads into beards, with the design of the
bead invoking the favor of a [[Sovereign|Sovereign Host]] or honoring a [[clan|Mror clan]]. Hair dye is often used as a form of personal expression.
Clans that have embraced the use of [[symbiont]]s—notably
[[Soldorak]], [[Toranath]], and [[Narathun]]—have developed many
exotic fashions over the last century. For such dwarves,
wearing symbiont clothing or accessories is a sign of courage
and power, much as a hunter might wear the hides of animals
they've defeated. Living clothing typically has a texture similar
to leather, though chitin plating or hornlike protrusions are
possible. Patterns or colors may shift to reflect the mood of
the wearer, and a living cloak may ripple or billow of its own
accord. Living clothing is self-cleaning and mending, and
feeds on the excretions (primarily sweat) of the host. Narathun
currently has the finest artisan-breeders working with living
clothing, and styles are constantly evolving.
!! Cuisine
Mror dwarves have exceptional constitutions and are resistant
to poison, and thanks to these traits, they enjoy cuisine that
others might avoid. The dwarves live in high mountains and
subterranean settlements; while some of their meats and
vegetables are familiar to the people of the [[Five Nations]], they
also use a wide variety of mushrooms and moss. Red pudding
is a form of peaceful [[ooze]] raised as livestock and used in a
variety of dishes. Mror stew can sicken creatures with more
delicate stomachs, but it's entirely harmless to any creature
resistant to poison damage, and many [[stout]] [[halfling]]s of the
[[Talenta Plains]] enjoy Mror cuisine.
Alcohol is also a form of poison, and Mror spirits have to be
exceptionally strong for sturdy dwarves to enjoy their mind-altering properties. Mror brewers often use mushrooms to produce alcohol, and also produce mushroom-based beverages with light hallucinogenic effects. The drinks of the [[Five Nations]]
are extremely weak by Mror standards, and some consider
the ability to brew personal supplies to be a basic survival tool
when traveling in foreign lands. And when outsiders visit the
Mror, their hosts are careful to keep these travelers from buying
drinks that could kill them.
!! Religion
Mror talespinners maintain that the [[dwarves|dwarf]] are the original
chosen people of the [[Sovereigns|Sovereign Host]], especially [[Kol Korran]] and
[[Onatar]]. It's a curious coincidence that //kol// is the Dwarvish word
for “commerce,” while //dol// means “war,” and the talespinners
say the [[Traveler]] stole the names of the Sovereigns from the
dwarves during the Exile. The priests of [[Krona Peak]] say that
[[Kol Korran]] came to the hero [[Mroranon]] and promised the
dwarves wealth if they remembered his name and followed his
path, while the talespinners of Doldarunhold swear that the
hero [[Doldarun]] was the son of [[Dol Dorn]] and [[Dol Arrah]]. The
records of the [[Library of Korranberg]] show that [[Zil|Zilargo]] missionaries
were active in the [[Ironroots|Ironroot Mountains]] in the centuries before [[Bal Dulor|Mror History]], and some sages assert that these tales may have been the work
of clever missionaries. Whatever the truth, the Mror already
had shrines to the Sovereigns when young [[Karrn|Karrn ir'Wynarn]] led his
forces to conquer the holds.
While the Mror broadly acknowledge all of the Sovereigns,
[[Kol Korran]] and [[Onatar]] are the most beloved; [[Boldrei]] and
[[Olladra]] are also often invoked. Clan [[Doldarun]], [[Mroranon]], and
[[Soranath]] are especially devout, while [[Droranath]], [[Soldorak]], and
[[Toldorath|Toldorath and Tordannon]] are the most pragmatic. The [[Blood of Vol]] and the [[Dark Six]] have small followings in [[Narathun]].
The [[Tashana Tundra]] [[shifter]]s are divided into three
great nations, the [[Qiku]] tribes of central Tashana; the
coastal [[Saartuk]] people, and the more warlike [[Chuniigi]] in the north. Although intertribal skirmishes and raids
are not uncommon, the elders of all three nations work
hard to maintain the peace of recent generations.
Whereas the [[shifter]]s of [[Khorvaire]] tend to value self-reliance and personal freedom, the [[Qiku]] and [[Saartuk]]
shifters place much more importance on the community.
Allegiance is to the tribe, the family unit, and the nation—in that order. The harshness of life in the Tundra has dictated this be so—rugged individualism in the Tundra is
not advised. Going it alone, to a Tashana shifter, is dangerous, stupid, and spiritually misguided.
Tundra shifters do not struggle against their bestial
nature, but rather embrace it as a sign of their oneness
with all living things. Shifting is a profoundly exhilarating and joyful experience, even when the aim is aggression. Tashanan shifters have a remarkable ability to accept
violence and death as part of the natural order. If it's
necessary to tear an enemy to pieces, a tundra shifter does
so with great passion.
Tundra shifters who choose to explore the wider world
might be doing so at the bequest of the community. Such
braves gather ideas and knowledge before returning to
the tribes, seeking to make the nation stronger. Because
Tashana shifters place a premium on community, such a
character is likely to be fiercely loyal to his companions.
Possessions mean little to shifters aside from their utility. Although they understand the concept of currency, hoarding coins and gems is a strange practice to them.
Shifters from the northern [[Chuniigi]] tribes have a
simpler, more aggressive viewpoint. While the community
concept is still very strong, these are desperate times for the
Chuniigi. A tribe might raid another tribe to supplement its
hunt, and intratribal conflict can pit factions and families
against one another.
!! Five Things Every Tashana Shifter Knows
# ''The Way of the Brothers:'' A practical code at heart, The [[Way of the Brothers]] is imperative in the harsh lands of the Tundra. This code has only strengthened in recent generations as Tundra shifters have learned the value of cooperation and peaceable relations.
# ''How to Live off the Land:'' Even in unfamiliar climes and surrounds, tundra shifters persevere. All Tundra shifters have high ranks in the Survival skill, which is crucial in their home environment.
# ''Flee the Planar Breaches:'' In the Tundra, [[planar breaches|reality storm]] are particularly wild and unpredictable. Most of them drift over the landscape like small weather fronts. The unnatural sensation of planar leakage within these zones is profoundly painful and upsetting for tundra shifters, who feel a spiritual bond with the land.
# ''The Betrayal of the Southern Shifters:'' Tundra shifters' feelings for their [[martial Riedran cousins|Taskaan Legion]] fall somewhere between loathing and pity, depending on the individual. Most shifters neither know nor care about the particulars of the [[Riedra]]n nation, but they feel their distant relatives who serve as Riedran enforcers have sold their souls to the corrupt [[human]]s. Attempts in the past to "liberate" their brothers from their human handlers have all ended tragically—the Riedran shifter like what they do. To shifters today, they are lost causes, and a tundra shifter might kill a Riedran shifter out of pity as much as anything.
# ''How to Play Music:'' Tashana shifter tribal music is at once an art form, a style of meditation, and a powerful source of magic. All adult shifters craft their first instrument—usually a bone pipe or sealskin drum—as a puberty rite, and this act, along with one's first hunt, signifies passage into adulthood. The Tashanans have developed ingenious collapsible drums made of bone and hide, and virtually every Tundra shifter keeps drums or pipe with her at all times.
!! Tashana Names and Speech
Tundra shifter names reflect the importance that the culture puts on the group or tribe. All names are hyphenated,
with the first word signifying the individual's tribe, and
the second word the individual's name. The second name
is usually one that commemorates a coinciding event on the
day of birth, chosen by the mother or the tribal shaman.
Both names are usually shortened versions of longer words.
Tel-Marq, then, would be Marqussek of the tribe Telaani.
In formal situations, the long-form name is used (Telaani-Marqussek). Shifter infants are usually named at birth.
''Masculine Names:'' Akiaq, Akrillok, Atanek, Biisatowaq,
Chugiaq, Chultin, Dequinii, Ikiaq, Ipitok, Itigiak, Kasqae,
Keeluq, Kut'uk, Makitt, Marqussek, Massaq, Nanuq, Noahtak,
Pakaq, Qaniis, Qigiq, Sinaaq, Taqu, Tok, Tonraq, Umiak.
''Feminine Names:'' Anana, Arnaa, Buniiq, Desna, Esqa,
Iqala, Immu, Issuqa, Iya, Kaya, Kilae, Kimka, Kinaqaa,
Kiramii, Mikii, Miksaqaa, Nanii, Ninaqoja, Paniqa, Piaqii,
Saqari, Sesii, Sikuu, Tiquani, Ululii.
''Tribal Names:'' Agalak , Ahnakik , Annakuk ,
Chikuq, Ekchuaq, Hey, Iglogaq, Illiivaq, Iping, Kakrayak,
Kingudlerq, Kulutiq, Mantok, Massapok, Naartoq, Nanik,
Nukiliq, Nutaak, Oonayak, Palak, Peqartoq, Putyuq,
Saqani, Tuluqarak, Yaqone.
!!! Phrases
Although all tundra shifters speak Riedra,
remnants of an ancient dialect linger in their idioms
and sayings.
* "//Banded we live!//" Often used as a good-bye, this saying underscores the emphasis shifter culture puts on the group. It is traditionally spoken in unison at the end of any tribal meeting or gathering.
* "//No tomorrow!//" Used sometimes as a battle cry, this simple phrase is also common as a quiet utterance that a shifter might whisper to herself in times of worry or danger. It captures the Tashanan ideal of not letting distractions or worries about the future interfere with the pressing needs and reality of the moment.
* "//The wolf is always waiting.//" A reminder to stay alert and vigilant at all times. Also used to express remorse or grief in times of crisis or death.
* "//A sister to my brother is my sister, too.//" One of many Tashanan sayings that reveal a deep sense of compassion—a shifter might say this after a hunting kill, or the death of a worthy enemy.
* "//Tear at the throat, and be done.//" Something of a counterpoint to the above, this proverb encourages maximum violence immediately when confronted by danger. It's also muttered when undertaking an unpleasant task.
* "//Qok!//" The all-purpose expletive of the shifters, pronounced "coke." It can be used as a adjective (Harness the qokking dogs!), a noun (What the qok is that?), or a verb (Qok this!).
!! Tashanan Religion
Eschewing technological and industrial advancements,
the majority of Tashana shifters choose instead a path of
simplicity and union with their natural surroundings.
Although much of this choice is strictly a practical matter, it
is also a defining spiritual aspect of the shifters of Tashana.
Where a foreigner might see the Tundra way of life as primitive, the native sees it as pure and spiritually powerful.
The central nations of the [[Qiku]] and the [[Saartuk]]
have enjoyed relative peace for many generations, and
as their communities continue to grow and prosper, the
shifter mind has turned inward to more spiritual matters.
They are no longer driven by a struggle to survive, and
now their shamanistic traditions grow more advanced
with every generation. This advancement is evidenced by
the shifters' sophisticated use of medicinal and magical [[lichens|Tashana lichen paste]] native to the Tundra.
!! Tashanan Style
!!! Art
Currently in vogue among a small circle of influential collectors in [[Khorvaire]] ([[Zilargo]] in particular),
Tashanan art is surprisingly sophisticated and powerful for such a "primitive" culture. "An unmatched sophistication of simplicity," says [[Morgrave|Morgrave University]] art scholar Mentarion Palinostrum.
Most prized are animal sculptures made of ivory,
whalebone, antler, and stone, often found as ornamental
parts of utilitarian objects. These figurines reveal a highly
developed aesthetic style, with a meticulous exactness of
anatomy and proportion. Tashanan paintings employ
natural oils and pigments with hide canvases, and display
complex techniques that are the envy of many a Khorvairian art student. The popular dreamscape style features dense and surreal landscapes of the natural world with
an overlay of strange shapes, colors and images.
!!! Architecture
Virtually all Tashana [[shifter]]s were at least semi-nomadic
until only a few generations ago. Now, many tribes of the
[[Qiku]] and [[Saartuk]] nations have established permanent
settlements and a nascent architectural tradition. In the
central plains, sprawling villages built in and among the
strange rock mounds combine stonework and tunneling
with traditional shelters of seal or caribou skins. This
dreamscape style features odd, otherworldly totems and
ornamentations. In the coastal settlements of [[Winterstead]] and [[Whitetooth]], increased trade has resulted in a
riot of improvised architectural styles.
The nomadic and semi-nomadic tribes still employ
collapsible tents of seal or caribou skins, supported by
frames of bone and driftwood. Larger structures typically have raised sleeping platforms and a simple flue to release smoke. It's thought that the [[Chuniigi]] tribes of
the far north maintain several hidden ice fortresses and
storehouses carved directly into glacial formations.
!!! Cuisine
The [[Tundra|Tashana Tundra]] is not the place for cultured cuisine, but in
terms of resourcefulness and ingenuity, Tashanans must
be admired. In coastal and lake areas, the diet consists
primarily of fish, waterfowl, and sea mammals, with some
varieties of harvested seaweed. Inland, meat is provided
by the vast herds of caribou, supplemented by fox, bear,
and the occasional mammoth in the far north. Many
tribes also harvest various types of lichen and algae that
cling to the glacial rocks of the plains. Tashanans are
renowned for finding utility in every possible part of the
kill—examples are foxsnout soup and the infamous [[Chuniigi]] blubbercake. Some larger southern tribes employ a
limited system of agriculture for winter grains.
!!! Fashion
Materials and clothing among the Tashanans are almost
entirely animal-based. Men and women both are likely
to wear trousers and parkas of polar bear hide, with great
fur-lined hoods. Boots are made of caribou or seal skin.
Dressing in layers is the rule, since the weather of the
Tundra is famously unpredictable. The hareskin socks
and gloves of the Tashana are greatly prized for their
warmth and comfort. Clothing is typically stitched with
narwhal or caribou sinew.
Some [[magic item]]s bear curses that bedevil their users, sometimes long after a user has stopped using an item. Most methods of identifying items fail to reveal such a curse, although lore might hint at it. Attunement to a cursed item can't be ended voluntarily unless the curse is broken first, such as with the [[remove curse]] spell.
<<list-links-article "[tag{!!title}sort[title]]">>
''Capital:'' [[Metrol]] (destroyed) <br/>
''Previous Hallmarks:'' Art, artifice, jewelry, music, oratory, philosophy <br/>
''Current Hallmarks:'' Destruction, ruins
Destroyed at the end of the [[Last War]], Cyre now exists
only in the hearts of the refugees scattered across
Khorvaire.
Before the war, Cyre was the seat of the kings and
queens of [[Galifar]]. The wealth of the kingdom flowed
through Cyre, and it was a nexus for commerce and
culture. By tradition, Cyre's Princess [[Mishann ir'Wynarn]] had the
rightful claim to the throne of Galifar. Cyrans take pride
that they alone were in the right in the [[Last War]], but
they unquestionably lost more to the war than any other
nation. As a Cyran, you stand on the moral high ground,
but that may offer little comfort.
Cyrans like to say that [[their culture|Culture of Cyre]] represented the
best that Galifar had to offer, which is to say a little bit of
everything. Cyrans value diversity and versatility, both
in talents and thought. Cyre couldn't match [[Karrnath]] in
martial discipline or [[Aundair]] in the arcane arts, but the
flexibility of its forces reflected the nation's ideals.
Although the [[Sovereign Host]] was the dominant faith
of Cyre, the [[Silver Flame]] had a significant following.
Many survivors question their faith in the wake of the
[[Mourning]], but some believe that their anguish at the
loss of their homeland is a divine trial, prompting them
to cling to their faith more than ever.
Queen [[Dannel ir'Wynarn]] was in [[Metrol]] on the Day
of Mourning and is presumed dead. Her son, Prince
[[Oargev ir'Wynarn]], holds court in [[New Cyre]], a massive
refugee camp set up in [[Breland]]. Some refugees support
Oargev and the dream of a restored Cyre, while others
prefer to focus on the future instead of trying to reclaim
the past. As a Cyran, you should decide whether you
hold tight to your national identity, or instead consider
yourself to be an expatriate without a nation.
!! Interesting Things About Cyre (the Mournland)
* Cyre was the ancestral seat of the [[dragonmarked|dragonmarked house]] House [[Cannith]], the house of [[Making]]. The house maintained arcane workshops across Cyre. Who knows what treasures wait in Cannith vaults for those who brave the dangers of the Mournland?
* While not as flamboyant as [[Aundair]]ians, Cyran fashions involved bright colors and [[glamerweave]]. Some Cyrans have made a point of continuing this custom. Others wear clothing cut in the Cyran style, but entirely in black; this has become known as Mourning wear.
* Stories say communities of [[warforged]] live in the [[Mournland]], including the insurgent called the [[Lord of Blades]].
!! Cyran Characters
When creating a character from Cyre, consider the following questions:
* ''What Have You Lost?'' Did you lose wealth or status? Did you have family or loved ones killed in the Mourning? Did you lose something you could one day recover from the [[Mournland]]—arcane research, an heirloom artifact, or a precious family relic? Consider the impact the disaster has on your background. As a Cyran noble or soldier, your estates have been lost and your army scattered, but you still have the respect of your comrades or peers.
* ''What Do You Hold Onto?'' Do you have a trinket that embodies Cyre for you? Is your wand or weapon an heirloom of your family? As an entertainer or guild artisan, do you preserve a particular Cyran tradition?
* ''What Drives You?'' Are you determined to solve the mystery of the [[Mourning]]? Do you want to help other refugees, or are you concerned only with your personal survival? Is there something you want to recover from the [[Mournland]], or would you prefer to never set foot in Cyre again? Do you hold a grudge against the nations that fought against Cyre in the war, or are you solely concerned with the future?
!! Before the Last War
[[Galifar ir'Wynarn]] was a military genius, but it was his eldest
daughter [[Cyre|Cyre ir'Wynarn]], twin to [[Aundair|Aundair ir'Wynarn]], who imagined the warring nations working together as a single family: [[Karrnath]]i might,
[[Daskari|Daskara]] faith, and the wisdom of [[Thaliost]] working together for
the greater good. In crafting the map of the united kingdom,
Galifar declared that Cyre would be the heart of the realm.
His daughter would govern the province and have all that she
needed to pursue her vision. The crest of Cyre is a crown and
bell on a green field above a hammer and bellows—the seat of
the crown, the bell that rings in change, and the tools to build
the future. Cyre’s motto captures the heart of this nation and
its people: “What our dreams imagine, our hands create.”
The provinces of Galifar largely retained the cultures
and traditions of the nations they had once been. In many
ways, their differences were reinforced and celebrated. Each
nation was given one of the pillars of the united kingdom: the
[[Arcane Congress]] in [[Aundair]], the [[King's Citadel]] in [[Breland]],
[[Rekkenmark Academy]] in [[Karrnath]], the [[Grand Cathedral|Cathedral of the Silver Flame]] of [[Thrane]]. Cyre was the exception. Rather than building on the
existing culture of [[Metrol]], Cyre drew experts and artisans
from across [[Galifar]]. Instead of being the center of any one
discipline, Cyre was the nexus where all of these things came
together—the best of what Galifar could be. When the [[Arcane Congress]] perfected the [[everbright lantern]], [[Metrol]] was the first city whose streets were lit with them. Soldiers trained in [[Rekkenmark]], but the finest warriors served in the [[Vermishard|Vermishards]] Guard. While Metrol was the showpiece—a city of wonders—this principle was applied across central Cyre. With education,
art, even agriculture, Cyre displayed the best of what [[Galifar]]
could accomplish.
This continued and evolved over centuries. [[Karrns|Karrnath]] are
tough, [[Thrane]]s wise, [[Breland]]ers industrious, [[Aundair]]ians
clever. The people of Cyre can trace their roots to all of these
nations, believing they share these strengths; and beyond
that, Cyrans strive to be creative, innovative, and artistic.
Cyre’s artistic (and, some might say, whimsical) temperament was balanced and sustained by the presence of House [[Cannith]], based in the great city of [[Making]]. Many of Cannith’s greatest forgeholds were spread across Cyre,
providing a practical industrial foundation that supported
the wonders of Cyre. And those wonders took many forms.
Where the [[Arcane Congress]] of [[Aundair]] focused on the
practical applications of magic, the [[Wynarn Institute|Wynarn Institute of Art]] of Cyre
explored the artistic potential of the arcane. [[Metrol]] was a
city of light and marvels. Visitors could speak to [[illusion]]s
of past heroes and kings or watch reenactments of historic
moments. It’s said that no one ever went hungry in Metrol
nor felt the bite of winter. Cyrans say that this reflects the
generosity and selflessness of the Cyran spirit; critics point
out that these social projects were only possible because of
the taxes paid by the people of other provinces. Certainly,
Cyre held the wealth of [[Galifar]] and had a standard of living
higher than any other province. Was this decadence? Or was
it a work in progress, a model that could have someday been
applied to all nations? There’s no way to know. Cyrans mourn
what was lost; the people of other nations criticize the Cyran
lifestyle as parasitic. “What our dreams imagine, our hands
create,” but bitter outsiders point out that while Cyran hands
may have built, they used resources gathered by the hard
work of others.
This bitterness was further fueled by [[Galifar]]’s traditions of
succession. Following the example of [[Galifar I|Galifar ir'Wynarn]], the monarch’s
children served as governors of the five provinces. The eldest
governed Cyre, and on the death of the monarch, they would
take up the crown and their children would take over the
governing positions of each province. The prior governors
would serve as regents until children were of age, and after
that, as advisors. When a monarch lacked five children,
the previous governors would maintain the posts. But the
principle was simple: Cyre was the heart of Galifar, and all
else would shift around it.
See also [[Culture of Cyre]].
!!! Outer Cyre
[[Galifar|Galifar ir'Wynarn]]’s goal with Cyre was to create something new, a
culture combining the best aspects of the other nations. In
the newly forged [[Thrane]], [[Aundair]], and [[Breland]], the people
kept their old traditions, and ruling families were often
incorporated into the new governing structure; similarly,
Galifar preserved the customs of his homeland of [[Karrnath]].
But in the old kingdom of [[Metrol]]—which covered an area
roughly the size and shape of the modern [[Mournland]]—the
old systems and rulers were pushed aside to make room
for Cyre’s dream. Some of the noble families of Metrol
embraced this new path. Others were resettled by Galifar,
granted authority over regions that had previously existed
as independent frontiers.
//''Southern Cyre''// covered what is now [[Darguun]]. Largely
unsettled when [[Galifar]] was founded, it persisted as a
backwater in the shadow of the kingdom. Its people ultimately
prospered and took pride in their identity as Cyrans, mimicking
the customs of the central kingdom. However, they had little
of the wealth invested in the north or the wonders that came
with it. There were ongoing clashes with [[goblin]]s, a few severe,
but the [[Ghaal'dar]] [[goblinoid]] clans largely remained in the
mountains and dark places until the [[Last War]].
//''Eastern Cyre''//—now [[Valenar]]—was effectively a separate
nation with a dramatically different culture and values. It was
arguably Galifar’s greatest failing. The region had first been
settled by immigrants from the [[Khunan]] region of western
[[Sarlona]]. [[Galifar I|Galifar ir'Wynarn]] wanted the lands of old [[Metrol]], so he instead
gave its nobles authority over Eastern Cyre, setting them as
the feudal overlords of the [[Khunan]] settlers. The [[Blade Desert]]
served as a physical and cultural divide, and after granting the
nobles their lands, Galifar largely ignored them. The noble
families thus held to the old traditions of Metrol rather than
embracing the new culture of Cyre. Many were petty and proud,
dissatisfied with the arrangement, and cruelly took it out on
their Khunan subjects. Some wonder why it was so simple
for the elves to seize control of [[Valenar]]; first and foremost, it’s
because the Khunan people had no love for their Cyran rulers
(generally called “thrones”), and many feel they are actually
better off under the new regime.
!! During the Last War
Under the reign of King [[Jarot|Jarot ir'Wynarn]], Cyre continued to shine.
Aspiring artists and young nobles made their way to the
heart of the kingdom, while the most promising artificers
settled in the city of [[Making]]. King Jarot lavished attention on
Cyre—expanding the [[Vermishard|Vermishards]] Palace, working with House
[[Orien]] to expand the [[lightning rail]] within Cyre, and spending
hundreds of thousands of galifars on the [[Wynarn Institute of Art]] and the [[Cathedral of the Sovereign Host|Cathedral on the Hill]].
Following the death of Jarot, the kingdom of [[Galifar]] spiraled
toward war. Initially, Cyran morale was high. Queen [[Mishann|Mishann ir'Wynarn]]
had centuries of tradition behind her. Everyone knew that
Cyre had the best of everything: the finest [[wizard]]s, the best
soldiers, the foremost [[artificer]]s. And on one level, this was
true, but a single unit of exceptional soldiers means little when
set against the martial cultures of [[Karrnath]] or [[Thrane]]. Cyre’s
finest wizards were artists and theoretical scholars, whereas
[[Aundair]] had long worked on magic as a tool of war. And the
expert artificers were largely tied to House [[Cannith]], which
remained neutral in the war.
Cyre adapted; it had to. Initially, it relied heavily on
mercenaries, as it was the seat of [[Galifar]]’s treasury and had the
gold to spare. But as time passed and the scope of the conflict
became clear, Cyrans devoted themselves to war. They were
sustained by the absolute belief that they were in the right.
Beyond that, in the eyes of the people, Cyre //was// Galifar. It
embodied the ideals of the kingdom, the best of what it could
be—and that was something worth fighting for. Nonetheless,
the struggle dealt a tremendous blow to the Cyran psyche. For
centuries, Cyrans had seen themselves as the stars of the show,
beloved by all; now all hands were raised against them, and
some, at least, could see their former beliefs as arrogance and
narcissism. Cyre had indeed had the best of everything, but
because it was freely given. Now the [[Arcane Congress]] devoted
its knowledge purely to the good of [[Aundair]], [[Rekkenmark|Rekkenmark Academy]]
trained only [[Karrn|Karrnath]]s, and the [[King's Citadel]] served [[Breland]].
Yes, Cyre had echoes of all these things. Its [[wizard]]s were still
a match for any nation other than [[Aundair]], and the [[Vermishard|Vermishards]]
Guard formed the core of Cyre’s new military academy. But it
was clear that the Cyran dream had been sustained by many
hands, and now the nation had to learn to stand on its own.
!! Aftermath of the Last War
No nation won the [[Last War]], but Cyre unquestionably
lost it. Other nations are recovering from the conflict, but Cyre is gone. The lands not destroyed in the [[Mourning]] were lost decades earlier to [[Darguun]] and [[Valenar]].
Cyrans who survived the war must now carve out a new
destiny in the lands of their enemies or in foreign nations beyond what was once the Kingdom of [[Galifar]].
In creating a Cyran character, first determine how you
survived the Mourning. Were you outside Cyre when it
occurred, or did you somehow escape the destruction?
Where did you take shelter? [[Breland]] has taken in refugees and created refugee camps. [[Thrane]] also accepted refugees but has worked to disperse and integrate them
into the general population. Are you grateful or bitter?
Do you have family or friends in refugee camps, or are
you a lone survivor? Other Cyrans sought opportunities
on the frontiers, settling in the jungles of [[Q'barra]] or
seeking a new life in the distant land of [[Xen'drik]].
Many Cyran survivors are soldiers, veterans stationed
on the front lines when the Mourning occurred. If multiple members of your party are Cyrans, you might have
served together during the Last War. Because Cyrans
are so widely dispersed, you can encounter former comrades or friends anywhere in [[Khorvaire]].
Since Cyrans lost their lands, the distinctions between peasant and aristocrat have become moot. Even with a criminal background, you might have been a viscount in Cyre; your background reflects your current standing and the resources you can call upon in
the present.
While [[Cyre]] now exists only as an idea, having been destroyed in the [[Mourning]], a few years ago it was a powerful nation, and Cyran embassies still
exist in the great courts of [[Khorvaire]]. Some nations
have expelled the Cyran ambassadors—what use is an ambassador without a country? However, [[Breland]] has taken in a large number of Cyran refugees, and
has even allowed the creation of the city of [[New Cyre]]
on its northwestern border. As a result, [[Sharn]] has
allowed the embassy of Cyre to remain open.
The primary function of the Cyran embassy is
to coordinate refugee activities and provide a point
of contact for [[New Cyre]]. The few surviving Cyran
nobles realize the precariousness of their situation.
They have lost the wealth and resources of their
nation, along with the bulk of their military power.
New Cyre only exists because of the generosity of
King [[Boranel|Boranel ir'Wynarn]]—and if the Cyrans have nothing to
offer or are perceived as a threat, that generosity
could eventually fade. The embassy staff spends
much of its time among the refugees in [[Lower Tavick's Landing]], recording the identities and skills of Cyran refugees and trying to find positions for
them within the city.
Refugees and people with strong family ties to
[[Cyre]] are placed under a lot of pressure to help restore
the old kingdom, or at least to help it continue to
exist as a ghost. Refugees are expected to donate up to 20%
of their income to the embassy toward the recreation
of Cyre. This includes adventurers, although the
ambassador has no way to measure the income of
an adventurer or real power to punish them, save by
laying shame on their family. Cyran adventurers are
frequently asked to perform services on behalf of
New Cyre. This typically involves recovering treasures from the [[Mournland]], searching for clues about the origin of the Day of [[Mourning]], or assisting other
powerful people with whom the Cyrans are trying
to curry favor.
However, there are those among the surviving
nobles who feel that their proud nation should not
exist as a memory or as a gift from [[Breland]]. They plan
to seize new land, whether from Breland, [[Darguun]],
[[Valenar]] or some other nation entirely. This would
require powerful magic artifacts—perhaps ancient
weapons hidden in [[Xen'drik]]—or dangerous dealings
with the [[Lords of Dust]], the [[Inspired]], or the Order of
the [[Emerald Claw]]. A Cyran character may be drawn
into these plots knowingly or unwittingly—and they
must decide just how much they are willing to risk for
their country.
The Cyran ambassador to Sharn is Lord ''Jairan ir’Dain'' (human). Jairan still plays the role of the proud noble, attending social functions in his fine clothes, but he lost his fortune on the Day of [[Mourning]] and his [[glamerweave]] doublets are becoming increasingly threadbare. Jairan is an optimist, and he believes that somehow if he keeps doing his job [[Cyre]] will be restored—that [[New Cyre]] can peacefully grow, and perhaps reclaim
the blasted [[Mournland]].
The Cyran spymaster ''Tyrala'' (human) is Jairan’s mirror image. She is obsessed with the survival of Cyre and will use any means necessary to achieve that goal, however questionable they may be. Jairan may ask a Cyran character to perform an altruistic deed; Tyrala’s requests are often morally ambiguous, though they may have
more concrete results. Tyrala firmly believes that
one of the other nations was behind the destruction
of Cyre, and she is determined to find out who did it
and how, and to take a bitter vengeance. She uses this
as a lever against a Cyran character—doesn’t he want
revenge for the hundreds of thousands of his people
who were killed? Doesn’t he want to prevent this
from ever happening again? The embassy can draw
on the discretionary funds held in the [[Kundarak Bank|Kundarak Bank of Sharn]], but it has little to offer—its primary currency
is loyalty to the lost nation.
There are a few other notable Cyran NPCs scattered throughout the city.
* ''Doras'' is a village reeve who was visiting a cousin in [[Smoky Towers]] on the Day of Mourning. Today he remains in Smoky Towers as an insurgent, urging people with Cyran blood to come to the aid of their ancestral homeland. The [[Guardians of the Gate]] and the [[Citadel|King's Citadel]] both keep a close watch on Doras, but he has yet to be arrested.
* ''Cala Narain'' was a captain in the Queen’s Forward Blades, a scouting unit. Currently, she is the highest-ranking Cyran military officer in Sharn, and she has been trying to organize the scattered soldiers among the many refugees.
* ''Holt'' is a [[warforged]] bodyguard who usually travels with Lord ir’Dain or Tyrala when they leave the embassy.
Cyre ir'Wynarn was the youngest child of King [[Galifar I|Galifar ir'Wynarn]]. When the Kingdom of [[Galifar]] was formed, the king granted Cyre the role of governor-princess over the domain of [[Metrol]], the area later known as [[Cyre]] (and today known as the [[Mournland]]). By the time the king abdicated in 40 YK, she was his only surviving scion, and became the second ruler of [[Galifar]]. She was succeeded by her son, Galifar II, known as [[Galifar the Dark]].
The Cyre River in [[Khorvaire]] flows from [[Lake Cyre]] into [[Scions Sound]]. It forms part of the border between the [[Mournland]] and [[Karrnath]]/[[Talenta Plains]].
There's a rhythm to Daanvi, a subtle metronome keeping perfect time.
If you act without thinking, you unconsciously move to the beat. The streets may be crowded, but everyone walks at the same pace, every foot striking the ground at the same moment. It takes a conscious effort to break this rhythm, change the pattern, stand out from the crowd. Your instincts push you to fall in line, match the pattern, be part of the great machine.
This is Daanvi, the Perfect Order. It represents the triumph
of law over lawlessness, of discipline over chaos. From the
perfectly structured insect hives to the [[inevitable]] tribunals that
judge every mortal action, this is a triumph of order. On the one
hand, Daanvi shows how structure and discipline can create
enduring systems, and how laws are the backbone of prosperous
civilization. On the other hand, it can crush individuality and
innovation. It shows that laws can serve justice, but they can
also pose an endless series of obstacles, or even be the tools
of tyrants. Daanvi encompasses all of these paths. It shows the
benefits of law and order—and the risks of taking them too far.
!! Universal Properties
The impulse toward order affects all creatures in Daanvi. It's
impossible to knowingly lie while in Daanvi, and the effects
of random chance are reduced. In Daanvi, all things are
inherently reliable—remarkable fortune and bad luck are
equally rare.
* ''//Plane of Truth//''. A creature can't tell a deliberate lie. It can avoid answering questions, or be evasive in its answers, as long as it remains within the boundaries of the truth.
* //''Impeded Illusion.''// Magical [[illusion]]s are attenuated. The duration of illusion spells is halved.
* //''The Eyes of the Law.''// The range and duration of [[divination]] spells are doubled.
* //''No Chance.''// Randomness is diminished. Unlikely events become nearly impossible. Likely events become nearly certain. Once per scene, you can forgo rolling dice on an action and get a low-[[impact]] [[partial success]].
* //''Flowing Time. ''//For every 10 minutes that pass in Daanvi, only 1 minute passes in the Material Plane. So if a creature spends 10 days arguing a case before a Daanvian court, less than a day has passed on Eberron.
!! Denizens
All denizens of Daanvi either embody the concept of law and
order or exist to be bound by it. Most [[modron]]s, [[angel]]s, and
[[devil]]s perform administrative tasks as they serve as cogs in the
grand machinery of their plane. Nearly all of Daanvi's inhabitants
follow an unvarying daily cycle, each denizen limited by its jurisdiction. Some authorities can move freely and enforce laws in multiple layers. But a [[deva]] can't take action in the [[Iron Ward]], even if it feels that an adventurer is suffering injustice, because that ward is under the jurisdiction of the local devils.
The appearance of angels and devils of Daanvi is similar to [[modron]]s and [[inevitable]]s. They might have metallic skin or wings, or even look like living [[construct]]s. These immortals are creatures of absolute law and can't be
compelled to break it or act against their nature or instructions.
Daanvi doesn't have a significant population of mortals, though
there are other [[immortal]]s in Daanvi beyond those explored
by this section, each one representing a facet of the plane; for
example, ant-like formians inhabit numerous layers of their own.
!!! Modrons and Inevitables
[[Modron|modron]]s, Daanvi's most common inhabitants, are embodiments
of pure law, with no bias toward justice or oppression. They do
their assigned tasks and obey every law; nothing more, nothing
less. Monodrones can be found in many layers performing the
most basic tasks. More sophisticated modrons perform endless
administrative tasks and enforce basic laws.
Many modrons and [[inevitable]]s serve specific
tasks within the plane. In particular, an entity known as the
Kolyarut resides beneath the [[Hall of Justice]], with absolute
authority over enforcing the law. The Kolyarut acts through a
legion of host bodies, one of which serves on every [[inevitable]]
tribunal; these beings are also called Kolyarut, though they're
only representatives of the greater force.
!!! Angels
The [[angel]]s of Daanvi represent law in the service of justice and
the greater good. These immortals enforce the laws, but also
do their best to act fairly and to see that justice is done. While
angels have duties to attend to and rarely have time to simply
chat with random mortals, they're typically kind and helpful
when they do have time. They believe with all their being that
law and civilization are the most vital virtues of all, and that the
law can't be set aside for any reason.
[[Deva|deva]]s and other angels of similar power are local authorities.
They can be found as ministers, magistrates, and sages. A deva
may be appointed to serve as a counselor for mortals called
before an [[inevitable]] tribunal. The devas at the [[Infinite Archive]]
serve as sages; [[modron]]s file and record, but the devas study the
data and reflect on it. Meanwhile, powerful [[planetar]]s serve as
high ministers and guardians of important gates and sites.
[[Solar|solar]]s dwell in the [[Panopticon]]. There are thirteen solars,
each assigned to monitor and administer justice within one
of [[Eberron]]'s [[plane]]s (though no solar holds dominion over the
Material Plane). However, there are a host of restrictions on
how and when they may act. Typically, a solar must be invoked
by a legitimate authority within the plane in question—so while
[[Hazariel]], the Solar of [[Syrania]], is usually called in to cast down
radiant idols, [[Azazar]], the Solar of [[Xoriat]], has never yet been
called on by that plane. Until called, they watch; while in the Panopticon, solars can observe anything that occurs in the plane of their dominion. Shortly before the shift of the Dream of the Age that produced [[il-Lashtavar]], [[Tyrala]], the Solar of [[Dal Quor]], went to investigate the actions that resulted in Dal Quor being
thrown off its planar axis; she hasn't been seen since.
!!! Devils
The [[devil]]s of Daanvi represent law in the service of tyranny
and personal gain. In essence, they depict the danger of laws
and how order can become an oppressive force. While the
[[angel]]s and devils of Daanvi despise one another, the strict laws
determining jurisdiction mean that they rarely come into contact
and almost never engage in combat—though it's common for
a devil and an angel to be found in opposite positions arguing
a case before an inevitable tribunal in the [[Hall of Justice]].
Most often, devils are found in layers such as the [[Iron Ward]], where they're cruel enforcers and tyrants. They can be encountered as guardians and sentinels, though they're invariably too harsh when it comes to performing their duties.
Other devils seek to exploit loopholes and use the law to their
advantage, extorting adventurers or otherwise using the law as
a weapon. [[Orthon|orthon]]s and [[erinyes]] apprehend lawbreakers, while [[pit fiend]]s serve as executioners in the [[Hall of Justice]].
!!! Subjects
Every tyrant needs people to oppress, while every utopian
society needs people to enjoy its just laws. The countless
[[manifestation]]s of Daanvi, called subjects, serve this purpose.
They're humanoid, but their shape is indistinct. They provide
the //impression// of a person—someone completely normal and
unremarkable, often of the same species as the viewer—but no
matter how hard anyone tries, it's impossible to actually focus
on them. Conversations with subjects are surface-level at best,
with no distinct personality or goals. Subjects pose no threat
in combat, and are dispersed if they suffer any damage, only
to reform within a few minutes.
!! Layers
Daanvi is home to hundreds of [[layer]]s, and each is a metaphor
for a particular aspect of order or civilization. Time is consistent
across all layers, though in some, denizens work at all hours,
while in others, there are strict regulations about what times
certain activities are allowed. Daanvi has its own calendar, but
denizens can easily translate it to the [[standard calendar|Khorvaire calendar]] of
Galifar (or any other system) when dealing with visiting mortals.
Traveling to Daanvi using [[plane shift]] or similar abilities takes
you to the [[Prime Gate]]. The portals between layers are clearly
labeled and easily found, with angelic guides happy to provide
assistance. Lesser portals are guarded by [[modron]]s, while
major portals may be maintained by a [[horned devil]] or [[planetar]].
Travel passes can be obtained at the Prime Gate, though
violating local ordinances can result in a revoked travel pass.
While some rules—such as the system of gateways and travel
passes—are universal, every layer has its own distinct laws.
Often these are typical—no theft, no assault except in selfdefense. However, layers may have unusual ordinances—no
spellcasting [[illusion]] magic after noon. The scope of laws,
punishment, and enforcement vary considerably based on the
oppressiveness of the layer; is it generally just (administered by
[[angel]]s), even-handed ([[modron]]s), or oppressive ([[devil]]s)? In
gentler layers, lawbreakers receive an instructive warning from
an angel; those in harsher layers aren't so lucky. In some cases,
guardians administer an immediate punishment, as discussed below
in the “Daanvian Judgment” section. More serious offenders
may be taken to the [[Hall of Justice]] to face an [[inevitable]] tribunal.
Some of Daanvi's most noteworthy layers are described
below; other layers each express some form of order of
civilization, though most are of little interest to adventurers.
There are examples of utopian governance, mob justice, and
countless other examples of law at work. The Perfect Grange
is a vast, precisely maintained farm, displaying the virtues of
agricultural discipline. Hive 43 is a formian settlement where
immortal ant-like spirits care for their queen; if that doesn't
strike your fancy, maybe one of the other 42 hives will!
<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>
!! Daanvian Judgment
What happens when characters break the laws of Daanvi? In
theory, there's an incredibly complex Code of Justice that the
Kolyarut uses to determine the ideal punishment. In practice,
the punishment should fit the crime, but it depends on the
district where the judgment takes place. An [[angel]] upholds the
law but seeks to ensure that the punishment truly is fair; a [[devil]]
may use the threat of a disproportionate punishment (entirely
legitimate by the Code of Justice, of course) to drive extortion.
Physical punishments are possible, from beating to
maiming (such as the loss of an eye or tongue) to execution.
Such punishments are most common in oppressive layers.
Imprisonment is rare, but possible, either in a local cell or the
[[Inescapable Prison]]. Because of the flowing time of Daanvi, a
hundred years in a Daanvi cell is only ten years on Eberron.
Fines are common, not because Daanvi needs revenue,
but because it's easily adjusted to the individual. Fines like
gold or property can be taken immediately, or future earnings
might be garnished; perhaps half of all gold the character
acquires immediately vanishes until the fine has been paid.
Another common punishment is the //judgment tattoo//, a
complex marking placed across the victim's face that can't
be removed by any power short of a [[wish]] spell. Any creature
that speaks a language can magically understand its meaning,
conveyed in a simple concept like MURDERER or THIEF.
Other magical punishments could be imposed. The offender
could experience the effects of [[bestow curse]] for a year or a
lifetime. A liar could be unable to tell a lie for a year (though
they can be evasive in their answers). A convict could be
stripped of a particular talent, taking disadvantage on a specific
skill check during their the sentence. They could be stripped of
fame, and no one will give the victim credit for positive actions,
though they can still receive blame for misdeeds. There are
few limits on what an inevitable tribunal can do, and undoing
such a judgment requires the power of a [[wish]].
!! Planar Manifestations
Here are a few ways Daanvi can affect the Material Plane.
!!! Manifest Zones
[[Manifest zones|manifest zone]] tied to Daanvi—which are relatively uncommon—often share one or more of the plane's universal properties.
Zones with the //Plane of Truth// property are often used as
makeshift courtrooms by local communities, and a number of
the largest courthouses in the [[Five Nations]] are built in such zones. Intelligence agencies are always searching for zones
with the //Eyes of the Law// property. Other zones simply reflect
the unnatural order of the plane—crops innately grow in perfect
rows, or residents find they are more naturally inclined to follow
orders. Unsubstantiated legends tell of [[modron]]s appearing in
manifest zones, attempting to “repair” any local buildings and
redesigning them to match the architecture of the Perfect Order.
!!! Coterminous and Remote
Daanvi has coterminous and remote periods, but unlike those
of other planes, these have no obvious effects. Some sages
believe it may impact the performance of certain rituals or the
creation of [[eldritch machine]]s, and others try to link the rise of
major civilizations to coterminous periods, but any supporting
examples could be entirely coincidental. Daanvi is noteworthy
for its exceptionally long cycle. Traditionally, when Daanvi
becomes coterminous, it remains so for an entire century; one
hundred years after that, it becomes remote for a century.
!!! Daanvian Artifacts
Daanvi does two things remarkably well: watch people and
punish them. Adventurers could come into possession of an
exceptional [[crystal ball]] that's been stolen from the [[Panopticon]],
or a set of [[dimensional shackles]] lost by an [[orthon]] bounty
hunter. Another way that people on the Material Plane can
interact with Daanvi is through an //unbreakable contract//. In
the [[Hall of Justice]], any two creatures can negotiate a contract
before a Kolyarut. The terms are inscribed on an enchanted
sheet of gold (worth 500 crowns) and bound to an [[inevitable]], which
acts to enforce the contract. On [[Eberron]], a powerful conjurer
could use [[planar ally]] or a similar spell to summon a Kolyarut to
set a contract (though they must provide the gold).
!! Daanvian Stories
Daanvi rarely intervenes in daily life, and people don't often
think of it due to its lack of dramatic coterminous and remote
cycles. Except for those who live near manifest zones, it
doesn't intrude on people's lives. The main way Daanvi impacts
adventures is if the party needs to get something from the plane
itself—they might need knowledge contained in the [[Infinite Archive]], or to know something that can only be seen from the
[[Panopticon]]. However, they'll have to have a solid case to get
past the [[Prime Gate]]... or be prepared to bribe a [[devil]].
//''The Wynarn Report.''// After an ambush gone wrong, the
adventurers find themselves in possession of a file stolen from
the [[Infinite Archive]]—an indestructible journal containing deep
and dangerous knowledge about someone very important. A
king? The baron of a [[dragonmarked house]]? This could be
ruinous if it falls into the wrong hands, and it's possible that the
Archive will send someone—or something—to recover it. Since
it can't be destroyed, what will they do with it?
//''The Trial.''// After an adventuring mishap on another plane—perhaps in the [[Immeasurable Market]], as [[Syrania]] is most likely to
invoke Daanvi's justice—the adventurers are collected by a [[solar]]
and must account for their actions before an [[inevitable]] tribunal.
//''The Convict.''// A longtime ally of the adventurers always
wears a mask. During a battle, the mask is knocked aside,
revealing a //judgment tattoo// that signifies LIAR. Is there a
reasonable explanation for this?
//''The Contract.''// The adventurers are negotiating a contract
they don't intend to uphold, but the other party has a surprise;
using a scroll of [[planar ally]], a Kolyarut [[inevitable]] is called to
establish an unbreakable contract. Can the adventurers find a
way around this? Will they accept the contract's terms, or face
the wrath of the inevitable and judgment in Daanvi?
Formed by monstrous immigrants from [[Droaam]], Daask
has been building its power in the [[Khyber's Gate]] and
[[Malleon's Gate]] districts of [[Sharn]] for the last decade. It
is most infamous for its monstrous enforcers, but the organization also draws members from the destitute populace of Sharn—largely [[goblin]]s and [[shifter]]s, but also [[human]]s, [[dwarves|dwarf]], and any other [[humanoid]] who feels that
the current system has failed them. Daask makes its
money through acts of violence, from mugging to armed
robbery to outright pillaging. The group has diversified
in recent years, building an extortion racket—threatening violence if tribute isn't paid—and entering into the drug trade, selling both [[dreamlily]] and a mysterious substance called [[dragon's blood]].
From the outside, Daask appears to be interested
solely in fomenting violence and chaos. The monstrous
nature of its members reinforces this impression; most
people consider the members of Daask to be savage
beasts. The truth is more complicated. The [[Droaam]]ites
who make up the core of Daask aren't merely criminals;
they are elite soldiers of Droaam working for [[Sora Katra]], and part of an operation that is taking root in larger cities across [[Khorvaire]]. The seemingly random attacks
by Daask are part of a larger plan that, if it succeeds,
will eventually give Sora Katra a foothold in the heart of
Khorvaire.
Over the last two years, the Daask cell in [[Sharn]]
has been waging a slowly escalating war against the
holdings of the [[Boromar Clan]]. The Boromars were surprised by the violence of these attacks and have suffered significant losses. Daask prefers guerrilla tactics, using
only as many combatants as necessary to get a job done,
never staying in one place too long, and quickly retreating back to their turf. Though the Boromars still control much of criminal activity in the middle and upper parts
of Sharn, Daask is gaining ground in the [[lower level|lower ward]] of
the city and controls crime in the [[Cogs]].
!! Daask Operations
Violence and intimidation are Daask's most used tools. Rather than using bribery, Daask manipulates the [[Sharn Watch]] through displays of force and brutal reprisals against officers who dare to stand in the way. Coupled with the fact that Daask primarily targets businesses with ties to the [[Boromars|Boromar Clan]], this means that many of the Watch officers of the [[lower ward]]s will step aside and allow a Daask raid to run its course.
As Daask has seized territory from the [[Boromar Clan]], it has also begun taking over a few of the clan's traditional businesses. In addition to [[dreamlily]], Daask sells a
highly addictive drug called [[dragon's blood]]. Daask has another, perhaps surprising area of operation: religion. The organization has brought priests of
the [[Dark Six]] to [[Sharn]] and has restored a ruined [[temple|Temple of the Six]]
to the Dark Six in [[Khyber's Gate]]. Followers of the Dark Six have few other opportunities to practice their faith, and providing this new facility for them has made many allies for Daask across the city.
!! Daask NPCs
Daask's lower ranks are made up of [[goblinoid]]s, [[human]]s,
[[shifter]]s, and other [[humanoid]]s recruited from the population of [[Sharn]]. The [[Droaam]]ish soldiers that make up the core of the organization include [[changeling]]s,
[[gnoll]]s, [[harpies|harpy]], [[ogre]]s, [[minotaur]]s, [[medusa]]s, [[troll]]s, and
other monstrous beings. [[Basilisk|basilisk]]s, [[cockatrice]]s, [[death dog]]s, [[displacer beast]]s, and similar monsters are kept by Daask, though these creatures are usually used only within the [[Cogs]].
Some of Daask's most important members are these
individuals:
* [[Sora Katra]] is the ultimate leader of Daask, but as one of the [[Daughters of Sora Kell]], she remains in [[Droaam]]. The hag stays in contact with all of her main subordinates by magic and keeps a detailed ledger of the group's activities.
* [[Cavallah]]
* [[Harash]]
* [[Ash]]
* [[Keshta]]
* [[Zaeran]]
!!! Daask Contacts
| !<<dr d6>> |!Contact |
| 1 |[[Whyhyr]] ([[gnoll]]), a talented tracker, loves a good hunt and finding people who don't want to be found. |
| 2 |[[Ralscar Shal]] ([[goblin]]) is a fence and information broker, who is happy to be paid in gold or secrets. |
| 3 |[[Kar Bloodhorn]] ([[minotaur]]) is an enforcer who leads raiding parties in [[Callestan]]. Kai is rough and loud but well liked in the organization. |
| 4 |[[Snopli]] ([[kobold]]) is a [[sorcerer]] with talent in fire magic, who specializes in arson and assault. |
| 5 |[[Cask]] ([[changeling]]), an [[artificer]] and [[alchemist]], supplies Daask with drugs and explosives and likes devising new concoctions and finding people to test them on. |
| 6 |[[Teller]] ([[human]]) is one of the few humans with a position of influence in Daask. A grifter, Teller serves as a spy in the [[upper levels|upper ward]] of the city where monsters aren't able to move around freely. |
!! Cog Hubs
Daask members congregate in safe houses that are hard to find and easy to defend or escape from. The most popular gathering location is a Cog hub. The dark, twisting halls of these underworld hot spots are familiar to
Daask members and confusing to their enemies. A Cog
hub's tight passages have plenty of choke points, forcing
one-on-one confrontations in which Daask's powerful
monsters often have the advantage. Daask also uses
Cog hubs to stash bodies, drugs, or prisoners.
Trying to find a Daask hub in the Cogs is an adventure
in itself. Most members are understandably tight-lipped
about the location of their meeting and hiding places.
Once the characters know a hub's location, they still
must navigate the mazelike Cogs to find the place.
The table below offers reasons why your characters might need to visit such a location. In addition, the characters could meet with a Daask patron in a Cog hub.
| !<<dr d10>> |!Cog Hub Adventure Goal |
| 1 |Obtain samples of [[dragon's blood]] hidden in the Cog hub. |
| 2 |Infiltrate a Daask meeting to discover the next [[Boromar Clan]] holding they plan to target. |
| 3 |Capture a Daask [[worg]] and replace it with a worg loyal to the [[Boromar Clan]]. |
| 4 |Sniff out a traitor among Daask lieutenants. |
| 5 |Escape the Cog hub after being captured by Daask forces. |
| 6 |Kick out squatters to get the Cog hub ready to serve as a Daask safe house. |
| 7 |Assault Daask members meeting in the Cog hub to disrupt the organization. |
| 8 |Defend a Daask Cog hub from a [[Boromar Clan]] attack. |
| 9 |Rescue an injured Daask soldier hidden inside a Cog hub that has been taken over by the [[Boromar Clan]]. |
| 10 |Place a lethal trap in a Cog hub, to be triggered the next time Daask forces enter the place. |
!! Daask Villains
If Daask villains want something, they take it, and they destroy anything that gets in their way. Though some members of the organization are brutes, many are more cunning than they appear. Often what seems to be random violence might be motivated by something other than greed and cruelty.
Examples of Daask villains appear on the table below.
| !<<dr d6>> |!Daask Villain |
| 1 |Several harpies travel to the [[upper ward]]s and use their luring songs to make rich people fall to their deaths. The harpies pick the corpses for valuables. |
| 2 |A pack of [[gnoll]]s rampages through the [[lower ward]]s, killing any [[halfling]]s they come across. The gnolls take the halflings' ears as trophies. |
| 3 |A [[shifter]] priest of the [[Devourer]] wants to crash [[Skyway]] by performing a ritual to create a cataclysmic storm. Sacrifices to the Devourer fuels the ritual. |
| 4 |A [[changeling]] agent of Daask seeks to frame the [[Tyrants]] for attacks on the [[Boromar Clan]], driving a wedge between the two organizations. |
| 5 |A [[wererat|lycanthrope]] priest of the [[Mockery]] starts a cult in [[Lower Dura]], teaching its followers the arts of assassination. |
| 6 |A [[gargoyle]] sharpshooter continually finds new vantage points in the upper wards from where it can assassinate targets in the middle and lower wards. |
!! Daask Campaign Themes
On the surface, Daask appear to be nothing more complicated than a gang of violent monsters wreaking havoc in the worst parts of the city. If you want, this can be the only role they play in a campaign: a ready source of sudden violence. Low-level characters might work with the [[Sharn Watch]] or the [[Boromar Clan]] to curtail Daask muggings and raid [[dreamlily]] houses. This crusade against Daask will escalate as the adventurers become more powerful; Daask will unleash ever more powerful monsters, and its forces might start targeting the adventurer's allies and loved ones. Those attacks won't
end until the adventurers delve deep into the [[Cogs]] and
defeat [[Cavallah]] herself.
Another option is to delve deeper into the motives of
Daask, to explore the idea that these monsters aren't as
savage as they appear. The elite members of Daask are spies, soldiers, and saboteurs using their criminal activities as a cover for their true agenda. What is [[Sora Katra]]
really trying to accomplish in [[Sharn]]? This question ties
to how you decide to use the [[Daughters of Sora Kell]] Do the Daughters simply want to ravage their enemies? Or, guided by the oracular visions of [[Sora Teraza]], are they actually working toward some greater good? For instance, Daask agents could break into the vaults and workshops of [[dragonmarked house]]s and discover secret projects forbidden by the [[Treaty of Thronehold]]. They could clash with spies of foreign powers in Sharn, or pursue ancient artifacts in the ruins below the city to keep them out of others' hands.
[[Dreamlily|dreamlily]] is relatively safe; [[dragon's blood]] is not. Its effects are intentionally unpredictable, and you can take this idea wherever you like. Could drinking dragon's blood cause someone to develop a [[dragonmark]]? Could it turn addicts into crazed, draconic creatures? Is Daask simply selling it to make money, or is the drug's introduction part of a grander plan? Neither the [[Boromar Clan]] or the [[dragonmarked house]]s have been able to learn anything important about dragon's blood.
Daask can also serve as a group patron for a party
of adventurers. The table below provides objectives for adventurers
working with the organization.
| !<<dr d6>> |!Daask Assignment |
| 1 |Convince several new businesses in the [[lower ward]]s to pay protection fees to Daask. |
| 2 |Cause as much death and destruction as possible inside a Boromar-owned establishment. |
| 3 |Guard a priest of the [[Dark Six]] as he preaches the word of the [[Mockery]] on the street. |
| 4 |Assassinate a member of the [[Boromar Clan]]. |
| 5 |Convince a [[dragonmarked noble|dragonmarked house]] to offer the house's services to Daask for free. |
| 6 |Mug someone to steal a [[magic item]] in their possession. |
!! Daask Adventure Hooks
The table below presents ideas for
additional adventures themed around Daask.
| !<<dr d4>> |!Adventure Hook |
| 1 |Daask harpies raid a [[Skyway]] mansion and tear the place apart looking for a [[Boromar Clan]] member. |
| 2 |People who take [[dragon's blood]] begin turning to stone, and no one can figure out why. |
| 3 |[[Cavallah]] announces a contest within the organization, promising a valuable [[magic item]] to whichever Daask soldier kills the most members of the [[Boromar Clan]]. |
| 4 |[[Ash]] challenges [[Cavallah]] for control of Daask, creating a schism that erupts into a violent gang war. |
//A thin, gray-haired [[gnome]] looks down from atop a 12-foot tall pillar of densewood. She wears a plain hooded robe, and her wrinkled skin is tanned a deep brown. Her dark eyes sparkle as she watches and smiles.//
Daca is a mysterious gnome who has been sitting atop [[Daca's Watch]] for 120 years, occasionally shouting advice to people who seemed troubled or distressed. She is able to communicate with any creature that speaks a language. She does not appear to need food or water. Most residents believe she has been touched by the goddess [[Boldrei]], though Daca claims not to be a priestess.
She is constantly surrounded by a calming aura, which is a mind-affecting, supernatural compulsion that discourages violence in her vicinity. No one has ever attempted this, but if a person were to attempt to strike Daca with a weapon, the weapon would shatter in a flash of light, leaving Daca unharmed.
[[High Hope]] contains an unusual
shrine to Boldrei, a monument that has come to be
known as Daca's Watch. A thick, 12-foot pillar of
[[densewood]], this structure was supposed to hold a statue
of some priest or martyr, but funding for the project
evaporated, and the pillar stood empty for many years.
One day, a [[gnome]] named [[Daca]] climbed up to the top
and sat down. From this high perch, she watched and
studied the people, occasionally shouting advice to
people who seemed troubled or distressed.
That was 120 years ago. Daca still sits on her
post, watching over her neighbors. While she has no
oracular powers, she is very familiar with the people
of High Hope and has a great deal of common sense.
The inhabitants of the district often come to her
for advice or when a mediator is required, and she served as an emotional pillar of the community over
the course of the [[Last War]].
While she has no religious training and does
not profess to be a priestess of [[Boldrei]], most of the
locals believe that she has been touched by the goddess and consider her to be a holy woman. They are
not alone in this; a handful of priests from other
districts regularly visit High Hope to discuss events
in [[Sharn]] with Daca.
The daelkyr are the lords of madness and the emissaries of [[Xoriat]], who invaded [[Eberron]] with a host of [[mind flayer]]s, [[beholder]]s, and other foul [[aberration]]s. Wherever they walked, the daelkyr reshaped the world in their image, sowing madness and creating monsters. They fused [[goblin]]s together to create the gibbering [[dolgrim]]s
and crafted the blind [[dolgaunt]]s from [[hobgoblin]] stock.
The [[goblinoid]] champions of [[Dhakaan]] fought fiercely. But in the end, it was the [[orc]] [[Gatekeeper|Gatekeepers]] [[druid]]s who closed the portals to [[Xoriat]] and drove the daelkyr into
[[Khyber]]. The Gatekeepers crafted seals to hold both the
power of Xoriat and the daelkyr at bay, and as long as
those seals remain intact, the lords of madness can't
rise from the depths. Today, those seals are thousands
of years old and the Gatekeepers are all but forgotten.
[[Mind flayers|mind flayer]] scheme in the sewers of [[Sharn]], and cultists
beseech [[beholder]] priests for the blessings of [[Belashyrra]], the Lord of Eyes. And in the shadows of Khyber, the
daelkyr are waiting.
<<<
''The Six Daelkyr''<br/>
Six daelkyr are known on Eberron through their cults and
legends, but other daelkyr surely
lurk in the depths of Khyber.
* [[Avassh]]
* [[Belashyrra]]
* [[Dyrrn]]
* [[Kyrzin]]
* [[Orlassk]]
* [[Valaara]]
<<<
A daelkyr knows secrets mortals can’t comprehend and has
plans they can’t understand. Some sages believe that the
daelkyr are artists and that worlds are their canvas; they
destroy civilizations and unleash monsters because, to them,
this is a thing of beauty. Others say that the daelkyr exist
beyond time, and that their actions only make sense when
viewed over the course of millennia. Still others assert that
any creature that can understand the motives of the daelkyr
will immediately turn to their cause—that it is dangerous to
study the daelkyr too closely, lest their revelations destroy
all prior understanding and identity. While they may be
enigmatic, the daelkyr are unquestionably evil; they shatter
innocent lives and entire civilizations without any remorse.
//''Held Loosely in Space.''// The daelkyr have lairs within
[[Khyber]], but these are no mere caverns. Each daelkyr's
domain is a demiplane reflecting the twisted vision of its
master. These realms are connected to the surface by
tunnels and chasms, but they defy conventional geography. Passages to [[Belashyrra]]'s domain can be found in
the [[Shadow Marches]], but tunnels also connect its realm
to [[Xen'drik]]. Adventurers can potentially cross great distances quickly by passing through a daelkyr's domain.
''//Unifying Theme.//'' Each daelkyr has a unique theme;
[[Belashyrra]] is tied to sight. [[Valaara]] to insects, and [[Dyrrn]]
to corruption and evolution. This theme is reflected in
the daelkyr’s appearance, in the minions it employs, and
in the [[symbiont]]s it creates. If the daelkyr is an artist, the
theme is its medium. If it’s a conqueror, the theme defines
its weapons and the world it seeks to create. Additionally,
each daelkyr holds secrets and revelations relating to its
specific theme—secrets mortal minds can’t comprehend.
While in Belashyrra’s presence, people may remember
things they’ve seen and forgotten. Around Valaara, they
may feel insects burrowing through their flesh, or
sense the thoughts of their allies—a momentary
sensation of being part of a hive.
!! Running Daelkyr Encounters
In an encounter with a daelkyr, consider ways to express its alien nature, such as the following:
* The daelkyr are loosely bound to space and time. The daelkyr shifts in space, "teleporting" 30 feet away, but you can’t remember it moving. You could represent this as a constant, casual effect; even outside of combat, the daelkyr shifts between spaces, unbound by the concept of distance or time.
* The appearance of daelkyr is subjective; their physical forms can't be fully perceived by mortals. Viewers perceive the same general impression of a daelkyr, but the details vary in ways that can't be controlled. For example, [[Belashyrra]] might appear as a female [[human]] surrounded by floating eyes to some viewers, while other viewers see a haggard male [[elf]]. The daelkyr might appear as someone the viewer knows, or its appearance could shift mid-conversation. This is not something the daelkyr controls, and it’s not considered a beneficial trait; it’s simply part of their alien nature.
* Daelkyr have telepathy with a range of 120 feet. This is their primary form of communication and is intended to be broader in scope than typical telepathy. A daelkyr can communicate with any number of creatures within range at once, projecting a thought much as other creatures project sound. Typically when a daelkyr “speaks,” all creatures receive the same message, but the DM might decide that one or more creatures receive a different message. And just as people see different things when they look at a daelkyr, two people can perceive a daelkyr’s “speech” in very different ways. One may feel as though the daelkyr is speaking aloud with a strange, alien voice. Another may hear the speech of the daelkyr as the voice of a dead lover, whispering in their ear. Another may not be able to remember actually hearing the daelkyr speak; instead, they just remember its words existing, as if they’ve always known them.
* The way that the daelkyr experience reality is so alien that any creature who tries to read their thoughts—to see the universe as they do—may become catatonic.
Any encounter with a daelkyr should be horrifying, driven by its alien, unknowable nature. The actions of the [[Lords of Dust]] and the [[Dreaming Dark]] make sense; but the actions of the daelkyr are just as deadly and destructive, but we cannot understand what they want, and those who attempt to do so often become cultists.
!! Spawn of the Daelkyr
Most of the [[aberration]]s on [[Eberron]] are the creations of
the daelkyr. The daelkyr are masters of flesh-shaping,
and they altered existing life forms—often beyond recognition—to create soldiers for their wars against the
peoples of [[Khorvaire]].
When a character faces a creature twisted by the
daelkyr—an [[aberration]] or another creature bearing a
daelkyr's corruption—consider rolling on the Daelkyr
Modifications table to add strange cosmetic details to
the creature.
| !<<dr d10>> |!Daelkyr Modification |
| 1 |The creature is fused with another creature or object. |
| 2 |The creature has additional eyes, or its existing eyes are replaced with the eyes of a different creature. |
| 3 |The creature produces eerie music instead of speech. |
| 4 |The creature's skin has an un usual texture or color. |
| 5 |The creature's hair is replaced by spines or tentacles. |
| 6 |The creature's flesh is transparent. |
| 7 |The creature has extra limbs. |
| 8 |The creature is bioluminescent. |
| 9 |The creature has an additional head. |
| 10 |The creature sheds its skin every 60 days. |
!!! Beholders
[[Beholder|beholder]]s served as the living artillery of the daelkyr
forces, shattering [[hobgoblin]] armies with their deadly
eye rays. When the [[Gatekeepers]] drove back and imprisoned the daelkyr, most of the beholders were driven into
[[Khyber]] along with their creators.
Today, beholders are solitary, egocentric creatures.
Some have remained among the daelkyr and [[dolgaunt]]s, while others have
accumulated their own followings among the [[Cults of the Dragon Below]]. A few have abandoned the path of
aggression in favor of solitary philosophy and reflection.
A beholder philosopher might manipulate events in a [[humanoid]] city not to gain power or wealth, but to stimulate and then study a particular social or economic situation.
!!! Doppelgangers
The daelkyr [[Dyrrn]] the Corruptor enhanced the latent
psychic abilities of [[changeling]]s to develop [[doppelganger]]s, while implanting a desire to cause chaos in the communities around them—even when there's no benefit in
it for the doppelganger. Some doppelgangers, driven by
visions from the daelkyr, can be found working with the
[[Cults of the Dragon Below]] or fighting alongside [[aberration]]s in [[Khyber]]. Others operate alone.
!!! Lycanthropes
Many people believe that [[shifter]]s are descended from
[[lycanthrope]]s, but shifter [[druid]]s often assert the opposite—that the abilities of the shifters are a gift from [[Eberron]] or [[Lamannia]], but the gift was corrupted by the
daelkyr to create the curse of lycanthropy.
Whatever the origin of lycanthropy, in the ninth century YK, the power of the curse surged dramatically, and all [[lycanthrope]]s were drawn toward evil. The
Church of the [[Silver Flame]] engaged in a long [[crusade|Silver Crusade]] to defend civilization from this brutal scourge, eventually
all but eradicating lycanthropy from the [[Five Nations]].
The lycanthropes that survived hid in dark places, deep
within the woods of the [[Eldeen Reaches]] and [[Droaam]].
The common people of [[Khorvaire]] still see [[lycanthrope]]s as a dire threat. Most folks don't understand that good-aligned lycanthropes exist.
!!! Mind Flayers
The [[illithid|mind flayer]]s of Eberron are the creations of the daelkyr
[[Dyrrn]] the Corruptor. Most [[mind flayer]]s on Eberron
dwell in [[Khyber]] with their daelkyr masters, commanding cities of [[dolgaunt]]s and [[dolgrim]]s. A few can be found on the surface, working with the [[Cults of the Dragon Below]] or pursuing their own enigmatic goals. The mind
flayers often seem to pursue reopening the gates to [[Xoriat]] with more urgency than the daelkyr themselves do.
The immortal daelkyr can afford to wait for another ten
thousand years; the illithids aren't so patient.
This dagger has a saw-toothed edge and a black pearl nested in its pommel. A creature attuned to it can perceive its surroundings without the use of sight out to a range of 30 feet.
This ebony dagger doesn't make noise when it hits or cuts something.
The Dagger River is the enormous river that leads into the [[Thunder Sea]] in the south, through the Hilt, a large natural harbor that serves the city of [[Sharn]], and originates near the town of [[Woodhelm]] in the [[Dragonwood]].
''District Type:'' Garrison<br/>
''Buildings:'' Garrison buildings (2), training ground,
temple ([[Dol Dorn]]), average lodging (20), poor lodging (4), upscale food (8), average food (15), poor food
(15), upscale trades (15), average trades (33), poor
trades (28), average services (40), average residences
(160), poor residences (40)<br/>
''First Impression:'' This may be the cleanest and
quietest district in [[Dura]]. The walls of the towers are
heavily reinforced, as if to withstand siege weaponry.
The streets are filled with guards of the [[Watch|Sharn Watch]], both
patrols and off-duty guards; it looks like a bad place
to start a fight.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Overlook]] (northwest); [[Redstone]] (northeast); [[Highhold]] (south); [[Ivy Towers]] (bridge, southeast); [[Stormhold]] (below)
[[Dura]] is easily the most dangerous quarter of the
[[city|Sharn]], and during the [[Last War]] riots and other forms
of unrest were a constant concern. Plus, the [[Race of Eight Winds]] usually results in various forms of
crime and vandalism. As a result, Daggerwatch has
the largest concentration of the [[City Watch|Sharn Watch]] in Sharn.
Many low-ranking city officials, including judges
and tax collectors, make their homes in Daggerwatch
and rely on the presence of the Watch to protect them
from vengeful citizens.
!! Noteworthy Locations
* [[Daggerwatch Garrison]]. The eponymous garrison in the district is the home to over 600 members of the [[Sharn Watch]].
* The [[Gold & White]]. This tavern offers fare of comfortable quality at modest prices. It caters to members of the [[Sharn Watch]] and [[Brelish|Breland]] veterans, but others will receive a cold welcome.
* [[Talain Garrison]]. This fortress houses both the [[Sharn Watch]] and the elite [[Redcloak Battalion]].
The eponymous garrison in the [[district|Daggerwatch]] is the home to over 600 members
of the [[Sharn Watch]]. In addition to the regular officers of the Watch, Daggerwatch Garrison houses the
[[Goldwings]] and includes facilities for maintaining
the unit's 25 [[hippogriff]]s.
This garrison is led by Commander [[Lian Halamar]].
The Daggerwood is a jungle on the Tilorn peninsula of southern [[Breland]] that overlooks the [[Straits of Shargon]]. The jungle is habitat to several rare and valuable birds.
If you’re after [[healing potion|potion of healing]]s, antitoxins, or a healer’s kit in the Harbor district, you have one option: Dagoward’s Apothecary. Some say Nalia Dagoward has used underhanded methods to run competitors out of the district. Nalia’s prices are low, but you get what you pay for. She has enough beds for three people to get bed rest.
Captain Daja Brel commands the [[Guardians of the Gate]]. Daja firmly believes that
the Guardians are all that stands between order
and chaos in [[Sharn]], and she acts with unbridled
force if she believes a group or an individual threatens the city.
Dajar Orioth (the Jungle of Daggers) is a forest in western [[Aerenal]].
Dal Quor is both impossibly distant and remarkably close. Tens of thousands of years ago, the [[giant]]s of [[Xen'drik]] shattered the ties between [[Dal Quor]] and the Material Plane. Since then, it's been permanently remote, and no naturally occurring [[manifest zone]] to Dal Quor has been discovered. Not even [[plane shift]] or astral travel can allow direct contact with the Region of Dreams. And yet, it's also the closest of the
planes—to visit, just close your eyes.
Dreaming is a form of spiritual travel, as
your mortal consciousness is drawn to Dal Quor.
Dal Quor is the realm of dreams, a place of imagination
where memory and emotion can shape reality. The stories of
[[Thelanis]] bring people together in a shared tale; by contrast, the
dreams of Dal Quor are unique, individual, and fleeting. They're
defined by our experiences and desires, and we rarely remember
them when they're over. Dreams allows us to sift through
our subconscious, and they are ours alone—or at least, they
//should// be... if they aren't manipulated by an outside force. The
denizens of Dal Quor reflect the secondary theme of the plane,
and—for now, at least—that theme is nightmares. The [[quori]] prey
on mortal dreams, twisting them to produce the emotions they
crave. This doesn't mean all dreams are nightmares—but when a
quori takes an interest in your dream, it'll usually become one.
!! Universal Properties
Dal Quor is a place where impossible things are possible and
the surroundings can change in the blink of an eye. What
differentiates it from [[Kythri]] and [[Xoriat]] is that these changes
are drawn from the minds of dreamers, both from the mortal
subconscious and the ancient dreams of [[il-Lashtavar]] itself.
Even when you're exploring someone else's dreams, your
desires and memories can infect the landscape. The table below provides ideas for how a dream could change.
| !<<dr d8>> |!Shifting Dream Event |
| 1 |A familiar melody can be heard throughout the area. Ask a player to describe the song. |
| 2 |A word appears on the wall. Is it a clue, or just mysterious? |
| 3 |A familiar NPC—a trusted ally or despised villain—enters. |
| 4 |A creature's weapon, armor, or other equipment takes on an irrational new appearance—perhaps a giant banana. This has no effect on its statistics, and the effect ends in 1 minute. |
| 5 |A creature now appears to be a child or a creature of another race. This has no effect on their abilities, and the effect ends in 1 minute. |
| 6 |A creature's beloved pet—perhaps from their childhood—appears in the scene. |
| 7 |There's a dramatic—and possibly surreal—shift in the weather or apparent time of day. |
| 8 |A creature gains the ability to fly as fast as they can normally walk. This lasts for 1 minute. |
* //''Extremely Morphic.''// The environment of Dal Quor can shift at any moment. These changes are generally drawn from the mind of the current dreamer, but at the DM's discretion, the thoughts of adventurers might impact another creature's dream that they're currently experiencing.
* //''Extended Illusion.''// The duration of [[illusion]] spells is doubled.
* //''Flowing Time.''// For every 10 minutes that pass in Dal Quor, only 1 minute passes on the Material Plane. While sleeping for 8 hours, a creature could spend 3 days in Dal Quor.
!! The Turning of the Age
The layers of Dal Quor are shaped by dreaming minds. The
[[quori]] believe the heart of Dal Quor is itself the dream of an
immense, ancient spirit, and that they themselves are simply
part of its dream. They call this the //Quor Tarai//—the Dream of
the Age. But there's a catch: every dream ends when the dreamer
wakes up. Forty thousand years ago, the [[giant]]s of [[Xen'drik]] fought
a war with Dal Quor—but none of the current quori remember
this war or anything that happened before it. They believe this is
because the Quor Tarai came to an end. Dal Quor woke from its
dream, then immediately returned to its slumber and began to
dream again... but it was a //new// dream, with entirely new quori.
The quori call this transition the Turning of the Age. They
don't know how many times it's happened before, and they know
nothing about the quori of the previous age. But they believe that
each incarnation of the Quor Tarai has its own distinct flavor.
The present Quor Tarai is [[il-Lashtavar]], the Great Darkness that
Dreams. It's malevolent and cruel, and that's reflected by the
quori it's created. But a handful of quori didn't fit in this dream.
These are the quori that became the [[kalashtar]], who consider
themselves harbingers of transformation. The kalashtar believe
that the next incarnation of the Quor Tarai will be an age of
hope and compassion; they call it [[il-Yannah|Path of Light]], the Great Light.
So all quori know that one day, Dal Quor will wake from its
dream, and when it does, all existing quori will be destroyed.
This drives the conflict between the [[kalashtar]] and the
[[Dreaming Dark]]. The kalashtar believe their devotions and
meditation slowly turn the wheel toward a dream of light.
Meanwhile, the agents of the Dreaming Dark believe they can
permanently anchor the Quor Tarai in the current age, if only
they can control enough mortal dreams—a process begun
with [[Sarlona]]. It's up to the DM to decide if the kalashtar can
usher in a new age over the course of the campaign, or if the
Dreaming Dark will maintain the status quo. If the Turning of
the Age occurs, all existing quori will be destroyed and reborn;
no one knows what this will do to the kalashtar or foreign
creations like the [[Uul Dhakaan]].
!! Denizens
The [[quori]], children of il-Lashtavar, are the most numerous
of the native spirits of Dal Quor. But quori aren't the only
creatures dreamers can encounter in the Region of Dreams.
!!! Dreamers
At any given moment, there are millions of dreaming minds
creating islands in Dal Quor. [[Human|human]]s, [[orc]]s, [[giant]]s, [[dragon]]s—any creature that dreams can be found in this plane.
A rare few dreamers are lucid and in full control of their
actions, due to either training or magic; these are capable of
leaving their own dreams and moving between the plane's
dream islands and layers. However, the vast majority of
dreamers aren't lucid. They're driven by their subconscious,
and react based on instinct and deep desires; they likely won't remember the events of a dream clearly. Either way, when a dreamer dies in their dream, they wake up; however, this death can still have consequences, as described in the "Dying in Dreams" section of the [[Dreaming Dark]] page.
!!! Figments and Drifters
When you have a dream and you meet your old drill sergeant,
it's not actually your old drill sergeant, and it's (probably) not
a [[quori]]. It's simply a figment, manifested from the void by Dal
Quor. When you wake up—or even just leave the scene—this
[[manifestation]] vanishes, absorbed back into the essence of the
plane. A figment can be anything—a friend of yours, a [[zombie]]
version of that friend, a [[demon]], a [[dragon]]—but the catch is that
it's drawn from the mind of the local dreamer. When you dream
about your old drill sergeant, they can't tell you a secret you don't
already know, because they're part of you. On the other hand, if
you're in someone else's dream—or if a quori has taken control of
your dream—then the figments can surprise you, because their
capabilities and knowledge are drawn from someone else's mind.
A figment could use the statistics of the creature it represents,
or it might be limited, as the dreamer doesn't know what it's
actually capable of. Conversely, a figment goblin could have the
statistics of an ogre—in this dream, that's one tough goblin.
Occasionally, a remarkable figment develops the ability to
persist beyond the dream that created it—becoming a truly
sentient spirit instead of a simple manifestation. Such figments
might be useful guides or allies for mortal dreamers, or become
predators that travel from dream to dream and prey on mortal
fears. Such free-willed figments are called drifters.
!!! The Quori
The [[quori]] themselves are figments—figments of il-Lashtavar,
the current Dream of the Age. However, these figments are
immortal, and don't disappear when a mortal's dream ends;
if they're destroyed, they're simply reborn within the heart of
il-Lashtavar. Like other figments, they come into existence
knowing the role they are supposed to play: they are shapers of
nightmares. Each type of quori feeds on a particular emotion;
[[tsucora]] quori craft terrifying nightmares so they can feast on
mortal fear, while the [[du'ulora]] thrive on anger.
When a quori enters a dream, it can create new figments,
alter the story's script, or change its own appearance (though its
statistics remain the same). If the invading quori is killed within
the dream, the story reverts to the original script, so most quori
prefer to remain in the background while shaping a dream;
however, some are arrogant and can't resist playing a starring
role. The quori don't create //every// nightmare; there are millions
of dreamers, while the quori number only in the thousands. But
the nightmares they personally create are works of art.
In the first days of il-Lashtavar, the quori had no purpose aside
from preying on mortal dreams. Now they believe they're fighting
for their survival, and they use their abilities to manipulate
mortals and the waking world. But always remember that the
quori began as crafters of nightmares, and consider how each
quori's favorite emotion may color its actions.
!!! Interlopers
Some creatures in Dal Quor are neither figments nor mortal
dreamers. [[Night hag|night hag]]s freely come and go, collecting nightmares
for their own purposes. Here are some other interlopers.
//''The Fey of the Fading Dream.''// [[Taer Lian Doresh]] is a [[feyspire]] that exists between Dal Quor and the Material Plane. The [[eladrin]] of this feyspire can freely pass to both planes, and are perhaps the only mortal beings who can do so.
//''The Draconic Eidolon.''// Many [[dragon]]s of [[Argonnessen]]
believe they can attain immortality after death, passing through
[[Dolurrh]] and becoming divine beings. However, some aren't
willing to take that chance; using an [[eldritch machine]] hidden
deep in Argonnessen, the most powerful can perform a ritual
that tethers their spirits to a psychic anchor in Dal Quor. This
Draconic Eidolon, a monument in the [[Ocean of Dreams]], holds
the souls of dragons long dead instead of releasing them
to Dolurrh. The dragons no longer exist physically; like the
[[Undying Court]], they're a union of spirits, possessing greater
power together than they would individually. They can't leave
the Eidolon, but possess vast knowledge—secrets of history,
insight into the [[Prophecy|Draconic Prophecy]], and knowledge of epic magic. They
have much to offer, but what do adventurers have that the
dreams of dead dragons might want?
!! Layers
Dal Quor doesn't have [[layer]]s like other [[plane]]s. Instead, it can be
seen as a vast ocean. When a mortal dreams, they fall into that
ocean and create an “island”: a dream pocket, shaped by their
memories and desires. When they wake, this island disappears.
So at any given moment, Dal Quor contains millions of islands,
but none last for long. A passive dreamer can't leave their own
island, but a lucid dreamer can find ways to travel between them.
Typically this involves portals, doors within a dream that have a
psychic connection to the destination—but it's also possible to
break through the psychic border of an island, to fly to another
island on a ship of dreams or an imaginary winged beast.
These flickering islands orbit the stable [[core|il-Lashtavar]] of the realm, the
dark heart of the Quor Tarai. In addition to the regions discussed
below, there may be other permanent islands in the [[Ocean of Dreams]], following the example of the [[Uul Dhakaan]] and the
Draconic Eidolon. Who created the island, and what sustains it?
<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>
!! Planar Manifestations
Ever since the [[Age of Giants]], it's been nearly impossible to
physically interact with Dal Quor from the Material Plane. This
forces the [[quori]] tied to the [[kalashtar]] and the [[Inspired]] to act
through mortal agents. The only denizens of Dal Quor that can
easily enter the world are the [[fey]] of the Fading Dream. Otherwise, the primary way that Dal Quor manifests in the world is through dreams. The plane is always remote; undoing this damage would be an epicquest, potentially returning the thirteenth moon to the sky. But even at a distance, Dal Quor can affect the waking world.
!!! Manifest Zones
The metaphysical damage caused in the conflict between Dal
Quor and the [[giant]]s of [[Xen'drik]] broke the ties between [[Eberron]]
and Dal Quor. There are no naturally occurring [[manifest zone]]s
to Dal Quor, and even [[plane shift]] won't allow travel there.
However, though //natural// manifest zones don't exist, anything
is possible with an [[eldritch machine]], whether in the hands of
the [[Dreaming Dark]] pursuing subtle conquest, or simply an
eccentric [[artificer]] seeking the advancement of arcane science.
!!! Quori Artifacts
While it's rare to encounter objects on Eberron that come from
Dal Quor, the [[Inspired]] of [[Sarlona]] create objects using [[quori]]
techniques. The primary substance used in quori objects is a
form of solidified emotion called [[sentira]]. Quori [[magic item]]s generally enhance telepathy or other psychic effects.
!! Quori Stories
Some story ideas relating to the [[Dreaming Dark]] can be found on that page. Here are a few additional ideas.
//''Familiar Figments, Figment Familiars.''// The adventurers
discover their dreams all share the same figure, appearing
regularly to each of them. It could be humanoid (a childhood
friend, an old mentor), a shapechanging raven, or a talking
purple cat. It was once merely a figment of one of their
dreams, but it's become a drifter, able to move between
dreams. It could offer advice, carry messages to characters
when they're separated from friends, or warn of things it's
seen in the dreams of their enemies.
//''The Treacherous Whisper.''// A single fortress in the [[Uul Dhakaan]] has become infected by a [[daelkyr]] curse, turning the
figments within it into [[aberration]]s. Can this be contained and
cleansed before it spreads and destroys the dream itself?
//''The Fortress of the Fading Dream.''// [[Taer Lian Doresh]] exists
on the edge of Dal Quor, where mortals and quori meet face to
face. The [[tsucora]] Astaleth has recently turned to the [[Path of Light]] and is hiding within the fortress; if she leaves, she'll be consumed by [[il-Lashtavar]]. Can adventurers find a way to save the rebel quori? Why is the leader Shan Lian Doresh allowing
her to shelter in his hall?
[[Middle Tavick's Landing]] is a center for trade and commerce, catering to adventurers, commoners, and merchants bringing cargoes in on the [[Orien]] [[lightning rail]] or by trade
caravan. Dalaina Ironhand ([[dwarf]]) is a plain-spoken woman who represents the merchants of the ward. She is a hard-nosed negotiator with no sense of humor and no interest in anything beyond the bottom line. She always drives for the best bargain for her people—whatever form that bargain may take—but she has no taste for underhanded intrigue. As a result, she opposes the schemes of the “[[Boromar|Boromar Clan]] Block”—[[Bestan ir'Tonn]], [[Caskar Halavik]], [[Thurik Davandi]], and [[Ilyra Boromar]]—whenever possible.
''District Type:'' Wealthy residential<br/>
''Buildings: ''Upscale residences (250), average
residences (30)<br/>
''First Impression:'' The opulence of this neighborhood is overwhelming. The streets are lined with marble statues of famous inhabitants of [[Sharn]], and fountains of illusion throw shimmering columns of rainbow light into the air. While not quite as luxurious as the homes of [[Ocean View]], the mansions of Dalan's Refuge are large and quite impressive.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Ocean View]] (southwest); [[Copper Arch]] (north); [[Platinate]] (bridge, northwest); [[Deathsgate]] (below)
Dalan's Refuge is rather unremarkable, notable only
for the wealth of its inhabitants, the number of pretentious monuments it contains, and the fact that a would-be resident only needs to acquire 25 signatures before
purchasing property in the district. It is filled with
impressive mansions, along with a few smaller houses
belonging to successful merchants, barristers, and
politicians who haven't quite made it to the top yet.
Dalin is the current leader of
House [[Vadalis]], but like most of the other [[dragonmarked barons|dragonmarked house]], he doesn’t bother with titles. Dalin is a friendly man with a good
heart, who truly believes that his house is helping to
make the world a better place. He is only beginning
to uncover the activities of the [[Feral Heart]], and might
employ Vadalis PCs in efforts to investigate or shut
down the organization.
''District Type:'' Inn district<br/>
''Buildings:'' Temple ([[Boldrei]]), shrine ([[Silver Flame]]),
average lodging (50), poor lodging (180), average food
(35), poor food (140), average trades (35), poor trades
(105), average services (35), poor services (105)<br/>
''First Impression:'' Tourists, travelers, and merchants
fill the streets of this enormous district. Inns and taverns stretch as far as the eye can see. The quality is not
exceptional, but there is no shortage of places to stay.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Grawand]] (north); [[Deathsgate]] (southwest); [[Smoky Towers]] (bridge, west); [[High Walls]] (below); [[Copper Arch]] (above)
Dancing Shadows provides food, lodging, and basic
services to the many people who arrive in [[Sharn]]
every day. None of the inns or taverns are especially
remarkable; in this case quality is more significant
than quantity. Adventurers tend to stay in [[Deathsgate]], while the wealthy often go to [[Silvergate]] in
[[Upper Tavick's Landing]]. Dancing Shadows caters to
the commoners and traveling merchants who simply
need a place to stay at a reasonable price.
This district also houses a small House [[Thuranni]] outpost.
Queen Dannel ir'Wynarn ruled the nation of [[Cyre]] from 943 YK until the [[Mourning]] destroyed the nation in 994 YK. Dannel’s uncanny charisma inspired her nation and kept spirits high despite Cyre's losses near the end of [[Last War]].
Queen Dannel was in [[Metrol]] on the Day of [[Mourning]] and is presumed dead. Her son, Prince [[Oargev ir'Wynarn]], holds court in [[New Cyre]].
Rumors still swirl that before the
conflagration, Queen Dannel planned some great
new offensive to save [[Cyre]]. At the time, her struggling
nation still had patriots willing to fight and die for
their land. Huge battles were taking place on Cyran
ground when the [[Mourning]] occurred—battles that,
without the Mourning, might have silenced Cyre’s
ambitions forever. Some speculate that the queen had
something to do with the Mourning.
A little piece of [[Cyre]] survives in [[Dannel|Dannel ir'Wynarn]]'s Pride, in the [[Cross]] district of [[Stormreach]]. Once a small community, the ward is now bursting with refugees. It is a place of Cyran nostalgia and hope, but also a place of anger, regret, and overcrowding.
When [[Cyre]] still existed, the ward began as a trading outpost established by Cyran merchants and diplomats. Then came the [[Mourning]]. Now the original trading outpost is the heart of what the ward’s inhabitants call Little Cyre, a shadow of their homeland.
The ward is filled with the poor and the desperate. Many have nothing, yet they do all they can to re-create their lost homeland. The community pays outrageous amounts to purchase Cyran relics, while neglecting everyday needs. Moreover, too many people live in too small a place with too much pride and too many dashed hopes. The shadow of the Day of [[Mourning]] fills Dannel’s Pride with despair and outrage, and gangs and militias feed on this. The [[Storm Hammers]], led by [[Miraan]], is a visible and growing gang, while [[Dannel's Wrath]] builds strength in the shadows and prepares to take bloody vengeance for its fallen country.
''Leader:'' [[Fury|Fury (changeling)]]<br/>
''Notable Members:'' [[Eston|Eston (human)]], [[Metrol|Metrol (warforged)]]<br/>
''Base of Operations:'' [[Dannel's Pride]] (hidden)
The [[Mourning]] killed millions of [[Cyrans|Cyre]] and left hundreds of thousands of refugees. Many Cyrans aren’t willing to wait for Prince [[Oargev|Oargev ir'Wynarn]]’s diplomatic efforts to bear fruit. Some want bloody vengeance against those they see as responsible for the destruction of their nation. These bitter refugees are the core of the group known as [[Dannel|Dannel ir'Wynarn]]’s Wrath in [[Stormreach]]. Some are former soldiers from the Cyran army. Others are criminals or commoners brought together by their shared desire for revenge.
The stated goal of Dannel’s Wrath is to employ
violence and terror to force the [[Five Nations]] to improve
their treatment of [[Cyrans|Cyre]] across the world. The leaders
of the Wrath have stated that they will not stop until the Cyrans are given a homeland once again. Many believe that [[Stormreach]] fits the bill; these activists claim that Stormreach and [[Xen'drik]] itself should be granted to
the Cyran refugees. So far, Dannel’s Wrath has focused
on vigilante justice against those who harm Cyrans, but
there have been a few acts of public violence; as time goes
on, they might begin using war magic in markets and
taverns or taking similarly aggressive actions.
The members of Dannel’s Wrath are hidden among
the massed refugees of [[Dannel's Pride]]. The structure
of the organization is intentionally vague, so even when
the [[Stormreach Guard]] captures agents of the Wrath, it’s
hard to shut down the entire group. In addition, many
refugees who aren’t part of the Wrath sympathize with
the group and aid its members in small ways. Others,
more cautious, fear that the [[Storm Lords]] might one day
take action against the entire Cyran community in an
effort to destroy the Wrath.
Dannel’s Wrath is the largest [[militia]] in [[Stormreach]], and it has the easiest time rebuilding its losses, since there are always more Cyrans looking for vengeance. In addition to acts of political violence, members
of the Wrath fight to protect the inhabitants of [[Dannel's Pride]], though they take pains to remain hidden.
Righteous anger lies at the heart of Dannel’s Wrath.
Most of the members of the Wrath were good people
once; however, their desire for revenge and the pure
madness of the [[Mourning]] have driven them to desperate
and amoral acts. They are not simple criminals or assassins. They are people who have suffered a terrible loss
and who have been pushed across a moral line by this
loss. In their own eyes, they are on a quest for justice,
and they believe that their actions help other Cyrans
in need.
The [[dao]] are [[genie]]s of elemental earth who crafted the [[City of Brass]] and the [[azer]]s who maintain it, and continue to craft grand and remarkable wonders in their native [[plane]] of [[Fernia]].
Each dao has a particular specialty, a unique style of art or artifice. While they can
craft artifacts that would be the envy of any mortal [[artificer]],
their techniques can't be easily replicated. Their work has an
element of arcane science, but much of what they do involves
channeling the essence of [[Fernia]] itself; a dao who settles in
the Material Plane will find its talents more limited.
The dao are more stoic than the fiery [[efreet|efreeti]], and don't throw
extravagant parties. But they still engage in intense social
competition with one another, striving to craft the most glorious
creations. This doesn't necessarily mean their work is the
most powerful; rather, it's about creating things that are most
desired. The dao don't need gold, so the efreet usually pay them
in barter, which creates a bizarre secondary market. The efreeti
[[Raqashtar]] might offer a squad of elite [[salamander]] warriors in
exchange for a wondrous crown; the dao has no use for them,
but it knows that the efreeti [[Azhalar]] is collecting soldiers, so...
Adventurers may seek out dao because of what they can do,
but dao can also be interesting patrons. A dao may need some
rare substance to complete its latest work, but it can only be
obtained on the Material Plane—so it turns to adventurers
to obtain it. Or a dao could even use a group of mortals as a
focus group, seeking opinions on its latest work.
Here are a few notable dao:
* [[Naja Ash]]
* [[Sar Saeran]]
* [[Brass]]
[[Morrikan|Morrikan d'Kundarak]]’s grandniece Daphanë d’Kundarak is as aggressive a banker as can be found in western Khorvaire. President of the [[Kundarak Bank|Kundarak Bank of Sharn]] in [[Sharn]] (located in the financial district of [[Korranath]]), she maintains a strong voice in public policy by offering or withholding bank loans for major projects. Her blunt style wins her few friends: She is seen as stubborn (by [[parliament|Breland Parliament]]) and as too much of a risk-taker (by many of [[Boranel|Boranel ir'Wynarn]]’s advisors).
Dar Darath is a bastion city in [[Nulakesh]], [[Riedra]], on the shores of [[Rhialuun]].
Dar Ilash is a bastion city in [[Pyrine]], [[Riedra]]. It holds the headquarters of the [[Healing Hand]].
''Country:'' [[Riedra]]<br/>
''Government:'' The [[Unity]]<br/>
''Local Ruler:'' Eidolon [[Tureya]]<br/>
''Population:'' 1,960,000
Dar Jin rises up from the waters of the [[Barren Sea]],
and stretches along the coast. The city's massive walls
are smooth red stone with wide lines of blue crystal are
embedded in the surface, and these labyrinthine patterns
glow with an inner light. The towers that rise up above
are whorled and rounded, and seem to have been blown
from colored glass.
Dar Jin is the greatest port of [[Riedra]]. It is the terminus of the [[Xen'drik]] trade route, and much of the industry of the city is devoted to processing the goods
from that land. Trade goods are organized and stored in
preparation for transport across the nation, and crystal foundries transform shards into [[crysteel]] and other
useful forms.
The walls of the city extend for miles, and the slender
towers stretch hundreds of feet into the air. The harbor is
filled with ships, and the docks are thronged with people.
But the [[people|Riedrans]] of Dar Jin go about their business silently,
speaking only when it is absolutely necessary.
Throughout the history of [[Riedra]], all trade has been
conducted on foreign soil. In 1300 Unity (998 YK),
that curtain was lifted. Today, merchants can petition
[[Inspired]] ambassadors for the right to dock in the harbor
of Dar Jin.
Lady [[Tureya]] is the Eidolon of Dar Jin. Thousands of lesser [[Inspired]] and [[Chosen]] labor beneath her.
!! Wards of Dar Jin
Dar Jin is larger than any city in [[Khorvaire]]. It is composed
of five circular wards, each a metropolis in its own right.
Four of the wards are almost identical. The streets are
paved with smooth black cobblestones, interspersed with
squares of clear [[crysteel]]. When darkness falls, the crysteel
blocks [[glow with a soft light|crystal illumination]]. Workhouses, dormitories,
and storehouses are made of blocks of black and white
stone; crysteel panels serve as skylights during the day
and glowing lanterns at night. Most buildings are curved
or whorled; hard angles are few and far between. The city
is beautiful in its way, but is extremely repetitive—every
dormitory looks exactly the same.
The fifth ward is dominated by the [[Jhodra]], or foreign quarter, a cordoned-off section of the harbor ward. The Jhodra alone is larger than many cities of [[Khorvaire]].
!! Notable People
Most of the [[Riedran|Riedrans]] inhabitants of Dar Jin are commoners who specialize in a particular trade. These people are devoted to their work and to the
[[Inspired]], and they avoid conversation with foreigners.
A few of the more important inhabitants of the city are
listed below.
* Lady [[Tureya]]
* Lord [[Sulakhal]] of the Silver Shield
* [[Gusan]] of the [[Dream Merchants]]
* [[Rhuun]] of the [[Broken Throne]]
* Captain [[Tulaar]] of the [[Taskaan Legion]]
This bastion city in [[Riedra]] sits on the edge of the [[Shanjueed Jungle]] in the southern tip of [[Corvagura]]. It is the closest bastion city to the land of [[Adar]].
Along with [[Dul Catun]] and [[Dar Ulatesh]], Dar Mirn is one of the centers of the [[Chosen]] shadow lines.
This large city in [[Riedra]] is the seat of the [[Edgewalkers]]. Dar Mun is located
between four separate [[wild zone]]s; two are tied to [[Shavarath]], one to [[Daanvi]], and one to [[Dolurrh]]. Despite the "Dar" prefix, meaning "Port", the city
is an inland community; the [[Riedrans]] view it as a "world port."
In addition to holding garrisons and training facilities for
Edgewalkers, Dar Mun has one of the
finest arcane libraries and workshops
in [[Riedra]]. A permanent psionic [[teleportation circle]] links the bastion to [[Durat Tal]]. The [[Inspired]] conduct most of their planar research in Dar Mun, and PCs could be sent to steal data from the bastion or to sabotage an [[eldritch machine]] being
constructed there.
''Country:'' [[Riedra]]<br/>
''Government:'' The [[Unity]]; Eidolon [[Surasek]]<br/>
''Local Ruler:'' Lord [[Baalnakosh]]<br/>
''Population:'' 97,000
Dar Myan is a bastion in [[Corvagura]]. Built on the
floodplain of the [[Koralanda River]], it is a center of distribution and agriculture, as well as the home of important
[[Inspired]]. It has training facilities for both the [[Dreaming Dark]] and the [[Thousand Eyes]]. A major military installation also calls Dar Myan home, providing training
for soldiers of the [[Savage Legion|Taskaan Legion]] and other military
branches. The [[monoliths|hanbalani alta]] of Dar Myan play an important
role in powering the bastion and could be a target of any
anti-Inspired operation inside the city.
Dar Myan is shaped like a bulbous cloverleaf and riddled
with channels and canals. A fortress for the [[Inspired]],
surrounded by wide waterways crossed only by drawbridges, occupies the center of the city.
Lord [[Baalnakosh]] of the [[Bountiful Horn]] ([[hashalaq]] [[Inspired]] [[psion]]) rules Dar Myan and oversees its important functions. He is
aided by hundreds of [[Chosen]] and served by thousands
of servants, agents, and troops.
This city's description can be used as a template for other [[Riedra]]n bastion cities.
!! Notable Features
!!! Wall and Gate
Dar Myan's wall is about 80 feet
thick. The sides and top are honeycombed with military
posts, storage facilities, and barracks. Bulges in the wall
form larger command posts and troop rallying points.
The command posts, set every 500 feet in the wall, are
the only places where the wall can be entered at ground
level inside Dar Myan.
Dar Myan's gates are immense, swiveling slabs of
stone and [[sentira]] that can be closed and locked by the
effort of a few soldiers using the machinery within the
towers flanking the gateway.
!!! Gate Monolith
At the gate, this imposing edifice stands as a tribute to the might of the [[Inspired]] and the industriousness of Dar Myan's people. The [[monolith|hanbalani alta]]
here powers nothing—it is held in reserve to defend the
eastern walls of the bastion.
!!! Trades District
In this district of the bastion, people
practice crafts to supply their fellow citizens, as well as
[[Riedra]]'s military and nobility, with needed finished
goods. Priests of the [[Path of Inspiration]] live among and
guide the common folk. Raw materials are barged in from
the river to the channel here and unloaded at warehouses.
No barge traffic passes the first bridge on the channel.
Excess production is shipped out the same way.
!!! People's Monolith
In the center of the trades district stands the People's Monolith. This [[hanbalan|hanbalani alta]] powers the conveniences of city life and is a broadcast center for the [[Soothing Voice]] in the eastern reaches of the city. The people of the trades district are allowed to come here for spiritual inspiration, and all of them
gather here for the annual Feast of Founding, during which the monolith is disconnected from the power grid and used to gather energy for the city's [[Inspired]] overseers. Similar monoliths exist in the city's other districts.
Each has a raised platform, a spacious hall underneath
for public functions and meals, and pools of purified
water churned by small fountains. These pools also serve
as public wells, though some areas of the trades district
actually have running water.
!!! Military District
Across the channel from the
trades district is a military district where soldiers train
and live. The common folk who provide the military's
mundane needs also work and dwell there. Bridges into
this district are heavily guarded and regularly patrolled.
Only those who have proper identification and essential
business enter this zone. Across the channel from where
barges unload in the trades district is a similar facility
for military supply and troop deployment. Comparable
sections of the city near the central fortress provide shelter for lesser nobility, centers of learning, and training
grounds for the elite agents of the [[Thousand Eyes]] and the
[[Dreaming Dark]], although few beyond the [[Inspired]] know
the true nature of the Dreaming Dark facility.
!!! Honor's Monolith
Honor's Monolith is a power
center for the military district and a center for spirituality among the soldiery. Soldiers gather here for
speeches from their Inspired leaders and to march
with pride and respect to the People's Monolith. Furthermore, the open area around the monolith is used
for special training and troop inspection. The pools
here serve the same function as those near the People's
Monolith, but one can serve secondarily as a facility for
training in aquatic combat.
!!! Fortress Palace
The central fortress of Dar Myan
houses the living quarters of Lord [[Baalnakosh]] and his
staff. Within the compound are facilities for all the
needs of the [[Inspired]] ruler, as well as a [[monolith|hanbalani alta]] for his
personal use. Baalnakosh's palace is kept comfortable
throughout the year by the power of the monolith, but the
[[hashalaq]] sometimes uses the hanbalan for other purposes.
The wall around the fortress has two gates—east into the
military district and north into the [[Chosen]] district.
!! Notable People
The people of Dar Myan are normal [[Riedrans]] for the
most part, but some stand out.
* [[Naldhuna]]
* [[Orakhun]]
* [[Jhaasha]]
* [[Clade]]
!! Encounters
Response to intrusion is fast and brutal. At the first sign
of trouble, military forces mobilize and the citizens lock
down their quarters and workshops. But the city's roads and alleys are easy to hide in, and the troops tend to go to
obvious trouble spots (such as a nonfunctioning [[monolith|hanbalani alta]]). Dar Myan's people are likely to fear anyone brave
and capable enough to take out a monolith, but they are
unwilling to aid intruders.
Stealth, speed, and evasion are the best approaches.
Hiding within the city is a possibility, but when the situation calms after a raid, [[Baalnakosh]] has his troops do a
systematic search of the bastion.
Within Dar Myan, intruders may encounter [[Bastion Guard]]s, eventually gaining the attention of specialist squads of [[psi warrior]]s or [[psion]]s (always [[Chosen]] or [[Inspired]], usually [[tsoreva]] or [[tsucora]]). A standing force of [[Taskaan|Taskaan Legion]] [[shifter]]s is also available. Finally, a troop of soldiers of the [[Sleeping Sword]] is largely made up of [[Chosen]] and [[Inspired]] [[psi warrior]]s and
[[soul knives|soulknife]]. Such units are usually led by a [[tsucora dreamblade|tsucora]].
!! Development
The channels and canals of Dar Myan are its weak
points—the arrogance of the [[Inspired]] is another. A
clever assault squad could breach the bastion at the river
and come in by way of the channel. Then it's a matter
of assaulting the proper points in the city to complete a
mission's objective.
Curfew occurs at two hours after sundown every
day. Lights are shut down then, and any person caught
on the streets is subject to arrest and punishment. Even
so, illicit activities do take place in the dark of Dar
Myan's nights.
The [[Inspired]] lords of [[Riedra]] are just as interested in the resources of [[Xen'drik]] as the people of [[Khorvaire]]. Dar Qat is a Riedran port founded over 300 years ago, a fortress built from glittering blue [[crysteel]] and dwarfed by a nearby 800-foot-high [[monolith|hanbalani alta]] believed to serve as a psychic anchor for the city. Outsiders are rarely welcome within the walls of Dar Qat.
Though the city exports [[dragonshard]]s, [[long corn]], [[gurk'ash]], [[dream serpent]]s, and the resonant stone of the [[crystal waste]]s, the [[quori]]’s primary interest in Xen’drik is the discovery of artifacts related to the events of the war between [[Dal Quor]] and the titans during the [[Age of Giants]].
Although a majority of Dar Qat’s inhabitants are [[human]], the city has a significant population of [[dromite]], [[ogre]], and [[eneko]] slaves. The eneko descend from [[giant]]s who fled [[Xen'drik]] after the fall of their civilization, and may feel a connection to this land of their ancestors.
Dar Qat is governed by Lord Ralastar ([[tsucora]] [[Inspired]] [[thrallherd]]). He is supported by eleven Inspired aides (including Harulkek, the [[psi warrior]] captain of the guard) and over seven hundred [[empty vessels|Chosen]], who perform the important and administrative tasks in the city.
Dar Reth is a bastion city in [[Nulakesh]], [[Riedra]].
While there is little cultural contact
between [[Riedra]] and [[Khorvaire]], a considerable
amount of trade flows across the [[Barren Sea]]. Most
[[Riedrans]] distrust the people of Khorvaire, and over
the years a number of Riedran merchants have purchased their own warehouses in [[Precarious]], staffed
with Riedran laborers and bookkeepers. Over the
last century, a small Riedran community has taken
root in Precarious; the inhabitants call in Dar San
(“Far Port” in the Common tongue). Though they
live in squalor, the Riedrans are a proud people, and
the lowliest laborer considers himself to be the equal
of a duke of Khorvaire.
Among themselves, the [[Riedrans]] observe a strict
social hierarchy. When one of the [[Inspired]] comes to
Dar San, he or she is treated like an emperor. While
the Riedrans generally hold the people of Khorvaire in contempt, they have an irrational hatred of the [[kalashtar]] and [[Adarans]]. The neighborhood has
established its own militia—though some might call
it a street gang—and any kalashtar or Adaran who comes to the neighborhood gets just one chance to
leave peacefully.
Riedrans do not drink alcohol, nor do they use
[[dreamlily]] or other narcotics; they view such behavior
as an example of the corruption that grips Khorvaire.
Dar San features a number of businesses catering to the Riedran community, including the two exotic trades listed in the district description. These
include:
* ''Kasharath'', a restaurant serving Riedran cuisine
* a grocery stocked with Riedran foods and goods
* a shrine to the [[Inspired]]
Prominent citizens include Lanharath, who represents the merchant consortium that
owns the warehouses; Hasalakesh, a tailor specializing in Riedran
clothing; and Kantarashtai, Dar San's resident healer. Lanharath
typically serves as the leader of the community,
but the true power rests with the [[Inspired]] warrior
[[Hamatash]]. Hamatash maintains a low profile, but he is the
disposable tool of the [[Dreaming Dark]]—if the Dark
needs to take some action without revealing the existence of their sleeper agents, they use Hamatash and the Riedran militia.
Dar Terash is a bastion city in [[Nulakesh]], [[Riedra]].
The western gate of [[Riedra]] is the seat of trade across the
[[Sea of Rage]]. A foreign quarter has recently been established, although it is smaller than its [[counterpart|Jhodra]] in [[Dar Jin]]. Dar Ulatesh is a stronghold for the [[Harmonious Sail]],
but there are shadier elements here as well (this is a good
place to contact the [[Dream Merchants]]). In addition, the
city is a training ground for the [[Dreaming Dark]], and it
is home to a number of the [[shadow lines|Chosen]]. Dar Ulatesh is
ruled by the [[Inspired]] Lord Ulatorn ([[usvapna]]
[[Inspired]] telepath), a minister of the [[Iron Gate]].
Along with [[Dul Catun]] and [[Dar Mirn]], Dar Ulatesh is one of the centers of the [[Chosen]] shadow lines.
Dar Vuleer is a bastion city in [[Dor Maleer]], [[Riedra]], on the shores of [[Kelneluun]].
Lady Dara ir'Rael serves as Artium Magister of Religion at [[Morgrave University]] in [[Sharn]]. She heard [[Aureon]]’s call as a child
and spent a century as a cloistered scholar in the
Sealed Library of Dolain. Her treatise //Aureon’s Gift// has revitalized debate on the syncretic nature of the [[Sovereign Host]], and she was a
prominent speaker at the Eighth Revelation of
the [[Pyrinean Creed]]. While ir’Rael is a devout
Vassal, her scholarly work covers all of the [[faiths|religion]]
of [[Khorvaire]], with a deep focus on the [[elven|elf]]
traditions.
Darfellans are a race of brooding [[humanoid]]s found in
the western [[Bitter Sea]], particularly around [[Icewhite Island]].
Once far more widespread, they have been nearly exterminated
by [[fiend]]-worshipping [[sahuagin]] from [[Demonsong Bay]].
A typical darfellan has a hulking, muscular build with a broad back, powerful arms, and a wide neck and head. A darfellan stands a bit over 6 feet tall and weighs nearly 200 pounds. They have webbed digits and are expert swimmers, able to hold their breaths for well over ten minutes.
A darfellan’s most striking feature is their jet-black skin, glossy and hairless, broken by varied white markings. The size, shape, and location of the white
areas distinguish family groups and quickly identify an
individual’s heritage to other darfellans and those who
know how to read darfellan markings.
''Capital:'' [[Rhukaan Draal]]<br/>
''Hallmarks:'' Dungeons, [[goblinoid]] mercenaries, ruins
[[Goblins|goblin]] and their [[kin|goblinoid]] have always been part of [[Khorvaire]]. Their ancient [[empire|Dhakaan]] spread across the lands now
held by other nations, and goblin foundations still stand
underneath many [[human]] cities. This empire collapsed
into savagery, and when humans arrived from [[Sarlona]],
they drove the goblins from their ancestral lands. Thus,
goblins have long been a disenfranchised people, living in the shadows of newer nations or in wild lands
shunned by humans.
The land now called Darguun was once part of [[Cyre]].
The [[hobgoblin]] clans known as the [[Ghaal'dar]] were based
in the [[Seawall Mountains]], but during the war, the demand for mercenaries drew an ever-increasing number of goblins out of the mountains to fight for Cyre and [[Breland]]. Late in the war, a brilliant hobgoblin named Lhesh
[[Haruuc Shaarat'kor]] recognized that the goblins had become the dominant military power in the region. Uniting
the Ghaal'dar under his banner, Haruuc seized the territory he was supposed to protect. The [[Five Nations]] were
unprepared, and [[Breland]] quickly negotiated an alliance
with Haruuc to secure the border. [[Cyre]] fought the goblins until the Day of [[Mourning]], but the majority of delegates involved in forging the [[Treaty of Thronehold]] chose
to recognize the new nation of Darguun to ensure peace.
Darguun is a young and volatile nation, ruled by Lhesh [[Haruuc Shaarat'kor]]. Haruuc remains a brilliant strategist and tactician, but many wonder whether he can
maintain the web of alliances that hold the Ghaal'dar together, and whether he and his people will be content to abide by the terms of the treaty. Other goblins still hidden in the mountains—the enigmatic [[Heirs of Dhakaan]]—could pose a threat both to the goblins
and the rest of [[Khorvaire]].
Traditionally, the [[Ghaal'dar]] worshiped a form of the
[[Dark Six]]. House [[Deneith]] introduced the [[Sovereign Host]] to the region, and some goblins have embraced this faith, especially the gods [[Dol Dorn]], [[Dol Arrah]],
and [[Balinor]].
!! Interesting Things About {{!!title}}
* House [[Deneith]] has a strong presence in Darguun. No one will employ goblin armies in the wake of Haruuc's betrayal, but security forces value smaller units of [[goblinoid]] mercenaries for their ferocity and skills.
* Darguun is a frontier nation. Although recognized by the [[Treaty of Thronehold]], it doesn't abide by the common laws of the treaty nations. Law enforcement is unpredictable, and acts considered criminal in other nations are part of life in Darguun.
* A number of [[bugbear]]-dominated clans known as the [[Marguul]] inhabit southern Darguun. Some of the Marguul refuse to acknowledge the authority of the [[Ghaal'dar]] hobgoblins; these clans are especially dangerous and violent.
* Lhesh [[Haruuc|Haruuc Shaarat'kor]] united the Ghaal'dar clans and seized control of Darguun nearly three decades ago. If you are a non-goblin from this land, you may have been born in captivity. Were you forced into bondage, or did you adopt Darguul customs and earn a place in their society?
!! Darguul Characters
Darguun is a logical point of origin for [[goblin]], [[hobgoblin]],
or [[bugbear]] characters. When creating a Ghaal'dar character from Darguun, consider the following:
* ''Constant Struggle.'' Among the Ghaal'dar, you must constantly prove your strength and skill to gain and hold the respect of your kin. Ghaal'dar rarely kill in a casual battle; you might fight to prove a point but kill only when you must.
* ''Loyal to Your Clan.'' Challenge your peers as you like in times of peace, but when blades unsheathe for war, you stand by your clan—or those allies you have bonded with—until death. This loyalty doesn't extend to warriors of other Ghaal'dar clans.
* ''Muut and Atcha.'' Your ancestors once forged an empire even greater than [[Galifar]]. Perhaps you believe that your people can reclaim this lost glory. The Dhakaani were renowned for their martial skill and their discipline. //Muut// roughly translates to "duty"—your duty to your empire, your clan, and your commander. Muut is expected; if you have no muut, you have no place in battle. //Atcha// corresponds to "honor," especially your personal honor gained by virtuous deeds that transcend the expectations of muut.
!! Cities and Sites
Thirty years ago, this region was part of [[Cyre]]. The goblins converted towns and villages and raised new settlements, but many ruins and abandoned farms remain.
The region is also peppered with dungeons dating back
to the ancient goblin empire; these can be found in the
vast [[Torlaac Moor]] or beneath the [[Khraal]] rainforest.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
Darguun was born in the [[Last War]], and the scars of its
birth are still raw. Most of the Cyran population fled the
goblin uprising, and those who remained were killed
or enslaved. As a result, many burnt-out farms and
abandoned villages have stood empty for decades. The
broken paths of the [[lightning rail]] make travel into the interior difficult, and only the largest cities offer the basic
services common elsewhere in the treaty nations.
Any significant settlement is likely the domain of a
single Ghaal'dar clan. While these clans give their fealty
to Lhesh [[Haruuc|Haruuc Shaarat'kor]], every clan lord holds absolute power
in their town. Some clans are friendly to outsiders and
welcome commerce. Others despise non-goblins. Lhesh
Haruuc has abolished slavery in [[Rhukaan Draal]], but
some of clan lords continue this practice.
Overall, Darguun is a nation that is still finding its
identity—a kingdom that seeks to be more than a seized
territory. The goblins carry the legacy of a mighty empire and stand in the shadow of the nations around
them. Haruuc wants to draw out the best in his people,
to harness their strengths and achieve their potential.
The rest of Khorvaire waits to see if the Ghaal'dar have
the will to remain a nation, and if Darguun can survive
when Haruuc passes away.
Daric [[Velderan]] is the gentlest of the [[Tharashk]] [[triumvirs|Tharashk triumvirate]]. Daric would like to see the house
become a positive force in the war-torn world.
The Dark Pack is an alliance of [[lycanthrope]]s, [[worg]]s,
and other bestial creatures in [[Droaam]] led by an [[elf]] werewolf
named [[Zaeurl]]. The Dark Pack bears a deep hatred for
followers of the [[Silver Flame]].
!! History of the Dark Pack
In the wake of the [[Lycanthropic Purge|Silver Crusade]], many [[lycanthrope]]s fled to [[Droaam]]. Most congregated in the [[Watching Wood]] under the leadership of the werewolf [[Zaeurl]]. However, there are a few independent lycanthropes
scattered across the region. At the end of the Purge, the power of the curse of lycanthropy was weakened, and most of these
survivors couldn't spread the curse to others; they could only
pass it to their offspring. Keen to avoid any chance of further
persecution, many of these renegade lycanthropes spent their
lives solely in animal form. Even today, most members of the
Dark Pack are born in animal form and consider it their true
form. The natural lycanthropes of [[Droaam]] have the ability to
speak in beast form, as [[worg]]s do, though this gift isn't passed
on to creatures they afflict with lycanthropy.
In time, [[Zaeurl]] forged an alliance between the renegade
[[lycanthrope]]s and the native worgs of the Watching Wood, and
this bond—the Dark Pack—remains strong to this day. However,
just as there are a small number of lycanthropes with no ties
to the Pack, there are worg packs scattered across Droaam.
Worgs would often ally with Barrens chibs (chieftains), and [[gnoll]]s of
the [[Barrakas]] clan often form bonds to [[worg]] companions. In
general, the people of [[Droaam]] are quite comfortable with the
presence of large predators, and it's polite to say //ta kuur//—You
speak?—to a beast you've never met before.
In recent years, the potency of the lycanthropic curse has returned. All lycanthropes can spread the curse, but the Daughters and Zaeurl both wish to avoid spreading lycanthropy—at least for the moment. The Dark Pack follows strict instructions—//don't bite unless you intend to kill.// As with [[troll]]s, most town guards understand this rule; if your friend picks a fight with a werewolf, sorry, it //has// to kill them after biting them; that's just a matter of public safety. [[Sora Katra]] is studying the curse of lycanthropy and may
develop ways to prevent accidental contagion... or instead,
she might develop a program of carefully managed infection to
create a new corps of lycanthrope soldiers.
The mightiest and most malevolent beings in [[Mabar]] are
known as the Dark Powers. Each embodies a particular
aspect of Mabar and rules a domain of linked [[layer]]s. Some
have been part of Mabar since the beginning of time, while
others have risen from the fragments consumed by the
Endless Night. Most of the Dark Powers are equivalent in
power to [[archfey]] or [[archfiend|overlord]]s, though they're even stronger
in the layer they're bound to, their seat of power. However,
they have a limited ability to act beyond Mabar, and can
only affect the Material Plane through [[warlock]]s or [[undead]]
servants.
!! The Dark Powers
These are the Dark Powers that are known on [[Eberron]], but there are many more in the shadows.
<<list-links-article "[tag{!!title}sort[title]]">>
The Dark River in [[Karrnath]] flows from [[Lake Dark]] into the [[Iceflow River]].
The Dark Sea lies in the virtually unexplored south, in the expanse between [[Argonnessen]] and [[Xen'drik]]. Its boundaries and dangers are little known, and the “dark” of its name refers less to its lack of sunlight in the winter months than to the
cloud of ignorance surrounding it. Sailors claim that certain regions of the Dark Sea have dramatic tides that create strong currents near the coasts, drawing ships in to
be smashed on reefs or rocks near land.
The Dark Six are the shadows of the [[Sovereign Host]].
These dark gods shape the world and are present at all
times, speaking to those willing to hear them. Where
the Sovereigns govern positive forces, the Dark Six are
the source of fears. [[Arawai]] and [[Balinor]] reflect the positive aspects of nature. The devastating storm, the earthquake, the wildfire? These are the work of the [[Devourer]].
The Dark Six and the [[Sovereign Host]] are opposite
sides of the same coin. If you believe in one, you acknowledge the existence of the other. The only question
is whether you fear the Six or revere them. Those who
choose to follow these sinister deities embrace darkness. A barbarian may thank the [[Fury]] for the gift of rage. An assassin walks the path of the [[Mockery]], while a
[[warlock]]'s pact may be a gift of the [[Shadow]].
The Dark Six inspire worship in different ways among
diverse cultures. Temples to the Dark Six appear in
[[Droaam]], along with wild revels driven by the [[Fury]]. The
Dark Six aren't worshiped openly elsewhere in [[Khorvaire]]; the gods' shrines are hidden, and it's more common to find a cult devoted to a single member of the Six
than a temple dedicated to the entire pantheon.
!! The Six
These common names and attributes describe the Dark
Six as they are known in [[Khorvaire]]:
* The [[Devourer]] is the Sovereign of Wave and Whelm.
* The [[Fury]] is the Sovereign of Rage and Ruin.
* The [[Keeper]] is the Sovereign of Death and Decay.
* The [[Mockery]] is the Sovereign of Betrayal and Bloodshed.
* The [[Shadow]] is the Sovereign of Magic and Mayhem.
* The [[Traveler]] is the Sovereign of Chaos and Change.
!! Symbol
The Hexagram represents the entire pantheon of the
Dark Six, and each has their own symbol. However, since the Six
aren't worshiped openly in most of [[Khorvaire]], each sect chooses a unique symbol based on the nature of their
god. Followers of the [[Devourer]] might carry a shark's tooth or a piece of wood scorched in a wildfire. A [[Keeper]]
cult might use the nine-sided coin of [[Kol Korran]] with
the face disfigured. A particular sect uses these symbols
consistently, if not obviously.
!! Rites
The Dark Six are a mirror of the [[Sovereign Host]] and
their worship uses similar rituals, including formal rituals conducted in song.
Each of the Six has their own rites. Followers of
the [[Fury]] engage in wild revels. Cults of the [[Devourer]]
gather around enormous bonfires. Cults of the [[Mockery]] conduct ritual combats or gather to torture captured enemies.
!! Temples
Temples and shrines of the Dark Six hide behind disguises. A cult of the [[Mockery]] might gather in a slaughterhouse, while a shrine to the [[Shadow]] remains concealed in the deep stacks of a library. Dedicated temples
are built from dark stone, with six doors and the Hexagram engraved in the floor.
A long-dormant shield volcano in the [[Ash Cauldrons]] of [[Xen'drik]], called Darkfire by the tribes who live in its ominous shadow, recently erupted
in an explosion of fire and rocky shrapnel. Now a deep
crater spews flesh-searing gas and hot magma from where
the mountaintop stood. The torrent of fire, a portent of
doom to the local tribes, could be a great gift to House [[Tharashk]]
prospectors seeking the rich reserves of [[Khyber shard|dragonshard]]s
once buried miles below the earth. But Darkfire holds
a sinister secret in its burning heart. After the [[dragon]]s
laid the [[Lords of Dust]] low during the [[Age of Demons]], they imprisoned hundreds of
their fiendish minions within the depths of the volcano. Its eruption has set these [[demon]]s free to spread their evil once more.
Deep in the crater, a great tiger-headed [[balor]] named Cyl-Maaldrake, favored servant of
the [[Lords of Dust]], remains shackled in the heart of a dark crimson maze constructed of Khyber [[dragonshard]]s. Chipping shards from the maze weakens
its hold over Cyl-Maaldrake, and many of the [[fiend]]s
already released are working to disassemble his prison.
Magical darkness spreads from a point you choose within 60 feet to fill a 15-foot-radius sphere for up to 10 minutes. The darkness spreads around corners. A creature with darkvision can't see through this darkness, and nonmagical light can't illuminate it.
If the point you choose is on an object you are holding or one that isn't being worn or carried, the darkness emanates from the object and moves with it. Completely covering the source of the darkness with an opaque object, such as a bowl or a helm, blocks the darkness.
If any of this spell's area overlaps with an area of light created by a cantrip (such as [[light]]), the spell that created the light is dispelled.
Darkweave fabric has strands of shadow
interwoven with black threads to produce a coarse but
beautiful cloth. A character wearing darkweave clothing has an advantage when hiding in low-light conditions.
This rare magic wood is as hard as oak but half the weight. It grows in the forests of [[Aerenal]], but it is native to [[Xen'drik]]. Cultivation of these magical trees goes back to the [[Qabalrin]] [[elves|elf]], who developed darkwood within [[Mabar]]an [[manifest zone]]s.
Political pressure from
rival nations forced [[Aundair]] to recognize the [[Eldeen Reaches]] in the [[Treaty of Thronehold]], but few Aundairians are so willing to forgive the Reachers for what they see as a betrayal.
Foremost among those clamoring for a western war is
Lord Darro ir'Lain, the [[Queen|Aurala ir'Wynarn]]’s second warlord and
commander of the [[Knights Arcane]]. He has a detailed
plan to invade and conquer the Eldeen Reaches,
wresting the rich lands from the treacherous [[Wardens of the Wood]]. Many officials think the idea is folly, since [[Aundair]] is in no shape to mount a hostile
campaign, but Lord Darro is relentless. He agitates
for war, gathering support from nobles by making
promises he likely can’t keep. Lord Darro courts the
[[minister of magic|Adal ir'Wynarn]] at [[Arcanix]], believing that with the
aid of the minister—who is also the queen’s brother—he can force the queen to support his plan to invade and conquer the Reaches.
Darro's disgraced uncle [[Vanson ir'Lain]] is a prominent member of the [[Lords of the Hunt]] in [[Stormreach]].
Warden Darunthar d’[[Kundarak]] is an [[artificer]] in charge of maintaining and improving [[Dreadhold]]’s magical security systems. Darunthar is remarkably hyperactive for a [[dwarf]]. He remains in constant motion, fidgeting if he has to stay in one place for more than a minute. Like his co-warden [[Oralys d'Kundarak]], he has a permanent telepathic bond to Lord Warden [[Zaxon|Zaxon d'Kundarak]].
Daskara was one of the [[Five Nations]] of [[Khorvaire]] before the unification of the continent under the kingdom of [[Galifar]]. It covered much of the area occupied by modern-day [[Thrane]], and was known for its population of devout Vassals of the [[Sovereign Host]]. Its name survives in its ancient capital, the city of [[Daskaran]].
On the southern slopes of the [[Starpeaks]], east of
the [[Trumpet Mountains]], stands the once mighty community of Daskaran. Long ago, during the pre-[[Galifar]] kingdom of [[Daskara]], Daskaran was a vital trade center, but a disastrous fire swept through the city, reducing most of it to rubble. With few supplies left to enable them to survive the winter, the locals descended the foothills to winter in the south. They never returned.
Three centuries later, Daskaran still hasn’t recovered—old stone buildings, many scorched still, line the neat roads, shadowed by the white-needled pines blanketing the hills. Large temples dedicated to [[Dol Arrah]] and the [[Silver Flame]] flank a courtyard
dominated by a statue of [[Tira Miron]] astride a horse, with sword raised. As the sun marches across the heavens, the shadow cast from the sword marks the hours of the day.
//The walls of the chamber were studded with skulls. They were the only source of light in the vast cavern, a hundred skulls glowing like coals in a fading fire. Daine remembered the stories he'd heard as a child, how Sora Maenya would trap the souls of those she devoured. He saw a child's skull peering from a crack in the wall and cursed the gods that would allow such horrors to exist.//
//"Sweet, she was." The voice was the rasp of steel against the whetstone, soft and harsh.//
//A grove of darkwood oaks stood in the center of the cavern. Now Daine saw the three women standing amidst the trees. The speaker was tall and dark, her limbs as gnarled as the dead trees around her, her leather jerkin the color of dried blood. Her companion was an elf-maiden with snow-white skin and glittering blue eyes, a cascade of midnight hair framing her perfect features; though he knew it was an illusion, Daine still felt his heart skip a beat. A third figure watched from the shadows, red eyes peering from the deep hood of her gray robe.//
//"Greetings, traveler," the elf-maid said, and her voice was honey and song. "You have traveled far to reach this place. Wolf and worg, briar and bog, a path long and hard."//
//"Doomed and done," the giantess growled.//
//"Just begun," the graycloak whispered.//
//Daine dropped to one knee. "My ladies," he began, but the elf-maid stopped him with a raised hand. Her features slowly shifted. Now she was human, with eyes like emeralds and hair the color of fire.//
//"We know your purpose, child. My sister speaks of you often. You seek the Blade of Dol Azur. And we can grant your desire. But first you must fulfill ours."//
!
Every child in [[Aundair]] is raised on tales of the terrible [[Sora Maenya]], and any [[Brelish|Breland]] bard can sing a dozen songs about the fools who thought to match wits with [[Sora Katra]]. Few people believed these myths, and no one expected these [[hag]]s to emerge at the head of an army of war [[troll]]s and skullcrusher [[ogre]]s—a power unseen in the west since the time of [[Dhakaan]]. Within a decade the hags established control over the lands beneath the [[Byeshk Mountains]], bringing order to the region for the first time in seven thousand years.
Many questions linger over this newborn nation of [[Droaam]]. For centuries the hags were content to lurk in waste, wood, and swamp. What caused them to leave their haunts and claim a kingdom? Do they intend to extend their control beyond the [[Graywall Mountains]] and claim [[human]] subjects, or is a nation of monsters all that they desire? Is a nation their only desire, or is it only the first step in a far greater scheme?
Individually, the Daughters of Sora Kell are three of the most powerful beings on [[Khorvaire]]. [[Sora Maenya]] and [[Sora Katra]] are monsters of legend, and this should be taken into account when dealing with them. They have faced and defeated the champions of centuries past and will not be easily impressed or intimidated. Through [[Sora Teraza]], they already know much about the adventurers before they ever encounter them; a DM should make full use of this knowledge.
There are many ways to involve the Daughters in a campaign, and many of them don't involve fighting with the player characters. Sora Teraza is one of the most gifted oracles of the age, and the party may need her mystical insights. Sora Katra is engaged in schemes stretching across Khorvaire, and the party may get caught up in the machinations of [[Daask]] or House [[Tharashk]]'s dealings with the [[hag]]. The hags possess many forgotten secrets and ancient treasures plucked from the depths of the [[Demon Wastes]] and the ruins of the [[Dhakaan]]i Empire. They are often willing to bargain with adventurers, trading treasures for services or making potentially deadly wagers. The tales of Sora Katra are full of seeming triumphs that turn to disaster. Through Sora Teraza, the Daughters know much of the future, so that a seeming victory over them may have long-term consequences the adventurers didn't anticipate and which can transform what seemed like success into a hollow victory or worse. Perhaps the Blade of Dol Azur will allow you to kill Haskalask the Black, but perhaps that's just what the Daughters want.
The Daughters' mother was Sora Kell, one of thirteen immortal night hags said
to have been created by [[Eberron and Khyber|Progenitor Dragons]] at the dawn of
time. Each had a different father; in some stories these were
[[fiend]]s, in others, [[giant]]s. Regardless, they possess inherited
power, which has only increased over centuries of schemes
and adventures. While the Daughters are usually spoken of
together, each is a legend in her own right; they each have their
own goals and distinct personality, and each one can offer
different hooks for story or adventure.
!! The Three Sisters
[[Sora Katra]], the Voice of Droaam<br/>
[[Sora Maenya]], the Fist of Droaam<br/>
[[Sora Teraza]], the Dream of Droaam<br/>
''District Type:'' Professionals<br/>
''Buildings:'' Temples ([[Olladra]] and [[Onatar]]), shrine
([[Boldrei]]), average lodging (15), upscale food (11),
average food (25), exotic trades (11), upscale trades
(15), average trades (40), upscale services (40), average services (80), upscale residences (40), average
residences (80)<br/>
''First Impression:'' Small businesses cluster in
towers surrounded by residential areas, and look
little different than the homes around them.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Ambassador Towers]] (northeast); [[Dragon Towers]] (south); [[Sword Point]] (southeast); [[Vallia Towers]] (below); [[Mithral Tower]] (above)
Dava Gate is a quiet district where professional
services outnumber trades. Architects and cartographers, barristers and sages, healers and fortunetellers all coexist in Dava Gate's small business
parks. These clusters of professionals are sometimes
themed by the type of service offered—for example,
one floor of Calsin Tower includes a number of
services devoted to animals: an animal trainer, a
kennel, a mews, a stable, and a veterinarian.
The [[Upper Menthis]] representative on the [[city council|Sharn Council]] is [[Thurik Davandi]], an accomplished tailor specializing in [[glamerweave]] garments.
He also secretly supplies [[darkweave]] clothing to the
[[Boromar Clan]], and his goods are at least partly to
blame for the [[City Watch|Sharn Watch]]'s inability to put a damper
on the Boromar Clan's criminal activities.
The Dawn Empress of the [[Amaranthine City]] of [[Irian]] is the first and greatest of the [[Architect]]s. Her defining principle is growth, the opportunity to reach your full
potential, and all [[layer]]s of her realm reflect this.
The Dawn Empress is a [[celestial]] figure wreathed in light, though she can
assume the shape of any [[humanoid]] or [[angel]]. She presides over
festivals and tends the needs of her people, but she spends
much of her time focused on the cultivation of her planar seeds.
She occasionally works with mortals, typically [[warlock]]s; while
she may have missions tied to planar seeds or to clashing
with agents of [[Mabar]], she also gives her agents tasks that are
designed to help them with their own growth and evolution.
The [[Mabar]]an counterpart of the Dawn Empress is the [[Empress of Shadows]].
A dawn shard is special variety of Eberron [[dragonshard]] found only in [[Q'barra]]. Dawn shards are pale orange with crimson threads, and possess remarkable magical qualities. They are worth five times as much as standard [[dragonshard]]s of similar size.
The miners of [[Q'barra]] have yet to discover the source of this unusual power. The truth is that dawn shards are charged with the divine power of the [[Silver Flame]]. As a result, using these dragonshards may result in unexpected effects.
When planted in the earth throughout the jungle surrounding [[Haka'torvhak]], dawn shards form a "web of light" that helps bind the [[overlord]] [[Masvirik]], the Cold Sun. Together with the [[dusk shard]]s that sequester Masvirik's darkness, the Cold Sun remains bound.
[[Chervina the Architect|Chervina d'Ghallanda]] maintains a retinue of several hundred masons and other artisans—and enough guards to keep the local monsters and bandits at bay—so that she can build new House [[Ghallanda]] [[enclave]]s. These Dawn-Builders
never know where they’ll be going next, because
Chervina doesn’t announce the location of her next
project in advance, her whims guided by the [[Draconic Prophecy]]. They might spend their summer
building an enclave in the [[Shadow Marches]], then construct another in the [[Eldeen Reaches]] in the autumn, before heading to the [[Aundair]]-[[Breland]] border to start
an enclave that Chervina says must be finished before
spring. Sometimes Chervina employs mercenaries
from House [[Deneith]] or rangers from House [[Tharashk]]
to keep her Dawn-Builders safe, but often she relies on
House Ghallanda guards or local adventurers.
Dawn's glory is a flower that only grows in [[manifest zone]]s to [[Irian]]. It has euphoric properties and is used to make a drug often called fool's hope or liquid courage. This drug
grants temporary immunity to fear, but with the side effect of
encouraging dangerous and foolhardy behavior; it's strictly
illegal in [[Sharn]], due to the risk of users jumping off bridges.
//“Grant me your obedience, and I shall reward you with protection. Grant me your devotion, and I shall bathe you in the magnificence of my presence. Turn away from my benevolent guidance, and I shall pick my teeth with your bones.”//
<div align="right">—Dawnwing of the [[Vast]]</div>
Dawnwing prefers using the name his [[goblin]] servitors
invented; to the great [[gold dragon]], the name reflects his
beauty and magnificence. In his lair on the [[Vast]], Dawnwing rarely comes into contact with the elder [[dragon]]s of [[Argonnessen]], the only ones who might care about family
names and official titles. So Dawnwing he remains.
Centuries ago, Dawnwing hatched amid fanfare and high hopes. His parents, both young [[gold dragon]]s, served the [[Chamber]] and hoped their child would outdo them in devotion and accomplishment. Sadly, their hopes died only a few decades after Dawnwing’s hatching. The young dragon displayed arrogance, selfishness, and a desire for power incompatible with the [[Chamber]]’s goals. When Dawnwing left for the [[Vast]], his parents made one last effort to convince their errant child to rethink his priorities. Dawnwing turned a deaf ear and has not returned to the [[Tapestry]] since.
For several years, Dawnwing fought to establish his place in the [[Vast]]. During construction of his lair, the dragon unearthed a tribe of [[goblin]]s hiding underground. He pressed the goblins into his service, and now the tribe serves him with fear-filled devotion.
Dawnwing is by no means the strongest [[dragon]] on the [[Vast]], but his great arrogance and unconquerable spirit makes him a dangerous up-and-comer. Dawnwing sees a great destiny in his future, and shows no compunctions about killing anyone who threatens that vision.
!! Description
Dawnwing takes his name from his magnificent coloring. The bulk of his scales shine a bright, buttery gold. His underbelly and the tips of his wings are a creamy ivory. The span of his wings and his whiskers hold the pale yellow tint of the sky just before the sun rises. Dawnwing’s orange irises glow in the molten gold of his eyes.
Larger than his peers, Dawnwing measures 45 feet from snout to tail. His outstretched wings measure 50 feet from tip to tip, and his curving tail is almost 20 feet long.
Dawnwing prefers to keep his hoard hidden and safe, but he does wear one item regularly: a white-gold torc set with a dozen topazes, each gem as large as a man’s fist.
!! Lair
Dawnwing believes a [[dragon]] of his stature deserves
a palatial lair to reflect his magnificence. Such a lair takes much time and expense to create, however, not to mention valuable building materials that could better reside in his hoard. Dawnwing thus compromises with an ordinary lair that seems extraordinary. His "Palace of the Sun" is filled with illusory gilding; he enjoys reclining in his Zenith Lounge, sunlight refracting colorfully through an opal crystal, while he is served by his gold-painted Dawn Servant Tribe of [[goblin]] minions.
''Date: '' [[20 Olarune|Khorvaire calendar]]
The nation of [[Cyre]] was destroyed in 994 YK on this
date, known as the Day of [[Mourning]]. Although that
event had an impact on everyone in [[Khorvaire]], this day
of remembrance is especially significant to Cyran survivors. It is a time when Cyrans come together to recall
their lost kingdom. Some tell stories or sing traditional
songs, ensuring that their culture isn't forgotten. Other
survivors still seethe with anger at the enemies who
brought Cyre down, and thus far the holiday has been
marked by a brief upturn in violence.
Dayne Bay off the coast of [[Frostfell]] is named after Lord [[Boroman ir'Dayne]], founder of the [[Wayfinder Foundation]], for his pioneering expedition to the frozen continent decades ago. The bay is part of the [[White Sea]].
The borders of the [[Mournland]] are defined
by a wall of thick, gray mist that rises thousands of feet
into the air and forms a canopy that hides the ruined
realm even from above.
The area covered by the mist is a shadowy, muffled region devoid of life, sunlight, and sound. The wall of mist
ranges in thickness from a few hundred feet to as much
as five miles. Travelers who linger in the mist suffer a
growing sense of claustrophobia and despair. It's easy
to get lost in the impenetrable fog, and some travelers have wandered in circles, unable to find their way either
through the mist or back outside it, until their food or
water ran out or they blundered into the path of some
mutated terror.
Patches of mist and less oppressive fog dot the interior of the [[Mournland]], but the worst effects of the mist
are confined to the border region.
A death dog is an ugly two-headed hound that roams plains and deserts, especially those close to [[manifest zone]]s to [[Mabar]]. Hate burns in a death dog's heart, and a taste for [[humanoid]] flesh drives it to attack travelers and explorers. Death dog saliva carries a foul disease that causes a victim's flesh to slowly rot off the bone.
A death kiss is a lesser [[beholder]]-kin. Instead of magical eye rays, it has ten long tentacles, each ending in a mouth full of teeth. In coloration and shape it is similar to the beholder that dreamed it into existence, but its hue is more muted.
A death kiss survives solely on ingested blood, which it uses to generate electrical energy inside its body. Paranoid about dying from starvation, it obsessively drains even little creatures such as rats in an effort to stave off this fate for as long as possible. After it drains its prey, it abandons the corpse to scavengers. When underground, it uses its tentacles as feelers, prodding and examining the environment in all directions. Above ground, it usually keeps its tentacles retracted when on the hunt, then lashes out and extends them to their full length to catch opponents off guard.
A death kiss lacks the combat finesse and intelligence of a beholder. It might attempt an unusual maneuver to control its prey (such as flying up while grappling), but in most cases, it attaches one or more of its tentacles to a creature and drains blood until its prey collapses. If it is in a superior position and its opponent poses no threat, it might toy with its food, slowly squeezing and draining the life out of a creature.
You touch a creature and grant it a measure of protection from death.
For up to eight hours, the first time the target would be incapacitated as a result of taking damage, the target instead only suffers a minor injury, and the spell ends.
If the spell is still in effect when the target is subjected to an effect that would kill it instantaneously, that effect is instead negated against the target, and the spell ends.
Death's Finger is a channel between [[Farlnen]] and [[Stonespur]] in the [[Lhazaar Principalities]]. It connects the [[Bitter Sea]] to the [[Straits of Orthoss]].
The Deathguard of [[Aerenal]] is an order of knights sworn to eradicate evil and [[Mabar]]an [[undead]], along with any who would deal with
such vile creatures. The order was formed to destroy
the [[line|Aereni noble line]] of [[Vol]], and it built its headquarters in [[Shae Cairdal]] as its first base of operations. Most in the order follow the custom of appearing [[undead]] by having skull tattoos inscribed upon their faces.
When remarkable [[elves|elf]] die, they are preserved beyond
death. Most are tied to [[spirit idol]]s, statuettes that preserve
the soul and prevent its dissolution in [[Dolurrh]]. But others are
raised as deathless, [[undead]] similar to [[Mabar]]an [[oathbound|mummy]] but sustained by positive energy. This can be drawn from [[Irian]] [[manifest zone]]s—such as the one in [[Shae Mordai]]—but it is also generated by love and
devotion. Deathless soldiers guard the catacombs
and temples, and deathless sages and councilors share their
knowledge and wisdom with their descendants. Living elves are protected and served by their deathless ancestors, and in return, they sustain them with their prayers.
Over time, the
deathless can rise to an even greater state, becoming beings of
pure spirit with little need for a body. These spirits, known as
ascendant councilors, reside in the great city of [[Shae Mordai]],
and it is when their spirits join together in a mystical gestalt
that they wield [[divine power|divine magic]].
Many outsiders assume that the ascendant councilors //are//
the [[Undying Court]], and it's true they are the source of its power.
But the Undying Court refers to //all// the undead guardians of
the island, from the soldiers to the [[spirit idol]]s. As an [[Aereni|Aerenal]] elf, you may not expect to become an ascendant councilor—this is a process of
evolution that typically takes thousands of years—but you can
aspire to join the Undying Court after death.
Most Undying soldiers are considered [[creature tier]] 2, but the most powerful deathless—including the ascendant councilors—are tier 3.
The forging of a pact between a [[warlock]] and a patron is no minor occasion—at least not for the warlock. The consequences of breaking that pact can be dire and, in some cases, lethal. A warlock who fails to live up to a bargain with a [[Mabar]]an patron runs the risk of rising from the dead as a deathlock, a foul [[undead]] driven to serve its otherworldly patron from beyond the grave.
An extraordinarily powerful [[necromancer|necromancy]] might also discover the dark methods of creating a deathlock and then bind it to service, acting in this respect as the deathlock's patron.
''District Type:'' Adventurer's quarter<br/>
''Buildings:'' Temples ([[Silver Flame]], [[Sovereign Host]]),
shrines ([[Dol Dorn]], [[Olladra]], the [[Mockery]]), average
lodging (25), poor lodging (45), average food (20),
poor food (60), upscale trade (3), average trades (25),
poor trades (60), average services (20), poor services
(60), average residences (20), poor residences (80)<br/>
''First Impression:'' People from all walks of life
and all corners of [[Khorvaire]] can be found in
Deathsgate. Former soldiers and war [[wizard]]s rub
shoulders with explorers and aspiring [[artificer]]s,
and conversations in half a dozen languages can be
heard at any given moment.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Little Barrington]] (southwest); [[Dancing Shadows]] (north); [[City of the Dead]] (east); [[Little Plains]] (bridge, northwest); [[Dragoneyes]] (below); [[Dalan's Refuge]] (above)
Officially, Deathsgate takes its name from its proximity to [[Halden's Tomb|City of the Dead]]; a massive bridge connects the district to the necropolis, and funerary services are
often held in the small temples of the district. But
over the centuries, Deathsgate has become a home for
those who challenge death on a daily basis—explorers,
adventurers, and mercenaries of all stripes. Whether
they are looking for companionship, spellcasting, or
equipment, a party of adventurers should be able to
find what they seek in Deathsgate.
Like its counterpart in [[Upper Dura]], [[Clifftop]],
Deathsgate offers an exceptional range of services,
but these are rarely the best the city has to offer. Many
magic items are available, but the ceiling on prices keeps characters from acquiring exceptionally powerful items. However, the shops of Deathsgate are more
than happy to buy or sell partially used charged items.
The pawnshops generally offer 45% of value for almost
any sort of goods, except those that are obviously stolen.
Occasionally a fence can be found here, though usually
this requires a trip to [[Dragoneyes]] or [[Lower Dura]].
While similar to [[Clifftop]] in many respects,
Deathsgate has a less savory reputation. While the
explorers of Clifftop often seek to gain knowledge or
to help people in need, Deathsgate caters to those who
simply love gold or bloodshed. The people of Deathsgate are not necessarily evil—but they don't care about
the moral consequences of their actions.
A number of [[dragonmarked house]]s maintain
outposts in Deathsgate. House [[Jorasco]] maintains a
large house of healing and does a brisk trade. House
[[Deneith]] has a small [[enclave]] from which it recruits
many of its [[Blademark|Blademarks Guild]] warriors. House [[Sivis]] has an
office of the [[Speakers Guild]], including a message
station, translation services, and a few barristers who
specialize in the many concerns of adventurers.
Other businesses in Deathsgate include ''Ancient Blades'', a mystical forge that deals in magic arms and armor; ''Dark Words'', a dealer in scrolls; and ''Bottled Silver'', a potion merchant.
!! Noteworthy Locations
* The [[Deathsgate Guild]]. A society where adventurers can hone their skills and seek profitable work. The Deathsgate Guild has a sinister reputation, earned because its members will do anything in pursuit of success.
* [[Karr'Aashta's Investigations]]. A [[Tharashk]] inquisitive agency that specializes in jobs dealing with the [[Cogs]].
* The [[Guild of Starlight and Shadows]]. The guildhall of one of [[Sharn]]'s most prestigious [[arcane order]]s. A reliable source for arcane spellcasting services.
* [[Maynard's Menagerie]]. This [[Vadalis]] storefront deals in exotic pets and animal companions, along with barding and other useful gear.
* [[Redblade's]]. A comfortable tavern catering to the adventurers of the [[Deathsgate Guild]]. Redblade is rumored to have a side business selling [[poison]] and venoms.
Adventurers who are willing
to take on any job and to do whatever it takes to triumph
might find themselves suited for membership in the
Deathsgate Guild. Named for its proximity to the [[City of the Dead]], the district of [[Deathsgate]] prides itself on
being a haven for those who challenge death on a daily
basis. The guild's founder, [[Kassh "Blackaxe" Droranath|Kassh Droranath]],
doesn't care how his members do their jobs, as long as
they don't fail.
The Deathsgate Guild enclave includes a small
shrine to the [[Mockery]], a god many of the Deathsgaters secretly revere. However, this shrine is carefully hidden, and new members are vetted before
they are allowed to find out about the shrine.
This box contains a set of parchment cards. A full deck has 34 cards; a deck found as treasure is usually missing a few cards.
The magic of the deck functions only if cards are drawn at random (you can use an altered deck of playing cards to simulate the deck). You can draw a card at random from the deck and throw it to the ground at a point within 30 feet of you.
An illusion of one or more creatures forms over the thrown card and remains until dispelled. An illusory creature appears real, of the appropriate size, and behaves as if it were a real creature, except that it can do no harm. While you are within 120 feet of the illusory creature and can see it, you can move it magically anywhere within 30 feet of its card. Any physical interaction with the illusory creature reveals it to be an [[illusion]], because objects pass through it. Someone who visually inspects the creature may be able to identify it as illusory. The creature then appears translucent.
The illusion lasts until its card is moved or the illusion is dispelled. When the illusion ends, the image on its card disappears, and that card can't be used again.
|!Playing Card |!Illusion |
|Ace of hearts |[[red dragon]] |
|King of hearts |four knights |
|Queen of hearts |[[succubus or incubus|incubus/succubus]] |
|Jack of hearts |an [[Eldeen|Eldeen Reaches]] [[druid]] |
|Ten of hearts |[[cloud giant]] |
|Nine of hearts |[[ettin]] |
|Eight of hearts |[[bugbear]] |
|Two of hearts |[[goblin]] |
| | |
| | |
|Ace of diamonds |[[beholder]] |
|King of diamonds |[[Arcanix]] archmage and mage apprentice |
|Queen of diamonds |[[night hag]] |
|Jack of diamonds |assassin |
|Ten of diamonds |[[fire giant]] |
|Nine of diamonds |[[oni]] |
|Eight of diamonds |[[gnoll]] |
|Two of diamonds |[[kobold]] |
| | |
| | |
|Ace of spades |[[lich]] |
|King of spades |[[Silver Flame]] [[cleric]] and two acolytes |
|Queen of spades |[[medusa]] |
|Jack of spades |elite soldier |
|Ten of spades |[[frost giant]] |
|Nine of spades |[[troll]] |
|Eight of spades |[[hobgoblin]] |
|Two of spades |[[goblin]] |
| | |
| | |
|Ace of clubs |iron [[golem]] |
|King of clubs |four bandits |
|Queen of clubs |[[erinyes]] |
|Jack of clubs |[[Carrion Tribes]] berserker |
|Ten of clubs |[[hill giant]] |
|Nine of clubs |[[ogre]] |
|Eight of clubs |[[Jhorash'tar]] [[orc]] |
|Two of clubs |[[kobold]] |
| | |
| | |
|Jokers (2) |You (the decks owner) |
The prisoner in the Deep Ward or [[Dreadhold]], cell fourteen, is a mystery even to his jailers. Only Lord Warden [[Zaxon d'Kundarak]] knows the identity of this man, although it is common knowledge that he was shipped to Dreadhold by order of King [[Kaius III|Kaius ir'Wynarn III]]. He arrived at Dreadhold in 995 YK, and was immediately sent to his cell. His head and face are hidden beneath a steel mask sealed with an [[arcane lock]]. While this leaves his mouth free, some enchantment woven into the metal prevents him from speaking, and the guards have instructions not to allow him near anything that could be used as a writing implement. His movements are sluggish, leading some to believe that he has suffered brain damage, while others say this is another magical effect of the mask. All that is known for certain is that Kaius III wants this man kept alive—but he must not communicate with anyone.
Under the foundries of [[Fernia]], tunnels extend down below
the [[Sea of Fire]] into the earth below. These are the domains of
the [[dao]]. Like the foundries above them, each has a distinct style
tied to the sensibilities of the dao who dwells there. Streams
of lava and pools of fire run through the halls, along with veins
of metal and minerals. While not as luxurious as the estates of
the [[efreeti]], these often showcase the wondrous creations of the
dao in residence; adventurers could find a hall whose walls are
decorated with a thousand swords, or a brass garden filled with
cunning [[construct]] songbirds. But some dao are paranoid, and
deep halls can also contain a host of powerful and deadly traps.
This mining operation in the
[[Seawall Mountains]] of northern [[Zilargo]] is a collaboration
between House [[Kundarak]], Clan [[Mroranon]] (possibly
the best miners and smelters in [[Khorvaire]]), House
[[Tharashk]] (which found the site in the first place),
and House [[Sivis]] (which handles relations with the
[[Zilargo]] government). This mine extracts pure platinum from veins more than a mile below the surface.
Clan Mroranon’s smiths make ingots of the platinum
bullion, which House Kundarak uses as internal currency when transferring wealth from a Kundarak bank to a national government or to another Kundarak
bank. Security is omnipresent, both to prevent theft by
surface dwellers and because the miners sometimes
disturb monsters from the depths of [[Khyber]].
Like other [[daelkyr]], [[Valaara]] is bound within a [[demiplane]] in
[[Khyber]]. However, Valaara has bred burrowing worms that chew
through the fabric of reality, carving a web of passages between
her Deepest Hive and the world above. An organization that
discovers the upper layers of these tunnels could use them to
move swiftly across the world, entering a tunnel in the [[Lhazaar Principalities]], traveling five miles, and emerging in [[Sarlona]] or the [[Eldeen Reaches]]. Smugglers or explorers might make use of this wonder, never knowing what lies in the deeper tunnels—until Valaara's minions seize them, or until they are consumed by the psychic influence of the Crawling Queen. While tunnels to the Deepest Hive can appear anywhere that suits the story, they are also less permanent than the ties between [[Eberron]] and
the realms of many other daelkyr. It's possible to collapse a passage and break a connection.
The upper tunnels of Valaara's realm are usually formed
of fused glass-like material, then as explorers delve deeper,
they find the walls formed of chitin and muscle, with insects
swarming across every surface. One might discover pulsing
cocoons, nests of slumbering [[purple worm]]s, or chambers lined
with thousands of glowing eggs. And in the heart is the Deepest
Hive itself, where Valaara weaves its webs and conducts its
sinister experiments.
This suit of lightweight, skin-tight armor is made from tiny blue scales that glitter in the sunlight. The wearer of this armor can swim twice as fast as normal, breathe underwater, see in darkness out to 60 feet, and survive the intense pressure of deep water.
The Deepwood is a forest in the [[Shadow Marches]]. It is split by a tributary of the [[Glum River]]. The Greatwenge [[Embrisa]] is located in a hidden wetland grove in these woods, a place her [[druid]]s call the Wengeweald.
Some of the gap in House [[Deneith]]’s income since the end of the [[Last War]] has been filled by an explosion in the demand for Deneith’s bodyguards and garrison troops. Trade caravans, mining operations, and ambitious noble families all need protection.
This set of dominoes comes with one-hundred white
pieces and one black piece. The dominoes can be placed
on any surface, even vertical walls and ceilings, and will
stay upright until removed or knocked over by another
domino.
You can speak the set's command word to cause the black piece to fall over, triggering a chain reaction that knocks over any dominoes arranged in a row.
!! [[Sovereign Host]]
<<list-links-article "[tag{!!title}tag[Sovereign Host]sort[title]]">>
!! [[Dark Six]]
<<list-links-article "[tag{!!title}tag[Dark Six]sort[title]]">>
!! Other Deities
<<list-links-article "[tag{!!title}!tag[Sovereign Host]!tag[Dark Six]sort[title]]">>
At the end of the eighth century YK, Delera [[Omaren|Omaren family]]
was the pirate queen of the [[Thunder Sea]]. Although
her buccaneers were not as brutal as the [[Amanatus|Amanatu family]],
she was bold and clever (she famously felled the [[dragon]] [[Xakolondar|Xarkon the Stormheart]]), and she had amassed a following and a fortune by the time [[Galifar]] sought an end to piracy. When the [[Stormreach Compact|History of Stormreach]] was
drawn up, no one questioned Delera’s right to sit on
the council.
As it turned out, Delera was better suited to the life
of a pirate than that of an administrator. She invested
much of her fortune in the [[Stormreach Forge]] and the
[[Foundry]], and her family was tasked with maintaining
the infrastructure of the city and outfitting the [[Stormreach Guard]]. Lacking political savvy, Delera agreed to provide these services at too low a cost, and over the years, this generosity caused the Omaren fortune to fade as the other [[Storm Lords]] profited.
There are more dead than living in [[Respite]], and their
necropolis is Delera’s Watch. Named after the tomb of
[[Delera Omaren]], one of the city of [[Stormreach]]’s founders, the necropolis is the resting place for [[Storm Lords]], pirate captains,
and wealthy explorers. The pirate tombs are filled with
traps and wards, and [[undead]] guardians are prepared to
stop robbers from frustrating the dead pirates’ attempts
to take their wealth and treasure maps with them.
As a burial site, this land is very old. The necropolis’s hillocks are all burial mounds from the [[Age of Giants]], and below the surface lie sepulchers and
bone-filled pits. Despite constant efforts to stop them,
[[undead]] often rise from these dark places, and stories
abound of catacombs where mummified corpses have
lain undisturbed for more than forty thousand years.
Using the land around Delera’s Watch as a makeshift graveyard, generations of poorer citizens have, depending on their cultures, buried their dead in simple graves or left corpses out for scavengers to devour. This hodgepodge of grave markers and bone piles is like a moat around the stately tombs and sarcophagi of Delera’s Watch itself.
The [[Demesne|Demesnes]] of Memory is located
in [[Fairhaven]] in [[Aundair]]. Embodying
the discipline of the written word, it
houses [[Phiarlan]]’s stories and history. Novelists, playwrights, and poets
are all students of memory. This Demesne
contains one of the finest libraries in [[Khorvaire]], a
repository both of general knowledge and songs
and stories.
House [[Phiarlan]]'s [[Demesne|Demesnes]] of Motion in [[Breland]]’s capital,
[[Wroat]], focuses on physical arts such as dance,
gymnastics, and contortion. Acrobats of the [[Carnival of Shadows|Entertainers and Artisans Guild]], a traveling circus sponsored by the house,
and spies of the [[Serpentine Table]] study here. The Demesne also teaches martial arts, both ancient elven styles and new techniques developed by the school. For students
of motion, combat is a celebration.
House [[Phiarlan]]'s [[Demesne|Demesnes]] of Music is in [[Flamekeep]], the capital
of [[Thrane]]. The Demesne teaches the arts of
sound, both song and the use of instruments.
While most [[bard]]s learn the basic traditions
of music, the members of this Demesne delve
deeper in their study of the fundamental
principles of music. These teachings reflect
a wealth of musical techniques from across
[[Eberron]]. Instructors here are well versed in
[[Adaran|Adarans]] chant, [[Marcher|Shadow Marches]] throat-singing, [[Thelanian|Thelanis]] ballads, and battle-chants of [[Shavarath]].
The Demesne of Shadow, originally located in
[[Metrol]], the one-time capital of [[Cyre]], was reestablished
in [[Sharn]] following the Day of [[Mourning]]. This [[Phiarlan]] [[demesne|Demesnes]]
teaches the arts of [[illusion]]. Deceptive magics are a powerful tool
in the field of entertainment, and the Demesne
of Shadow helps those who can wield these
powers perfect their techniques. In addition to
[[bard]]s, [[wizard]]s and [[sorcerer]]s can be found at
the Demesne of Shadow honing their illusionist
aspirations. While magic is typically the focus,
the demesne also teaches the verbal arts of
deception and coercion, of feigning emotion and
playing a role. Actors and orators learn their
craft at this Demesne, but these techniques can
also be useful to diplomats and spies. A storyteller learns his
tales at the [[Demesne of Memory]], but at the Demesne of
Shadow he learns how to bring them to life.
The Demesne of Shadow is led by House Baron [[Elvinor Elorrenthi d'Phiarlan]].
House [[Phiarlan]]'s [[Demesne|Demesnes]] of Shape is in [[Thaliost]], in [[Thrane]].
It is focused on material arts such as sculpting and painting. Its students also create the
resources the house requires for its entertainers, from fine instruments to sets and costumes. The smallest and least populated demesne, it holds a specialization few others have the expertise to teach.
Most masters of these arts left the house for [[Thuranni]] during the [[Shadow Schism]]; the former headquarters of the Demesne of Shape was located in [[Atur]], at an [[enclave]] now called the [[True Shapers]].
[[Phiarlan]] tradition divides the arts into five disciplines.
Although Phiarlan [[enclave]]s can include
those who practice any of the disciplines, the most important enclaves are
the five centers known as demesnes
where the greatest artists and teachers
of each discipline can be found.
!! The Demesnes
<<list-links-article "[tag{!!title}sort[title]]">>
The demiplanes of [[Khyber]] are somewhat like the layers of other
[[plane]]s. Each demiplane has limited space, though it could be
as small as a house or as large as a nation. Its borders might be
defined by impassible physical barriers or walls of force, or the
pocket of space could wrap around—if you walk far enough in
one direction, you'll find you've looped back to where you began.
Reaching a demiplane requires a portal. In some cases, travel
also requires rituals or planar conjunctions, and some portals
may be impassable, sealed by the ancient wards of [[dragon]]s
or [[Gatekeeper|Gatekeepers]] [[druid]]s. However, many portals are not only
active, but nearly imperceptible; adventurers walking down
a tunnel may pass through a portal to the [[Ironlands]] without
ever knowing it. Portals are static, remaining in one place, and
as long as one remains open, adventurers can always retrace
their steps to return to it. Demiplanes may have two or more
portals, each leading to anywhere on the Material Plane. The
realm of [[Dyrrn]] the Corruptor has portals beneath the [[Shadow Marches]] and the [[Ironroot Mountains]], while both the [[Kech Shaarat]] [[goblinoid]]s of [[Darguun]] and the [[Ghaash'kala]] [[orc]]s of the [[Demon Wastes]] make use of portals tied to the [[Ironlands]]. As such, demiplanes can allow rapid travel across long distances;
adventurers could enter a demiplane below [[Q'barra]], walk what
seems like only a mile, then emerge from a tunnel into [[Breland]].
Demiplanes have much in common with Eberron's thirteen
[[plane]]s. Natural laws may not apply within, and time, space, or
other elements may behave in unnatural ways. A demiplane
could have some of the properties of another plane, like the
Burning Bright property of [[Fernia]] or the Primordial Matter
property of [[Lamannia]]. But there's no universal theme that
unites all demiplanes; each one is entirely unique. Some sages
say that these demiplanes are Khyber's dreams. Others believe
that demiplanes are unfinished ideas—early drafts of reality or
seeds that never quite became planes.
While demiplanes are usually limited in size, there's no
inherent logic to their construction. It's possible to be a mile
below the surface of Eberron when you discover a valley that
appears to be open to the sky... but it's not the sky of [[Eberron]]!
Unlike the planes, the demiplanes of [[Khyber]] don't contain any
of Eberron's celestial objects—there could be moons, rings,
even suns in the sky, but they'll be entirely unfamiliar.
While there's no common theme that unites all demiplanes,
there are three common categories of demiplane: hearts,
prisons, and shadows.
!! Heart Demiplanes
The [[overlord]]s—[[Rak Tulkhesh]], [[Sul Khatesh]], and others—are
said to be Khyber's first children. They were the first [[fiend]]s to
physically manifest, and each overlord brought forth a host of
lesser fiends. When a fiend dies, its essence returns to [[Khyber]].
Each one is bound to and reincarnated in a particular demiplane
within Khyber—the heart of an overlord. This is one reason the
overlords can't be permanently destroyed; each is part of the
architecture of Khyber itself, and the overlord's form that can be
encountered in Eberron is simply a projection of its essence. To
defeat the overlords, the champions of the [[Age of Demons]] used
the [[Silver Flame]] to bind their immortal essence, preventing
them from returning to their heart demiplane to reform. This
essentially severed the brain from the heart—but the heart
demiplanes still exist. The lesser servants of the overlord—its
[[rakshasa]] and other fiend minions—return to the heart when
they reform, and should an overlord's bonds be broken, it will
recover its full strength in its heart realm.
Heart demiplanes are relatively small, around the size of a
large city. Each reflects the overlord it's tied to in appearance
and properties. Just as the shard-prison of an overlord's spirit
can affect a region, portals to a heart realm often affect the
surrounding area; what's believed to be a manifest zone to
[[Shavarath]] might instead be a portal to the [[Bitter Shield]].
While the overlords aren't consciously present in their hearts,
their essences still permeate them. Heart realms are typically
inhabited by a host of lesser fiends bound to that overlord.
Many have no desire to return to Eberron until their overlords
are free, while others serve in the [[Lords of Dust]], using the
heart as a refuge. A couple hearts are described below, but
there are at least thirty—one for each overlord.
* the [[Bitter Shield]]: [[Rak Tulkhesh]]
* the [[Tower of Shadows]]: [[Sul Khatesh]]
* [[Ashtakala]], the Demon City, which extends into the Material Plane
!! Prison Demiplanes
When something is described as being “trapped in Khyber,” it
usually means it's trapped in a demiplane somewhere in Khyber.
The most infamous prisoners of Khyber are the [[daelkyr]], but
there may well be others—either immortal spirits or mortal
creatures that were trapped in the demiplane by their enemies.
[[Dyrrn]] the Corruptor dwells in the [[Palace of Sinew]], and
[[Belashyrra]] in the [[Citadel of Lidless Eyes]]. [[Valaara]] is bound in
the [[Deepest Hive]]. It's said
that the daelkyr [[Orlassk]] dwells in a fortress carved into a giant
gargoyle that roams the tunnels of Khyber; it could be that
the gargoyle exists in Orlassk's prison realm, or perhaps the
massive creature contains a portal to its prison.
When dealing with a prison demiplane, the DM will have to
decide the limitations of the portals. In the case of the daelkyr
demiplanes, the daelkyr can't leave them, but other creatures
can freely enter or depart. So Dyrrn's minions can swarm out
of the Palace of Sinew, but as long as the [[Gatekeepers]]' [[seals|dimensional seal]]
remain intact, Dyrrn itself cannot leave. The nature of the
binding and the power of the daelkyr is such that they have
shaped their demiplanes in their image, but lesser creatures
could be trapped in more traditional prisons.
!! Shadow Demiplanes
Unlike heart and prison demiplanes, shadow demiplanes serve
no clear purpose. They aren't prisons or fortresses of evil,
but rather, strange reflections of the world. Much like [[Xoriat]],
they often defy natural logic—and this often gives them great
value. Beneath the [[Ironroot Mountains]] in the [[Realm Below]], the
[[dwarves|dwarf]] found a realm where precious stones grow on trees.
In the [[Vale of the Inner Sun]], creatures don't age.
Many sages call these “shadow demiplanes” because many
seem to be shadows of other planes; the [[Abyssal Forest of Khaar]] is a reflection of [[Lamannia]], while the [[Ironlands]] bears some resemblance to [[Shavarath]]. But in fact, demiplanes of Khyber have no ties to the other planes, nor are they touched by
the natural influence of Eberron or the celestial light of [[Siberys]].
Perhaps the concepts woven into these demiplanes are echoes
of Khyber's dreams or hints of what might have been... or
perhaps their resemblance is inexplicable coincidence.
Shadow realms may hold important resources that can be
used or harvested—but these regions always have a malevolent
aspect. [[Fiends|fiend]] are common, and even mortal creatures that
dwell there are sinister. Remaining in a shadow realm for too long is usually an invitation to corruption. There are countless shadow demiplanes, some small and others vast; those
mentioned here are just a few examples.
* the [[Abyssal Forest of Khaar]]
* the [[Ironlands]]
* the [[Vale of the Inner Sun]]
!! House Orien and Demiplanes
Demiplanes can serve as wormholes to distant locations—a valuable means of transporting people and goods! [[Orien]] has discovered one such passage; its [[enclave]]s in the cities of [[Passage]] (in [[Aundair]]) and [[Varna]] (in the [[Eldeen Reaches]]) are built above portals that connect to a tiny, safe shadow
demiplane. This allows Orien to move between these two
cities within minutes. However, the two cities are already
close and well connected, so this has remained a secret
resource instead of being put to widespread commercial use.
Recently, however, the [[war|Last War]] and the [[Mourning]] have
disrupted many of Orien's trade routes, and the development
of the [[airship]] is threatening the house's dominance of
overland travel. Desperate to regain security, Baron Kwanti
d'Orien is actively searching for new demiplane channels. He
dreams of finding a route providing safe, swift passage across
the Mournland, which could become an Orien commercial
route or even carry a [[lightning rail]]. But Kwanti has no idea just
how dangerous demiplanes can be, and in these efforts, he
could easily open doors that should've been left closed.
Demons are the embodiment of chaos and evil—engines of destruction barely contained in monstrous form. Possessing no compassion, empathy, or mercy, these [[fiend]]s exist only to destroy. The mightiest of these are the [[overlord]]s, which shaped the world to match their evil whims during the [[Age of Demons]].
While many demons are children of [[Khyber]], native to the [[demiplane]]s, they can also be found in [[Fernia]], [[Dolurrh]], [[Shavarath]], and other [[plane]]s, representing some destructive or savage aspect of those planes.
!! Types of Demon
<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
''Capital:'' None<br/>
''Hallmarks:'' Fiends, pestilence
Rivers of lava cut across plains of black sand and volcanic glass. The only vegetation consists of blood-red
moss and a thick layer of shimmering slime. A jagged
rock formation might be a piece of an ancient wall, if you
stretch your imagination.
Tens of thousands of years ago, [[fiend]]s ruled [[Khorvaire]]. The Demon Wastes held the seat of power for
some of the mightiest [[archfiend|overlord]]s, home to cities of
[[rakshasa]]s and [[demon]]s. Most of these foul entities perished or fled long ago, but a few still linger in this place
even as new ones crawl up from the depths of [[Khyber]].
A handful of primordial ruins sustained by dark magic
dot the bleak landscape—ruins that may still be home to
fiends and their treasures.
The northern coastline of the region is beset with spires of [[demonglass]] which can pierce the hull of a ship in an instant. The [[Shadowcrags]] and [[Icehorn Mountains]] separate the Demon Wastes from the [[Eldeen Reaches]]. A series of canyons known as the [[Labyrinth]] further separate the Demon Wastes from the rest of
[[Khorvaire]]. Due to ancient warding magic, any creature
that wishes to leave must do so through the Labyrinth.
These passes are guarded by the [[Ghaash'kala]], tribes of
[[orc]]s sworn to contain the evils of the Wastes. Beyond
the Labyrinth, the mortal inhabitants of the Demon
Wastes include a brutal people known as the [[Carrion Tribes]]. Each tribe is devoted to an [[archfiend|overlord]], and they
engage in endless battles against the [[Ghaash'kala]] and
the other Carrion Tribes.
If you're creating a character from the Demon Wastes,
you're likely associated with either the Ghaash'kala or
one of the Carrion Tribes.
!! Interesting Things About {{!!article}}{{!!title}}
* A variety of [[fiend]]s inhabit the Wastes, including [[devil]]s, [[rakshasa]]s, and [[demon]]s. These creatures are spawned by [[Khyber]], not the Outer Planes.
* The Demon Wastes are riddled with portals to abyssal demiplanes, unearthly realms populated by fiends and other horrors. These inner realms include vast and twisted forests, living oceans, realms of rusted iron, and stranger places.
!! Ghaash'kala Characters
The [[Ghaash'kala]] are primarily [[orc]]s, but their numbers
include a few [[half-orc]]s and members of other races.
They devote their lives to guarding the [[Labyrinth]] and
containing the evils of the Wastes. When creating a
Ghaash'kala character, consider the following:
* ''The Binding Flame.'' The Ghaash'kala worship Kalok Shash, the "Binding Flame." Fundamentally the same religion as the [[Silver Flame]], Kalok Shash is a harsh faith that requires all able-bodied folk to fight in the endless war against the forces of darkness.
* ''Sacred Champions.'' As a Ghaash'kala, you are a champion of the Binding Flame. A [[paladin]] sworn to the Oath of Vengeance, a barbarian on the Path of the Zealot, and a [[cleric]] of the Light or War domain all represent a logical path for a Ghaash'kala character. Outlander and hermit are appropriate backgrounds, reflecting your harsh upbringing or religious devotion.
!! Carrion Tribes
The [[Carrion Tribes]] descend from explorers and refugees twisted by the evil in this realm. Explorers usually encounter these savage folk as enemies, but occasionally a hero emerges from the shadows. When creating a character from the Carrion Tribes, consider the following:
* ''Sworn to an Overlord.'' Your tribe is devoted to an [[archfiend|overlord]]. This can serve as the roots of a [[warlock]]'s pact or the inspiration for a barbarian's rage. Are you still loyal to your dark lord, or did you break free from its influence? Either way, work with the DM to develop the details of your overlord.
* ''Child of a Savage Land.'' You were born into a lawless realm where violence was the only constant. How have you adapted to life on the other side of the [[Labyrinth]]? Are you superstitious, refusing to adapt to this new world, or are you doing your best to learn the ways of this strange realm?
* ''Why Did You Leave?'' You began your life as a servant of darkness. Have you embraced the light? Are you fighting the servants of your former master? Or are you a pawn in a conflict between [[overlord]]s? You might serve an evil force, but the cultists you fight serve even darker powers.
!! Cities and Sites
Settlements are few and far between in the Demon Wastes. The Carrion Tribes are semi-nomadic, assembling camps in the crumbling ruins of long-forgotten cities built by [[demon]]s in the first days of the world.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>
Demonglass is similar to obsidian, but virtually indestructible, and as hard as [[adamantine]]. Buildings from the [[Age of Giants]] civilization that dwelled in the [[Demon Wastes]] were partially made from demonglass, and the demonglass portions are often all that are left standing of the ruins. The "needle teeth" of [[Shargon's Teeth]] in the [[Thunder Sea]] were made from demonglass by the [[Lurker in Shadow]] during the [[Age of Demons]], and can pierce the hull of a swiftly moving ship despite being just a few inches in width. Demonglass can also be found scattered along the northern coast of the [[Demon Wastes]].
While wearing this armor, you can cause two incorporeal skeletal wings to sprout from your back for 1 hour or until you choose to end this effect.
Once you have used this property, it can't be used again until the next dawn.
Demonsong Bay lies off the coast of the [[Demon Wastes]]. A violent tribe of [[fiend]]-worshipping [[sahuagin]] dwells in these waters.
The Demonsong Channel passes between the [[Demon Wastes]] in [[Khorvaire]] and [[Tlalusk Island]].
''District Type:'' [[Gnome|gnome]] neighborhood<br/>
''Buildings:'' Temples ([[Aureon]], [[Onatar]]), upscale lodging (5), average lodging (16), upscale food (15), average food (20), exotic trades (10), upscale trades (15),
average trades (25), poor trades (12), upscale services
(15), average services (25), average residences (200)<br/>
''First Impression:'' The buildings here, from quiet and
neat little townhomes to shops and services of all kinds,
are scaled for the district's gnome inhabitants.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Platinate]] (south); [[University District]] (southwest); [[Highest Towers]] (bridge, northwest); [[Skysedge Park]] (bridge, north); [[Twelve Pillars]] (bridge, northeast); [[Copper Arch]] (bridge, east); [[Smoky Towers]] (below)
Den'iyas is known as the [[gnome]] neighborhood of
[[Sharn]], though barely ten percent of the city's gnome
population lives in this district. Few people of other
races call it home, and its gnome residents cleave
to their traditional customs unlike their more
integrated brethren in the rest of the city. There
are usually a dozen subtle power struggles going on
between the major families of Den'iyas, and even
the most innocuous event could be part of some
elaborate intrigue. Information of all types can be
acquired here, but those with secrets must be careful
around the inquisitive gnomes, lest they become the
object of blackmail, curiosity, or deceit.
!! Noteworthy Locations
* [[Davandi Fine Tailoring]]. In addition to being the [[city councilor|Sharn Council]] representing [[Upper Menthis]], the gnome [[Thurik Davandi]] is an accomplished tailor and [[magewright]] who produces the finest [[glamerweave]] clothing available in Sharn.
* The [[Khavish Theater]]. Established by and for [[gnome]]s, the Khavish has ample seating for small creatures, and its shows make extensive use of illusions.
''Leader:'' [[Breven d'Deneith]] <br/>
''Headquarters:'' [[Sentinel Tower]] ([[Karrlakton]], [[Karrnath]])<br/>
''Dragonmark:'' [[Mark of Sentinel]]
//Protection is my purpose. I defend the innocent from those who would do them harm. For my siblings, this is a job; for me, it's a calling.//
<div align="right">—Harric d'Deneith, [[Sentinel Marshal|Sentinel Marshals]]</div>
House Deneith was born in [[Karrnath]], and war flows in
its veins. For centuries, the [[Blademarks Guild]] of House
Deneith has governed the mercenary trade. While warriors with the [[Mark of Sentinel]] are among its most elite
forces, House Deneith brokers the services of a wide
range of soldiers, including [[Valenar]] war bands and the
[[goblin|goblinoid]]s of [[Droaam]]. Beyond the battlefield, the [[Defenders Guild]] provides exceptional bodyguards for those
who can afford their services. House Deneith is also
renowned for its [[Sentinel Marshals]], agents who hold
the authority to pursue criminals and enforce the law
across the length of [[Khorvaire]]. The Sentinel Marshals
hold the honor of the house in their hands. Being a Marshal is a privilege, and it comes with high expectations.
Despite its might and the desire of some house members to flex their military muscles, House Deneith has
always maintained absolute neutrality, selling its services to all sides of a conflict. Baron [[Breven d'Deneith]]
shows no inclination of using the massive, [[chimera]]-marked military forces of his house for his own ends,
but he's surrounded by aggressive advisors who would
like to see a Deneith ruling all [[Khorvaire]]. House Deneith is also caught in an escalating rivalry with House [[Tharashk]], as it edges into the mercenary trade.
!! History of House {{!!title}}
The first humans to exhibit [[dragonmark]]s were members of a militant noble family with ancestral lands in what is now [[Karrnath]]. With the [[Dragonmark of Sentinel|Mark of Sentinel]] bolstering their military prowess, the Deneith family
conquered most of the region; only famine prevented
them from carving out their own kingdom in what is
now western Karrnath. The Deneith homeland was
also the home of [[Karrn the Conqueror]]. Although
he was not a member of the family, House Deneith
pledged fealty to Karrn during his rise to power.
When [[Galifar I|Galifar ir'Wynarn]] united the [[Five Nations]], he charged
the house with the protection of his vast new realm.
!!! The Last War
Most members of House Deneith
are culturally [[Karrnath]]i, but the house refused to
choose sides in the [[Last War]]. Instead, House Deneith
offered mercenaries from its [[Blademarks Guild]] to
all of the [[Five Nations]]. Deneith crafted its contracts
to ensure that Deneith fighters would never cross
swords with other Deneith. One [[Cyran|Cyre]] general was
infuriated when the blademarks under his command
wouldn’t attack a Deneith-guarded garrison. The
Cyrans attacked the blademarks who refused to fight,
but were routed by the combined forces of the blademarks and the Deneith garrison guards.
House Deneith generally remains at arm’s length
from political maneuvering among the other [[dragonmarked house]]s. But since the [[Last War]], it has started to make cautious moves against House [[Cannith]] and
House [[Tharashk]]. The reason is simple: In the latter
days of the war, both made significant inroads against
Deneith’s dominance in the soldiers-for-hire market.
Every [[warforged]] soldier built by House Cannith and
every (sometimes monstrous) mercenary offered by
House Tharashk is direct competition.
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
The House [[Deneith]] [[enclave]] in [[Stormreach]] is a hilltop keep across the [[Koronoo River]] from the city proper. [[Forgelight]]’s north side is
unprotected by walls, so House [[Deneith]] built its keep
there, providing protection where there was none.
Only respected clients and [[dragonmark]]ed heirs are
granted entry to the central keep, which can seem empty.
Here visitors from the [[Five Nations]] can stay, supervise
the [[Blademarks|Blademarks Guild]], and negotiate deals away from the rabble
on [[Stormreach]]’s streets. The enclave is headed by the
formidable [[Greigur d'Deneith]], and visitors
are met by [[Bereschel d'Deneith]].
Also called a "sentinel shield", this targe is emblazoned with a symbol of an eye. While holding this shield, a creature with the [[Mark of Sentinel]] gains advantage when detecting hidden dangers, or when taking their first action when ambushed or surprised by enemies.
One of the most important products
of the forests of [[Aerenal]], densewood is a strong, hard,
heavy wood similar to iron in its properties. A densewood item weighs twice as much as the same item made from most common wood, and typically costs twice as much or more.
Derro slink through the subterranean caverns of the [[Realm Below]]. Equal parts fearful and vicious, these [[dwarf]]-kin are afflicted with a wide variety of lunacies and paranoias that very often give way to murderous rage. Wild-haired, haggard, shuddering, and shabbily dressed, a lone derro seems a pitiable creature, but when a cackling, spitting, growling, howling horde of them attacks, the sight inspires both fear and revulsion.
Derro appear as small, [[dwarf]]-like [[humanoid]]s with blue-gray skin and white hair and eyes. They are almost exclusively found in the [[Realm Below]] in the [[Ironroot Mountains]], and in particularly high concentrations near the ruined [[Noldrunhold]], leading some to believe the derro are all that remain of the Noldrun dwarves, having been transformed by the influence of [[Dyrrn]], the Corruptor.
//''Derro Madness.''// All derro suffer from a form of madness that most often manifests as mania, paranoia, and violence, but other mental afflictions and strange tics also commonly affect them. You can use the Derro Madness button below to generate one or more odd qualities for a derro NPC.
<$button>
<$action-chooserandom $dataTiddler="$:/DerroMadness" $number="2" $unique="true" $field="mad" $opt="comma"/>
Derro Madness
</$button>
<$vars first={{{[{!!mad}split[,]nth[1]]}}} second={{{[{!!mad}split[,]nth[2]]}}}>
''Oddity 1: '' <<first>><br/>
''Oddity 2: '' <<second>>
</$vars>
Known at various times as Greenholt, Newholt, or
Kymar's Folly, this outpost has served as an [[Aundair]]ian settlement, a [[Thrane]] hermitage, and an outpost
of House [[Lyrandar]]. It's fallen three times, and no one
knows exactly how. Each time, its inhabitants have
vanished in a single night, leaving all their possessions
behind. Today it's known as Desolate, and it awaits the
next band of settlers willing to stake their claim.
A great legend recorded on the walls of numerous [[giant]] temples of [[Xen'drik]] speaks of four weapons of fantastic power, pivotal in the fight against the [[quori]]. Known collectively as the destiny arms, these legendary weapons have long been lost
to history.
The destiny arms are artifacts rumored to have
once possessed powers far beyond their current abilities.
DMs are encouraged to create opportunities for characters to discover and unlock these additional powers. Though originally sized for the giants who built them, each of
the destiny arms automatically changes size as appropriate
for its wielder.
!! Destiny Arms Campaign Arc
These so-called destiny arms are the [[glaive of the darkest depths]], the [[maul of the glacial heights]], the [[spear of the desert winds]], and the [[staff of the magma falls]]. The [[Inspired]] are desperate to make sure these weapons are never turned against them again. Finding all these weapons could form an entire mid-level to high-level Xen’drik campaign arc, spanning a good deal of the continent and giving PCs a number of chances to fight against these psionic masterminds. But what happens after all the weapons are recovered? Some suggestions follow.
Scattered rumors over the course of the adventure
might indicate that the destiny arms, when brought together,
somehow show the way to the [[heart|il-Lashtavar]] of [[Dal Quor]]. Once
they have located all four of the destiny arms, the PCs may find a massive camp of [[Inspired]] agents attempting to reopen a gate to Dal Quor and bring
the remote plane coterminous to [[Eberron]] once more. The
PCs have only one chance to use their powerful weapons
against the Inspired before the [[Dreaming Dark]]’s diabolical plans come to fruition.
Once in possession of any of these weapons, the PCs
will likely become targets of the [[Inspired]] and the [[Dreaming Dark]]. At the same time, they might well be courted by any number of institutions, organizations, and [[dragonmarked house]]s that would pay handsomely to own or display the
artifacts. In the end, the PCs might find that possessing
any of the destiny arms is more trouble than it’s worth.
For up to 10 minutes, you sense the presence of magic within 30 feet of you. If you sense magic in this way, you can see a faint aura around any visible creature or object in the area that bears magic, and you learn its [[school of magic|spell school]], if any.
The spell can penetrate most barriers, but it is blocked by 1 foot of stone, 1 inch of common metal, a thin sheet of lead, or 3 feet of wood or dirt.
For up to 1 minute, you can read the thoughts of surrounding creatures. You can focus your mind on any one creature that you can see within 30 feet of you. If the creature you choose has no more than animal intelligence or doesn't speak any language, the creature is unaffected.
You initially learn the surface thoughts of the creature—what is most on its mind in that moment. You can either shift your attention to another creature's thoughts or attempt to probe deeper into the same creature's mind. If you probe deeper, and are successful overcoming the creature's mental safeguards, you gain insight into its reasoning (if any), its emotional state, and something that looms large in its mind (such as something it worries over, loves, or hates). If it succeeds, the spell ends. Either way, the target knows that you are probing into its mind, and unless you shift your attention to another creature's thoughts, the creature can attempt to snuff out your mental probe and end the spell.
Questions verbally directed at the target creature naturally shape the course of its thoughts, so this spell is particularly effective as part of an interrogation.
You can also use this spell to detect the presence of thinking creatures you can't see. When the spell is active, you can search for thoughts within 30 feet of you. The spell can penetrate barriers, but 2 feet of rock, 2 inches of any metal other than lead, or a thin sheet of lead blocks you. You can't detect a creature with no more than animal intelligence or doesn't speak any language.
Once you detect the presence of a creature in this way, you can read its thoughts for the rest of the duration as described above, even if you can't see it, but it must still be within range.
Devas are [[angel]]s that act as divine messengers or agents to the Material Plane or other [[plane]]s. Legend tells of angels that take mortal form for years, lending aid, hope, and courage to goodhearted folk. A deva can take any shape, although it prefers to appear to mortals as an innocuous [[humanoid]] or animal. When circumstances require that it cast off its guise, a typical deva is a beautiful humanoid-like creature with silvery skin. Its hair and eyes gleam with an unearthly luster, and large feathery wings unfurl from its shoulder blades.
Devils personify tyranny. These [[fiend]]s live to conquer, enslave, and oppress. They take perverse delight in exercising authority over the weak, and any creature that defies the authority of a devil faces swift and cruel punishment.
Devils native to different [[plane]]s express different aspects.
* The devils of [[Daanvi]] represent law in the service of oppression, tyranny and personal gain.
* In [[Fernia]], devils represent the intentional use of fire as a weapon or to inspire fear.
* The [[ice devil]]s and [[chain devil]]s of [[Risia]] represent bitter isolation, and the ice that entombs and preserves. But these creatures may actually not be true devils, but rather [[manifestation]]s of the mysterious Killing Cold.
* In [[Shavarath]], devils represent disciplined practice of war in pursuit of oppression, and most serve the Legion of [[Tyranny]].
Devils may revere the [[Dark Six]], but like all other creatures, have no direct access to them. Even devils must take their existence on faith.
!! Types of Devil
<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
Personal identity has no value to Devotion, a [[changeling]] of [[Riedra]]. Service
to the [[Thousand Eyes]] is the center of her existence, and
names, faces, and personalities are simply tools she uses
in this task. Her skills and dedication have earned her
the personal interest of Lady [[Sharadhuna]]. Devotion is
often assigned sensitive missions on behalf of her mistress. She could be sent to observe the PCs and to interact with them in a variety of guises, testing their reactions to
different situations and offers. Should Lady Sharadhuna decide to involve the characters in her rivalry with the [[Dreaming Dark]], Devotion is her emissary.
Devotion has no single favored form. While she has
a few cover identities she uses in her work, if no specific
face is required, she wears a new one every day, changing
voice and mannerisms to match. Her one defining trait
is her utter loyalty to Lady [[Sharadhuna]], and no offer can
tempt her to turn on her mistress.
The Devourer is the tsunami that overwhelms the tallest
ship, the wildfire that consumes the grandest castle, the
earthquake that levels the most glorious city. He is the vast
and primordial power of nature, a force that will break any
chain and wear down the strongest wall. The Devourer is the
glorious cruelty that drives the predator, the cry of the hawk
and the howl of the wolf. He is all that is wild, savage, and
unknowable. He is the deepest ocean, a force that can be
crossed but never controlled.
Those who fear the Devourer see him as an entirely
destructive force. [[Arawai]] is the patron of agriculture, of
peacefully harvesting nature's bounty. [[Balinor]] is the patron
of the hunt, of civilized folk using bow, spear, and skill to
challenge or tame the mightiest beasts. These deities reflect
the power of civilization to harness and control the natural
world, but the Devourer puts the lie to this, showing that
nature will never be truly tamed.
Those who embrace the Devourer celebrate the glorious
power of the wilds. They revel in the raging storm and
gladly embrace their predatory instincts. They accept that
nature is often bloody and cruel, and don't hesitate to follow
its example. But while it may be harsh, nature is rarely evil.
Priests of the Devourer often urge their parishioners to
follow their instincts, or teach people to live in accord with
nature instead of forcing their will upon it. They may serve
as intermediaries, convincing the Devourer to redirect his
wrath and spare their followers—or to turn his rage against
their enemies.
The Devourer's symbols include a bundle of five sharpened bones, or a [[dragon turtle]].
The Devourer of Dreams
is the ruling entity of the [[Dreaming Dark]]. Between its many duties and
the risk—however slight—that someone on [[Eberron]] could bind it, the
Devourer rarely leaves [[Dal Quor]]. In
its absence, the most influential member of the Circle of Night is the dominator [[Tirashana]].
Home to the finest collection of artifacts from [[Xen'drik]] in
[[Khorvaire]], [[Morgrave University]]'s Dezina Museum
fills many of the mid-levels of Dalannan Tower. Its
collection would be even more impressive were it
not for the strong tendency the University has to sell
valuable artifacts rather than put them on display,
not to mention the steady stream of items routinely
stolen from the museum. More interesting (at least
to some) than the museum's displayed collection are
its vaults, vast rooms below the publicly accessible
areas of the museum that contain unopened crates
of treasures waiting to be cataloged, shelves of artifacts deemed uninteresting, and a few secret rooms holding items too important or dangerous to put on
public display.
The [[goblinoid]] Empire of Dhakaan was built on a foundation of martial skill. For thousands of years during the [[Age of Monsters]] it dominated [[Khorvaire]], until the coming of the [[daelkyr]]. For all of their skill, the Dhakaani goblinoids could not stand against the might and madness of the Lords of [[Xoriat]]. By the time the [[Gatekeeper|Gatekeepers]] [[druid]]s bound the daelkyr and their servants in the depths of [[Khyber]], the empire was a shadow of its former glory. Over the course of millennia it collapsed into savagery, and by the time [[humanity|human]] arrived on Khorvaire from [[Sarlona]], all that was left of the empire was ruins.
Goblinoids in the time of Dhakaan had an almost supernatural eusocial bond and discipline; their concepts of //muut// (duty) and //atcha// (personal honor) were ingrained into their very beings, and each [[goblin]], [[hobgoblin]], and [[bugbear]] strove to uphold their place in society to the best of their ability. This was largely due to the [[Uul Dhakaan]], the "Dream of the Empire" that all goblinoids shared. Because of this powerful cooperative efficiency, the Dhakaani were able to create marvels of engineering and alchemy that even House [[Cannith]] cannot reproduce today (for example, [[adamantine]] smelting). But when the [[daelkyr]] and their armies of [[aberration]]s invaded Khorvaire, they severed that eusocial bond in a spreading [[madness|Kapaa'vola]]. This loss of oneness quickly led to internal strife, civil war, and collapse of the empire over the course of just a few generations. Today, [[goblinoid]]s are still an organized martial culture as were their ancestors, but //muut// and //atcha// are just words, not instincts that come as naturally as breathing.
There is one exception: the [[Heirs of Dhakaan]]. As the empire crumbled, a few of the greatest generals and leaders took their clans into hiding, determined to preserve the knowledge of the Dhakaani through the darkness they saw coming.
With the rise of [[Darguun]], the clans have finally emerged, with //muut// and //atcha// fully intact. If they united behind a single ruler, the Dhakaani clans could easily unseat the Lhesh [[Haruuc|Haruuc Shaarat'kor]], and if they conquered Darguun, the Dhakaani could pose a threat to the other nations of [[Khorvaire]].
!! Dhakaani Magic Items
The Dhakaani mastered techniques of metallurgy and smithing that
Cannith has yet to learn. They know techniques for refining
and working [[adamantine]] alloys and other exotic metals, and
for binding arcane energies into their creations. In ancient
times, the empire produced many mighty artifacts. DMs will
have to decide whether the [[present-day Dhakaani|Heirs of Dhakaan]] still have
the ability to craft new artifacts, or if their greatest secrets were lost in the collapse of the empire.
The daashor ([[artificer]]s of Dhakaan) value function over fashion. Their tools and
weapons are impeccably designed, but typically austere in
form: blackened adamantine or steel, with emblems of clan
and empire woven unobtrusively into the design. In addition
to adamantine weapons, Dhakaani may produce any sort
of magical arms or armor. While the Dhakaani use
swords, bows, and spears, their champions often field flails,
maces, and mauls. Other Dhakaani magic items are usually
focused on battlefield use. For example, magical banners or
instruments could inspire allies or instill fear in enemies.
The Heirs of Dhakaan seek to recover Dhakaani artifacts and
legendary items, and they'll try to claim these most valuable
items from other creatures through force or diplomacy. While
it may disturb a warrior of Dhakaan to see a human wearing
Dhakaani armor or carrying an adamantine blade from an
imperial forge, they don't need to recover every relic of the
past, and they may allow this to pass without incident.
<<list-links-article "[tag{!!title}tag[magic item]sort[title]]">>
Dhavordrin is the master of the Dragon's Heart stable of the [[Red Ring]] of [[Stormreach]]. This aged [[elf]] stablemaster, an exile from [[Aerenal]],
is from an older day when free [[Bloodbound]] were as
numerous as slaves in the Red Ring and his stable
was strong. Now he has only fifteen Bloodbound,
but they are all well seasoned fighters. He feels he is too old to stand against [[Malketh|Malketh Zolark]] and is waiting to be swept aside by the passage of time, but if roused to action by the PCs, he can prove a valuable ally to them and [[Kolos]].
The Diamond Theater is
something new in [[Lower Menthis]]—competition
for the [[Ten Torches]] Theater in [[Torchfire]]. With
its large stage, copious seating (it seats 1,000 comfortably), and renowned artist-in-residence, the
Diamond manages to exude an air of sophistication in a ward all about base entertainment. [[Luca Syara]], the Diamond's resident playwright, is the
hottest thing going in [[Sharn]]'s entertainment world
at present. Many of her plays wrestle seriously with
issues raised by the [[Last War]], exploring themes of
nationalism, shattered idealism, alienation and
grief, and the search for meaning in a war-ravaged
world. For many, such serious, modern plays hold no interest and draw nothing but derision, but even those who hate her still talk about her. Her contract with the Diamond expires in another year, and certain circles buzz constantly with speculation about what [[upper-ward|upper ward]] theater will snatch her up at that point.
Queen Diani ir’Wynarn leads the royal family of [[Thrane]], which serves merely as a
figurehead in the theocracy. She has spent the last few years building a coalition of royalists to help restore power to her family. She has
been careful to conceal her true motives, taking
every effort to keep her meetings with foreign
powers secret. If word of her plots reaches the ears
of High Cardinal [[Krozen]] or the rest of the [[Council of Cardinals]], she might find herself pushed to act before her line is ended for good.
!! Throneholders
A growing movement of [[Galifar]] Loyalists in [[Thrane]] (known colloquially as "Throneholders") believe that Queen Diani should lead [[Thrane]] into the next century. Many of these loyalists are wealthy nobles whose families have
served the [[Wynarn line|Wynarn family]] for generations, and they trust
that Diani will reward their loyalty and support them
when she returns to power.
Throneholders hold festivals and gatherings for events the nobility supported in years
past. Some are willing to extend their loyalty to the nobility to outright subterfuge, espionage, or political opposition of the theocracy. The proponents of monarchy gather all the information they can of the theocracy’s failings, disseminating their critical tracts
to all who would read them.
You teleport yourself from your current location to any other spot within 500 feet. You arrive at exactly the spot desired. It can be a place you can see, one you can visualize, or one you can describe by stating distance and direction, such as "200 feet straight downward" or "upward to the northwest at a 45-degree angle, 300 feet."
You can bring along objects as long as their weight doesn't exceed what you can carry. You can also bring one willing creature of your size or smaller who is carrying gear up to its carrying capacity. The creature must be within 5 feet of you when you cast this spell.
If you would arrive in a place already occupied by an object or a creature, you and any creature traveling with you each take a hefty amount of force damage, and the spell fails to teleport you.
A dimensional seal is a massive stone slab covered with
a complex pattern of runes and sigils. The seal projects
an invisible field in a 2-mile radius. This field blocks
all forms of [[conjuration]] magic and any other effect that
involves teleportation or planar travel. Dimensional
seals are usually found in the [[Eldeen Reaches]] and the
[[Shadow Marches]]—reminders of the conflict between
the [[Gatekeepers]] and the [[daelkyr]]. The techniques used
to create these seals have been long lost. It's said that as
a whole, the dimensional seals keep the daelkyr bound
in [[Khyber]] and prevent [[Xoriat]] from becoming coterminous with [[Eberron]]. If enough of these seals are destroyed, there could be dire consequences for the world.
Dinosaurs are widespread on Eberron, particularly in [[Q'barra]], the [[Talenta Plains]], [[Xen'drik]], and [[Argonnessen]]. Smaller dinosaurs are the rule in Q'barra and the Talenta Plains, including varieties commonly used by Talenta [[halfling]]s as mounts.
<<list-links-article "[tag{!!title}sort[title]]">>
Dire beasts are larger, tougher, meaner versions of ordinary animals. Each kind tends to have a feral or prehistoric appearance, while some blur the line between [[beast]] and [[monstrosity]].
<<list-links-article "[tag{!!title}sort[title]]">>
Comfortable on land or in water, these enormous, brilliantly colored snakes are renowned for their potent and hallucinogenic venom, which can cause [[short-term madness]]. They are most often found in coastal caves.
Dire wolves are [[dire|dire beast]] versions of grey wolves. They are encountered individually, or in packs of 3 to 8.
Dire wolves are mottled gray or black, growing up to eight feet long and weighing up to 700 pounds. They tend to be more aggressive than their non-dire counterpart.
The Direshark [[Principality|Lhazaar Principalities]], named after the [[dire beast]] and led by Prince [[Kolberkon]], is the dominant force in the [[Eel Bay]]. Its seat is [[Port Verge]] on the island of [[Questor]]. The Diresharks have an intense rivalry with the [[Seadragons]], and Prince Kolberkon sees himself as next in line for the position of High Prince.
The Diresharks have struck deals with House [[Lyrandar]] for financing the development of [[Port Verge]], so that it might rival [[Regalport]]. In exchange, Lyrandar hopes to assert their influence over the [[Lhazaar|Lhazaar Principalities]] merchant fleets and compete with the [[Seadragons]] (and their House [[Orien]] [[couriers|Couriers Guild]]). Lyrandar also intends to put pressure on Prince [[Kolberkon]] to help apprehend the excoriate [[Koulton Brightwind]], Prince of the [[Wind Whisperers]].
Duur’kala, or "dirge singers", are mighty [[bard]]s of the [[Kech Dhakaan|Heirs of Dhakaan]]. This ancient tradition was developed in the Empire of
[[Dhakaan]] (the legendary [[Jhazaal Dhakaan]] was a dirge singer), and is largely unknown beyond the [[goblinoid]]s of
the modern-day clans. The duur’kala are the historians, diplomats, and spiritual leaders of the empire, and their music is the most common form of magic among
the Dhakaani.
Duur'kala are trained to inspire
their people and direct soldiers on the battlefield. Students of
both history and war, dirge singers use tales of past glory and
their knowledge of great victories to inspire their allies and
provide keen strategic insight, directing allies to strike when
enemies are weak.
As the magic manifests
mostly in women, duur’kala are often
called //gaanu duur,// “daughters of the
dirge,” and elders are referred to as
//niianu duur//, “mothers of the dirge.”
A dirge singer’s training often includes time within
the [[Uul Dhakaan]]. An [[uul’kur|dream key]] allows the novice duur’kala to
experience historical events within the dream or to study
with the memory-shades of duur’kala masters.
Lord Dirge Tiriandara d'Kundarak serves as adjunct professor of Banking and Economics at [[Morgrave University]] in [[Sharn]].
Hailing from the [[Mror Holds]], Lord Dirge
distinguished himself, graduating from both
the Kundarak Auditors Academy and Bard’s College of Keys, as well as from the other
banking adjuncts within the [[Ironroot Mountains]]
and House [[Kundarak]], becoming one of the few
traveling house scion auditors to travel all of
[[Khorvaire]]. When not instructing on the finer
points of tuning lock and key, his duties involve
testing the magical defenses of many vaults
and fortresses. His favorite pastime includes
cataloguing his adventures and the exploits of
his companions in song and verse.
You make yourself—including your clothing, armor, weapons, and other belongings on your person—look different for up to one hour or until you dismiss it. You can seem 1 foot shorter or taller and can appear thin, fat, or in between. You can't change your body type, so you must adopt a form that has the same basic arrangement of limbs. Otherwise, the extent of the illusion is up to you.
The changes wrought by this spell fail to hold up to physical inspection. For example, if you use this spell to add a cape to your outfit, objects pass through the cape, and anyone who touches it would feel nothing. If you use this spell to appear thinner than you are, the hand of someone who reaches out to touch you would bump into you while it was seemingly still in midair.
A thin green ray springs from your pointing finger to a target that you can see within 60 feet. The target can be a creature, an object, or a creation of magical force, such as the wall created by [[wall of force]].
On a successful roll, the target (if it is not a living creature) is partially or fully reduced to a pile of fine gray dust. [[Magic item|magic item]]s are more difficult to destroy than nonmagical items or creations of magical force. Living creatures suffer force damage (comparable to a [[fireball]]) but are not completely disintegrated.
This spell can be upgraded to legendary-tier for an even more destructive effect. If you defeat a creature with the legendary version of this spell, the creature and everything it is wearing and carrying (except powerful [[magic item]]s) are reduced to fine dust. The creature can be restored to life only by means of a [[true resurrection]] or [[wish]] spell.
Shimmering energy surrounds and protects you from [[celestial]]s, [[elemental]]s, [[fiend]]s, and other [[immortal]]s. For the purposes of this spell, incorporeal [[undead]] such as [[ghost]]s also count as immortals. You have advantage when defending yourself against an immortal for up to one minute.
You can end the spell early by using either of the following special functions.
//''Break Enchantment.''// You touch a creature you can reach that is charmed, frightened, or possessed by an [[immortal]]. The creature you touch is no longer charmed, frightened, or possessed by such creatures.
//''Dismissal.''// If you are touching an extraplanar [[immortal]] (this will likely require an attempt), you can make an attempt to drive the creature back to its home [[plane]], if it isn't there already.
Choose one creature, object, or magical effect within 120 feet. Any [[spell]] of "rare" [[tier|spell tier]] or lower on the target ends.
If you are able to cast legendary-tier spells, you can cast this as such to dispel other legendary-tier spells.
This monstrous predator takes its name from its ability to displace light so that it appears to be several feet away from its actual location. A displacer beast resembles a sleek great cat covered in blue-black fur. However, its otherworldly origins are clear in its six legs and the two tentacles sprouting from its shoulders, both ending in pads tipped with spiky protrusions. A displacer beast's eyes glow with an awful malevolence that persists even in death.
//''Love of the Kill.''// Displacer beasts kill not just for food but also for sport. They target prey even when not hungry, often toying with their victims to entertain themselves until they are ready to eat. After killing its prey using its tentacles, a displacer beast drags the corpse to a quiet place where it can feed without distraction.
Displacer beasts hunt alone or in small prides that demonstrate skill at setting ambushes. A single beast will strike and withdraw, luring prey into a densely wooded area where its pack mates wait. Packs of displacer beasts hunting near trade roads recall the frequency and schedule of regular caravans, laying down ambushes to pick off those caravans.
//''Prized Guards and Pets.''// Intelligent evil creatures favor displacer beasts as pets, but a displacer beast enters such an alliance only if it appears beneficial. A displacer beast might guard a vault or act as a bodyguard for a prominent individual.
Divination spells reveal information, whether in the form of secrets long forgotten, glimpses of the future, the locations of hidden things, the truth behind [[illusion]]s, or visions of distant people or places.
!!! <<showspells-school {{!!title}}>>
This prayer empowers a [[paladin]]'s weapon with divine radiance. Attacks with this weapon deal additional radiant damage for up to 1 minute.
Unlike [[arcane magic]], there's no logic to divine magic, no pure science that can
explain exactly how it works. An acolyte might spend years meditating and praying, performing virtuous deeds, and tending their flock, and still never gain the power of a [[cleric]]; meanwhile, a smith who can't even read might feel [[Onatar]]'s guiding hands and cast something like [[magecraft]]. Divine magic requires two things: transcendental faith and a connection to a divine power source.
Faith is about conviction. It can't be something you
approach rationally. You need to know in your heart that the
magical effect you seek to produce with your spell should
and will happen. Whether you're smiting an enemy or
healing an ally, you know that the enemy will fall and that
you will save your friend. This doesn't mean that you have
to be a zealot with no doubts whatsoever; you can question
your overall course of action. But you can't think about your
doubts in the moment of casting the spell; in that instant,
you must have pure and absolute certainty that the spell
will come to pass.
But faith alone isn't enough; you also need a connection
to a source of divine power. In Eberron, no one can prove
whether the [[Sovereigns|Sovereign Host]] or other deities exist—if [[Onatar]]
actually guides all artisans or if [[Dol Dorn]] and [[Dol Arrah]]
truly watch over every battlefield. But whether or not Dol
Arrah exists, when her [[paladin]] smites a foe, they draw that power from something. The paladin believes it to be Dol Arrah granting her favor, and maybe it is. Or maybe the shared faith of the tens of thousands of people who believe in the Sovereigns has created wells of power in the collective unconscious, and the paladin draws on this powerful force instead. In a practical sense, the truth is irrelevant; regardless
of its nature and source, the power exists. And this is where
science fails. The [[Silver Flame]] is a source of divine power,
a force that has held [[demon]]s at bay for millennia. Those
who seek to defend the innocent and fight supernatural evil
can draw on its power. But why does one templar become a
paladin over another of equal faith? Why does an illiterate
farmer gain the gift of divine magic when a religious scholar
who's spent decades studying texts doesn't? People of faith
usually respond that it's because the farmer was chosen by
[[Arawai]], or because one templar was more open than the
other to the [[Voice of the Flame|Tira Miron]]. Maybe that's true, or maybe
it's all just luck.
!!! <<showspells-school {{!!title}}>>
A docent is a small metal sphere, approximately 2 inches
across, studded with [[dragonshard]]s. Explorers
have found them in [[Xen'drik]], and [[artificer]]s and [[warforged]]
alike have so far failed to discover the secret of their construction. Despite a strong magical aura, a docent has no apparent abilities. Its powers are only revealed when it is
attached to a [[warforged]], embedded somewhere on their body such as their chest or eye socket. At this point, a docent comes to life—literally. A
docent is an intelligent magic item designed to advise and
assist the warforged it is attached to.
One of the simple functions of a docent is to serve as a translator. It knows Common, Giant, and <<dr 1d4>> additional languages chosen by the DM. It perceives the world through its host's senses, and communicates telepathically with its host. The docent can be knowledgable on a variety of subjects including arcana, history, or nature, and can even assist in investigation or detecting magical auras. It can also serve as emergency life support if its host warforged is grievously damaged.
!! Named Docents
<<list-links-article "[tag{!!title}category[entity]sort[title]]">>
Dol Arrah is the Sovereign of Sun and Sacrifice, the sun that drives away the darkness. She stands for wisdom in war and for those who fight with honor, pursue justice, and make sacrifices for the greater good. Her symbols include a rising sun or a [[red dragon]].
Dol Dorn is the Sovereign of Strength and Steel. He is the patron of the common soldier, and he guides the hands of anyone who holds a weapon. He embodies courage, strength, and martial skill. His symbols include a longsword crossed over a shield or a [[silver dragon]].
Lightkeeper Dolarashynach is the Eternal Flame of the [[Light of Siberys]] in [[Argonnessen]]. She guides the Soldiers of the Light from [[Verthicha'vivex]],
the Mountain of Victory.
''Capital:'' Silverblade Keep<br/>
''Primary Resources:'' Iron, silver<br/>
''Enemies:'' [[Kolkarun]], [[Narathun]], [[Soldorak]]<br/>
''Celebrated Virtues:'' Courage, honor, skill at arms. Resist corruption.
The talespinners of Clan Doldarun say that their legendary
founder was the child of [[Dol Dorn]] and [[Dol Arrah]], and
the [[dwarves|dwarf]] of Doldarunhold take this to heart. Doldarun
soldiers have always been among the best-trained and most-disciplined warriors among the dwarves, and they're the most
inclined to place their lives at risk for the good of all. There
are countless tales of Doldarun facing terrifying monsters,
[[fiend]]s, and [[undead]]; if you need an exorcist in the [[Mror Holds]],
Doldarunhold is your best bet.
Doldarun suffered heavy losses in the War Below; in part
because it was the clan most determined to win the war instead
of accepting the current stalemate, many Doldarun soldiers
died in bold strikes against the foul enemy. The clan maintains
a garrisoned colony below Silverblade Keep, and is building
strength for a new offensive. In the meantime, Doldarun draws
a hard line against trafficking with the [[daelkyr]] or any form of
fleshcrafting, and any outsider carrying [[symbiont]]s receives a
very hostile reaction in Doldarunhold. Clan Doldarun has an
ancient feud with Clan [[Soldorak]], and denounced [[Narathun]]
twenty years ago over Narathun fleshcrafting.
Doldarun characters are likely to be acolytes or soldiers. This
is an excellent clan for [[cleric]]s or [[paladin]]s—especially
War clerics and Oath of Devotion paladins. Rarely, perhaps
once in a generation, the line of Doldarun produces dwarven
[[Host|Sovereign Host]] [[aasimar]]. They attribute this to their mythical founder,
child of the gods.
A hulking [[humanoid]] with glistening pink flesh and arms that droop to its knees, a dolgarr resembles an ape with its skin turned inside out. Watery mucus drains from a dolgarr’s recessed naval cavity into the corners of its mouth, which gapes open to reveal ridges of teeth that look like jagged fingernails. These creatures were once [[bugbear]]s, but were twisted by [[Dyrrn]] the Corruptor, and now understand nothing but mindless savagery.
Dolgaunts are emaciated [[hobgoblin]]s with disease-hued flesh. Their eye sockets gape open and empty above a mouth with a wormlike tongue. Writhing cilia cover their bodies, with longer tendrils around their heads and two wiry tentacles protruding from their bare shoulders. A dolgaunt is blind but can perceive its surroundings through the sensitive cilia that cover its skin. It can also absorb life through its tentacles, allowing it to drain the vitality out of any creature it touches.
//''Warped by Chaos.''// When the [[daelkyr]] emerged from [[Xoriat]] to conquer [[Khorvaire]], they captured and transformed that land's indigenous creatures to create armies of hideous warriors. [[Dyrrn]] the Corruptor shaped dolgaunts from [[hobgoblin]] stock, turning them into intelligent, cold, and efficient killers.
When the daelkyr were defeated, the dolgaunts descended into the depths of [[Khyber]] with their masters. There, they study in cavernous monasteries, forging their bodies into living weapons dedicated to the missions given them by those masters. Dolgaunts are often found commanding squads of [[dolgrim]]s, and can also be found working with the [[Cults of the Dragon Below]]—particularly those devoted to [[Dyrrn]].
Dolgrims are squat, deformed things. Warped by the [[daelkyr]], a dolgrim is essentially two [[goblin]]s crushed into one creature, their misshapen body boasting four arms and a pair of twisted mouths that gibber and slather at the front of a headless torso. The two mouths of a dolgrim sometimes carry on demented conversations with one another. However, a dolgrim has only a single personality—sadistic, bloodthirsty, and brutally dedicated to serving itself.
Small numbers of these creatures sometimes make their way to the surface, often under the command of [[dolgaunt]]s, and undertaking missions advancing the inscrutable schemes of their malevolent masters. But great hordes of dolgrims remain clustered in [[Khyber]] with the [[daelkyr]], dreaming of the day when they will be released into [[Eberron]] to feast and destroy.
Endless caverns stretch throughout Dolurrh, bleak passages of gray stone. Wherever you go, shadowy figures reach toward you, imploring, but you feel only the faintest chill as their insubstantial fingers pass through you. Mist pools around your feet, and as you press forward, you realize this swirling mist is moaning. This is no natural phenomenon;
these are the remnants of souls who have forgotten themselves.
This is Dolurrh. It's not the embodiment of the idea of death or
dying, both of which are reflected in [[Mabar]]. Rather, Dolurrh is
where mortal souls go after their bodies die, where memories
fade and lives are forgotten.
Mortal spirits are drawn to Dolurrh within moments of death,
and their memories begin to decay immediately. Within days,
most spirits no longer have any desire to leave Dolurrh, and
within weeks, most only have the faintest memories of their
previous lives. The [[faiths|Undying Court]] of [[Aerenal]] and the [[Blood of Vol]] assert
that Dolurrh is the absolute end of existence, the last echoes of a
life before it's completely gone. But when [[Dorius Alyre ir'Korran]]
drew his classic planar map, he used the Octogram symbol of the [[Sovereign Host]] to represent Dolurrh, because he declared it to be the door through which all
mortals must pass to join with the Sovereigns. This has come
to be a common view: what appears to be memory fading is
actually the soul slowly ascending to a higher form of existence,
rising to a level of reality no mortal can experience. The Vassals
of the [[Sovereign Host]] say the faithful finally join the Sovereigns;
followers of the [[Silver Flame]] say that noble souls strengthen
the Flame. What is left is only a husk—the cast-off remnants,
like an abandoned snakeskin or the traces of memory that can
be read using [[speak with dead]]. Thus, while Dolurrh has long
been known as the Realm of the Dead, many call it the Gateway.
Ultimately, this is a matter of faith—whether the other side of
Dolurrh is oblivion or paradise, no one ever returns from it.
The sage Annolysse of [[Arcanix]] declared that Dolurrh must
be the thirteenth plane, for it has no opposite. It doesn't embody
an idea so much as it serves a purpose—that of gathering,
collecting, and (perhaps) transitioning souls. Mortal actions
are judged in [[Daanvi]]; by contrast, Dolurrh doesn't judge and it
doesn't punish. It's simply the end of the journey—or depending
how you look at it, the beginning of a new one.
All living creatures come to Dolurrh, sooner or later. Those
that come here before death are almost always looking for
something—a lost soul, a forgotten memory. But living or dead,
any who come to Dolurrh can be trapped by its power.
!! Universal Properties
Everything about Dolurrh is gray and gloomy. Even the
brightest colors seem faded, the most joyful sounds seem dull.
The heavy weight of ennui settles on travelers the moment they arrive, making even the simplest tasks feel challenging.
And there's a constant pull, tugging on memory and emotion,
a desire to just sit down and let it all go.
* //''Eternal Ennui.''// When a creature enters Dolurrh, it immediately gains one level of ennui, a heavy weight of despair and apathy. Mechanically, this translates to a disadvantage on all actions. While in Dolurrh, this level of ennui can't be removed by rest or by any other means. It's immediately removed when the creature leaves Dolurrh. Creatures native to Dolurrh are immune to this property's effects.
* //''Impeded Magic.''// In order to cast a [[spell]] of common tier or higher, any consequences to that roll include one additional stress from casting the spell.
* //''Inevitable Entrapment.''// Every three days a creature spends in Dolurrh, if it is unable to withstand the crushing depression of the realm, it gains one level of ennui. Getting a critical result on the attempt clears one level of ennui. Creatures native to Dolurrh are immune to this property's effects.
* //''Timeless.''// Time passes at the same rate as on the Material Plane, and is consistent across its layers. Creatures can benefit from resting, suffer damage, and die. However, a creature on Dolurrh doesn't age, and doesn't need to eat, sleep, or drink.
!! Denizens
In many ways, Dolurrh is a machine. The pull that draws spirits
to Dolurrh is a mechanical effect, part of the fundamental
nature of souls. The denizens of Dolurrh are the cogs of that
machine, here to keep the system running.
!!! The Quick
The native creatures of Dolurrh are bound to the cycle of
transition, and all have some role to serve in this process. All
of the Quick are immune to the ennui condition.
* [[nalfeshnee]]
* [[marut]]s
* [[shadar-kai]]
Other denizens of Dolurrh are unique, such as the ''Librarian'',
found in the [[Vault of Memories]], and the ''Smith of Souls'', who
dwells in the [[Crucible]].
!!! The Dead
The spirits of those who have died are omnipresent in Dolurrh,
from shades huddled in the shadows to layers of moaning mist.
The Dead might be considered manifestations of Dolurrh, but
the plane didn't actually create them—all were once mortals.
* [[shade]]s
* [[husk]]s
* [[ghost]]s
Other forms of [[undead]] are rarely seen in Dolurrh. The
entities found in this plane are the spirits of the dead, slowly
fading, transitioning—or trapped in that process. Corporeal
undead such as [[ghoul]]s, skeletons, and [[zombie]]s have no place
here, while undead that hunger to consume life belong in [[Mabar]].
!!! The Lingering
Memories of joy and happiness do no harm in Dolurrh. But
memories of pain, of cruelty, of anger... these don't fade so
easily, and they can hurt others. Even if they don't trap [[shade]]s
as [[ghost]]s, this psychic residue can build up in the gears of the
spiritual machinery of Dolurrh. It often takes the presence of
a mortal to trigger it; when this occurs, the lingering pain and
hate coalesces into a solid form. The least of these are [[lemure]]s,
formed from hateful memories or deeds. The emotional
residue of hundreds or thousands of people can form deadly
[[sorrowsworn]]—the Angry, the Hungry, the Lonely, the Lost, and
the Wretched. The Lingering are formed in Dolurrh and are immune to ennui,
but they're a waste product, not the plane's desired result. As
such, [[nalfeshnee]], [[marut]]s, and other guardians destroy the
Lingering whenever they are found.
!!! The Queen of the Dead
The [[Queen of the Dead]], the most powerful being in Dolurrh,
dwells in the great spire that rises up above the [[Vault of Memories]]. Little is known about her motives or her origins;
curiously, she focuses on the Material Plane far more than
most great planar powers do.
!! Layers
Dolurrh is universally gray and gloomy. The accounts of brave
explorers describe the sense of being underground, and no
mortal has seen the moon or sky of Dolurrh. Unlike most
planes, the layers of Dolurrh don't embody different ideas;
instead, they serve different functions in this grand machine
dedicated to processing souls.
The four [[layer]]s discussed below are the only ones described
in the records of mortals who ventured to Dolurrh—and
returned. But there could be more, as yet undiscovered, each
likely serving a critical purpose. It's known that the Librarian
has recorded the lives of [[dragon]]s in the [[Vault of Memories]];
accordingly, sages theorize there may be a layer dedicated
entirely to the spirits of dragonkind, which may linger longer
than the spirits of simple [[humanoid]]s.
<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>
!! Concerning Resurrection
[[Returning life to the dead|raise dead]] isn't a reliable service in [[Eberron]].
Many characters are capable of casting the necessary spells,
from [[cleric]]s to adepts of House [[Jorasco]]. But just because a
spell can be cast doesn't mean that it should be cast... or that
it will work if it does.
The first and simplest limitation is time. The longer a
spirit remains in Dolurrh, the more it falls under the sway
of ennui. Any spell that returns life to the dead requires the
spirit to want to return. Once the [[shade]] becomes a [[husk]], it
can no longer make that decision, and thus can't be raised
or reincarnated. Most religions maintain that this happens
because the true soul has moved on to a higher level of
existence; who wants to be pulled back from a union with
the Sovereigns? So you only have about a week or two—depending on the strength of the target's will—to pull them back. But even before that time, a spirit might choose not to
return. What do they have to live for? Is it worth fighting the
lulling ennui of Dolurrh?
The second limitation is risk. Even if a spell is successful,
[[Jorasco]] remains rightly concerned about whether that person
is supposed to come back, or if it's their time to die—for if it's
the latter, a [[marut]] may appear to challenge any resurrection.
This is extraordinarily rare, but in part, that's because healers
perform an [[augury]] ritual beforehand and refuse to raise
someone if there's a risk. Even if a marut doesn't intervene,
there's a risk the resurrection could go poorly if Dolurrh is
coterminous, perhaps calling back other spirits in addition
to—or instead of—the person being brought back to life.
The final limitation is the direct intervention of a higher
power. The [[Queen of the Dead]] might crystallize a shade
and prevent it from being restored, or catch a spirit that's
about to be restored and set a price on its passage; for example, you must sacrifice a particular item, kill a particular individual, start a movement, build a monument, or must never conceive a child. How long does the beneficiary have to settle their account? A day, a year, a lifetime? It's also said that the [[Keeper]] can snatch souls before
they even reach Dolurrh; if this myth is true, such souls can
only be recovered from the [[Lair of the Keeper]] in the [[Demon Wastes]]. The Keeper itself may or may not be there, but it's
certainly the abode of a powerful [[dracolich]]!
The flip side of direct intervention is that the Queen of
the Dead (or another powerful entity) might offer to return
a [[shade]] to life—for a price. This is a way to bring a low-level
character back to life, despite their friends being unable to
afford resurrection.
If all else fails, there's one way you can always bring
someone to life: go to Dolurrh, find their [[shade]], and drag
it back out to the Material Plane. It's simple—all you need
to do is to locate a single soul in the endless [[Catacombs]]
(perhaps with the help of a native guide, records in the [[Vault of Memories]], or powerful [[divination]] magic), evade Dolurrh's
many guardians, and return to Eberron with the soul in tow.
If you succeed, the victim receives a new body, just as if you'd
cast [[true resurrection]]; and while Dolurrh's defenders will try
to stop you from leaving, they won't interfere once you return
to Eberron. It's theoretically possible to restore a [[husk]] in this
way as well, though the resurrected husk generally won't regain
its lost memories, even though it might learn new skills. As
a result, it wouldn't do any good to bring back the [[Tairnadal]]
ancestors or [[Galifar I|Galifar ir'Wynarn]]; you could bring a body back to life, but
it's not the original person in any meaningful way. This is why
the Queen of the Dead (and perhaps the Keeper) preserves
certain shades from decay—so that they might one day be
restored, even after thousands of years.
!! Planar Manifestations
Here are some ways Dolurrh can affect the Material Plane.
!!! Manifest Zones
[[Manifest zone|manifest zone]]s tied to Dolurrh rarely possess all of the plane's
properties; travelers generally aren't entrapped by ennui simply
by passing through one. But these zones are still close to the
Realm of the Dead and exceptionally haunted, though not
blighted, as [[Mabar]]an zones typically are. Shadows move in
disturbing ways, and travelers may hear whispers they can't
quite make out.
The restless spirits of Dolurrh yearn to return to the Material
Plane, and it's easier for them to do so in manifest zones. They
might manifest as [[ghost]]s, or animate the corpses of people
buried in the zone, causing them to return as revenants or
zombies. In some Dolurrhi zones, raising the dead can be
dangerous; if spells or abilities that raise the dead are used
in such a zone, a mishap may happen. For example:
* The wrong spirit returns to the body.
* [[Ghost|ghost]]s, [[meld]]s, or a hostile [[marut]] appear, pulled through from Dolurrh.
* A [[nalfeshnee]] possesses the raised character.
Dolurrhi zones can also have positive effects. In many zones,
it's easier to return people from the dead, halving the cost of
any material components. In others, anyone can cast [[speak with dead]] as a ritual that takes an hour to perform, as long as they have a personal connection to the deceased whose corpse they're questioning.
The most dramatic manifest zones are those that serve as
gateways to enter the [[Catacombs]] of Dolurrh—and hopefully, to
return. Opening such a gateway might call for a special ritual
or significant sacrifice, perhaps under a particular alignment
of the moon Aryth, or when Dolurrh is conterminous.
!!! Coterminous and Remote
Dolurrh has a slow planar cycle. Traditionally, once a century,
it becomes coterminous for a full year. Fifty years after that, it's
remote for a full year. It can also have shorter phases, tied to
the movements of the moon Aryth.
While Dolurrh is coterminous, it's easier for [[ghost]]s to slip
from the Realm of the Dead into the Material Plane, especially
around Dolurrhi [[manifest zone]]s. Any spell or ability that raises
the dead can also serve as a conduit for unwanted spirits; see the example complications in the above section.
While Dolurrh is remote, traditional resurrection magic,
such as [[revivify]] or [[reincarnate]], can't pull spirits back from
Dolurrh. The only way to raise the dead in these times is by
traveling to Dolurrh itself and pulling the shade back to the
world, as described earlier in this section. Surprisingly, [[ghost]]s
are also especially common in this time—but these aren't
ghosts that return from Dolurrh. Rather, if Dolurrh is remote
when someone dies in the grip of great emotion or with vital
unfinished business, their spirit can more easily resist Dolurrh's
pull, remaining on the Material Plane.
!!! Dolurrhi Artifacts
The most common Dolurrhi artifacts are creations of the [[Smith of Shadows|Crucible]], formed of [[husksteel]], the fused essence of faded
souls.
In creating a husksteel object, consider the memory or
emotion that's the heart of the item. For a magic item, this
should reflect its purpose. A husksteel cloak could
be formed from a secret. A husksteel dagger venom might be formed from a moment of absolute terror; when its power is invoked, it could deal psychic damage and make the target frightened of the wielder.
Other Dolurrhi items are largely curiosities. The table below provides examples.
| !<<dr d8>> |!Dolurrhi Trinkets |
| 1 |A hand mirror periodically shows the reflection of a particular dead person or an event from their memories. |
| 2 |A monocle shows the last thing seen by its previous owner before they died. |
| 3 |A stuffed toy sings softly when it's placed in darkness. |
| 4 |A pen writes a specific message when dipped in ink and left untouched. |
| 5 |A small leather journal contains a poem, story, or piece of music by a beloved creator—written after they died. |
| 6 |A battered copper coin flips itself if placed heads-down. |
| 7 |A battered steel locket depicts two images—one is someone who has died, and the other, someone who's about to die. |
| 8 |A pouch of ashes. When a pinch is thrown on the ground, it forms a specific word or symbol. |
!! Dolurrhi Stories
Dolurrh can inspire many simple stories through its [[manifest zone]]s and escaped [[ghost]]s. A [[husksteel]] trinket could provide a flash of memory that sets the adventurers on a particular path, and finding a way to rescue a shade from the underworld is
always an epic tale. Here are a few deeper stories to consider.
//''The Once and Future Queen of the Dead.''// The [[Queen of the Dead]] is an enigmatic figure who wields great power in Dolurrh. But there's another being who uses this title:
[[Erandis Vol|Lady Illmarrow]], the last heir of the [[Mark of Death]]. Through her
agents in the Order of the [[Emerald Claw]] and beyond, Erandis
seeks to restore the power of her [[dragonmark]]; no one knows
what godlike powers she might wield if she unlocks its full
potential. Meanwhile, Dolurrh's Queen of the Dead seems to oppose Erandis, and often sends her agents—both [[shadar-kai]] and adventurers she's restored to life at a price—to interfere with Vol's schemes. This could be exactly what it appears;
the Queen of the Dead may despise [[necromancers|necromancy]], and Vol
is seeking to depose her. But perhaps there's more to it. Time
works in strange ways when dealing with the planes and
beings of vast power. Perhaps the Queen of the Dead isn't
trying to stop Erandis, but guiding her down a very specific
path. Perhaps Erandis will become the Queen of the Dead,
in which case, she'll have always been her. Or perhaps that's
what's supposed to happen, but there's a way in which it could
still go wrong... which could destroy the Queen of the Dead
and throw Dolurrh itself into chaos.
//''Agent of Death.''// The adventurers kill a nefarious villain
that's long eluded them—but soon, their foe reappears alive
and well. This happens time and again. How is the villain
escaping from Dolurrh? Are they acting as an agent for the
Queen of the Dead, or have they simply found a back door to
the Realm of the Dead? Either way, what can the adventurers
do to lay them to rest once and for all?
//''Devastating Sorrow.''// When Dolurrh becomes coterminous,
a powerful [[sorrowsworn]] emerges and devastates the
region. The adventurers may not have the ability to defeat
the sorrowsworn in battle, but if they understand the
circumstances of its creation—the emotion that drives it and
the event that triggered it—they might be able to disperse
the deadly monster by defusing this emotion. When an
adventurer touches—or is touched by—one of Dolurrh's Dead
or Lingering, they might sense a flash of any lingering memory
or emotion that creature possesses. Can this help them solve
the mystery, or will they die in the attempt?
//''The Warforged Soul.''// There are many who believe that
[[warforged]] are simply tools; House [[Cannith]] may be able
to infuse something with life, but it can't create a soul.
Others say that it's not a question of science; the warforged
are clearly alive, and thus, they have souls. But is the soul
unique? Or could it be that warforged recycle souls, drawing
[[husk]]s drained of memory from Dolurrh and using them
as a foundation? These questions are intentionally left
unanswered; it's up to each DM to determine the true nature
of warforged souls. But there's one simple fact: a warforged
can be restored to life with [[revivify]] or [[raise dead]]. Which
means that the answer must lie in Dolurrh, and someone—[[Arcanix]]? [[Merrix d'Cannith]]? The [[Lord of Blades]]?—could fund
an expedition to find the answer.
You attempt to beguile a beast or [[humanoid]] that you can see within 60 feet. If the creature fails to withstand your enchantment, it is charmed by you for up to a few minutes. If you or your companions are fighting it, you have disadvantage on this spell.
While the target is charmed, you have a telepathic link with it as long as the two of you are on the same plane of existence. You can use this telepathic link to issue commands to the creature while you are conscious, which it does its best to obey. You can specify a simple and general course of action, such as "Attack that creature," "Run over there," or "Fetch that object." If the creature completes the order and doesn't receive further direction from you, it defends and preserves itself to the best of its ability.
You can also choose to take total and precise control of the target. Until you end this effect, the creature takes only the actions you choose, and doesn't do anything that you don't allow it to do. But any action you take with your own body during this effect will be with disadvantage.
Each time the target takes damage, it has a chance of shaking off the dominate effect.
If you are able to cast legendary-tier spells, you can cast this as such to target a non-humanoid or non-beast creature. Alternatively, you can extend the duration of this spell up to 1 hour.
Dominions are a higher order of [[Syrania]]n [[angel]], and focus on a very specific aspect of a single domain, like "wolves" or "swords". They have names and specific [[domain|Syranian domain]]s,
along with extra titles for pomp—//Tezaria, Angel of the Storm, Dominion of the Seventh Spire.// They typically spend their time
in contemplation and use [[virtue]]s as their eyes and hands, but
occasionally a dominion acts directly—especially if its spire is
threatened in some way. As neutral observers, dominions have
no sympathy for mortals, but they're often willing to discuss their
domain with a mortal who has an interesting perspective on it.
It's important to recognize the difference between a
warrior [[angel]] of [[Shavarath]] and a dominion of [[Syrania]]
with the domain of War. The Shavaran is an angel who
//fights// wars, and this has no place in peaceful Syrania. On
the other hand, the dominion of Syrania—perhaps called
the Angel of Swords—//understands// war, and in particular,
knows everything there is to know about a single thing:
swords. They know sword-fighting techniques from every
mortal and [[immortal]] culture. They can recognize any
sword, know the locations of a number of long-forgotten
legendary blades, and may have a few in their possession.
They're likely one of the deadliest swordfighters in
existence, but they don't actually desire to fight, because
that's not the point: they are the Angel of Swords, and they
contemplate swords.
Dominions are typically equal in power to [[planetar]]s, and can cast [[invisibility]] at will, using it to move unseen when observing on the Material
Plane. Dominions might also possess additional abilities
reflecting their absolute knowledge of their domain. For
example, the Angel of Swords could be immune to any
damage inflicted by a sword; perhaps they know perfectly
how to defend against such an attack, or the sword itself
might even refuse to strike them.
Occasionally, a dominion visiting the Material Plane will become corrupted, an irreversible process leading to its transformation into a [[radiant idol]].
[[Giant|giant]]s live longer than [[human]]s, and both before and after the great
devastation, the giants have been slow to change.
The Dominion of Purity is proving an exception to
this rule. The first word of this movement reached
[[Stormreach]] less than a decade ago, but if stories are to
be believed, dozens of tribes and thousands of giants
are now part of the Dominion. The power behind this
alliance is a being that calls himself the Voice of the
Titans. To date no human has encountered the Voice,
but if the stories are to be believed, he possesses magical powers and remarkable charisma. His greatest lure is his promise that he will not only restore the ancient
nations of [[Xen'drik]], but that he will reverse the curse
of the titans that makes every succeeding generation
of giants less powerful than the last. He promises to
elevate [[hill giant]]s and all others to the status of their ancestors.
It’s unclear if the Voice has offered any proof to support his claims, but his words
have impact. Many giants join him of their own free
will, and evidence suggests that others are coerced by
magic or physical force. In the past, such efforts have
always been dispersed by curses like the [[Du'rashka Tul]]. It might be that the Voice of the Titans is leading his followers to a similar fate, or he might truly have
found a way to overcome the ancient blights. If this is
the case, the Dominion could soon become a threat to
all the inhabitants of Xen’drik.
The true nature of the Voice of the Titans remains
a mystery. No form of [[divination]] magic has been able
to locate him; either he possesses some unique power,
or he is carrying an artifact that shields him from
spying eyes. Tales from giants who have met him suggest that he might be a primordial [[storm giant]], but it is possible that he is even a [[dragon]] or [[fiend]] masquerading as a [[giant]]. His ultimate goal is equally mysterious. His primary goal is
to expand his influence across other groups of giants,
but he has also been collecting relics of the past.
A number of circumstances could bring the
Dominion of Purity to [[Stormreach]]. If the [[tribes of Rushemé|Guardians of Rushemé]] fall under pressure to swear fealty to the Voice, members of the Dominion could come to Stormreach and threaten [[Gaulronak]]. Adventurers
could encounter a group of giant explorers searching for a treasure beneath Stormreach. Depending on the true nature of the Voice of the Titans, [[Antaegus]] could see the Voice as an ally or a mortal enemy, in which case he might turn to adventurers to help
eliminate the Dominion.
Dominion [[theory|arcane theory]] walks the line between [[arcane|arcane magic]] and [[divine magic]]. In fact, the theory denies any meaningful distinction between the two. It has some broad overlap with [[Siberyan|Siberyan Theory]] magic, using word and gesture to channel ambient arcane power. However, it asserts that all magic flows directly from the [[Sovereigns|Sovereign Host]]. It is still approached in a scientific manner; the difference between the Vassal [[cleric]] and the Dominion [[wizard]] is that the cleric asks the Sovereigns to grant a miracle, while the wizard employs formulas that let them draw on the fires of [[Onatar]]’s forge or [[Aureon]]’s law. The Dominion wizard doesn’t need faith in the same way that a cleric does. But if they see [[arcane magic]] as manipulating the pieces of a great machine, they believe that the Sovereigns //are// that machine, and their verbal components generally invoke one or more of the Sovereigns by name. So they don’t //require// faith—but they still have it.
Dominion theorists can be found in the [[Five Nations]], even in [[Arcanix]]. However, this theory is usually dismissed as superstition by [[Siberyan|Siberyan Theory]] mages, who say that Dominion spellcasters are simply drawing on Siberyan power and adding unnecessary ritual. While the [[Sovereign Host]] is the dominant faith of the [[Five Nations]], the standard Vassal tradition incorporates the myth of the [[Progenitors|Progenitor Dragons]]. Siberyan vassals believe that [[Aureon]] (or the [[Shadow]]) //guides// those who use magic, but that Aureon isn’t actually the //source// of magic… That Aureon can show the wizard how to create fire with a spell, but that the fire isn’t drawn directly from [[Onatar]]’s forge. Many wizards are also faithful Vassals; Dominion theory is an unusual extreme.
See also [[Gilded Labyrinth]].
!! Consensualist Theory
A subset of Dominion theory, Consensualists say that mass //belief// is the source of [[arcane magic]]. Like Dominion wizards, they manipulate that power in a scientific fashion, but they maintain that magic works as it does because people //believe// in that system—and that it’s possible that a paradigm shift in belief could completely change the laws of magic. Professor [[Tym Bessel]] of [[Morgrave University]] is a leader in this school of thought.
The charismatic Donata is the self-styled "Empress" of the ruins of [[Metrol]], ruling her tiny kingdom from the ruins of the Royal [[Vermishard|Vermishards]] and draped in the [[Cyran|Cyre]] Regalia. A master of manipulation, Donata and her soldiers are the result of humanoid experimentation at the hands of House [[Vadalis]] during the [[Last War]].
!! Mournland Magebred
Inspired and vexed by [[Cannith]]’s success with the [[warforged]], a [[Cyran|Cyre]] faction of the [[Feral Heart]] of [[Vadalis]], led by the visionary Venarl d’Vadalis, began experimenting on [[human]]s and other sapient creatures to create superior versions of them. Years ago, in a secret laboratory north of [[Metrol]], the Vadalis researchers succeeded and began training their creations. Then came the [[Mourning]].
That ill-fated day created chaos and killed many [[Vadalis]] scions, but most of their creations survived. The [[magebred|magebreeding]] [[humanoid]]s, led by the imposing Donata, quickly took control of the facility and subdued their surviving [[Vadalis]] keepers. Donata acted quickly to secure her status through guile and the elimination of her rivals. She organized her followers, and the magebred made their way out into the [[Mournland]]. Donata and her party entered [[Metrol]] and established themselves in the abandoned government buildings.
For the last several years, Donata and her followers have been secretly working in experimental facilities in [[Metrol]], expanding on the work started by House [[Vadalis]]. The magebred, using inborn powers, enhanced the rumors of Metrol as a haunted
ruin. Donata has become empress of a tiny domain she aims to expand. All she needs is opportunity... and a bigger army.
[[Magebred|magebreeding]] [[humanoid]]s are stronger, tougher, faster, smarter, and more charismatic than their normal counterparts. [[Vadalis]]’s magical techniques make them grow and learn faster, so they become functioning adults twice as quickly as normal. Most of Donata’s current magebred soldiers come from her generation, but she is training a new generation.
The [[Vadalis]] techniques create some mental instability, and a tendency toward egotism and self-absorption. Within Donata’s order, the magebred are also taught that they are superior and others are lesser beings. This training exacerbates the selfishness or callousness the magebred naturally possess.
Magebred who venture deeper into the Mournland return with samples of bizarre creatures—or become mutated themselves. Donata sees such events as an opportunity to add new traits to the [[magebreeding]] pool. Mutated magebred might have minor monstrous traits, such as slow regeneration or claws. They might also have monstrous habits, such as cannibalism.
!! Allies
Through [[Ikar's Salvage]], Donata also has contacts in the Order of the [[Emerald Claw]]. What such an alliance might breed only time will tell. The order might already be in [[Metrol]], as might some of its [[undead]].
While you wear these heavy leather trousers, your kicks are devastatingly powerful.
Doovol is a young [[golin’dar|goblin]] monk of the [[Kech Uul]], who
hides her face behind a veil. She appears to an adventurer
in their dreams, and offers advice and useful information.
What’s her bond to the adventurer? Does she believe they
can be brought into the [[Uul Dhakaan]]? Or is she simply a
disguise for a manipulative [[quori]]?
Doppelgangers are devious shapeshifters that take on the appearance of other [[humanoid]]s of nearly any size, and possess powerful telepathic abilities. Few creatures spread fear, suspicion, and deceit better than doppelgangers.
Much like [[dolgaunt]]s and [[derro]]s, doppelgangers are a creation of [[Dyrrn]] the Corruptor, a twisted version of a creature native to Eberron—in this case, the [[changeling]]. In their natural form, they are hairless, slick, veiny, grey-skinned humanoids with gaunt features and elongated limbs. They appear almost like half-finished sculptures of humans, with no visible mouths, noses, or eyelids. In addition, doppelgangers can [[detect thoughts]] at will, and many develop a variety of other [[psionic|psionics]] abilities.
However, the primary difference between doppelgangers and [[changeling]]s is psychological. Doppelgangers have been implanted with a desire to cause chaos in the communities around them—even when there's no benefit in it for the individual. They have a fundamentally alien outlook, sowing paranoia and discord with no apparent rational motive.
Many doppelgangers operate alone. Others can be found working with [[Cults of the Dragon Below]]. Fewer still belong to the secret cabal known as the [[Cabinet of Faces]], composed of acolytes of the [[Traveler]] who work to sway major governments and enterprises to some mysterious end.
Dor Maleer shares a border with the [[Tashana Tundra]]—a
border that has been slowly shifting north over the centuries. Prior to the [[Sundering]], Dor Maleer was a loose federation of clans of many races, including [[Akiak]] [[dwarves|dwarf]],
[[Qiku]] [[shifter]]s, and [[ogre]]s. During the Unification, the [[human]]s and [[shifter]]s of the region were absorbed into the [[Riedra]]n alliance, but the [[dwarf]] population was virtually exterminated in the [[Night of Razor Dreams]].
Dor Maleer is the Riedran frontier, and its people
are not as fanatical as their counterparts in many of the
southern provinces. Maleeri are more tolerant of nonhumans than most [[Riedrans]], though [[dwarves|dwarf]] typically receive an unfriendly reaction. Although they perform
what agriculture they can in the harsh mountainous environment, the
Maleeri are primarily hunters, and they respect such
skills. Traditionally, anyone who brings meat to a Maleeri
village is invited to stay and join in the meal.
A former advocate, Doran Cantar ([[human]] councilor for [[Middle Northedge]]) is an
honest and devout man dedicated to making a difference for the people of Northedge. He obtained his position largely through charisma and dedication, and the support of the priests of [[High Hope]]. He has a deep and abiding faith in the goddess [[Boldrei]], and attributes all of his successes to the good will of the goddess. However, his honesty is often a hindrance in Council intrigues.
Doran Del Doras is the true power in the [[Sharn]] [[embassy|Zilargo Embassy (Sharn)]] of [[Zilargo]]. [[Tasho|Tasho Mol Doras]] is the ambassador, but Doran is the master of spies, and even Tasho follows his orders. Aside from the embassy staff, Doran has contacts spread throughout [[Sharn]] and across [[Breland]] itself. He has
permanent telepathic bonds that allow him to communicate with [[Madra Sil Sarin]] and his superior in the [[Trust]] in [[Korranberg]].
Doran Del Doras is always expanding his network of informants and spies, and any character—[[gnome]] or not—could be drawn into his web.
The [[Eska Mountains]] are home to the isolationist [[dwarves|dwarf]] of the Dorann Holds, who are thought to
have migrated from [[Frostfell]] over an ancient land bridge.
Little is known of these clans today. The [[dwarves who eventually migrated|Akiak]] to populate southern regions appear to have split from the Dorann centuries ago. Since then, the Dorann dwarves have maintained a
policy of political isolation, although they still trade with
the northern [[shifter]] tribes and [[Inana]] [[maenad]]s of the
[[Tashyvar Islands]]. It is said that an increasing number of
the Dorann clans are feverishly mining the Eska Mountains, stockpiling raw minerals as they dig.
The Holds have long been a collection
of loosely confederated clans, with frequent infighting and
skirmishes between various factions. In recent years, however, the infighting has calmed, and several of the clans are
working together to an unprecedented degree. The ''Stone Council'', previously an intermittent conclave gathered to settle important intraclan disputes, has been in permanent session in the fortress of [[Tannishold]]. Able-bodied dwarves
from all clans are being dispatched—forcefully in some
cases—to work in massive excavation projects deep in the [[Eska Mountains]]. Recent reports indicate that heavily armed militias, controlled by a member of the Stone Council known as Hammerhand, now control many of the major passes
and valleys of the Eskas. Opposing [[dwarf]] clans are uniting
under the flag of the [[paladin]] order known as the Clanguard,
and rumors of a civil war hang heavy in the air.
!! People of the Dorann Holds
The dwarves of the Dorann Holds are a mixed lot.
Northern clans tend to be more primitive, clannish, and
warlike than their distant cousins in the [[Mror Holds]].
Whereas the [[Khorvairian|Khorvaire]] clans settled into a prolonged
peace under [[Karrnath]] annexation, the dwarves of the
northern Dorann Holds have never known such an era,
and the typical state of affairs is one of low-simmering clan
conflict. The southern Eska clans, by contrast, have much
more arable land to work, and hence more peaceful relations, trading among themselves and the nearby [[human]]s
and [[shifter]] tribes. Still, all Dorann dwarves tend toward
mild xenophobia and isolationism, and as such have little
contact with the world beyond their borders.
These days, a Dorann dwarf adventuring in the larger
world is likely to have chafed under the oppressive policies
of the recent Stone Council leadership. As the northern
clans fall into line under the Hammerhand leadership,
southern clans are rallying to the cause of the resurgent
Clanguard [[paladin]]s. A Dorann character is certainly concerned about potential civil war, and might feel compelled to choose a side and take a stand.
Dorius Alyre ir'Korran was a [[gnome]] loremaster of the powerful Korran family in [[Zilargo]] some 3000 years ago. A member of the [[Church of the Wyrm Ascendant]], he was obsessed with the theory that
the deities of the [[Sovereign Host]] were in fact ascended
[[dragon]]s, and believed that he himself could amass enough knowledge and information
to surpass even the Sovereign Lord [[Aureon]] and thereby ascend and take the god’s place. The Korran family invested considerable wealth in Dorius’s obsession; even
those who didn’t believe his theories of divinity were
intrigued by the idea of a vast vault for knowledge. Thus, the [[Library of Korranberg]] was founded.
Dorius ir'Korran was also the primary author of the celebrated Planar Codex, the foremost publication on the nature of the [[plane]]s of existence.
''District Type:'' Tavern district<br/>
''Buildings:'' Temple ([[Olladra]]), average lodging (14),
poor lodging (80), average food (25), poor food
(120), poor trades (40), poor services (40), poor
residences (80)<br/>
''First Impression:'' By night, inebriated revelers
stumble forth into the crowded streets from dozens
of taverns. By day, this district is a virtual ghost
town, with only cleaning crews, delivery personnel,
and the occasional determined drunk livening up
the scene.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Forgelight Towers]] (north); [[Center Bridge]] (northeast); [[Fallen]] (bridge, west); [[Foundation]] (bridge, south); [[Cassan Bridge]] (above)
Situated on the western end of the plateau, separated
from [[Torchfire]] and [[Firelight]] by the residential neighborhood of [[Center Bridge]], Downstairs is nevertheless a rowdy district. Most of its businesses are
taverns rather than fine restaurants (though there
are exceptions), and drunken revels are the norm
every night. Carousers finished with an evening at
the theater in [[Torchfire]] or even the upper wards, or
fresh from different kinds of activities in [[Firelight]],
come Downstairs to cap off the night.
!! Noteworthy Locations
* The [[Diamond Theater]]. A cheap theater once known for bawdy humor, the Diamond has gained fame due to its playwright in residence and has produced several plays about the impact of the [[Last War]].
* [[Four Sails]]. Regular patrons of this restaurant claim that it has the best seafood in [[Sharn]].
Even as long-lived as they are, all [[dragon]]s must eventually die. This thought doesn't sit well with many dragons, some of which allow themselves to be transformed by [[necromantic|necromancy]] energy and ancient rituals into powerful [[undead]] draco[[lich]]es. Only the most narcissistic dragons choose this path, knowing that by doing so, they sever all ties to their kin and the [[dragon gods|Thir]].
A dracolich retains its shape and size upon transforming, its skin and scales drawing tight to its bones or sloughing away to leave a skeletal form behind. Its eyes appear as glowing points of light floating in shadowy sockets, hinting at the malevolence of its undead mind.
A powerful dracolich dwells in the [[Lair of the Keeper]] in the [[Demon Wastes]] and claims to be an aspect of the [[Keeper]], the Sovereign of Greed and Death.
This longsword has a dragon-shaped hilt. While you carry it, you gain the ability to speak and understand the Draconic language.
There are patterns hidden in the world. Secrets lie in the conjunctions of the [[plane]]s and [[moon]]s, in strange symbols formed by the flowing lava of a volcanic eruption or the fissures caused by an earthquake. Carved in the walls of ancient citadels and on primeval megaliths, knot patterns appear to have meaning that only the contemplative mind can hope to comprehend. To those who can read them, these myriad events and signs form a map of possible futures, a map that can be used to shape the course of history.
Scholars call this map the Draconic Prophecy, attributing it to the [[Progenitor Dragons]]: Eberron, Siberys, and Khyber. The Prophecy is vast and complex, its signs scattered across the world. Few [[human]]s or even [[elves|elf]] have the time or resources to unravel its secrets. The foremost students of the Prophecy are ancient [[dragon]]s,
immortal [[fiend]]s, and others who have devoted thousands of years to this work.
What makes the Prophecy especially complex is that it doesn't define a singular path for the future. Rather, the Prophecy is a map that shows many possible futures, along with the steps that must occur to make that future a reality. A fragment of the Prophecy might say,
"If the Bear King is slain by a sorrowful assassin in the Shadow of the [[Mourning]], the Crown will fall from his nation." The "Bear King" could refer to King [[Boranel|Boranel ir'Wynarn]] of [[Breland]], since the bear is Breland's heraldic beast. The "Shadow of the Mourning" could mean that Boranel must be slain in the [[Mournland]], or it could mean that the assassination must occur on the [[anniversary|Day of Mourning]] of the Mourning. This passage doesn't say that Boranel will be assassinated or that the Brelish monarchy will fall; it suggests that if Boranel is assassinated under these conditions, then the monarchy will surely fall. But it could also be fulfilled in different ways, if the terms of the Prophecy are interpreted differently. Other fragments of the Prophecy might cover what happens if Boranel is assassinated under other circumstances, or what happens if he dies of natural causes.
As an adventurer, you could be hired by a scholar trying to piece together a fragment of the Prophecy and clash with a secret society along the way. Or you could discover that your family plays a pivotal role in a fragment of the Prophecy. Will you embrace this or fight your potential destiny? Will you dedicate your life to interpreting the Prophecy or ignore it as just a bunch of mystical nonsense? And might the Prophecy hold the answer to the [[Mourning]] itself?
!! Source and Purpose
None can question the power of the Draconic Prophecy.
Its power as a tool of [[divination]] has been proven time and
again. But philosophers and sages—[[human]] and [[dragon]],
[[celestial]] and [[fiend]]—have long debated the source of its
power. How can the paths of the future be mapped out
on stone and sky? Is this proof of divine intervention?
Or does such a concrete cosmic plan defy the existence of
free-willed gods?
Tens of thousands of years of debate and divination
have produced no clear answers. Here are a few of the
popular theories; only the DM can decide if any of these
are true.
* The Prophecy is a reflection of the ongoing struggle between [[Khyber]] and [[Eberron]]. The [[Progenitors|Progenitor Dragons]] shaped reality at the beginning of time, and the Prophecy reflects their divergent desires for their creation. This is the central belief of the dragon religion [[Thir]].
* The Prophecy is the work of the dragon deity [[Chronepsis]], master of fate. The core doctrine of [[Thir]] says that Chronepsis is the scribe of the [[Progenitors|Progenitor Dragons]]. However, certain dragons believe that Chronepsis alone chooses the path of the Prophecy.
* The Prophecy is the creation of [[Aureon]], [[Sovereign|Sovereign Host]] of Law and Lore. This is the popular theory of followers of the Sovereign Host. The doctrine of [[Thir]] acknowledges Aureon—[[Ourelonastrix]]—as the first prophet, but not as the creator of the Prophecy.
* The Prophecy is a divine force, not unlike the [[Silver Flame]]. It draws its power from all living beings. It is shaped by their desires, and it channels their wants. This is how it can predict the future, because it influences people to act in accordance with its predictions.
* Each of the thirteen outer [[plane]]s has an underlying consciousness. [[Eberron]] is where the planes converge, and the Prophecy is the result of the debate between these planar voices.
* The Prophecy is the ultimate source of magical energy. Magic has the power to reshape reality, and the Draconic Prophecy is the ultimate expression of this.
Even those who agree on the nature of the Prophecy argue
about its purpose. For much of the history of [[Argonnessen]], the followers of [[Thir]] have held to the belief that the Prophecy is the record of creation, and that the purpose
of the [[dragon]]s is to watch and record until creation runs its course. This means they can prevent others from tampering with the course of destiny, but should not manipulate it themselves.
The dragons of the [[Chamber]] counter that [[Ourelonastrix]] and the [[couatl]] used their knowledge of the Prophecy to defeat the [[overlord]]s in the [[Age of Demons]].
These dragons claim that the Prophecy is a tool, a gift to allow those wise enough to read it some control over the future. In their view, dragons should be on guard against
other forces who seek to control this power. The [[Lords of Dust]] have always sought to use the Prophecy as a weapon against their foes. The elves of the [[Undying Court]] have
unraveled many of its mysteries. Now, some among the lesser nondragons seek to use the Prophecy as a tool, if they can only master its secrets.
!! The Prophecy and Sarlona
The few human scholars and [[cataclysm mage]]s who have been able to discuss the Prophecy with the scaled lords of [[Argonnessen]] have found the [[dragon]]s to be utterly unwilling to speak of [[Sarlona]]. Some believe that this is because the dragons
know of an inescapable catastrophe destined to originate
from the continent. But others have a more disturbing
theory. They claim that the dragons don't speak of Sarlona
because the continent and the events that transpire there
are completely invisible to the Prophecy, and this terrifies
the dragons. Whatever the cause, the dragons clearly shun
this land. Beyond the fabled [[Storm Guardians]] of [[Adar]],
the only dragons encountered in Sarlona are rogues. The
[[Chamber]] has its agents in the land of the [[Inspired]], but
something—whether it is fear of the Inspired or fear of the
Prophecy—keeps the dragons from coming to Sarlona.
!! Adventure Hooks
Here are several ways the Draconic Prophecy could enter a campaign.
* An adventurer finds a [[spellshard]] journal that has rough details of his own past and future accomplishments, including finding the shard. Who wrote it? Will the PC try to follow the path it lays out, or create a new future?
* The party finds a dead man clutching a basalt disk, lying next to the corpse of a [[rakshasa]]. The stone holds a Prophecy mark, and agents of the [[Talons of Tiamat]], the [[Chamber]], and the [[Undying Court]] are all searching for it.
* A dragon prophet presents an adventurer with a magic sword. It’s prophesied that the adventurer will fight a champion of darkness hidden somewhere in the city; she has one day to find and defeat him, or she will surely die.
* Adventurers encounter a [[wizard]] building an [[eldritch machine]] over a large Prophecy mark. The mark has taken on the appearance of an [[aberrant dragonmark]]. Is this an innocent experiment, or the first step in a terrible plan?
* An attack by an overwhelming enemy force drives adventurers into a network of caves—a [[dragon]]’s lair that has been abandoned for thousands of years. Engravings on a cavern wall include the dragon’s notes on the Prophecy... including cryptic clues that could help the adventurers defeat the enemy hunting them.
* The [[Vault]] of [[Metrol]] is rumored to hold a copy of the Silaxerus Shard, one of the most complete [[records|spellshard]] of the Prophecy in [[human]] hands. Agents of the [[Chamber]] want to destroy it. The [[Library of Korranberg]], the [[Twelve]], and [[Arcanix]] want to steal it. Prince [[Oargev|Oargev ir'Wynarn]] wants it returned to [[Cyran|Cyre]] hands. Whom will the adventurers help? And what if the [[Lords of Dust]] have already stolen the shard and replaced it with a counterfeit designed to mislead?
This well-regarded [[goblin]] sage is a legendary scholar, a powerful arcanist, a respected city [[Master|Master's Hall]]—and a foul impostor. The original Dragana was
slain on a scholarly expedition two years before, with the evil [[gold dragon]] who killed her taking her place to pass
[[Io'lokari]] intelligence to her masters in the [[Vast]]. Powerful
magic in an amulet the [[dragon]] wears prevents [[truesight]]
from noting her real form. She plans to continue her
ruse for as long as possible, trusting that the shock of her
eventual discovery will give her the chance she needs to
change shape and flee.
Drago Thul was once a celebrated warlord and brilliant commander of [[Karrnath]] during the [[Last War]]. His common birth slowed his rise in the ranks,
but his skill and his religious connections helped him
overcome the limits of his birth. He bitterly opposed the use of [[undead]] and [[warforged]], believing their use sullied the art of war as championed by the teachings of [[Karrn the Conqueror]]. He is a follower of the [[Three Faces of War]].
When [[Kaius III|Kaius ir'Wynarn III]] ascended to the throne, Drago asserted that Kaius III was actually [[Kaius I|Kaius ir'Wynarn I]], a [[vampire]] "seeking to drain the lifeblood of Karrnath itself." This was a serious accusation; the undead have no rights under the
[[Code of Galifar]] and cannot inherit titles or lands. Thul's
challenge spread like wildfire, only to be crushed when
Kaius III met the warlords under the midday sun and cut
his palm to show his freely flowing blood.
Thul refused to lay down arms when Kaius III began paving the way for peace and the [[Treaty of Thronehold]]. He fled to [[Stormreach]] and founded the [[militia]] known as the [[Swords of Karrn]]. He declared that a thousand years had turned [[Wynarn|Wynarn family]] blood to water. He would no longer serve any Wynarn king or fight to restore the nation of [[Galifar]]. It was time to create a new kingdom from the ashes of the
old, following in the footsteps of [[Galifar I|Galifar ir'Wynarn]] and [[Karrn the Conqueror]]. He called on the soldiers of all nations
to abandon their weak rulers and flock to his banner.
[[Stormreach]] is a safe haven for the [[Swords of Karrn]],
but it is only a waypoint on their journey. Sword
envoys are spreading across the [[Five Nations]], sharing
the words of Drago Thul with every veteran they can
find. The group has less than a hundred members in
Stormreach, but it’s up to the DM to decide just how
much influence Drago Thul has in [[Khorvaire]]. Perhaps
no one is interested in his dreams of conquest. But
it’s possible that thousands of soldiers spread across
the [[Five Nations]] are ready for change, just waiting for
Drago to return to Khorvaire.
Dragons are winged reptiles of ancient lineage and fearsome power. Their size alone strikes awe into the hearts of most who witness them; adult dragons have wingspans of about 40 feet, while the wingspans of the most ancient dragons can be as much as 60 feet. The dragons of [[Eberron]] are much more than mere
monsters; adventurers will rarely barge into a dragon's
lair in search of its treasure horde. Dragons in the world
are either aloof and unapproachable, or they are curious
and manipulative, pulling strings behind the scenes or
trying to influence the world in arcane ways.
Most dragons live on the mystery-shrouded continent
of [[Argonnessen]] and avoid contact with those they see as
lesser creatures. They are obsessed with the [[Draconic Prophecy]], which is a map of possible futures rather
than a clear-cut prediction. Its paths are revealed in the
motion of [[plane]]s and moons, in the actions of the [[dragonmarked house]]s, and in dozens of other more subtle
manifestations. These dragons are bound by the decisions of the mysterious [[Conclave]]. Most dragons that are active in [[Khorvaire]] are part of a cabal known as the [[Chamber]].
A dragon in [[Khorvaire]] that isn't part of the Chamber is considered a [[rogue dragon]]. They could be an exile driven from [[Argonnessen]] for some
crime, or a scholar pursuing independent research. Some orphaned dragons grow up in Khorvaire without contact with Argonnessen, and some dragons have
been twisted by the [[daelkyr]] or corrupted by [[fiend]]s; any
of these could be an antagonist if the adventure you're
crafting calls for a cruel dragon.
The dragons of Eberron aren't restricted in alignment—good [[red dragon]]s and evil [[gold dragon]]s are equally common. Most dragons tend toward neutrality. Even those with good alignments often don't consider the impact of their actions on lesser beings; if a [[Chamber]] dragon must destroy a [[human]] village to foil the plans of a [[demon]], it will do so without hesitation.
!! Dragon Names
Dragon names tend to the long and unpronounceable (at least for the lesser races). When interacting with other creatures, dragons either use a diminutive, create a descriptive nickname, or insist that the creature attempt to use its full name.
<$button>
<$action-chooserandom $dataTiddler="$:/DragonNames" $field="var"/>
Generate Random Dragon Name
</$button>
<<<
''Dragon Name: ''{{!!var}}
<<<
!! Colors and Breath Weapons
Dragons are magical creatures whose innate power fuels their dreaded breath weapons and other preternatural abilities. The type of a dragon's breath weapon can be determined by the color of the dragon's scales; see the below tables. The dragon is also resistant or immune to that type of damage. Note that metallic dragons have two different kinds of magic breath they can use; one destructive, and one more subtle or utilitarian. Chromatic dragons only have destructive breath weapons, but it is typically more powerful than those of comparable metallic dragons.
| !Chromatic |<|!<<dr d10>>| !Metallic |<|
|!Color |!Breath ||!Color |!Breath |
|[[Black|black dragon]] |Acid ||[[Brass|brass dragon]] |Fire, Sleep |
|[[Blue|blue dragon]] |Lightning ||[[Bronze|bronze dragon]] |Lightning, Repulsion |
|[[Green|green dragon]] |Poison ||[[Copper|copper dragon]] |Acid, Slowing |
|[[Red|red dragon]] |Fire ||[[Gold|gold dragon]] |Fire, Weakening |
|[[White|white dragon]] |Cold ||[[Silver|silver dragon]] |Cold, Paralyzing |
{{DragonAgeCategories}}
!! Origin of the Dragons
According to the draconic faith known as [[Thir]], the birth of the first dragons predates even the rising of the [[overlord]]s. In the wake of the battle of the [[Progenitors|Progenitor Dragons]], life emerged
on the new world. [[Siberys]] had fallen in battle, but power
remained within his blood. Filled with the purest essence
of magic, that blood fell on [[Eberron]], merging life and
magic to produce new creatures with the strength of both
Progenitors. Where the blood of Siberys struck
the clouds, [[silver dragon]]s were born. It fell on the cold
peaks, and [[white dragon]]s rose from the ice. It struck
the swamps, and [[black dragon]]s emerged from the dark
depths. And so all the dragons were born, mighty and
proud, possessing the mystical power of Siberys and the
vibrant life force of Eberron.
Few of the creatures of the modern age existed at
the dawn of time. The [[titan|giant]]s of [[Xen'drik]] were in their
infancy, possessed of power but lacking knowledge. The
lesser races had not been born; the dark creatures had
not been spawned. So it was that wild flights of dragons
soared above the world, reveling in their might.
For untold millennia, the dragons were the sole lords of
Eberron. Then a new threat emerged. [[Khyber]] was bound
in the depths of Eberron, but this did not eliminate the
dark dragon’s power. In time, a host of horrors spawned
in the depths. The mighty [[overlord]]s, served by [[rakshasa]]s, [[aboleth]]s, and other terrors, emerged to lay claim to the world above. The [[Age of Demons]] had begun.
!! Draconic Creatures
Some creatures share a common ancestry with true dragons, but are not true dragons themselves. Below are some examples.
<<list-links-article "[tag{!!title}category[creature]!title[black dragon]!title[brass dragon]!title[blue dragon]!title[bronze dragon]!title[green dragon]!title[copper dragon]!title[red dragon]!title[gold dragon]!title[white dragon]!title[silver dragon]]">>
Most [[dragon]]s of the [[Thir]] faith direct their prayers to the Dragon Gods. Each of these deities is represented by a constellation in the night sky, and with the exception of [[Tiamat]], it is believed that the Dragon Gods watch the world from a realm that stands beyond the thirteen [[plane]]s... a place that cannot be reached by any mortal magic.
According to Thir, the Dragon Gods influence the affairs of dragons, but they have no time for lesser creatures. This is the domain of the [[Sovereign Host]], deities who themselves can continue to ascend to become Dragon Gods.
<<list-links-article "[tag{!!title}category[entity]sort[title]]">>
Public parks and green spaces are spread throughout the city of [[Io'lokar]]. In addition to providing space for quiet reflection and meditation, each
park features a shrine to one of the [[Sovereigns|Sovereign Host]]. Folk of
the city often choose a number of shrines for meditation,
many making a regular progress through the city to pay
fealty to each in turn.
The enormous park known as the Dragon Green
contains shrines to all fifteen Sovereigns, and is specifically designed to allow [[dragon]]s to join the city folk in celebrations, lectures, and other public events. Additionally, the [[Union of the Shield]] uses the Dragon Green as its primary training grounds, and tournaments of skill are scheduled here weekly. Such fairs are a combination of a typical combat or spellcasting competition and a tournament arcane. Lethal force is not only
tolerated but actively encouraged in such events, with defeated combatants [[raised|raise dead]] in short order.
Characters new to [[Io'lokar]] should expect an invitation to a tournament as a means of demonstrating their worth and skill. Refusal is a grave insult, and news of this insult will spread through the city. Victory in a tournament is a good way to gain status, however, improving dispositions within the city for one week.
This weapon is particularly effective against [[dragon]]s (or related creatures, such as a [[wyvern]]s).
The Dragon Spine Mountains on the west coast of [[Argonnessen]] look out across the [[Dragonreach]] and the [[Dark Sea]].
This [[red dragon]]'s thighbone is 14 feet long, 250 lbs, and is wrapped in old leather, suggesting that it was once used as a [[giant]]'s greatclub.
When you hit a dragon (or related creature) with this weapon, it deals extra damage.
If you attune to the greatclub, it magically shrinks to a size that you can wield effectively.
Adventurers and mercenaries in [[Stormreach]] need weapons, and this
store, the preeminent weapon shop in [[Forgelight]], provides
them. Dragon Tooth Arms spends a great deal of coin to
ensure that it has a near monopoly on the more powerful
magic weapons bought and sold in the city. Enchanted weapons here are powerful, but more expensive than they might be in other cities. With the right connections, adventurers can purchase even finer pieces—but still at a markup.
''District Type:'' Guildhall district <br/>
''Buildings:'' [[Dragonmarked house|dragonmarked house]] [[enclave]]s (12), [[trade guild]] halls (20), average lodging (20), average food
(35), upscale trades (20), average trades (50), poor
trades (15), upscale services (20), average services
(35), poor services (13), average residences (120)<br/>
''First Impression:'' Wealthy and important-looking
people parade through this district with escorts of
sycophants and well-armed guards. The sigils of the
dragonmarked houses are in abundant view.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Dava Gate]] (north); [[Sword Point]] (northeast); [[Warden Towers]] (bridge, southwest); [[Everbright]] (bridge, south); [[Smoky Towers]] (bridge, southeast); [[Granite Halls]] (below); [[Highest Towers]] (above)
[[Enclave|enclave]]s belonging to the thirteen [[dragonmarked house]]s can be found in this district. Of the thirteen, the most important in [[Sharn]] are House [[Tharashk]], House [[Cannith]], House [[Kundarak]], House
[[Sivis]], and House [[Lyrandar]]. Those five families
have the largest [[enclave]]s in Dragon Towers, as well
as smaller outposts in the areas of the city where
they do most of their business.
!! Noteworthy Locations
* ''Dragonmarked house enclaves:''
** [[Cannith|Cannith Enclave (Dragon Towers)]]
** [[Jorasco|Panaceum]] (the Panaceum)
** [[Kundarak|Kundarak Enclave (Dragon Towers)]]
** [[Lyrandar|Lyrandar Enclave (Dragon Towers)]]
** [[Sivis|Sivis Enclave (Dragon Towers)]]
** [[Tharashk|Tharashk Enclave (Dragon Towers)]]
** [[Phiarlan|Demesne of Shadow]]
* [[Globe Information Agency]]. An elite [[inquisitive]] agency with ties to House [[Tharashk]].
* The residence of [[Thora Tavin]], secret leader of House [[Tarkanan]]. This spacious mansion serves as the headquarters of the criminal organization.
Dragon turtles are among the most fearsome creatures of the oceans. As large and voracious as the oldest of its land-based [[dragon]] kin, a dragon turtle strikes with its deadly jaws, steaming breath, and crushing tail.
A dragon turtle's rough shell is the same dark green color as the deep water where this monster dwells. Silver highlights lining the shell resemble light dancing on open water, and a surfacing dragon turtle is sometimes mistaken for the reflection of the sun or moon on the waves.
Introduced into [[Sharn]] by [[Daask]], dragon's blood is a potent and highly addictive stimulant. In addition to inducing euphoria, it can enhance spellcasting ability or even temporarily imbue a user with the ability to cast arcane spells, as a [[sorcerer]]. The drug's effects are potentially dangerous and always unpredictable. This isn't something a player character should want to use; adventurers are more likely to interfere with Daask smugglers or deal with an addict who accidentally casts a [[fireball]] in a crowded street.
{{random magical effect}}
A ring of jutting stones rises from the earth within the heart of [[Breland]]’s farm country.
The ring consists of ten stone monoliths, each more than fifteen feet high, that sit slightly askew in a circle around a patch of uneven ground some thirty feet across. The ring
of stones resembles a massive crown of jagged rock. Known
far and wide as the Dragon’s Crown, the place has long
been the subject of speculation, outlandish legends, and
the occasional dark ritual. Some believe that [[giant]] hands
built the Dragon’s Crown in [[ages|Age of Giants]] past.
Nothing much grows within or near the Crown. On
some nights, especially when one or more [[moon]] is full
and bright, the monoliths glow with an eerie inner light.
It is said that on these nights, the monoliths sing, but
not many are willing to visit the site after dark to prove
this tale one way or another. It is also said that cultists
use the site to conduct dark rituals, especially members
of the various sects devoted to the [[Dragon Below|Cults of the Dragon Below]]; except
for the occasional carcass discovered lying in the center
of the Crown, no evidence of such activities has ever
been gathered.
The Dragon's Hoard is a [[Ghallanda]] resort, where travelers can enjoy the utmost in luxury if they can afford the most expensive amenities.
!! Dragon Age Categories
The listed [[creature tier]] of "4" for each of the true dragons references a fully grown adult. The table below offers general guidance for the range of tiers for dragons of different ages.
|!Category |!Tier |!Age Range |
|Wyrmling |2 |5 years or less |
|Young |3 |6–100 years |
|Adult |4 |101–800 years |
|Ancient |5 |801 years or more |
"Born of [[dragon]]s", as their name proclaims, the dragonborn (Draconic: //drakatha//) walk proudly through a world that greets them with fearful incomprehension. While they originated in the mysterious continent of [[Argonnessen]], they are known to the people of [[Khorvaire]] as one of the "[[scales]]" of [[Q'barra]].
!! Dragonborn Biology
Dragonborn closely resemble [[dragon]]s standing erect in humanoid form, though they lack wings or a tail. They are tall and strongly built, often standing close to 6½ feet tall and weighing 300 pounds or more. Their hands and feet are strong, talonlike claws with three fingers and a thumb on each hand.
Young dragonborn grow quickly. They walk hours after hatching, attain the size and development of a 10-year-old [[human]] child by the age of 3, and reach adulthood by 15. They live to be around 80.
Depending on the draconic ancestry of a particular clan, dragonborn within that clan possess a breath weapon and resistance similar to a [[dragon]] of that type. For example, a dragonborn with [[silver dragon]] ancestry can exhale a cone of icy breath and is resistant to cold.
!! Dragonborn of Argonnessen
The origins of the dragonborn are shrouded in mystery, but all signs indicate they emerged from the continent of [[Argonnessen]]. To this day, they can be found on the [[Seren]] Islands, and tales maintain that great dragonborn city-states exist in Argonnessen's interior, warring with one another over interpretations of the [[Draconic Prophecy]], or at the behest of their [[dragon]]-kings. (See [[Rav Dolorr]] and [[Rav Magar]].)
!! Exodus to Q'barra
Dragonborn made their way to [[Khorvaire]] as part of the retinue of [[Rhashaak]] tens of thousands of years ago, during the [[Age of Monsters]]. Their goal was to guard [[Haka'torvhak]], the prison of the [[overlord]] [[Masvirik]]. For thousands of years, the dragonborn defended the fiend's resting place, but eventually their restlessness and ambition won out over their sacred duty. They launched an empire and ventured beyond the [[Endworld Mountains]], spreading into the modern-day [[Talenta Plains]]. There they clashed with the [[goblinoid]] Empire of [[Dhakaan]] for generations.
However, their negligence eventually came back to haunt them. [[Masvirik]] strained against its bonds, [[Rhashaak]] faltered, and the Cold Sun's influence spread across the land, corrupting reptilian creatures in a thousand-mile radius, spawning the [[Poison Dusk]]. The dragonborn empire collapsed, and they returned to [[Q'barra]] in shame to face the source of the curse.
The struggle against the [[Poison Dusk]] nearly
destroyed the dragonborn of [[Khorvaire]]. Barely a
tenth of their number survived the struggle. After
the first scourging of [[Haka'torvhak]], the influence
of the [[Cold Sun|Masvirik]] grew weaker but it has never faded
completely. The dragonborn couldn’t kill the tainted [[Rhashaak]]
or cleanse Haka’torvhak itself, and new servants of
the Poison Dusk are inevitably drawn to the citadel.
To this day, a percentage of every dragonborn
generation falls prey to the corruption of the Poison
Dusk. There have been times when entire clans have
turned to the darkness and been exterminated by
those around them. This has kept the dragonborn
population low. They have never regained the numbers they had at the height of their power.
!! The Clans of Ka'rhashan
The dragonborn of Q'barra call themselves //Trothlorsvek//, “the defenders of the [[Prophecy|Draconic Prophecy]].” The //Trothlorsvek//
live in the ruins of their empire, where they are
bound by duty to fight a battle that cannot be won.
They are split into clans, each of which can trace its
lineage back to one of the regiments that came from
[[Argonnessen]] and each of which once held greater territories in the fallen empire. Each clan is assigned to guard a [[site|dragonborn clanhold]] touched by fiendish power and to battle demons and corruption. What humans see as the “holy lands” of the dragonborn are actually the cursed sites they are charged to guard. They keep outsiders from these places lest strangers cause the ancient evils to rise again.
[[Ka'rhashan]] is the crown city of the dragonborn, and the clan that
holds Ka’rhashan speaks first at every gathering.
Every five years a ritual battle is fought for control
of the city. Long ago this battle was a prelude to an
attack on [[Haka'torvhak]]; every five years the ruling
clan would lead the others in scouring the cursed
citadel. There was a time when dragonborn would
slaughter [[kobold]]s on sight, as these creatures are most
vulnerable to the corruption of the [[Poison Dusk]]. This
zeal is fading. It has been thousands of years since
[[Rhashaak]]’s fall. The Poison Dusk remains a threat,
and the //Trothlorsvek// must remain ever vigilant
against the corruption of the young.
Some say that the influence of the [[Poison Dusk]] is
a result of remaining in such close proximity to the
demonic ruins or of staying out of battle for so long.
These warriors scoff at the idea that the Poison Dusk
would grow more powerful if they were to abandon
their posts. Many young dragonborn dream of exploring distant realms and pitting their skills against new challenges. Some wish only for adventure, and this
is the path of many dragonborn player characters.
Other hunger for conquest and believe it is time for
the dragonborn to go forth and reclaim their empire.
This is the philosophy of [[Mishva|Mishva Garodya Stormhorn]] of the [[Stormhorn clan|Stormhorn Clanhold]], and many warriors are heeding her call. For now, the [[Flamebrow clan|Flamebrow Clanhold]] remains in control of [[Ka'rhashan]], under High Elder [[Bhisma|Bhisma Na'kala Flamebrow]].
!! Q'barran Dragonborn Culture
The Clans of [[Ka'rhashan]] are a martial nation. They
came to [[Khorvaire]] as an army, and they have never
stopped fighting. Only the [[Valenar]] rival the dragonborn in dedication to the art of war. Where the Valenar fight to honor their ancestors, the dragonborn of Ka’rhashan are driven by a burning desire for glory—a smoldering urge to prove their skill against greater and greater challenges. It is this urge that underlies the growing discontent among the dragonborn.
Clan elders are often [[cleric]]s who teach the tenets
of [[Thir]]—the Draconic Sovereigns. Other clans are led by //ukristroth//, [[bard]]s dedicated to the mysteries of the [[Prophecy|Draconic Prophecy]] and the history of the
//Trothlorsvek//. While clerics guide the people in daily
prayer, it is the //ukristroth// who adjudicate the ritual
battles and who are urging the people to remember
their ancient duty.
Despite losing their empire, the dragonborn are
proud to the point of arrogance. They believe that the
original defeat of the [[Poison Dusk]] was caused solely
by the military might of the //Trothlorsvek//, and they
dismiss any tales of [[dawn dragonshard|dawn shard]]s as nonsense.
Most consider the [[lizardfolk]] to be superstitious primitives, and they have long seen the [[kobold]]s as little more than animals. They are willing to trade with these races but not to treat them as equals.
The dragonborn place no special significance on the [[dragonshard]]s, but they have no intention of allowing outsiders to pillage the lands they have sworn to guard. Pride, love of battle, and dreams of glory are the watchwords of the modern dragonborn, and this
is laced with an iron backbone of duty that could rise
again to the fore if their pride leads to disaster.
The [[dragonborn]] of [[Q'barra]] divide their territories into clanholds, each autonomously ruled by clan elders, and all recognizing the holy site of [[Ka'rhashan]] as their ancestral home. These clanholds are spread across the trackless jungles surrounding [[Haka'torvhak]] and in the forests east of the [[Adder River]]. What [[human]]s see as the “holy lands” of the dragonborn are actually cursed sites touched by fiendish power they are charged to guard. They keep outsiders from these places lest strangers cause the ancient evils to rise again.
!! The Dragonborn Clanholds
<<list-links-article "[tag{!!title}sort[title]]">>
''District Type:'' Red light district<br/>
''Buildings:'' Temple ([[Olladra]]), shrine (the [[Traveler]]),
upscale lodging ([[Velvet's]]) (1), average lodging (9), poor
lodging (70), average food (20), poor food (80), poor
trades (80), poor services (especially brothels, gambling
halls, and pawnshops) (140), poor residences (100)<br/>
''First Impression:'' This district varies dramatically from street to street, blending loud, lowbrow entertainment with more sophisticated and sensual
pleasures for wealthier visitors.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Black Arch]] (southwest); [[High Walls]] (north); [[Firelight]] (bridge, northwest); [[Blackbones]] (below); [[Deathsgate]] (above)
Like the [[changeling]]s who control most of the brothels, Dragoneyes shifts its appearance to suit the needs of the moment. Where it caters to teamsters and
[[Cogs]] workers, Dragoneyes is a rough-and-tumble
neighborhood filled with rowdy taverns and gambling
halls. But the west side of the district is designed with
merchants and the wealthy in mind, and the delights
it offers are more sophisticated.
Dragoneyes has a number of inns, taverns, and restaurants aimed toward frequent travelers passing through [[Sharn]]. But there is no reason a visitor should have to dine or sleep alone. The streets are full of people of all races and genders offering companionship. Wise people avoid these freelance operatives—who are often thieves or con artists looking for an
opportunity—and instead frequent one of the many brothels in the district. Dragoneyes also contains a handful of dream parlors, places where illusion magic
is used to provide exotic entertainment.
Dragoneyes is the base of operations of the
[[Tyrants]], a guild of deception run by [[changeling]]s. The Tyrants manage to walk a fine
line, dealing with both [[Daask]] and the [[Boromar Clan]]
to provide the people of Dragoneyes with [[dreamlily]]
and [[dragon's blood]].
!! Noteworthy Locations
* [[Chance]]. A legendary gambling hall. In addition to standard games, it's said that the host can cover a wide range of unusual wagers.
* The [[Shifting Hall]]. A small, unassuming building on the Street of Eyes where prospective clients of the [[Tyrants]] can come in search of services.
* [[Velvet's]]. Staffed by [[changeling]]s, this comfortable inn specializes in fulfilling fantasies; both the staff and the rooms can be adapted to fit any scenario. Though some clients have romance in mind, others come to Velvet's to relive triumphs, to prepare for debates or trials, or for help in developing a new identity.
This spear is enchanted to emit bright light from its tip when the command phrase is spoken, which is "The [[Daughter of Khyber|Tiamat]]'s eyes shine," written in Draconic runes on the spear's crossguard. The light can be used for up to one hour total each day.
This breastplate has a gold dragon motif worked into its design. It grants its wearer resistance against the breath weapons of [[dragon]]s.
Dragonhawks are enormous birds of prey, easily large enough to carry a human on its back in flight. Their beaks are heavy and sharply pointed, their heads tufted with long, pointed feathers, and their eyes bright yellow with irregularly-shaped pupils. A single long, gently curved feather juts up above a dragonhawk's four nostrils at the base of its beak, and a large claw juts from the joint of each wing.
In the heraldry of [[Khorvaire]], [[Aundair]] is represented by a majestic dragonhawk, the symbol of its high ideals and aspirations. Above the rolling plains and fields of Aundair, dragonhawks soar through clear skies. Their aeries are hidden in the highest mountains. The largest and most majestic dragonhawks serve as mounts and companions to esteemed champions of the [[Knights Arcane]].
The legendary First Aerie, deep within the [[Eldeen|Eldeen Reaches]] wilderness, is home to some of the largest dragonhawks in [[Khorvaire]].
Not all of the
[[Seven Stones|Ninth Wands]] [[wizard]]s of [[Arcanix]] were executed at the end of the [[Last War]]. The greatest
among them was a woman named Elira Dawn. Elira is
one of the most gifted wizards Arcanix has produced,
and she is a protégé of one of Arcanix’s other great
wizards: [[Mordain the Fleshweaver]]. When Mordain
learned of her scheduled execution, he contacted
Minister [[Adal|Adal ir'Wynarn]] and provided a remarkable [[simulacrum]]
of Elira. Adal approved of the work Elira had done
for her country, and with his help the simulacrum
was executed instead. Elira established a new life in [[Stormreach]]. To this day, she studies the ancient works
of the [[giant]]s and other powerful forces, waiting for the
call to return to her beloved homeland.
[[Adal|Adal ir'Wynarn]] sent the [[Ninth Wands]] to [[Stormreach]] to serve
Elira. Only their commander, [[Jorian Thiel]], knows the
true identity of this woman they have been sent to protect. The others know Elira only as the Dragonhawk. They know that she is engaged in secret work on behalf
of their nation, but most assume that she is simply an
[[Arcanix]] researcher studying the [[Age of Giants]].
Elira spends most of her time in an extradimensional mansion (see [[manor key]]). She moves the entrance around
according to a schedule; [[Jorian|Jorian Thiel]] knows where to find
her, but the entrance is difficult for her enemies to
track. Many people in [[Khorvaire]] would like to see
her dead—not the least of which are King [[Boranel|Boranel ir'Wynarn]]
of [[Breland]] and Queen [[Aurala|Aurala ir'Wynarn]] of [[Aundair]]. Along
with [[Hassalac Chaar]], she is one of the most
powerful spellcasters in [[Stormreach]]. However, thanks
to her many enemies, she spends little time in public
and rarely exercises her remarkable talents. It’s up
to the DM to decide what discoveries she has made
over the last fifteen years; does she have a vault
of terrifying weapons ready for use when the war
begins anew?
A [[halfling]] healer touches a dying man; the mark on her
forehead blazes with blue fire as his wounds close and
vanish. A [[half-orc]] bounty hunter reaches out with the
power of his mark to find his prey. A [[human]] [[artificer]]
touches a [[creation forge]], and the symbol on her hand
flares as the eldritch machine rumbles to life. Each of
these people possesses a dragonmark, a symbol etched
on the skin in colors more vivid than any tattoo, magical
power made flesh.
A dragonmark enhances the user's ability to perform
certain tasks. For example, the [[Mark of Making]] guides
the hands of the smith, while the [[Mark of Shadow]]
helps its bearer avoid enemies. The power of a dragonmark can also manifest in more dramatic ways. The
[[Mark of Storm]] can scatter enemies with a blast of
wind, while the [[Mark of Shadow]] can weave illusions.
You can't buy or choose to develop a dragonmark;
each mark is tied to [[bloodlines|dragonmarked house]] within specific species,
as summarized in the table below. A dragonmark appears on a person around adolescence, though not every heir manifests the mark.
{{DragonmarksTable}}
Long ago, the families that carry the marks joined
together to form the [[dragonmarked house]]s. Over the
course of centuries, these houses have used their gifts
to establish powerful monopolies. For example, only
House [[Lyrandar]] heirs with the [[Mark of Storm]] can
pilot [[airship]]s. This control over vital services gives the
houses tremendous power.
!! Dragonmarks and Backgrounds
Dragonmarks are bound to certain bloodlines, and by
choosing a mark, you are establishing your character's
blood connection to one of the families in the dragonmarked houses. It's up to you to define your relationship
to the house. Were you brought up in the house? Or are
you independent from it? This is best represented by
your background. Consider the following options:
* ''Agent.'' You have a close, ongoing relationship with your house. The house agent background is a good choice if you are actively working for the house. Alternately, you could take the noble background to reflect a blood tie to the leaders of the house.
* ''Independent Scion.'' You were raised or trained by the house, but you've kept your independence. This means you don't have many special privileges, but you also don't have responsibilities.
* ''Excoriate.'' When a dragonmarked heir defies their house, they might be cut off from their family. In the past, your mark would be flayed from your body. Although this mutilation is no longer practiced, such exiles are still called excoriates. If you're an excoriate, consider what you did to deserve this punishment. Were you a criminal? A charlatan? Or perhaps a sage who engaged in forbidden research?
* ''Foundling.'' Your ancestors left the house long ago. You have no ties to the house and may not have known you were connected by blood before you manifested your dragonmark. As an outlander or an urchin, you might know nothing about the houses. As an acolyte or a hermit, you could have put your faith ahead of worldly things, choosing not to pursue a connection with the houses. Whatever you decide, this is an opportunity to talk with your DM about the role you'd like the house to play in a campaign. Do you want them to be your enemy? Would you prefer to avoid them completely? Or do you want to work your way into a position of power in the house, despite being an outsider?
!! The Powers of the Mark
Each dragonmark grants a set of abilities that reflect the
inherent powers of the mark. Your dragonmarked race
gives you a set of traits derived from the magic of your
mark. If you are a spellcaster, your dragonmark also fuels or channels some of your spells.
Over the centuries, the houses have developed tools that enhance and channel the powers of a mark, and these [[dragonmark focus item]]s give the houses much of their economic power.
!! Dragonmark Appearance
A dragonmark appears on the skin. There are twelve
known dragonmarks, each unique in design and power.
A dragonmark can appear on any part of the body. One
[[half-elf]] could have the [[Mark of Detection]] across an eye,
while another has it in the palm of the hand. Dragonmarks appear with vivid shades of blue and purple and
shimmer or even move slightly. When used, they grow
warm to the touch and sometimes glow (though this
doesn't produce useful illumination). A dragonmark
can't be removed—even if a limb bearing a dragonmark
is cut away, the mark eventually manifests on another
part of the bearer's body. All dragonmarks share a similar initial appearance, but a dragonmark can grow in
size and complexity as a character gains levels and uses
it to cast more powerful magic.
While dragonmarks share the same general appearance, your dragonmark could have a unique quality. Roll
on the table below for inspiration.
| !<<dr d8>> |!Dragonmark Quirk |
| 1 |Your dragonmark is unusually small or faint. |
| 2 |Your dragonmark is exceptionally large. |
| 3 |Your dragonmark appears somewhere else on your body whenever you finish a long rest. |
| 4 |Your dragonmark emits dim light in a 5-foot radius for 10 minutes whenever you use it. |
| 5 |Your dragonmark tingles and changes color for a moment when you're within 10 feet of someone with the same mark. |
| 6 |When you use your dragonmark, it animates and adopts the appearance of your dragon marked house's emblem for 1 minute. |
| 7 |Your dragonmark is an unusual color. |
| 8 |Your dragonmark changes size whenever you use it. |
!! Siberys Dragonmarks
Rarely, a dragonmarked character develops power that surpasses that of other dragonmarked heirs—a fighter with the [[Mark of Passage]] could teleport even though they have no other spellcasting ability, and a [[Ghallanda]] innkeeper could summon a magnificent mansion. These rarest and most powerful of dragonmarks are known as [[Siberys]] dragonmarks. They are larger and have a far more complex pattern than do other dragonmarks. Typically, a Siberys dragonmark evolves from an existing mark, following a dire situation in which the bearer performs a remarkable feat related to the abilities of their developing mark. However, on even rarer occasion, someone spontaneously manifests a massive, powerful dragonmark despite having never possessed a lesser one.
Regardless of whether they manifest on a dragonmarked heir or an unknown foundling, the [[dragonmarked house]]s value heirs with Siberys dragonmarks. A character who
displays such a mark is treated with more respect by other members of the house, but the barons and seneschals may also place greater demands on them. So a Siberys dragonmark is a blessing, but it can also be a burden. The manifestation of a Siberys dragonmark—especially one appearing spontaneously on an unmarked character—can be a sign that the bearer has an important role in the [[Draconic Prophecy]], as well as a warning that [[dragon]]s, [[fiend]]s, and other powerful forces may try to manipulate or harm the character.
!! Dragonmarks and Sarlona
[[Sarlona]] was the birthplace of humanity, and today [[human]]s make up the vast majority of the dragonmarked population, but no dragonmarks have ever
appeared on the people of Sarlona. Early signs indicate
that the children of dragonmarked parents don't develop
dragonmarks if they are conceived in Sarlona. The [[Twelve]]
has no explanation for this phenomenon, but many
believe that it is one of the keys to the ultimate mystery of
the dragonmarks and their purpose in the world.
This brooch is embedded with a small Siberys [[dragonshard]],
usually depicting the crest of its [[dragonmarked house]]. Each
dragonmark channel is tied to a specific [[dragonmark]], such as
the [[Mark of Healing]] or the [[Mark of Making]], and you can only
attune to it if you possess that dragonmark.
While wearing a dragonmark channel, you can use its power rather than your own to perform one of your dragonmark abilities (equivalent to a "common" tier spell). After using the channel once in this way, its power is depleted and must recharge overnight.
See also [[dragonmark reservoir]].
Much of the influence of the [[dragonmarked house]]s is based on a simple principle: it's easier to amplify an existing magical effect, such as that of a [[dragonmark]], than to create the same effect from nothing. Taken on their own, the powers granted by the dragonmarks aren't overwhelmingly powerful. However, over the course of centuries, House [[Cannith]] and the [[Twelve]] have developed items that focus and enhance the powers of the mark to produce powerful, reliable effects. In many cases—such as the [[storm spire]]s of House [[Lyrandar]] and the [[creation forge]]s of House Cannith—the [[Arcane Congress]] has been unable to duplicate the effects of these powerful focus items for non-dragonmarked creatures. Other items have since been reproduced in forms that anyone can use, but an item that requires the user to possess a specific [[dragonmark]] is always easier to create and less expensive than one that produces the same effect for anyone, giving the dragonmarked houses an important advantage.
Dragonmark focus items can only be created using proprietary tools, and are produced exclusively by House Cannith and the Twelve for use by trusted agents of the dragonmarked houses. So while many [[Medani]] [[inquisitive]]s wear [[Medi spectacles]], they acquired them through service to the house, not by purchasing them with gold.
Dragonmark reservoirs are always embedded with a Siberys
[[dragonshard]], but come in many forms, most commonly an
amulet or bracelet bearing the design of the [[house|dragonmarked house]] crest. Each
reservoir is tied to a specific [[dragonmark]], such as
the [[Mark of Healing]] or the [[Mark of Making]], and you can only
attune to it if you possess that dragonmark.
While wearing a dragonmark channel, you can use its power rather than your own to perform one of your dragonmark abilities (equivalent to a "common" tier spell). After using the channel 5-10 times in this way, its power is depleted and must recharge overnight.
See also [[dragonmark channel]].
Long ago, the families that carry the [[dragonmark]]s joined together to form the dragonmarked houses. Over the course of centuries, these houses have used their gifts to establish powerful monopolies. For example, only House [[Lyrandar]] heirs with the [[Mark of Storm]] can pilot [[airship]]s. This control over vital services gives the houses tremendous power.
In the past, the dragonmarked houses were held
in check by the united kingdom of [[Galifar]]. But in the
wake of the [[Last War]], people wonder if any nation has
the power to enforce its wishes on the houses.
{{DragonmarksTable}}
!! All About the Houses
Every dragonmarked house has traditions and secrets.
Here's a few facts that apply to most of the houses:
* ''Enclaves.'' Most dragonmarked houses maintain [[enclave]]s in major cities. These serve as strongholds and hubs for house businesses. A city may also have any number of businesses tied to the house, but these are simply providing services and don't have any direct connection to house leadership.
* ''Names and Ranks.'' Any heir of the house who develops a [[dragonmark]] is allowed to add the //d'// prefix to the house name: for example, [[Merrix d'Cannith]]. Despite the [[Korth Edicts]]' proscription against house members holding noble titles, regional leaders within the houses are called barons. Most houses are led by a matriarch or patriarch, though some are led by a council.
* ''Emblems''. Each dragonmarked house has an emblem, a distinctive symbol that features on their heraldry, official seals, crafted goods, and anything else that warrants the house's stamp of authenticity.
* ''The Twelve.'' The [[Twelve]] is an organization that facilitates cooperation among the dragonmarked houses.
* ''Excoriates.'' Excoriates are dragonmarked heirs who have been cut off from their houses.
* ''Foundlings.'' Foundlings are people who have a [[dragonmark]] yet have no tie to a dragonmarked house.
* ''Test of Siberys''. Dragonmarks manifest around adolescence. Each house puts its heirs through a trial called the Test of Siberys. The specific trials vary by house, but they place the heir in circumstances where they are likely to manifest the mark, if they have it. About half of the members of a bloodline manifest the mark.
* The [[Korth Edicts]]. A set of laws written under [[Galifar]] that regulate the houses.
|!Dragonmark |!House |!Race |![[Guild|trade guild]] Specialties |
|[[Detection|Mark of Detection]] |[[Medani]] |[[half-elf]] |Bodyguards, investigation, risk management |
|[[Finding|Mark of Finding]] |[[Tharashk]] |[[half-orc]] |Bounty hunting, investigation, prospecting |
|[[Handling|Mark of Handling]] |[[Vadalis]] |[[human]] |Animal training and breeding |
|[[Healing|Mark of Healing]] |[[Jorasco]] |[[halfling]] |Healing |
|[[Hospitality|Mark of Hospitality]] |[[Ghallanda]] |[[halfling]] |Food, lodging, urban information |
|[[Making|Mark of Making]] |[[Cannith]] |[[human]] |Manufacturing |
|[[Passage|Mark of Passage]] |[[Orien]] |[[human]] |Land transportation, teleportation |
|[[Scribing|Mark of Scribing]] |[[Sivis]] |[[gnome]] |Communication, translation, verification |
|[[Sentinel|Mark of Sentinel]] |[[Deneith]] |[[human]] |Bodyguards, mercenaries |
|[[Shadow|Mark of Shadow]] |[[Phiarlan]]<br/>[[Thuranni]]|[[elf]]<br/>[[elf]]|Entertainment, espionage<br/>Entertainment, assassination |
|[[Storm|Mark of Storm]] |[[Lyrandar]] |[[half-elf]] |Air and Sea transportation |
|[[Warding|Mark of Warding]] |[[Kundarak]] |[[dwarf]] |Banking, storage, prisons |
The Dragonreach sea stretches between [[Argonnessen]] and
[[Aerenal]], blending into the [[Thunder Sea]] at the western end
and the [[Lhazaar Sea]] and the [[Sea of Rage]] in the north. It is a
favorite haunt of [[dragon turtle]]s, and water-loving [[dragon]]s
(particularly [[bronze dragon]]s) frequently swim in its waters.
Most sailors are reluctant to sail through it as a result, and
when they do, they hug the Aerenal coast.
The dragonseye oak grows in [[Q'barra]], and its acorn empowers the casting of certain [[evocation]] [[spell]]s and the creation of [[alchemical explosive]]s.
The crystals known
as dragonshards serve as the fuel of the
magical economy and are used in items that
amplify the powers of [[dragonmark]]s.
Dragonshards aren't [[magic item]]s themselves but are
crystals imbued with magical energy. They play a vital
role in the creation of magic items and the performance
of certain rituals in [[Eberron]]. Dragonshards come in
three varieties, each found in a different environment.
''Eberron dragonshards'' are found in shallow soil
and often encased in geode-like stone shells. Eberron
dragonshards can be found almost anywhere, but the
most significant deposits have been discovered in jungle
environments, notably [[Q'barra]] and [[Xen'drik]]. In their
raw form, Eberron dragonshards are rosy crystals with
crimson swirls flowing in their depths and are typically
refined into a glowing powder. This dragonshard dust
can be used to fuel almost any act of magic. Eberron dragonshard dust
is used in the creation of some [[magic item]]s, and many
powerful tools—such as the [[lightning rail]] and elemental
[[airship]]s—require an ongoing expenditure of Eberron
dragonshards to maintain their enchantments.
''Khyber dragonshards'' are found deep in the earth,
often near layers of magma. These crystals typically
grow on cavern walls, and superstition says they flourish in areas with significant [[fiend]]ish activity. Khyber dragonshards are deep blue or dark violet, laced with
gleaming veins. Khyber dragonshards have an affinity
for binding magics. [[Elemental binding|elemental binding]]—which is behind
[[airship]]s, the [[lightning rail]], and [[elemental galleon]]s—requires a Khyber dragonshard to hold the [[elemental]].
Khyber shards are used for phylacteries, planar binding,
and other effects that trap or manipulate spirits. Khyber
dragonshards can also be used for [[necromantic|necromancy]] rites.
''Siberys dragonshards'' fall from the Ring of [[Siberys]], the ring of crystals that encircles the world. While rare in Khorvaire, there are significant Siberys dragonshard fields in the continent of [[Xen'drik]], and this is a potential source of great wealth for explorers. Siberys dragonshards are amber in color, with swirling golden veins gleaming within. These dragonshards are used in the
crafting of [[magic item]]s that require [[dragonmark]]s for
attunement. Larger ones may be required for [[eldritch machine]]s or the creation of [[legendary|rarity]] items or artifacts.
!! Dragonshards of Q'barra
[[Q'barra]] is known for two unusual grades of Eberron dragonshards: [[dusk shard]]s and [[dawn shard]]s, each worth five times as much as a standard shard of similar size.
!! Dragonshards and Sarlona
A few veins of Khyber shards exist on [[Sarlona]], largely in the hands of the [[dromite]]s. Defying any logic, however, Eberron and Siberys dragonshards simply do not form on Sarlona. The [[Inspired]] of [[Riedra]] established the outpost city of [[Dar Qat]] in [[Xen'drik]] about 300 years ago to harvest that continent's plentiful dragonshards.
The [[Shadow Marches]] hold deposits of Eberron [[dragonshard]]s, the source of House [[Tharashk]]'s wealth. These
fields aren't as rich as those in [[Q'barra]], but there's gold
to be made by those willing to hunt for shards in the
dangerous swamps.
The richest dragonshard fields in the Marches can be found on the western bank of the [[Glum River]], between [[Glumtown]] and [[Zarash'ak]] in shallow water. Such finds are marked by a pale red glow beneath the muck.
During the [[Last War]], the
Dragontail Guild of House [[Ghallanda]] provided food and shelter to armies
in the field in exchange for gold and a guarantee
of neutrality. Since the [[Treaty of Thronehold]], this
guild has been shrinking dramatically; most national
armies and mercenaries are garrisoned, not in the
field. Many war veterans within the guild are seeking
their fortunes in other areas of the house’s operations,
or are trying to find their own way in the world.
The Dragonwood is a forest in [[Breland]], and holds the headwaters of the [[Dagger River]].
Draj, a [[rogue dragon]] in [[Xen'drik]], was born a [[red dragon]], but one day, the shifting nature of the shattered land simply transformed him into a [[white dragon]] when his lair morphed from a volcanic hideaway to a glacial plateau. The change drove Draj mad, and he is steeped in denial. He has almost killed himself more than once trying to
lair in [[magma fields|volcanic fields]].
The Draleus Tairn are the smallest faction of the [[Tairnadal]] [[elves|elf]] of [[northern Aerenal|North Aerenal]]. Like their [[Valenar|Valaes Tairn]] cousins, the Draleus dedicate their lives to the arts of war and to honoring their ancestors. But the Draleus Tairn
don’t just reenact the deeds of their ancestors; they nourish the spirits of the fallen with the blood of [[dragon]]s. The Draleus faith holds that the warrior draws strength from
victory, and passes this energy to his ancestors... and no
victory is greater than the defeat of a dragon.
The Draleus Tairn rarely socialize with outlanders, or even other elves. Rumors exist that the Draleus [[dragon]] slayers can take the powers of their victims; that
their blood burns like dragonfire; that they can spit
lightning or breathe acid; and that their blood rituals increase their life span and even imbue them with the strength of the dragon. Perhaps these stories are mere myths. The tales could also reflect the presence of [[dragonborn]] among the Draleus Tairn, with these powers derived from spilled blood instead of
shared blood.
The Draleus elves have always been found at the forefront of the [[elf–dragon wars|Elf-Dragon Wars]], as much to claim blood for their ancestors as to defend their island home. While they wait for the next battle to begin, Draleus warbands stalk dragons across the length of Eberron, including [[Argonnessen]] itself, hunting [[rogues|rogue dragon]] and [[Chamber]] agents alike. It is a dangerous calling that demands great skill and cunning, and those who survive
are among the deadliest elves in [[Aerenal]].
The Draleus Tairn place equal value on martial and
magical skill, and [[wizard]]s and warmages fight alongside double-scimitar-wielding warriors. Their style of dress and choice of weaponry is similar to the [[Valaes Tairn]], though they favor dragonbone weapons and armor made from dragonhide.
''Color:'' Lavender<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Handling|Mark of Handling]]<br/>
''Associated Plane:'' [[Risia]]
Large and lavender, Dravago is a striking image in the sky. Its orbit typically keeps it at a distance from other moons, and old legends say that it is herding the rest and keeping them in motion. Children of Dravago are said to be more comfortable with animals and plants than with people—gifted herders, handlers, and farmers, but often awkward in social situations. Some say that stones from Dravago occasionally fall to Eberron, and alchemists have long claimed that this "purple dust of Dravago" holds remarkable magical properties.
This fearsome steel helm makes your eyes glow red while you wear it.
Dread Lake is located deep in the jungle of [[Xen'drik]], just south of [[Tempest's Spine]]. The nature of the continent's [[shifting zone]]s means the size of the lake fluctuates, but it is always massive, covering tens of thousands of square miles. A perpetual fog, caused in part by a nearby waterfall, shrouds this unnaturally calm lake, which is dominated by a slender silver tower that rises from the water’s surface. Even the local [[drow]] tribes avoid this place. Strange whispers can be heard across the lake’s surface, and
odd forms seem to dance through the ever-present mist.
Strange spirits lurk in this place, although they do
not act directly upon creatures in the area. However, any
creatures sleeping within a mile of the lake are plagued by
terrible dreams in which ghostly [[giant]]s sacrifice [[elf]] slaves
to the lake in grisly rituals. These whispers seem only to affect [[humanoid]]s.
The prison island of Dreadhold floats off
the northern reaches of [[Cape Far]] of the mainland [[Lhazaar Principalities]]. Sheer cliffs of slick black stone form an inhospitable coastline. Established first by [[Karrn the Conqueror]] as a place for exiling deposed rulers or courtiers fallen from favor, it was converted by the early [[Galifar]]
kings into a nigh-inescapable prison for those too important
to execute and too dangerous to be left free. The [[dwarves|dwarf]] of
House [[Kundarak]] manage the prison, which holds the most
dangerous criminals from across the [[continent|Khorvaire]], including a
number sent here for wartime atrocities. Most of the dwarves
consider a tour of duty at Dreadhold to be tantamount to
exile, but the bearers of the [[Mark of Warding]] make sure the
prison stays secure despite the bleakness of the place. The prison is supported by the small garrison town of [[Gaolgate]].
!! Guards and Wardens
The commander of Dreadhold is Lord Warden [[Zaxon d'Kundarak]]. His immediate subordinates are the two wardens [[Oralys|Oralys d'Kundarak]] and [[Darunthar|Darunthar d'Kundarak]]. A [[Kundarak]] warship circles the island at night, and two [[manticore]]s with dwarf riders watch the island from the air. All of the guards of Dreadhold are fanatically loyal to the warden and their house. These [[dwarves|dwarf]] have been selected for their skill, courage, and integrity, and are ready to lay down their lives if need be. The guards also make use of [[slaughterstone]] constructs.
!! The Wards
Dreadhold is divided into a number of wards for the incarceration of prisoners with differing security levels and social status. A single dark watchtower rises up out of the black mists that shroud the prison, equipped with a [[speaking stone]] and //orbs of observation// (limited versions of [[crystal ball]]s), that can observe all of the below wards.
!!! The Red Ward
As the primary prison complex, the Red Ward is where most prisoners are held. Prisoners are kept two to a cell, where they spend most of their time when not mining for Khyber [[dragonshard]]s below Dreadhold. Depending on their talents, prisoners might perform other forms of menial or even skilled labor. A workshop in the ward allows trusted prisoners to practice their trades.
!!! The Golden Ward
The Golden Ward is designed for the comfort of its inmates. This is the destination for exiled nobles or powerful people imprisoned for political reasons as opposed to criminal actions. Cells are designed for single occupancy and include well-appointed furnishings, such as a feather beds, finished tables, and comfortable chairs. Trusted prisoners are allowed to spend up to 12 hours per day out of their cells, and can take advantage of a library, luxurious bath house, and other assorted recreational facilities. Security, however, remains tight. Disruptions are dealt with swiftly, and troublesome prisoners might lose their privileges or be reassigned to another ward.
!!! The Stone Ward
Some prisoners are too dangerous to allow any sort of freedom, yet for one reason or another, execution is not an option. These prisoners are magically petrified and taken to one of the seventeen vaults of the ward. In addition to criminals, there are a few people who have voluntarily chosen to become inmates of the Stone Ward. Some are afflicted with strange curses that cannot be cured in the present age. Others merely want to outlive certain problems. Most notably, a number of people went into “stone sleep” during the [[Last War]], with orders that they be resuscitated once the conflict came to an end (the [[warden|Zaxon d'Kundarak]] is still deciding whether or not it has ended or merely taken a pause). While this could be done anywhere, by engaging the services of [[Kundarak]] a client knows their body is safe during their “sleep.”
!!! The Deep Ward
The most dangerous inmates in Dreadhold are held in the cells that lie beneath the prison. There is only one path to this lower level: a shaft that extends 100 feet into the earth. Its smooth walls are coated with magical grease, but a levitating metal cage allows travelers to move between levels. No light sources exist in the Deep Ward.
Over the centuries, a number of the cells have been imbued with magic to counter abilities prisoners might possess. Spellcasters might be bound in heavy hand manacles and placed in silent cells, chambers bathed in magical [[silence]]. Creatures with dangerous innate magical abilities can be incarcerated in one of the dead cells, which lie within the radius of an [[antimagic field]].
There is no recreation or work for those in the Deep Ward. They remain in their cells for the duration of their sentences.
!!! The Vaults
Although not a ward for holding prisoners, the vaults are secured like any other. As an [[enclave]] of House [[Kundarak]], the western side of Dreadhold is devoted to house operations. This includes mystical workshops, luxurious living quarters for visiting nobles, and massive vaults for storing treasures of the house, its clients, and the personal belongings of inmates. The ward also contains a nexus with three extradimensional vaults; these can be attuned to the [[Kundarak]] vault system. Many of the supplies of the prison are delivered through these vaults.
!! The Defenses of Dreadhold
Dreadhold’s security systems are vast and varied. Typical [[Kundarak]] spells such as [[alarm]] and [[glyph of warding]] only scratch the surface. Defensive [[construct]]s such as [[slaughterstone]]s and [[iron defender]]s are found throughout the prison. Curses may be bestowed on particularly dangerous criminals to keep them handicapped. House Kundarak has had hundreds of years to develop its defenses. [[Golem|golem]]s, bound [[efreet|efreeti]], [[illusion]] tricks—a DM should add whatever seems necessary to challenge the party.
In addition to the standard defenses, the island of Dreadhold lies within a [[manifest zone]] to [[Lamannia]], the plane of primal nature and elemental forces. This planar connection purifies any food or drink brought onto the island, and wood and stone are strengthened and magically warded against [[passwall]], [[disintegrate]], or even teleportation. This material enhancement extends to the petrified prisoners of the Stone Ward.
!! Notable Prisoners of Dreadhold
<<list-links-article "[tag{!!title}category[person]!search:title[Kundarak]] [tag{!!title}category[entity]] +[sort[title]]">>
The Dreadwood is the forest that completely covers [[Dreadwood Isle]] in the [[Lhazaar Principalities]]. To a lesser extent than the neighboring island of [[Lorghalan]], the jungles of Dreadwood Isle are touched by the [[plane]] of [[Lamannia]], and many [[elemental]]s can be found here.
Dreadwood Isle is an island in the [[Lhazaar Principalities]]. To a lesser extent than the neighboring island of [[Lorghalan]], the [[jungles|Dreadwood]] of Dreadwood Isle are touched by the [[plane]] of [[Lamannia]], and many [[elemental]]s can be found here.
This iron token is inlaid with a sliver of a Siberys [[dragonshard]].
Most are worn as brooches, but others take the form of coins or
keys. While an uul'kur (dream key) is a common magic item, the secret of
their creation is known only to the chot'uul monks of the [[Heirs of Dhakaan]], and they are largely unknown in the [[Five Nations]].
When you sleep with an uul'kur on your person, you remain
fully lucid when you dream, and when you wake, you clearly
remember everything that transpired. If you understand the
workings of the uul'kur, you can choose to bind it to your
dreams until dawn the next day. While bound, any creature who
sleeps with this token on its person shares your dream instead
of creating its own, provided you are asleep at the same time.
People always want what they cannot have, and every new
law creates a source of profit for those who challenge it.
The major challenger in [[Riedra]] is a cabal known as the
Dream Merchants. The Merchants are smugglers first
and foremost—they run [[dreamlily]] and other [[Sarlona]]n
goods to [[Khorvaire]], and they provide a black market for
Riedrans who want goods beyond the basic tools of survival provided by the [[Inspired]]. In the bastions, the Dream
Merchants provide other criminal services: theft, forbidden information, fencing of stolen goods, even assassination. Such actions are extremely dangerous, and the costs
of criminal services are typically four times what they might be in [[Sharn]]—assuming the Merchants are willing at all.
The Dream Merchants, while established in bastion cities, are rarely seen in the villages. Individual merchants sometimes travel between villages, posing
as couriers. They carry [[bags of holding|bag of holding]] containing a wide
range of contraband goods they can exchange with villagers. Wandering merchants are generally masters of sensing others' motives. They are very careful about whom they
reveal their true nature to, since one misstep could bring
death. Although most [[Riedrans]] have heard of the Dream
Merchants, common wisdom is that these people are the
direct servants of the //altavars//, sent to tempt and test the
devotion of the innocent. Loyal Riedrans report such
criminals immediately.
Dream Merchants can be found in most bastion cities, but a [[consequence]] of the attempt to find them may result in the authorities learning of the character's interest. The Merchants also maintain a
number of outposts on the islands of [[Ohr Kaluun]]. Their
strongest support on the mainland lies in [[Rhiavhaar]]—remnants of the freebooter spirit holding true.
A few Merchants manage to unlock innate [[psionic|psionics]] talents; the [[dimensional pocket]] power can be invaluable for a smuggler.
''Getting the PCs Involved:'' The Dream Merchants are
great contacts for those who want to enter [[Riedra]] by stealth.
Characters who are conversant with the criminal underworld
of [[Sharn]] might be able to make contact with a merchant
through the [[dreamlily]] trade. The Merchants can smuggle
people into [[Nulakhesh]], [[Pyrine]], or [[Corvagura]] through
their [[Ohr Kaluun]] gateway. They can also provide Riedran
traveling papers, at a steep cost of 25 c per person. Within
Riedra, Dream Merchants can help with transportation,
information, or other needs. They can acquire nearly anything, but exotic goods take time—and prices are modified up to 100% in favor of the merchant.
!! True Dissidents?
There is always a chance that a dissident group in [[Riedra]] is not what it appears to be. For example, it is possible that the Dream Merchants
are in fact an arm of the [[Thousand Eyes]]. It is almost impossible to eliminate crime—by creating the black market
itself, the Eyes gain the ability to monitor and control it.
The [[Inspired]] are in favor of the [[dreamlily]] trade, which
helps to weaken the people of [[Khorvaire]], but they don't
want to be seen as officially condoning it. Instead, they
somehow fail to completely exterminate the Dream Merchants. Through this control, the Thousand Eyes gains
the knowledge it needs to identify criminals and eliminate
the gravest threats to society while controlling the flow of
contraband goods and reaping any profits themselves.
The [[dreamspace]] threads through you and those you
know, allowing your thoughts to touch in dreams. You must be [[dreamtouched]] to use this psionic power.
You experience dreams that focus on those
you know. You can attempt to touch the
mind of a creature while you sleep, rest, or meditate. You send a short message of twenty-five words or less to a subject you have previously met and
spoken to in the waking world. The subject receives and
understands the message whether awake or sleeping. This ability does not allow the
subject to respond, but the subject knows the message is
from you.
This ability functions regardless of the distance to
the subject, but only if you and the subject are on the
Material Plane.
Designed by the [[giant]]s of [[ancient|Age of Giants]] [[Xen'drik]]
during the war with [[Dal Quor]], these statues
were crafted to trap unwary [[quori]] visiting [[Eberron]] in ethereal form.
A dream prison appears as a stone statue of a [[humanoid]] figure with outstretched arms. The arms are linked as if the statue was embracing an invisible form. Small humanoids carved at the statue’s feet indicate that the statue is meant to represent a [[giant]], though it is typically only 5–6 feet tall.
Any ethereal or incorporeal creature with the ability to possess a [[humanoid]] that passes within 30 feet of a dream prison must resist its powerful pull or be drawn into the statue. The creature remains trapped there indefinitely. Only one thing can free a trapped creature from a dream prison: a willing [[humanoid]] can step into the stone statue's embrace and allow the spirit to possess it.
This great green serpent bears a strange pattern of glistening silver scales
down the length of its back. Its eyes shine even brighter—two great pools of
silver peering out above a gaping, fanged maw.
The [[jungles|Jungles of Xen'drik]] of [[Xen'drik]] teem with exotic life, but none
are more sought after than the dream serpent. Renowned for their shimmering scales, pearly fangs, and hallucinogenic venom, dream serpents are hunted
by explorers throughout Xen’drik. Boats leaving for
[[Khorvaire]] often carry the dried leather and carved fangs
of these mysterious jungle predators.
The [[drow]], who call the dream serpents //qulashtaq//, view
these creatures as a vital part of their lives and culture. They
use the skin for armor, the fangs for weapons, the bones
and eyes in rituals, the flesh for food, and the venom as a
deadly weapon. The venom, when diluted, also serves in
their religious ceremonies. Both the drow and the [[yuan-ti]]
(who venerate dream serpents as aspects of the [[Devourer]])
indiscriminately attack explorers who indulge in what they
see as wasteful slaughter of these noble creatures.
Dream serpents inhabit Xen’drik’s warm forests, particularly areas of tall trees and sheltered clearings. Normally solitary, dream serpents gather in communal nesting grounds to incubate and hatch their eggs. A dream serpent grows to a length of 15 feet and can weigh up to 200 pounds; in combat, it uses its sleep gaze to best advantage, reserving its bite for creatures that resist its gaze.
In the spaces between sleeping and waking, nightmares
wait with grasping claws. The [[quori]] spirits that rule [[Dal Quor]] spent a thousand years seizing control of the continent of [[Sarlona]]. Now they have turned their many eyes
toward [[Khorvaire]]. The ultimate goal of the Dreaming Dark is to control all the nations. of the world. The plane of Dal Quor goes through cycles of light and darkness, and the current age is coming to an end. The nightmare spirits that rule the plane believe that by seizing control of mortal civilization—by forcing all the people of Eberron to dream the dreams they devise—they can maintain this current age of darkness indefinitely. So the fiends of
the Dreaming Dark aren't merely hungry for power; they
are fighting for survival.
The [[quori]] can't manifest physically in [[Eberron]], but they have other options. They can possess willing [[humanoid]]s, creating agents known as the [[Inspired]]. They can also manipulate the dreams of mortals. The Dreaming Dark can trick a priest by sending dreams that appear to be divine visions, or inspire a soldier to rebel against their lord.
The greatest weapon of the Dreaming Dark is its ability to infiltrate other organizations. Anyone could become an [[Inspired]] vessel, or be prompted into taking foolish action by a dream. Its agents are scattered across the world and have no obvious connection to one another, until they reveal their true nature and purpose.
!! The Dreaming Dark in the War
The chaos that reigned during the [[Last War]] enabled the agents of the Dreaming Dark to move and act with absolute freedom throughout [[Khorvaire]]. Any direct conflict among [[Eberron]]'s humanoid populations is a boon to this group, which wants to destabilize all of them. Many of the intense battles near the end of the war might have been avoided, if not for Dreaming Dark agents fanning the flames of fear and hate—often by invading the
dreams of soldiers and rulers alike.
The feelings of mistrust and festering animosity between the nations that linger after the [[Treaty of Thronehold]] provide the Dreaming Dark with countless points of possible infection. Refugees, expatriates, and other displaced people provide the perfect vehicle for
the Dreaming Dark to spread its influence across [[Khorvaire]], carrying its corruption into new populations.
!! The Role of Dreams
All dreams occur in the plane of [[Dal Quor]]. When mortals sleep, their minds touch the plane and shape a shard of it. Normally, a dream is shaped by the memories and emotions of the dreamer. But the dream spell and similar effects (such as a [[night hag]]'s Nightmare Haunting) can influence a dream from the outside, to a specific and often sinister purpose. The [[quori]] are masters of using the dreams as a weapon to terrorize their foes.
It's possible for an entire adventure to take place in a dream. The trick with a dream adventure is ensuring that it feels meaningful, even consequential, and not just a waste of time. One of four basic approaches can help you do that:
* A real monster inhabits a character's dreams and poses a real threat to that character's mind or body. The goal of the adventure is to defeat that monster.
* A dreaming character is incapable of waking communication—they might be comatose or possessed. The goal of the adventure is to communicate with the dreamer and free them from whatever is preventing them from communicating.
* A villain has implanted some kind of psychic lock in a character's mind, which prevents them from accessing some knowledge or capability. The goal of the adventure is to remove the psychic lock, which might take the form of a complex trap or maze in the dream.
* The actual objective of the adventure lies in [[Dal Quor]]. The first goal is to find a way to break out of the mundane dreamscape and enter the wider plane.
The second challenge in crafting a dream adventure is
how to bring all the characters in a party together in the
same dream, which might or might not belong to one of
them. Consider these possibilities:
* One of the characters is dreaming, and the others appear in the dream as memories and impressions in the dreamer's mind.
* Some exotic magic—a kalashtar ritual or an [[eldritch machine]], perhaps—allows the characters to share a dream or to enter someone else's dream. This magic could also allow a character who ordinarily can't dream (such as an [[elf]], a [[warforged]], or a [[kalashtar]]) to enter the dreamscape as well.
* Agents of the [[Dreaming Dark]] use their magic to bring the dreams of the characters together so they can influence or target the whole party at once.
The table below puts these principles together and suggests hooks into this kind of adventure.
| !<<dr d4>> |!Dream Adventure Goal |
| 1 |Break a psychic lock that is preventing a House [[Thuranni]] spy from remembering what they learned about a sinister [[Dreaming Dark]] plot. |
| 2 |Escape into [[Dal Quor]] to find an artifact that can be brought back to the Material Plane when the characters awaken. |
| 3 |Rescue a character who is suffering from debilitating recurring nightmares by defeating the [[quori]] inhabiting the character's mind. |
| 4 |Stop the construction of an [[eldritch machine]] in [[Dal Quor]] that will give the [[quori]] physical access to the Material Plane again |
!!! Dying in Dreams
Death in dreams is less severe than in reality, but it's
not without consequence. Of course, characters who are
mere figments of a dreamer's imagination are simply
removed from the dream. But a character dies while actually dreaming, the character receives no benefit from
the rest and takes some psychic damage.
If you want to establish more severe consequences,
you can. A dreamer killed by a [[quori]] could be trapped in
[[Dal Quor]] while the quori possesses their body, forcing
their allies to try to rescue them from their nightmares.
!! Dreaming Dark NPCs
Agents of the Dreaming Dark are insidious villains that
can appear anywhere, in almost any context. They receive orders from a cabal of powerful quori. The leader of the organization, known as the [[Devourer of Dreams]],
communes with the nightmare spirit of [[il-Lashtavar]] itself.
The Dark's chief agent in [[Eberron]] is a [[kalaraq]] [[quori]] named [[Tirashana]], who has planted [[mind seed]]s—mental copies of herself—across [[Khorvaire]].
The Dreaming Dark has [[Inspired]] agents and [[kalaraq]] [[quori]] [[mind seed]]s scattered across [[Khorvaire]], hidden within the membership of [[dragonmarked house]]s, noble families, and other driving forces. Because Dreaming Dark agents can communicate and coordinate with one another in dreams, they never have to
risk losing their cover to receive assignments or transmit information.
| !<<dr d4>> |!NPC |
| 1 |A servant in a manor house overhears everything the visiting nobles whisper about in their private rooms. |
| 2 |The captain of a successful mercenary company suddenly changes the kinds of contracts they'll accept. |
| 3 |A local [[druid]] searches out monsters in the wilderness and drives them into murderous rampages. |
| 4 |A charismatic [[Cyran|Cyre]] stirs up anger and discontent among the frightened refugees. |
!! Dreaming Dark Campaign Themes
Long ago, the Dreaming Dark caused a long period of
strife on the continent of [[Sarlona]], fostering suspicion,
rebellion, fear, prejudice, and greed among and within
the various nations that held power at the time. While
chaos reigned, the [[quori]] also carefully nurtured the
[[human]] bloodlines that would become the [[Inspired]],
perfectly suited to serve as hosts for quori spirits. Then,
when the destruction of the old kingdoms was complete,
a group of bold champions—[[Inspired]] vessels of the
Dreaming Dark—formed a new nation from the ashes
of the old. Having conquered [[Sarlona]] by means of such
manipulation, the Dreaming Dark has turned its sights
to [[Khorvaire]]—which is already a continent in turmoil.
With the conquest of the entire continent in mind,
the Dreaming Dark has three objectives in Khorvaire.
The first is to cause chaos and strife whenever possible,
turning allies against one another and spreading fear.
The second is to promote their chosen champions. A
champion could be a nation, a mercenary company, a
[[dragonmarked house]], or a [[religion]]—whatever it is, it will
have been thoroughly subverted by the Dreaming Dark. Finally, the Dreaming Dark relentlessly pursues the [[kalashtar]] and takes every opportunity to bring down these enemies. The kalashtar are descended from rebel [[quori]] that defied the Dreaming Dark and want to push [[Dal Quor]] into an age of light.
Given those objectives, the Dreaming Dark can drive
events on a small scale, by setting bandits in motion or
triggering local feuds, or the adventurers might uncover
evidence of plans that could reignite the [[Last War]] or
bring an entire nation or religion under the sway of the
Dreaming Dark.
!! Dreaming Dark Adventure Hooks
The table below offers some
ideas for strange occurrences and nightmarish events
that can touch off stories involving the Dreaming Dark.
| !<<dr d4>> |!Adventure Hook |
| 1 |The high priest of a temple falls into a deep sleep from which nothing can awaken them. |
| 2 |The characters notice a pattern after defeating several foes: each enemy exhibited a particular quirk of speech or gesture. They now recognize that quirk in an ally or mentor. |
| 3 |A mad [[wizard]] encoded the remedy to a destructive spell in their own dreams. The characters must enter the dreamscape and recover the remedy. |
| 4 |A war criminal imprisoned during the [[Last War]] reaches out, claiming to have evidence of their innocence and warning that a destructive force is influencing the government. |
A psychoactive liquid that smells and tastes
like your favorite beverage, essence of dreamlily is a
[[Sarlona]]n opiate. First imported to help manage pain
during the [[Last War]], it's now the most commonly abused
substance in [[Sharn]]. Though dreamlily isn't illegal if used
for medicinal purposes, it's heavily taxed, and thus most
dreamlily is smuggled in and sold on the black market.
Dreamlily dens can be found across the [[lower ward]]s.
Consuming dreamlily causes disorienting euphoria and brings
about remarkable resistance to pain and fear. A dose of dreamlily costs
around 0.2 crowns, or up to ten times that if purchased through
legal channels. There are many varieties of the drug, however, and the duration or the price might vary accordingly.
One of the primary purposes
of the [[hanbalani|hanbalani alta]] in [[Riedra]] is to shape the dreams of the [[populace|Riedrans]],
projecting soothing dreams across the nation. This is
a delicate art; unlike [[charm]] or [[dominate]], a dream does not
force the target to take any action. It simply plants an
idea; if the subject acts, they do so of their own free will.
In limited circumstances, nocturnal manipulation
involves targeted dreams, visions crafted for a particular
subject. By this means, the [[quori]] sparked the [[Sundering]]
and continue to undermine their enemies.
A far more insidious dream conditioning occurs
over a wide area. Effectively, the network of monoliths
projects a constant, low-level dream effect across [[Riedra]].
Those who fall asleep and fail to resist the effect have the dream that is currently being
projected. The typical Riedran dream is soothing and
vague, blending images to project the wonder of Riedra,
the joys of being part of a greater whole, and the celestial benevolence of the [[Inspired]]. Every so often, these soothing visions are interspersed with flashes of the dark horrors that lurk outside the borders of Riedra. Although
insufficient to change the views of a PC over a short time,
the dreams serve to constantly reinforce a Riedran's
indoctrination. Although the dream can be resisted, Riedrans voluntarily accept it. A Riedran takes comfort in her stable dreams and looks forward to resting and bathing
in the love of the Inspired. The widespread knowledge
that Riedrans suffer from chaotic, unpredictable dreams
when in foreign lands is one more reason they hate to
leave their homeland.
[[Monolith|hanbalani alta]] dreamshaping is a background effect,
and targeted use of dream magic takes precedence over the broadcasts. Furthermore,
the [[dreamtouched]] are immune to dreamshaping.
The content of dreams is controlled from [[Dal Quor]], and it can be made more specific (for example,
broadcasting the image of a wanted criminal). A particular dream can be targeted at a village, a sphere, or
the entire nation. The [[quori]] can also choose to use the
dreamshapers to project nightmares across a region.
In this case, the dreamer is fatigued, and the disturbed sleep is not restorative. These
nightmare attacks are usually blamed on [[kalashtar]],
[[dromite]]s, or //altavars//.
Planar gateways that once linked [[Eberron]] and [[Dal Quor]],
the Region of Dreams, were sundered during the cataclysmic wars that destroyed [[Xen'drik]] and shattered the
[[giant civilization|Age of Giants]]. Since then, Dal Quor has been forever
distant, and no stable [[manifest zone]]s to Dal Quor exist
anywhere on Eberron.
However, Dal Quor and Eberron remained inextricably linked by the state of dreaming—the process by which mortal minds travel to the Region of Dreams, and
the subtle gateway through which the [[quori]] first began
their conquest of [[Sarlona]] some fifteen centuries past.
Discovered short years ago and still known only to
few, the ''dreamspace'' is an effect that appears related to
this spiritual connection between planes, but one that as
yet has no explanation. It appears as a kind of ripple of
[[arcane|arcane magic]] and [[psionic|psionics]] energy—a border of sorts between the
mortal world and the world of dreams. Where dream and
reality touch, a vortex of shifting light and sound unfolds.
The world as seen through the dreamspace appears as it
truly is, but its colors are alternately muted and intense.
Creatures who can see into the dreamspace observe shifting auras that surround living creatures and psionic or magic objects alike. Light and shadow bleed into each
other, and an echo of unintelligible voices twists through
the hiss of a never-ending wind.
Though powered in some way by the energy of [[Dal Quor]], the dreamspace is a Material Plane effect. It is not simply a manifestation of the Region of Dreams, nor is it
connected to the dreamscapes of the [[Ocean of Dreams]].
Some posit that the recent appearance of the dreamspace could be tied to the [[Inspired]]'s monoliths, the [[hanbalani alta]]s. More than a few [[kalashtar]] believe that the hanbalani have a dark purpose—designed by the Inspired to help bring [[Eberron]] and [[Dal Quor]] coterminous once more. Where the two planes connect through the act of mortal dreaming channeled by the monoliths, they have begun to actually
touch, rupturing and repairing themselves as the spiritual and temporal energy of each plane is drawn into the other. However, running counter to that theory is the
fact that the dreamspace can be accessed from anywhere on Eberron, not simply on [[Sarlona]], and that proximity to a hanbalan appears to have no effect on the dreamspace or the abilities that those attuned to it can obtain. Furthermore, certain spells and powers have effects that change when cast or manifested by the [[dreamtouched]]—those whose study of the dreamspace allows them to make contact with its otherworldly energy. Though the [[Inspired]] and the
[[Keepers of the Word]] are constantly active in the development of new lore, clearly some of these spells and powers predate current knowledge of the dreamspace.
Regardless of its origin, different factions among
both the [[kalashtar]] and [[Inspired]] distrust—some even say
fear—the dreamspace. In particular, a good number of
Inspired are said to be disturbed by the existence of a
power connected to Dal Quor that they neither control
nor understand.
As a dreamtouched, your knowledge and study allows you to tap into an otherworldly [[psionic|psionics]] source of mystical energy—the [[dreamspace]].
By tapping into the latent essence of dreams
that saturates all [[Eberron]], you are able to enter a dreamtouched
state—a condition of conscious dreaming that focuses
the world around you even as it reveals your own inner
self.
While in a dreamtouched state, your mental abilities are enhanced, and you are able to perform unique psionic abilities such as [[dream of contact]] and [[dream lock]]. Each dreamtouched state lasts for up to a few minutes.
In addition to the above effects, dreamtouched characters are immune to the [[dreamshaping]] effects of the [[hanbalani alta]]s.
A character must have slept for a minimum of
4 hours in the previous 24 hours to put themself into a dreamtouched state. Characters who do not sleep (such as [[elves|elf]], [[kalashtar]] and [[warforged]]) must have
spent a minimum of 4 hours in uninterrupted rest or
meditation. Characters who are fatigued or exhausted cannot
enter a dreamtouched state.
Drenga was only a boy at the time when his tribe was
slaughtered by a band of explorers in the jungles of [[Xen'drik]]. He was sold to
[[Malketh Zolark]] immediately, who turned the young [[drow]] over
to his taskmasters and handlers in the Storm's Fury stable of the [[Red Ring]]. Drenga was molded into a mindless killer who remembers little of his family. He sees Malketh as his “father” now, the only one who gives his life purpose. Drenga lives only to
fight in the ring.
The leader of the [[Fleas]] gang in [[Stormreach]] is a [[ghost]] named Drifter.
He has the appearance of a human boy of ten years of age, blackened and bloated from drowning. Despite
his youthful appearance, Drifter is an old spirit and a
skilled thief, and he trains his young protégés in the
arts of stealth and deception.
Drifter does not discuss his history or reveal his
true name, but most believe he was pushed into the
harbor by a member of the [[Stormreach Guard]] and that
his bones are still drifting in the water. Drifter hates
adults, and though he grudgingly allows his “family”
to work with the older gangs, he always expels members
once they reach adulthood.
This small sphere of thick glass weighs 1 pound. If you are within 60 feet of it, you can speak its command word and cause it to emanate bright light that even cuts through magical darkness.
You can speak another command word to make the illuminated globe rise into the air and float up to 5 feet off the ground. The globe hovers in this way until you or another creature grasps it. If you move more than 60 feet from the hovering globe, it follows you until it is within 60 feet of you. It takes the shortest route to do so. If prevented from moving, the globe sinks gently to the ground and becomes inactive, and its light winks out.
''Capital:'' The [[Great Crag]]<br/>
''Hallmarks:'' [[Byeshk|byeshk]] ore, monstrous mercenaries
Droaam is a nation of monsters ruled by the [[Daughters of Sora Kell]]. Each of these three [[hag]]s is a legend in her
own right, the subjects of tales used to frighten children.
Eleven years ago, they seized the lands west of the [[Graywall Mountains]] and founded the nation of Droaam.
Although [[Breland]] laid claim to these barren lands,
[[Galifar]] had never tamed this wild region. [[Gnoll|gnoll]]s, [[orc]]s,
and [[goblinoid]]s commonly sought haven here, as well as
[[ogre]]s, [[troll]]s, [[harpies|harpy]], [[minotaur]]s, [[medusa]]s, [[tiefling]]s,
[[changeling]]s, [[lycanthrope]]s, and other races unwelcome
in civilized lands. In the past, these creatures fought one
another more often than they raided human settlements.
Under the leadership of the [[Daughters of Sora Kell]], they
have new purpose. The Daughters use an army of ogres
and war trolls to maintain order.
To date, the other nations of [[Khorvaire]] have refused
to recognize Droaam, and the region was not acknowledged in the [[Treaty of Thronehold]]. Most people believe
that the monstrous nation can't last—that even the
Daughters can't hold the disparate alliance together—but Droaam is currently thriving and stronger than ever.
For more on the history of Droaam, see [[Droaamish History]].
Droaam works closely with House [[Tharashk]], selling
the services of monstrous soldiers and laborers and
[[byeshk]] ore, a form of metal with magical properties.
Beyond that, it's a still-expanding frontier nation. The
cities of [[Graywall]] and [[Great Crag]] grow larger and more
organized every day, and the rest of Khorvaire is uneasy
with the potential power of a fully realized Droaam.
The monsters that inhabit Droaam retain their racial
subcultures. Most worship the [[Dark Six]], but other religious traditions flourish as well.
See also [[Culture of Droaam]].
!! Interesting Things About {{!!title}}
* Droaam uses the supernatural abilities of its citizens as tools, just as other nations of [[Khorvaire]] use magic. The [[Daughters of Sora Kell]] keep their people fed with [[troll sausage|grist]] and use [[harpy]]'s song to quell brawls. When dealing with monsters in Droaam, consider the practical applications of their abilities.
* When the Church of the [[Silver Flame]] purged lycanthropy from the [[Five Nations]], a number of [[lycanthrope]]s escaped into the region that later become Droaam. The [[Dark Pack]] alliance of lycanthropes, [[worg]]s, and other supernatural predators hunts southern Droaam.
!! Droaamite Characters
[[Minotaur|minotaur]]s, [[orc]]s, [[gnoll]]s, [[tiefling]]s, [[changeling]]s, and other
monstrous species all have a place in Droaam. Consider
these questions when making a Droaamite character:
* ''What Makes You Different?'' The people of Droaam aren't just [[human]]s with horns or green skin. Think about the unique aspects of your people and what makes you different from humanity, both physically and culturally.
* ''What Are Your Ambitions?'' Citizens of Droaam are proud of their nation. You know that the rest of Khorvaire considers you a monster. Do you intend to prove that you and your kind are capable of deeds humanity can't imagine? Or are you driven solely by your personal desires, or the goals of your family or warlord?
* ''How Does Your Background Shape You?'' The diverse creatures of Droaam could include a [[kobold]] city-savvy rogue urchin, an [[orc]] outlander barbarian with little knowledge of the outside world, or a [[tiefling]] [[warlock]] sage versed in Arcana and History.
!! Cities and Sites
In the past, particular creatures dominated the communities of Droaam. The [[harpy]] flights lived in mountain
peaks, while the [[medusa]]s remained isolated in the citadel of [[Cazhaak Draal]]. Under the rule of the [[Daughters of Sora Kell]], the Droaamites are creating cities where all
manner of creatures live and work together.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]!tag[geography]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
Droaam is barely a decade old. The treaty nations refuse
to acknowledge its sovereignty; according to the terms
of the [[Treaty of Thronehold]], it's a rebellious territory
of [[Breland]]. As a renegade nation, it is a haven for war
criminals and deserters, as well as brigands and mages
pursuing forbidden paths of magic. The monsters of
Droaam have no particular love for these bandits and
fugitives, and outlanders have to watch their step.
Tensions remain high on the border with Breland, resulting in constant skirmishes and raids. Deeper within
the nation, the [[Daughters of Sora Kell]] build their power.
[[Graywall]] and the [[Great Crag]] are constantly expanding,
with [[goblin]]s and [[ogre]]s laboring through the night. Warlords drill their troops, forcing all manner of monsters
to work together. A predatory aspect permeates life in
Droaam but also a sense of excitement, the belief that
the Daughters will lead Droaam to greatness. For centuries the people of Droaam have hidden in the shadows;
now they stand in the light, and they are proud.
!! Political Structure of Droaam
The nation of Droaam, which has only existed for eleven years,
has a general structure established, but it's constantly evolving.
The [[Daughters|Daughters of Sora Kell]] may implement new ideas or institute new
offices tomorrow, and a rebellious warlord could be crushed
and replaced on a moment's notice. As it stands, Droaam has
been split into //lheshat//—a Goblin term meaning “domain of a
warlord.” Each lheshat is governed by a warlord who answers
directly to the Daughters; each is charged with maintaining a
military force that can serve the Daughters.
For now, each warlord has the power to rule their domain
and organize their own army as they see fit. There is no
standardized system for either bureaucrats or soldiers; in
the former Barrens, the most powerful local official is still
called the chib (chieftain), though they may no longer be the largest or
most physically menacing creature in the community. In the
cities where multiple species live side by side, the common
populace is divided between soldiers, skilled laborers, and
the general labor force; these are organized by and under
the direct authority of the local chib. Such cities have a [[grist]] mill and a series of barracks, providing food and shared shelter for all workers. You won't own property unless you have valuable skills or an impressive position, but you can find free food and shelter in any city—though as the cities are still expanding to meet capacity, in
many places, that shelter is a bedroll in a tent.
Katra's vision is that all creatures of Droaam would work
together, part of the greater whole. Ideally, a laborer who works
hard should have no fear of abuse—foremen shouldn't beat (or
eat) their crews on a whim, an improvement over life in the
Barrens. Katra wants the workers to be respected for their
efforts, much as the [[golin'dar|goblin]] are treated with respect among
the [[Kech Dhakaan|Heirs of Dhakaan]]. But while the Daughters promote this ideal,
it doesn't always work out in practice; there are still lheshat that
treat laborers cruelly. Even where workers are treated well, it's
balanced by the understanding that anyone who challenges the
Daughters or the warlord will be crushed without mercy.
In any given lheshat, the warlord governs their domain and
the chibs beneath them lead each community. But there are
three forces that operate outside this system, working directly
for the Daughters and wielding authority throughout the land: [[Katra's Voice]], [[Maenya's Fist]], and [[Teraza's Eye]]. These names are the titles both of the organization and its officers; an agent acting on official business simply says, “I am
Teraza's Eye, and you will tell me what transpired here.”
Droaam isn't bound by the [[Code of Galifar]], and there is no
uniform code of justice. Justice is thus entirely in the hands of
the local chib, unless Katra's Voice overrides them. Every chib
maintains their own force of guards. In a small village, this
might be a handful of Gaa'aram [[orc]]s, but in a large city like
[[Graywall]], the guards are a versatile and significant force: orcs,
[[minotaur]]s, and [[ogre]]s with support from [[harpies|harpy]] and [[gargoyle]]s.
Any major community also has a garrison of [[Znir|Znir Pact]] [[gnoll]]s. These
mercenaries serve as peacekeepers when needed, but they
serve the Daughters directly, not the chib; in part, they are
present to deter a chib from turning against the Daughters.
In most communities, a chib punishes serious crimes with
immediate execution. For lesser crimes, a victim is branded
and either severely beaten, maimed, or given trial by combat;
most large cities have an arena that serves this purpose (though
people can also be gladiators by choice). Those that survive
their punishment are freed.
There is one recourse for those who seek justice: [[Katra's Voice]]
includes magistrates who have the power to administer justice.
Magistrates travel between smaller communities, while larger
ones, like [[Graywall]], have a resident magistrate. The current
fashion is that magistrates are [[medusa]]s. If a magistrate believes
a case has merit, she orders the chib to deal with it—but if she
considers the complaint to be frivolous, she petrifies the plaintiff.
As a result, very few people take the risk of seeking justice—but
it's a comfort to the laborers to know that they could.
Ultimately, Droaam is a wild frontier. For the most part, the
law is simple: don't mess with the chib or anything that belongs
to the Daughters.
For the last millennium, children of the [[Five Nations]] have
known the fate awaiting the naughty: they'll be sent to the
Barrens, where [[ogre]]s will use them for footstools until the
[[troll]]s eat them for dinner.
When [[Galifar]] was established, the province of [[Breland]] was
granted dominion over all lands south of the [[Byeshk Mountains]]
and west of the [[Seawall|Seawall Mountains]], extending to the waters of the [[Thunder Sea]]. This bold claim considerably extended the territory held
by the preceding nation of [[Wroat]]—but it was nothing more
than a claim. The Brelish people had no need of the lands to
the west, nor did they want them. The Barrens—their name for
everything west of the [[Graywall Mountains]]—were known to
hold foul swamps and barren plains, an untamed region filled
with all manner of deadly monsters. Explorers to Breland's
newly acquired territory soon confirmed these tales. The plains
were filled with [[goblin]]s and hungry [[gnoll]]s. The mountains were
home to [[harpies|harpy]] whose songs could lead the unwary into deep
chasms, where [[troll]]s slept on piles of bones. The Barrens had
nothing the Brelish believed worth fighting for, and so it was left
alone. Occasionally, questing knights or bold templars would
cross the Graywall to battle giants and slay [[ogre]]s, but the
region was largely ignored.
Over centuries, the Brelish slowly expanded west toward the
Graywall. [[Castle Arakhain]] became a favored royal residence
in the eighth century, bringing new prosperity to [[Ardev]] and
[[Shavalant]]. However, the ensuing wave of western settlers was
met by fierce raiders crossing the gap between the [[Graywall Mountains]] and [[Silver Lake]]. Bloodied settlers brought back tales
of bellowing [[minotaur]]s, [[orc]]s, [[ogre]]s, and [[goblin]]s lurking in every
shadow. An attack at Castle Arakhain led to the brief Westward
War, the might of [[Galifar]] driving the raiders back across the
Graywall and obliterating many of the marauding bands. The
fortress [[Orcbone]] was established as the gate between the people
of Breland and the monsters of the Barrens, and the king founded
the Westwind Riders to patrol the border. The Riders held
the line throughout the ninth century, and Brelish settlers even
staked claims along the Graywall. This period peaked with the
founding of the fortress-town of Stubborn in the foothills (now
known as [[Stonejaw Keep]]). Then the [[Last War]] changed everything.
!! An Ancient Land
The land known as the Barrens is far older than [[Galifar]] or
[[Wroat]]. While less fertile than the fields of [[Breland]] or [[Aundair]],
this region holds rich mineral deposits. Some believe it was
the original homeland of the [[goblinoid]]s, a theory supported
by a significant number of [[Dhakaan]]i ruins along and below
the mountain ranges, as well as below the [[Great Crag]] itself.
In the [[Graywall Mountains]], a set of thousand-foot statues
commemorate the six kings who came together to form the
ancient Empire of [[Dhakaan]]. But while this region may have
once been important to the [[dar|goblinoid]], it was utterly devastated in
their war against the [[daelkyr]], compounded by the return of
forces long held at bay by the empire. Vicious [[gnoll]]s swarmed
south from the [[Towering Wood]]. Fierce [[orc]]s emerged from
the western [[swamp|Shadow Marches]]. [[Troll|troll]]s and [[ogre]]s came down from the mountains. Those dar that remained were infected with [[daelkyr curses|Kapaa'vola]]; instead of standing together against the invaders, they
turned on each other, and centuries of chaos and bloodshed
followed. By the time it was done, all that remained of [[Dhakaan]]
was ruins. [[Hobgoblin|hobgoblin]]s and [[bugbear]]s had been eradicated in the
region, and [[goblin]]s were scattered and divided.
The region was dominated by anarchy from then on—some
believe this merely follows the natural instincts of the region's
inhabitants, while others point to the lingering influence of
the [[daelkyr]]. There were a few bastions of civilization—the
[[Venomous Demesne]], the hidden village of [[Lost]]—but the
people of these communities had no interest in expanding
their culture; they were either fortified, hidden from the
outside world, or both. Across the rest of the Barrens, history
was marked by the rise and fall of countless mighty //chib//s.
Chib is a [[Dhakaan]]i term sometimes translated as “chieftain,” but
it literally means “boss” or “big person”—and in the Barrens,
the chib was often just the biggest creature around. Typically
a band would form around an [[ogre]], [[ettin]], or [[troll]]—a creature
powerful enough to assert their will over [[goblin]]s, [[kobold]]s, or
lesser creatures of their own kind. But while powerful, these
creatures lacked the ambition or drive to build anything that
could last. Occasionally a more intelligent leader—a [[minotaur]]
warlord, a charismatic [[oni]]—would build a greater force, perhaps
even establish a dynasty that would last a generation or two
before being overwhelmed by the relentless, brutal tide.
!! The War Begins
As the [[Last War]] began, the [[harpies|harpy]] held the [[Byeshk Mountains]],
where their flights endlessly feuded. [[Cazhaak Draal]] was in the
hands of the [[medusa]]s that claimed it centuries earlier. Wise
creatures knew to avoid the [[Watching Wood]], home to [[worg]]s
and worse. In the plains, the strongest leader was the [[minotaur]]
warlord Rhesh Toraa; around her keep, countless minor chibs
fought one another more frequently than they struck the settlers.
The first days of the [[Last War]] led to a reduction of forces
in the west of [[Breland]]; while it was a violent, unstable region,
there were few settlers across the [[Graywall|Graywall Mountains]] needing protection.
Not all of the Westwind Riders were Brelish, and with [[Wroann|Wroann ir'Wynarn]]'s
coronation, soldiers returned to serve their home nations, and
Wroann needed all the troops she could muster. She reduced the
Westwind Riders to a minimal force—enough to patrol between
the fortresses of [[Orcbone]] and [[Stubborn|Stonejaw Keep]], but little more.
Many [[Aundair]]ians had been part of the Westwind Riders,
and on receiving their reports, Spy Master ir'Galanatyr saw
an opportunity. The Royal Eyes of Aundair worked with Rhesh
Toraa and other chibs in the Barrens, providing equipment and
training to support attacks against Graywall settlers and raids
across the gap. With forces tied up to the east, it was up to the
commanders of Orcbone and Stubborn to protect the west. But
ultimately, the provocateurs from Aundair and [[Karrnath]] found
the Barrens raiders undisciplined and impossible to unify,
never posing the dire threat Breland's enemies had hoped for.
!! The Daughters Arrive
The fortress-town of [[Stubborn|Stonejaw Keep]] survived decades of raids and
skirmishes, as the chibs of the Barrens had no patience for
sieges and no weapons for breaking strong walls. Many lesser
settlements and claims were overrun and lost, but Stubborn
repelled countless attacks by [[goblin]]s and [[minotaur]]s. However,
it was utterly unprepared for the force that struck it in the last
decade of the war. A typical band of raiders might include a
single [[troll]] or a handful of [[ogre]]s, but in 986 YK, the soldiers
of Stubborn found themselves facing phalanxes of armored
trolls fighting with deadly skill, and squads of ogres acting with
discipline and coordination. Stubborn's defenders leapt off the
walls in pursuit of [[harpies|harpy]]' songs, and the walls were shattered
by hurled stones. Survivors were herded into the plains to face
the leaders of the army; this was the first recorded encounter
with the assembled [[Daughters of Sora Kell]], three enigmatic and notorious [[hag]]s.
“Tell your rulers there's a new power in the west,” [[Sora Katra]]
told the people of Stubborn. “What you've called the Barrens, we
now name [[Droaam]]. The land beyond the [[Graywall|Graywall Mountains]] and below
the [[Byeshk|Byeshk Mountains]] belongs to our people. Withdraw yours quickly and
respect our claim; next time, there will be no survivors.”
Once news of the fall of Stubborn reached [[Orcbone]], the
Westwind Riders traveled west in full force. But [[Sora Katra]]
was true to her word; there were no survivors, nor any records
of the last battle of the Westward Riders. A retaliatory strike
from [[Droaam]]—merely a fraction of the forces at Stubborn—inflicted terrible damage on Orcbone itself. King [[Boranel|Boranel ir'Wynarn]] swiftly deployed all the soldiers he could spare to this new front, reinforcing and fortifying Orcbone. In 987 YK, he formally
ordered all Brelish citizens to withdraw from the lands west of
Graywall, but he refused to acknowledge the sovereignty of the
Daughters, and over the next decade, clashes continued.
!! Building a Nation
To the people to the east of the [[Graywall Mountains]], it seemed
that the [[Daughters of Sora Kell]] appeared out of nowhere—and
it felt much the same to the chibs of the Barrens. But evidence suggests that it was the culmination of years, or even decades, of
planning. How long did it take to train the trolls and ogres now
known as [[Maenya's Fist]]? How did the Daughters acquire the
armor and weapons wielded by this force? Some say that [[Sora Maenya]] assembled her troops in a forgotten [[Dhakaan]]i fortress deep below the [[Byeshk Mountains]], and that she oversaw the forging of their weapons in this ancient foundry. Sora Maenya
calls the soldiers of [[Maenya's Fist]] her children, and some
scholars believe this might be literally true; both her war [[troll]]s
and skullcrusher [[ogre]]s are smarter and more capable than their
common cousins. But how long would such an endeavor take?
Melian Mit Davandi of the [[Library of Korranberg]] has advanced
the theory that [[demiplane]]s may have been involved—that
Maenya's lair in [[Khyber]] could exist outside of the normal flow
of time, allowing the schemes of the Daughters to be both a
recent development and the work of generations. [[Sora Teraza]]
approached the [[Queen of Stone]] and the lords of the [[Venomous Demesne]] in 985 YK, and the Daughters brokered the services
of fully half of the [[Znir Pact]] mercenaries in this time. No one
knows just how long the Daughters spent in preparation—but
986 YK is when they made their presence known.
Leading up to the attack on [[Stubborn|Stonejaw Keep]], the Daughters spoke with—and dominated—the greatest powers of the Barrens. The chibs of the plains only understood force, and the Daughters displayed it; the scattered bands of raiders were forced to submit, and those who refused to bow to the Daughters of Sora Kell were executed in gruesome ways.
In 987 YK the [[Daughters of Sora Kell]] summoned the
region's most powerful leaders to the ruins now known as
the [[Great Crag]]. There, [[Sora Katra]] presented the blueprint
for the new nation, appointing warlords and specifying their
responsibilities and regions. Work began on the greatest cities
of this new nation: [[Graywall]], the Great Crag, and the port city
of [[Vralkek]]. The old fortress of Stubborn was repurposed and
renamed [[Stonejaw|Stonejaw Keep]]. While some of the raider bands were left
to follow their old ways, many were absorbed into the new
nation. Thousands of [[goblin]]s and [[kobold]]s were freed from
their oppressive chibs and given opportunities in the new cities.
This new order was maintained by [[gnoll]] peacekeepers of the
[[Znir Pact]]. When that proved insufficient—when a chib refused
to release their captive subjects or defied the Daughters—Maenya's Fist would descend to destroy them. The message was simple: Change was coming. You could find your place in [[Droaam]], or you could choose obliteration.
The Daughters' ambitious plans were strengthened by an
alliance with House [[Tharashk]]. For Tharashk, this provided
access to the rich mineral resources of Droaam and the services
of monstrous mercenaries, which opened an entirely new path
for the house. For the Daughters, it tied them to a force with
a legitimate voice and influence in the East. Tharashk agents
convinced the [[Twelve]] to open up trade to Droaam—at least to
the new city of [[Graywall]]. The house helped to organize laborers
and build the new cities. Through Tharashk, the denizens of
Droaam began to appear throughout the [[Five Nations]], though
tensions continued in the vicinity of [[Orcbone]]. [[Ogre|ogre]] laborers could be
found in [[Fairhaven]] and [[Wroat]]. [[Gargoyle|gargoyle]]s and
[[harpy]] couriers found a niche in [[Sharn]], and the Gargoyle replaced
the Bat in the [[Race of Eight Winds]]. Today, many citizens of the
[[Five Nations]] are still uncomfortable around these creatures,
but their presence is slowly becoming less remarkable.
!! The Present Situation
The [[Daughters of Sora Kell]] sent representatives to [[Thronehold]]
for the [[treaty|Treaty of Thronehold]] negotiations, demanding to be recognized as a
sovereign nation. This petition was denied. In practice, [[Droaam]]
is a nation, and most recent maps include its name and mark its territory. But legally, the land is still part of [[Breland]]. It's
debatable whether the Droaamites are legally invaders or rebels
defying the Brelish crown, but either way, they aren't considered
citizens of Breland and aren't entitled to the protections of the
[[Code of Galifar]]. However, their standing outside the law makes
them a haven for war criminals, dissidents, deserters, and
others who can find no place in the [[Five Nations]].
Most of the leaders of the Five Nations are convinced that
Droaam won't last—that it's unstable, that these monsters
will turn on each other any day now. They might be right; the
Daughters have already had to crush a number of rebellious
warlords and lesser chibs. But after eleven years, Droaam is
stronger than ever. Its new cities are expanding. [[Dragonmarked house|dragonmarked house]]s are exploring their opportunities in the region. One
important question still remains unanswered: What do the
Daughters of Sora Kell want? Will they attack Breland in force
if their demands aren't soon met? Or is there some grander
scheme, tied to the prophetic visions of [[Sora Teraza]]?
[[Sarlona]] has a secret civilization deep beneath its surface—that of the dromites and their city-hives. A dromite is a small humanoid resembling a [[halfling]] with compound eyes and chitinous skin. They are naturally psionic creatures, and many dromites develop the abilities of [[wilder]]s. Aside from their Grand Queen and Elected Consorts, dromites are genderless and possess no sexual characteristics.
The dromites of Sarlona are not a unified nation; they are insular at best and xenophobic at worst. Their interactions with surface-dwellers have rarely been good; the [[Inspired]] have dealt with dromites using only murder and enslavement as "diplomatic" tools. So, most dromites are content to live and trade among their kind.
In some areas, however, the general dromite reclusiveness is not the norm. The [[kalashtar]] made diplomatic inroads with them more than a millennium ago.
[[Zi'til'natek]], a city-hive under [[Adar]], is loosely allied
with the defenders of that land. Under the [[Tashana Tundra]], the
few dromite hives have had decent relations with some
[[dwarf]] clans.
Some dromite hives have taken a militant stance
against all "surfacers." These extremist city-hives are
few and number, and their citizens too few to engage in
outright warfare, but dromites from these hives employ
sabotage and guerrilla strikes against threats they can
manage, from unlucky [[ogre]] nomads to [[Riedra]]n [[Edgewalkers]]. Dromites of the city-hive of Nar'zix in [[Syrkarn]]
are more insidious—they have begun trading tainted
[[Khyber shard|dragonshard]]s through merchants in [[Ardhmen]] and
other settlements.
''Capital:'' Stonespire<br/>
''Primary Resources:'' Mercenaries, furs, meat<br/>
''Enemies:'' [[Toldorath and Tordannon]], the [[Jhorash'tar]]<br/>
''Celebrated Virtues:'' Strength, confidence. Embrace the wild.
[[Doldarun]] is known for courage, while Droranath is fearless.
What's the difference? A talespinner says that Doldarun is
afraid, but even knowing that fear, chooses to stand their
ground; in contrast, Droranath never sees any reason to be
afraid to begin with. Droranath dwarves value confidence and
optimism, and are certain that their strength can carry them
through any challenge.
The Droranath dwarves value tradition, and their culture is
the closest to the original [[Mror|Mror Holds]] path before being conquered by
[[Galifar]]. The Droranath never became miners; they are hunters,
farmers, and above all, fierce warriors. Droranath youths have
always trained with axe and hammer, long before the War Below
made the practice common among the clans, and hide armor
is standard fashion among the clan. Some Droranath develop
the skills of the stealthy hunter, striking down enemies from
afar, but most Droranath warriors prefer to look their enemy
in the eye and to see their fear. Droranath warriors perfect a
technique called //tra dolhass//—the battle cry—a wild howl as the
warrior charges the enemy, summoning their adrenaline and
fury. The Droranath love battle, and for centuries they have
sold their services as mercenaries through House [[Deneith]].
The “Mror Howlers” are valued as shock troops and vanguard
warriors. They are one of the smallest and poorest clans, in
part due to their violent lifestyle and refusal to embrace many
modern advances, but they continue to hold their lands.
Droranath has fought the [[Jhorash'tar]] [[orc]]s since the first
days of exile. They accuse the orcs of countless atrocities,
many of which may have indeed occurred—centuries in
the past. Droranath talespinners insist the Jhorash'tar
were responsible for the destruction of [[Noldrunhold]], and
now claim the orcs are in league with the horrors of the
[[Realm Below]]. In addition to ongoing skirmishes between
Droranath dwarves and the Jhorash'tar, this has led to a
bitter feud between Droranath and the clans that support
the Jhorash'tar—[[Toldorath and Tordannon]].
The Droranath dwarves aren't miners, and they haven't
opened paths to the [[Realm Below]] in their territory. However,
Droranath mercenaries have served other clans, and brought
back trophies from their battles. It's Droranath tradition to
claim the arms and armor of fallen foes, and the Droranath
have no qualms about using [[symbiont]] weapons, though they
don't celebrate them as [[Soldorak]] and [[Narathun]] do.
Droranath characters are often outlanders or folk heroes, as
they are always willing to take risks to help friends. Rangers
and barbarians are sound choices for Droranath; rangers are
usually hunters, while those who practice //tra dolhass// might
be berserkers or ancestral guardians.
Drow, also called dark elves, have skin that resembles charcoal or obsidian, as well as stark white or pale yellow hair. They commonly have very pale eyes (so pale as to be mistaken for white) in shades of lilac, silver, pink, red, and blue. They tend to be smaller and thinner than most [[elves|elf]].
Long ago on the continent of [[Xen'drik]], the first drow
fought beside the [[giant]]s against the other elves. Tens
of thousands of years have passed, and drow and other
elves remember each other only as figures in their legends. The [[Undying Court]] and the patron ancestors of
the [[Tairnadal]] remember the drow, but they have little
occasion to teach their living descendants about these
shadows of the distant past.
When the elves fled to [[Aerenal]], the drow remained on
Xen'drik as subjects of the [[giant]]s, and they were caught
in the collapse of giant civilization. Today they linger
on Xen'drik and have set their own course, free of the
giants' malevolent influence.
Three distinct drow cultures formed after the fall of the giants. The most numerous are the Vulkoori, hunters dedicated to a scorpion god called [[Vulkoor]]. They hunt [[giant]]s and other dangers in their lands. Led by
powerful druids and wizards, the [[Sulatar]] cling to traditions of elemental shaping that date back to the [[Age of Giants]]. They live in a handful of obsidian cities across
[[Xen'drik]], and believe that they are destined to cleanse
the world in a fiery apocalypse. Finally, the [[Umbragen]]
are descended from drow who fled into the depths of
the earth when the giant civilization fell. They wield sophisticated magic in their unceasing battles against the [[daelkyr]] and the other [[aberration]]s of the underworld. Smaller tribes, such as the [[Qaltiar]] and the [[Hantar'kul]], also exist, but they are considered part of (or offshoots of) one of the above three.
When creating a drow character, think about how you came to [[Khorvaire]]. Are you a [[Vulkoor]]i hunter who accompanied an expedition home to Khorvaire, now seeking your way in this strange new world? Are you an [[Umbragen]] seeking powers that can help your people in their endless war? Or are you a [[Sulatar]] pursuing a personal path to glory?
How do you react to meeting members of other elven
cultures during your journeys? You might quickly recognize that most bear little resemblance to the terrors
described in your people's legends, or you might have an
almost instinctive reaction of distrust. You might have
overcome your initial prejudices by the time the campaign begins, or perhaps you're working to build trust
with another elf member of your adventuring party.
!! Urban Drow
A few dozen drow can be found scattered around [[Stormreach]]. Some serve as wilderness guides or find other ways to make an honest living.
However, many turn to violence or a life in the shadows, dying in alleys or on the sand of the [[Red Ring]]. The majority of urban drow are exiles from [[Vulkoor]]i tribes, driven out for terrible crimes or breaking taboos. However, in the harsh world of the drow, mercy
is considered a crime, and drow who don’t subscribe
to their race’s ruthless ways come to the city to escape
the cruel life of the wilds.
Most of the drow within the city are settlers from
scattered tribes. Old feuds remain strong even when
the tribe has been left behind, and urban drow rarely
seek the company of others of their kind unless they
come from the same tribe. Some have found love
within the city, whether temporary or long-term, and a
handful of half-drow make their homes in [[Stormreach]]
as well.
Not far from the [[Garden of Respite]], the Drowning Sorrows Tavern is a good place to go to heal the wounds of the heart. The drink is cheap, the company
is friendly, and the tavern is airy. The proprietress,
Bula O’Loarima, provides a shoulder to cry on and a
listening ear, following the tradition laid down by her
predecessor, Camellia Khan, who was famous for being
able to get people to spill their troubles within moments
of meeting her.
<<list-links-article "[tag{!!title}sort[title]]">>
Druids revere nature above all, gaining their spells and other magical powers either from the force of nature itself. [[Druidic magic|primal magic]] is oriented toward nature and animals—the power of tooth and claw, of sun and moon, of fire and storm. Many druids also gain the ability to take on animal forms.
The druids of [[Eberron]] hold animistic beliefs completely
unconnected to the [[Sovereign Host]], the [[Dark Six]], or any of
the other religions of the world. They believe that every living
thing and every natural phenomenon—sun, moon, wind,
fire, and the world itself—has a spirit. Their spells, then, are
a means to communicate with and command these spirits.
Different druidic sects, though, hold different philosophies
about the proper relationship of these spirits to each other
and to the forces of civilization. The [[Ashbound]], for example,
believe that arcane magic is an abomination against nature,
the [[Children of Winter]] venerate the forces of death, and the
[[Gatekeepers]] preserve ancient traditions meant to protect the
world from the incursion of [[aberration]]s.
Five well-established paths define most of [[Khorvaire]]'s druids. In creating a druid character, consider whether you have ties to one of these traditions, and what led you to leave your order. Are you on a mission? Are you exploring the world? Have you been
banished, with good reason or otherwise?
* the [[Ashbound]]
* the [[Children of Winter]]
* the [[Gatekeepers]]
* the [[Greensingers]]
* the [[Wardens of the Wood]]
!! Other Druid Sects
<<list-links-article "[tag{!!title}category[organization]!title[Ashbound]!title[Children of Winter]!title[Gatekeepers]!title[Greensingers]!title[Wardens of the Wood]sort[title]]">>
This suit of leather armor is etched with leaves and covered in autumn-colored ribbons. It is imbued with magic that enhances the duration of [[primal magic]] spells. This armor is often found among [[druid]]s of the [[Wardens of the Wood]].
//"We stand on the precipice of history. Now let us leap!"//
This charismatic [[oni]] mage holds the lands
around [[Thrakelorn]], ruling a host of [[orc]]s, [[ogre]]s, and
[[goblin]]s. Drul Kantar has neither the power nor the
ambition of the oni [[Tzaryan Rrac]],
and he seems entirely loyal to the [[Daughters of Sora Kell]].
!! The Feral Hand
//"Gaze upon true wonder. Drulkalatar Atesh, the Feral Hand, Voice of the [[Wild Heart]]. Immortal and perfect, soldier of the [[first age|Age of Demons]] and the age to come."//
Drul Kantar is secretly a [[rakshasa]] agent of the [[Lords of Dust]]. Drulkalatar Atesh (his true name) is the prakhutu (speaker) of the [[overlord]] known as the [[Wild Heart]]. He hopes to corrupt other warlords and convince them to join his cause.
Drum Keep in [[Breland]] was built near the [[Blackcap Mountains]] as a garrison to protect the [[Breland]]-[[Eldeen|Eldeen Reaches]] border during the [[Last War]]. The fortress is the primary garrison of Countess [[Yassiv ir'Oeskai]]'s holdings.
A bizarre assortment
of odds and ends cover the walls of the Drunken Dragon tavern, including the trophies of a hundred expeditions to [[Xen'drik]], the [[Demon Wastes]],
and other strange lands. Among the oldest pubs in
[[Upper Dura]], the Drunken Dragon is a long-time
favorite of explorers, adventurers, and privateers.
Slow service and poor food aside, the Drunken
Dragon has one of the widest selections of exotic
alcoholic beverages in [[Sharn]]. From [[Mror|Mror Holds]] ale and
[[Lhazaar|Lhazaar Principalities]] mead to the [[orc]]ish hrak of the [[Shadow Marches]] and fermented honey-milk brewed by the
[[shifter]]s of the [[Eldeen Reaches]], if it's strong and
strange it can be found at the Drunken Dragon.
The Dragon has become one of the main places
to hire adventurers; if a party has no specific agenda
and simply hopes to find work, it could do worse
than to have a few drinks at the Drunken Dragon.
The Dragon is a tavern as opposed to an inn, but it
does have two private rooms that parties can use when
discussing secret business or important deals.
The Drunken Dragon is owned by [[Hascal d'Ghallanda]],
a cheerful middle-aged [[halfling]]. Hascal began his
life as an explorer, but gave up the trade after losing
his lower left leg and his right eye in a particularly
disastrous trip to [[Xen'drik]], and returned to pick
up the family business. He has an assortment of
beautifully carved artificial limbs and colorful eye
patches that correspond to his flamboyant outfits.
Hascal is an extremely knowledgeable and talented
fellow who, given an opportunity, can spend hours
talking about his adventures.
Hascal possesses the [[Mark of Hospitality]]. Though he no longer
actively adventures, Hascal remains a member of
the [[Clifftop Adventurers' Guild]].
Travelers entering a forest might catch a glimpse of a feminine form flitting through the trees. Warm laughter hangs on the air, drawing those who hear it deeper into the emerald shadows.
//''Treebound.''// A dryad is a lesser fey bound to a specific tree. A dryad can emerge from the tree and travel the lands around it, but the tree remains her home and roots her to the world. As long as the tree remains healthy and unharmed, the dryad stays forever youthful and alluring. If the tree is harmed, she suffers. If the tree is ever destroyed, the dryad descends into madness.
//''Reclusive Fey.''// Dryads act as guardians of their woodland demesnes. Shy and reclusive, they watch interlopers from the trees. A dryad struck by the beauty of a stranger might investigate more closely, perhaps even try to lure the individual away to be charmed.
Dryads work with other sylvan creatures to defend their forests. [[Unicorn|unicorn]]s, [[treant]]s, and [[satyr]]s live alongside them, in addition to [[druid]]s that share the dryads' devotion to the woods they call home.
//''Woodland Magic.''// Dryads can speak with plants and animals. They can teleport from one tree to another, luring interlopers away from their groves. If pressed, a dryad can beguile [[humanoid]]s with her [[enchantment]]s, turning enemies into friends. They also know a handful of useful [[primal|primal magic]] spells.
A beautiful [[dryad]] removes a branch from her tree. As it transforms itself from a branch to the rough shape of a bow, she pulls a few strands of her hair, and they weave into themselves to become a string. She kisses the bow, and its shape shifts again, the center strong and thick, the ends firm but flexible, and the string tight. As she places it in your hands, you can feel that this bow is somehow still alive. This is the Dryad's Gift.
Ordinary branches, when drawn, transform themselves into arrows. They transform back into branches shortly after landing, or when removed from the wound of a living creature.
The string of this bow is unbreakable by nonmagical means, and to the user it smells faintly of sweet flowers. The user gains advantage to resist harmful odors (such as a [[troglodyte]]'s stench), and creatures that try to perceive the wielder of this bow by scent must do so with disadvantage.
This living bow can speak with the forest. By concentrating on a known recipient, and speaking to the bow, the wielder can send a brief message of up to twenty-five words. This message can only travel within the boundaries of a continuous forest, travels as fast as the wind, and can be understood by the intended recipient. The recipient can reply immediately with a message under the same restrictions. Note that this message is not private, and can be overheard by those able to speak with plants anywhere within the forest. To others, it is simply the rustle of branches and leaves in the wind.
While holding or wearing a drybrooch, you can summon or dismiss a dome of energy that manifests just above your head. This energy repels moderate quantities of frozen and liquid water, such as rain, snow, bird droppings, or similar nuisances, but can't be used to protect against harsh environmental hazards or attacks.
Typically a drybrooch field is silvery and translucent. More expensive models have illusions woven into the field; one popular drybrooch creates the image of a sunny blue sky overhead.
See also [[rain-away hoops]].
One belief found among both [[giant]]s and [[drow]] of [[Xen'drik]] is the
legend of the Du’rashka Tul—“the madness of crowds.”
According to this tale, the forces that destroyed the
ancient civilizations at the end of the [[Age of Giants]] laid a curse on the land to prevent any nation in Xen’drik from rising to a position
where it could once again threaten the world. The
legend states that as soon as any Xen’drik civilization
reaches a certain size and sophistication, its people are
gripped by a homicidal rage. They spread out, killing
every creature they encounter until they themselves
are slain. Fear of the Du’rashka Tul has kept the followers of [[Vulkoor]] and the [[giant]] tribes small and nomadic. They believe that settling and allowing their numbers to increase might lead to madness. In support of the truth
of the Du’rashka Tul, Xen’drik explorers have discovered lost civilizations that are clearly quite recent—ruins only a few thousand years old whose builders vanished without a trace.
If the legends are true, some fear that any of the giant
factions spread across the shattered land could suddenly
succumb to this bloody rage. Likewise, the [[Sulatar]] drow
might fall to madness should their numbers increase,
bringing a burning army out of the wilds to strike at
[[Stormreach]]. Even within Stormreach itself, the wild festival known as [[Shacklebreak]] could be seen as a minor manifestation of the madness of crowds. As more and more people come to Xen’drik, some fear that Stormreach might be gripped by the
Du’rashka Tul—its residents transformed into bloodthirsty, savage beasts.
Du'ulora [[quori]] are spirits of fury that feed on anger and inspire rage
in mortals. A du'ulora is a maelstrom of eyes and wings, bound
together by flesh that seems like solidified shadow. It can
extend up to three tentacles from this dark mass. A du'ulora
can turn a victim's anger into manifested heat; in battle, it
grapples its victims and burns them with their own fury.
//''Manipulating Fury.''// While they feed on anger and hatred,
du'ulora rarely act rashly. They are cunning and calculating
strategists who excel at inspiring fury in others and turning
it against them. In battle this can cause their victims to lower
their guard and even to strike their own allies in heedless rage.
As servants of the [[Dreaming Dark]], the du'ulora craft dreams
that stir buried anger and incite hatred; they excel at igniting
feuds and inspiring vendettas. So where a [[tsucora]] agent of the
Dreaming Dark manipulates peoples' fears and a [[hashalaq]]
employs seduction, the du'ulora excel at inciting violence.
//''The Fists of Dal Quor.''// The du'ulora are martial champions
of the quori. They thrive on conflict and love to personally
crush their enemies. While they enjoy fighting in the
vanguard, the du'ulora are also skilled strategists. In [[Dal Quor]],
the du'ulora command squads of [[tsucora]] and lesser [[quori]]. In
[[Riedra]], military commanders are typically [[Inspired]] bound to
du'ulora spirits.
//''Rage Against The Darkness.''// The du'ulora bound to the
[[kalashtar]] serve the light, but they still manipulate fury. Du'ulora
kalashtar learn to harness and channel their own aggression,
and are often fighters or barbarians; others are dispassionate
monks, who provoke rage in their enemies while never allowing
it to distract them from their goals.
Duergar, or "gray dwarves", are lean and hard compared to other [[dwarves|dwarf]]. Their
skin is a dull gray, and their eyes are black and cold. Male duergar don’t have hair above their ears, but they often boast short, wiry beards of iron-gray or black. Most females are likewise bald, but some have short-cropped hair of dull black.
Every duergar is born with some amount of [[psionic|psionics]] talent. The typical warrior can turn invisible or increase in size, and some duergar take up a more formal study of psionics to enhance or augment their capabilities.
Those duergar who delve into psionic research describe the process as accessing a dimensional space in which they can tap into the energy exerted by living minds. Using this power source, a small number of duergar can alter their bodies and those of other creatures, tap into thoughts and bend them as they see fit, and impart a spark of locomotion and even basic intelligence into objects. Duergar of truly exceptional skill can move objects without touching them, view creatures from a great distance, and push their bodies to achieve incredible feats, such as lifting a boulder or transforming into liquid to flow through a crack in a wall.
In Eberron, the duergar are only known to exist among the [[Akiak]] tribes of [[Sarlona]].
Dul Catun is a small bastion city in [[Nulakesh]], [[Riedra]]. Along with [[Dar Mirn]] and [[Dar Ulatesh]], Dul Catun is one of the centers of the [[Chosen]] shadow lines.
Dul Darat is a bastion city in [[Pyrine]], [[Riedra]].
Dul El is a bastion city in [[Pyrine]], [[Riedra]].
Dul Jhaar is a bastion city in [[Rhiavhaar]], [[Riedra]].
This bastion city in [[Corvagura]], [[Riedra]] is in the Sphere of [[Surasek]].
Dul Natath is a bastion city in [[Nulakesh]], [[Riedra]].
This bastion city in [[Corvagura]], [[Riedra]] is in the Sphere of [[Tureya]]. It holds the headquarters of the [[Sheltering Hearth]].
Dul Zeer is a bastion city in [[Pyrine]], [[Riedra]], one of the largest cities of the nation. It is the [[Thousand Eyes]]' greatest stronghold. Here, a network of remote viewing crystals allows agents to [[scry|scrying]] across the continent, and [[teleportation circle]]s let them dispatch forces to any bastion or kintam (fortress). Agents in villages can be alerted through dreams. In an emergency, psionic dispatchers can teleport forces to the site of a disturbance.
Dul Zerath is a bastion city in [[Nulakesh]], [[Riedra]], located on the edge of the [[Forest of Lurking Shadows]].
<<list-links-article "[tag{!!title}sort[title]]">>
While holding this sturdy brass key, you can tap it against another key and cause the duplikey to become an identical copy of it. Once you have used this property, the duplikey becomes nonmagical.
[[Sharn]] began where Dura stands, but the city has left it
behind in many ways. Many nowadays consider the oldest quarter of Sharn to be a blight on the City of Towers. The place is full of cracked and crumbling stonework,
abandoned lift shafts, and [[everbright lantern]]s that have
burned out and never been restored. Dura is riddled
with poverty and crime; it's easily the most dangerous
section of the city. But it also holds opportunities you
can't find anywhere else. If you're looking for smuggled
goods or a place to lie low, head to Dura.
* [[Upper Dura]]
* [[Middle Dura]]
* [[Lower Dura]]
Dura is connected by bridge to [[Menthis Plateau]]. It connects to [[Tavick's Landing]] on the south side of the city ([[Fallen]]/[[Foundation]]; [[Rattlestone]]/[[Kenton]]; [[Highhold]]/[[Sunrise]]).
!! Things to Do in Dura
Dura is a quarter of extremes, from the nearly idyllic atmosphere of Upper Dura, down to the danger of Lower Dura. Among its attractions and diversions are these:
* ''Gamble.'' Legal gambling is heavily taxed in the city and limited in its scope. Dura is the place to find a wide range of shadier and more profitable games.
* ''Go shopping.'' The [[Bazaar]] of [[Middle Dura]] is an excellent source for exotic goods, legal or otherwise. [[Clifftop]], in [[Upper Dura]], caters to adventurers and has a reasonable selection of magical goods.
* ''Bend the law.'' Looking for a fence or need to hire an assassin? Lower Dura is the nexus for criminal activities in Sharn.
* ''Talk about the race.'' The inhabitants of Dura are devoted to the [[Race of Eight Winds]] and are always willing to discuss the latest news.
* ''Suffer a terrible accident.'' The [[Sharn Watch]] ignores much of [[Lower Dura]]. Stories circulate continuously about [[dragonmarked house]]s and mad [[wizard]]s conducting dangerous experiments in Lower Dura without interference from the law.
The exarch of [[Bel Shalor]] is a mighty [[rakshasa]] named
Durastoran, known to legend as the Wyrmbreaker.
This [[fiend]] despises the [[dragon]]s of [[Argonnessen]] and
has shattered many schemes of the [[Chamber]]. He
claims to have provoked the first war between [[Aerenal]] and Argonnessen. Over the last few centuries, he has served Bel Shalor in [[Khorvaire]], using his vast
knowledge of the [[Prophecy|Draconic Prophecy]] to draw the world into
this dark age.
Durastoran is a master prophet and skilled mage. He has had a hundred thousand
years to gather spells and rituals. Beyond this, his knowledge
of the Prophecy often lets him predict PCs' actions.
Ultimately, he seeks Bel Shalor's release, but in the
meantime, he likes to play deadly games with the
Chamber and its agents.
The largest city in [[Riedra]] is the administrative heart
of the nation, and from this glittering capital the mighty
pathfinder Lord [[Surasek]] guides the nation. In addition to being the center
for the [[Guiding Path]], Durat Tal trains and houses a vast
number of soldiers, which can be dispatched across the
realm through psionic [[teleportation circle]]s. Durat Tal is the hub
of the teleportation circle network, and most traffic between
circle-equipped kintams and bastions passes through
this city.
Durgran Torrn, an [[orc]] whose good
humor is almost as boundless as his strength, manages the [[House Tharashk Refinery]] in [[Stormreach]]. Durgran is a gifted warrior who deals with any troubles or brawls
at the refinery. He has the respect of the workers, and has even represented [[Tharashk]] in the [[Red Ring]] on occasion. Unknown to Viceroy [[Kurn Velderan]], Durgran is a devotee
of the teachings of the [[Gatekeepers]]. Durgran is in [[Stormreach]] to watch for signs of darkness and rumors of a [[daelkyr]] at work below [[Xen'drik]]. He speaks the Giant tongue and often accompanies Kurn on his visits to the [[Tents of Rushemé]]. Durgran seeks out conversation with the [[hill giant]] workers at the refinery, and he is becoming quite knowledgeable about the myths and stories of [[Rushemé]]. If a PC is a Gatekeeper or
member of House [[Tharashk]], Durgran might provide assistance—especially if it interferes with the plans of the [[Cults of the Dragon Below]].
Dusk hags resemble gnarled crones with shriveled orange skin, tangled gray hair, and eyes that burn like hot coals. They see visions of the future in their dreams, and their dark magic allows them to influence the dreams of others, sending messages or inflicting nightmares with a touch. Tales talk of ambitious [[wizard]]s, frantic monarchs, and desperate heroes undertaking quests or making bargains with a dusk hag in exchange for its prophecies and visions of the future. But the information gained from a dusk hag often has a way of causing more pain than joy.
The most infamous dusk hag on [[Khorvaire]] is [[Sora Teraza]].
Like all hags, dusk hags enjoy causing strife to those who bargain with them, and find ways to twist and turn promises to their own advantage. The table below provides examples of the sort of dreams dusk hags might share with unsuspecting sleepers.
| !<<dr "d10">> |!Prophecy |
| 1 |"A red hat approaches with ill intent. Be wary." |
| 2 |"A ship comes on a sea of bones, but treasure waits behind a silver skull." |
| 3 |"Three days, three deaths, three eyes, three breaths." |
| 4 |"Doom falls on the peacock and the sparrow alike. Best be a raven." |
| 5 |"A white hand on a black field holds the golden key." |
| 6 |"Beware the black horse." |
| 7 |"The fish is your friend." |
| 8 |"The stairs downward lead to that which you seek." |
| 9 |"Look for two crossed swords. There your goal lies." |
| 10 |"If you see two crows, turn back. Beyond is death." |
A dusk shard is special variety of Eberron [[dragonshard]] found only in [[Q'barra]]. Dusk shards are a smoky gray with vivid red veins, and possess remarkable magical qualities. They are worth five times as much as standard [[dragonshard]]s of similar size.
The miners of [[Q'barra]] have yet to discover the source of this unusual power. The truth is that the dusk shards hold fragments of the essence of the immortal [[overlord]] [[Masvirik]] and his fiendish agents. As a result, using these dragonshards may result in unexpected effects. For example, someone using dusk shards for [[divination]] rituals could receive messages directly from Masvirik, or misleading information that serves the purposes of the overlord.
Dusk shards channel Masvirik's darkness and split it into tiny pieces. Together with the network of [[dawn shard]]s planted in the earth, the Cold Sun remains bound. The [[Poison Dusk]] seeks to gather the dusk shards to help them commune with [[Masvirik]] and eventually release it from its bonds.
The Duskwing Clan guards an [[Age of Demons]] ruin in the southern tip of the [[Q'barra]]n jungle.
{{dragonborn clanhold}}
The Duskwood is a small forest in western [[Aundar]], just north of [[Passage]].
Found in a small packet, this powder resembles very fine sand. There is enough of it for one use. When you throw the dust into the air, you and each creature and object within 10 feet of you become invisible for 3-7 minutes. The duration is the same for all subjects, and the dust is consumed when its magic takes effect. If a creature affected by the dust attacks or casts a spell, the invisibility ends for that creature.
This small packet contains 6-10 pinches of dust. You can sprinkle a pinch of it over water. The dust turns a cube of water 15 feet on a side into one marble-sized pellet, which floats or rests near where the dust was sprinkled. The pellet's weight is negligible.
The pellet can be smashed against a hard surface, causing the pellet to shatter and release the water the dust absorbed. Doing so ends that pellet's magic.
This small packet contains 3 pinches of glowing dust. You
can take a pinch of dust and sprinkle it in a cup of water, causing it to glow with golden light for 1 hour. The water emits bright light in a 5-foot radius and
dim light for an additional 5 feet.
If you drink the water before it stops glowing, your body
glows with the same golden light for the remainder of the
hour, emitting bright light in a 10-foot radius and dim light
for an additional 10 feet.
While holding this wand, you can instantly clean an area within 10 feet of you that is no larger than 1 cubic foot every three to five seconds, removing dirt and grime. There are many variations of the //duster//; the two-handed //staff of cleansing// covers a five-foot cube in the same amount of time, while the //bright basin// cleans clothing and cloth objects placed within it.
Duum (“Drum”) is an old [[golin’dar|goblin]] storyteller, named
for her deep, powerful voice. She can be found among
the goblins of a major city, sharing tales of the ancient
empire and collecting news and rumors. While she has
no desire to engage in violence, she’s a deadly assassin
of the [[Shaarat’khesh|Khesh'dar]].
The southernmost of [[Adar]]'s temple-keeps, Dvaarnava
is the only place in Adar where ships can still actually land.
Dangerous spires of underwater rock form a maze that leads
to a natural cavern in the sharp cliffs on the tip of Adar's
horn. Only those who know how can even approach the
cavern, and a further test awaits them—a [[sisiutl]] guards the cave mouth as part of an ages-old pact. Only sailors who give the correct answers to the creature's challenges can pass within. The protectors of Dvaarnava can watch the sea passage and the grotto from galleries in the cliffs above, and some leaders in the monastery can
grant access to those that do not meet the sisiutl's requirements. If necessary, watchers in the galleries can assault
unwanted visitors with ballistae, arrows, and magic.
Dvaarnava's populace lives by fishing and collecting
plants in the sea caves nearby, and it enjoys the sunlight
that comes from the narrow fissures in the cavern ceiling.
Storms are still common here, though, and habitable
spaces are placed well above the water.
The fortress is located far from any other settlement,
and the mountains around it are forbidding. Still, the
[[Summit Road]] and [[xeph]] merchants also work in the city,
making passage to and from [[Ardhmen]] in ships under
privateer flags.
Dvaarnava is the gate by which many [[Adarans]] leave
[[Adar]] for good. Vessels from the port carry goods and
people through treacherous waters and [[Riedra]]n lines,
their crews knowing full well that any attempt to return
to Dvaarnava could mean their deaths.
//Gold is the gift of the mountains, but iron comes from blood and bone.//
<div align="right">—Mror proverb</div>
The origin of the dwarves is shrouded in mystery. Some
of their legends tell of a great migration that led the
ancient dwarves to [[Khorvaire]] from "a land of endless
ice." Many believe this refers to the arctic lands of the
[[Frostfell]], while others claim that the first dwarves must
have come from the frozen plane of [[Risia]]. Wherever
their roots, these migrant dwarves established a mighty
nation beneath the surface of Khorvaire.
Most dwarven legends, unconcerned with the question of origin, dwell on the mighty artifacts and priceless
treasures crafted by ancient deep-dwelling dwarves,
and of the bloody wars they waged against the [[goblinoid]]
Empire of [[Dhakaan]]. Dwarves today cherish the memory
of this ancient nation, for all dwarves in Khorvaire are
descended from exiles driven from the realm below—which was later destroyed by the [[daelkyr]]. Particularly
in the [[Mror Holds]], many dwarves cherish the idea of returning to the subterranean reaches and reestablishing
their ancient nation, restoring them to a greatness they
have all but forgotten.
!! Dwarven Biology
Though they stand
well under 5 feet tall, dwarves are so
broad and compact that they can weigh
as much as a human standing nearly two
feet taller. Their courage and endurance
are also easily a match for any of
the larger folk.
Dwarven skin ranges from deep brown to a paler
hue tinged with red, but the most common shades are
light brown or deep tan, like certain tones of earth.
Their hair, worn long but in simple styles, is usually
black, gray, or brown, though paler dwarves often have
red hair. Male dwarves value their beards highly and
groom them carefully.
Dwarves can live to be more than 350 years old, so the
oldest living dwarves often remember a very different
world. This longevity grants them a
perspective on the world that shorter-lived races such as
[[human]]s and [[halfling]]s lack. Dwarves are solid and enduring like the mountains
they love, weathering the passage of centuries with stoic
endurance and little change. Intellectually, they mature at about the same rate as
humans, but they generally aren't considered to be full adults
until around 50 years of age. This ties to the fact that dwarves
have a low fertility rate and their reproductive peak is between
50 and 120. While under 50, a [[Mror|Mror Holds]] dwarf is usually learning
the family trade and working directly for their parents, uncles,
or aunts; at 50 and above, a dwarf starts thinking about starting
their own branch of the family tree and the family trade.
While the dwarves of the [[Realm Below]] may have spent their
entire lives below the surface, the [[Mror|Mror Holds]] dwarves were born
on the surface of the [[Ironroot Mountains]]. Mror dwarves
appreciate sunlight and color, and their buildings typically have
windows, but dwarves don't need light. Absolute darkness
impairs their darkvision, but this is merely inconvenient, not
unbearable, and many mine tunnels and stretches of the Realm
Below have no light sources.
Resulting from this, the circadian rhythms of dwarves are
more flexible than those of humans. While it's important to
maintain a regular schedule, day and night have little meaning
for the Mror. Mror communities are active at all hours, and
major Mror businesses are continuously open. “Nightlife” isn't
a concept in Mror society, and entertainment can likewise be
found at all hours, so traveling Mror are often frustrated by the
limited opportunities in [[human]] communities.
!! Dwarves of the Mror Holds
Despite their long lives, the Mror dwarves are surprisingly
unconcerned with recording the past. They care deeply
about family. They cling to property, whether it's land or more
portable possessions. They're fierce in protecting the things
that they care about. But as the bard [[Kessler]] said, “The Mror
care deeply about their stories, but facts just get in the way.”
Mror talespinners have an endless supply of stories about the
mighty deeds of clan heroes, but when it comes to specific
dates or verifiable facts, things often get muddy. Records of
debts, marriages, adoptions—these things are written down
by [[Sivis]] scribes. But general history is largely trusted to the
passed-down tales of the spinners, and they make history
//interesting//. A particular story could be placed in three different
centuries by three different [[clans|Mror clan]], and the villain of one tale
could be the hero in the neighboring holdfast.
Mror dwarves can be seen as boastful by outsiders, quick
to share tales of their exploits. However, they don't seek to
dominate every conversation with their tales, but expect others
to share their stories as well—and if others don't, Mror are
quick to boast about the deeds of their companions. Anyone
who spends much time around Mror quickly grows used to the
phrase //Tol kollan//—or the Common translation, “That reminds
me of a story.” Mror hate quick meetings; any gathering should
have time for tales. In playing a Mror character, you might
come up with a few stories you love, as well as taking joy in
dramatically retelling the story of your adventures—the deeds
of both you and your fellow adventurers—celebrating and
highlighting your finest moments.
The dwarves of the [[Mror Holds]] are defined in part
by their relationship to the ancient [[Realm Below]]. In a
desperate effort to rediscover and reclaim the holdings
of their old nation, the dwarves have recovered many
weapons of war created in the final days of the empire.
Some of these weapons were forged by the dwarves to
wield against the [[daelkyr]], but others were made by the
daelkyr for the use of their minions—strange symbiotic items that use the
life force of their hosts to power their magical abilities.
Some [[clans|Mror clan]] have banned the use of these [[symbiont]]s and any exploration of daelkyr magic, notably
the prominent Clan [[Mroranon]]. Others, particularly Clan
[[Soldorak]], have embraced this magic to use against the
daelkyr. Defining a relationship to these discoveries
can be an important element of your character's background; you might be a Mroranon [[paladin]] or ranger
dedicated to expunging any trace of daelkyr magic from
the Realm Below, or a Soldorak [[warlock]] drawing on the
magic of [[Xoriat]] in pursuit of your own power, as well as
glory for your clan.
Another important question to consider in playing a
Mrorian character is why you have left the Holds. The table below offers some suggestions
that might spark further ideas.
| !<<dr d8>> |!Reason for Leaving |
| 1 |A feud with a rival clan has gotten out of hand, and it's best that you spend a few decades away from the Holds while things cool down. |
| 2 |You come from a large family and there's no room for you to shine in your hold, so you hope to make a name for yourself in the wider world. |
| 3 |Your clan has arranged your marriage and your future, and you've decided to have a few adventures before you settle down. |
| 4 |You're pursuing a vendetta with a personal rival, seeking to defeat them either in battle or in business. |
| 5 |You're searching for a legendary dwarven artifact, stolen centuries ago by a [[Karrnish|Karrnath]] noble. |
| 6 |You want to assemble champions who can help you explore the ancient ruins beneath your ancestral home. |
| 7 |You've rejected your clan's attitude toward [[daelkyr]] magic, earning the enmity of powerful dwarves. |
| 8 |You want to understand how the other peoples of [[Khorvaire]]—especially the [[goblinoid]]s and [[orc]]s—have fought the daelkyr. |
!! Dwarves of the Five Nations
Dwarves are spread across Khorvaire. Dwarf soldiers
and engineers were part of the armies that united the
[[Five Nations]], and dwarf masons laid the foundations
of the greatest cities of [[Galifar]]. Traditionally loyal to
family and clan, dwarves who were born outside the
[[Mror Holds]] tend to transfer their fierce clan loyalty to
their new homes—and particularly to the edifices of
stonework that symbolize the permanence and stability of those places. A [[Brelish|Breland]] dwarf might feel a deep,
personal connection to the towers of [[Sharn]] or the great
walls of [[Wroat]]; some dwarves love the great [[Cathedral of the Silver Flame]] in [[Thrane]] more than devout followers of the [[Silver Flame]]. Ultimately, the typical dwarf in
wider [[Khorvaire]] is more patriotic than the average [[human]] of the Five Nations, and many dwarves fought for
their nations in the [[Last War]], at least for a time.
When creating a dwarf character from the Five Nations, consider both your national loyalty and the role
your family plays in your life. Do you live near family?
What kind of work do your closest family members pursue, and is that reflected in the background you choose?
Are you close to your relatives, or have you had a falling
out? Did you lose kin in the [[Last War]]?
!! Dwarves and Dragonmarks
The [[Mark of Warding]] appears on dwarves of House
[[Kundarak]], which had its origins as one of the clans of
the [[Mror Holds]]. Kundarak dwarves live across Khorvaire while maintaining close ties to the Mror Holds and
their loyalty to the house over any particular nation. In addition to providing all manner of security, House
Kundarak dominates [[Khorvaire]]'s banking industry.
As a [[dragonmarked house]], it is obliged to remain neutral
in the politics of all nations, including its homeland. As a result, Clan Kundarak is no longer represented on
the [[Iron Council]] that rules the Mror Holds. However, it
wields an influence over the other clans that reflects its
wealth and its status in the world beyond the Holds, and
the voice of Kundarak members arguing against the use
of [[daelkyr]] magic carries significant weight.
//Flesh isn't final: it's clay to be molded into something better. We can be so much more than these bodies we're born with. You were birthed in the prison of everyday life, but there are paths in this foul labyrinth that lead to unimaginable wonders. Let us show you the way.//
<div align="right">—A cultist of Dyrrn</div>
Dyrrn is known to its followers as the Corruptor, the Stealer of Thoughts, the Slithering Lord, and the Foul Labyrinth. In the lore of the [[Gatekeepers]], it is said that Dyrrn plants thoughts in the weak-minded—the seeds of terrible ideas that fester and grow. Those who are particularly brilliant often draw the attention of the Foul Labyrinth, which hungers to consume unique minds.
Dyrrn most often appears as a tall humanoid male with pale skin, clad in a heavy cassock of interwoven black leather that slithers unsettlingly around the daelkyr's form. Dyrrn can extend tentacles from its body, using them to extract the brains of others.
//''Twisting Flesh and Thought.''// The [[mind flayer]]s of [[Eberron]] know Dyrrn as the Overmind, and it serves as the cornerstone of their collective consciousness. Of all the [[daelkyr]], the Corruptor is the most adept at twisting minds and bodies to create monsters. It was Dyrrn who turned [[goblinoid]] prisoners into the first [[dolgaunt]]s and [[dolgrim]]s, creating the legions that would savage the nations of [[Khorvaire]]. Dyrrn is also a prolific creator of [[symbiont]]s—treasures that tempt people to bind alien entities to their flesh.
//''Dyrrn's Cults.''// Dyrrn's lair touches the [[Eldeen Reaches]], and the [[druid]]s of the Towering Wood are always watching for Dyrrn's influence. At the start of the [[Last War]], the dwarves of the [[Mror Holds]] discovered passages to the daelkyr's realm below their halls, and Dyrrn's cults have spread from there.
Mind flayers often work with Dyrrn's cults, many of which are obsessed with evolution—through the use of symbionts or by becoming an [[aberration]]. Those who worship the Stealer of Thoughts believe that Dyrrn will consume all sentient beings, except for its servants.
However, there are other cults—such as the [[Transcendent Flesh]]—who see Dyrrn's
actions in a positive light. Dyrrn transforms and creates new
forms of life—but who are we to decide that these things are
monsters? Such cultists believe that Dyrrn is driving evolution,
and they can transcend their own limits by walking the path of
the Foul Labyrinth. While this can start as simply transactional,
the influence of the Corruptor is insidious, and cultists can
soon start to see natural creatures as vile and weak.
//''Character Ideas.''// An [[artificer]] could hear Dyrnn's whispers,
guiding them to create living tools; their infusions might appear
to be alive, though their effects are the same as those for other
artificers. A [[warlock]] bound to Dyrrn could experience dramatic
physical transformation or focus on powers that control
thought—are they now a renegade fighting Dyrrn, or being
guided toward evolution? A barbarian could present their rage
as a disturbing physical transformation, while a transmuter
[[wizard]] might follow in [[Mordain the Fleshweaver]]'s footsteps.
//''Story Ideas.''// Dyrrn's cults can always provide a foothold for
[[aberration]]s to enter a story. Cultists could be creating monsters
from corpses, cloning important people and releasing the clones
into the world, or turning innocent people into aberrations. A
[[Transcendent Flesh]] cult might focus on their own physical or mental evolution and have no intention of harming others—until they need extra brains or body parts. Someone might
discover that Dyrrn is responsible for both [[aberrant|aberrant dragonmark]] and true
[[dragonmark]]s; what impact would this have on the world?
This long, whip-like strand of tough muscle bears a sharp stinger at one end. To attune to this symbiotic weapon, you wrap the whip around your wrist for up to one hour, during which time the whip painfully embeds its tendrils into your arm.
You gain advantage to attacks made with this magic whip, but attack rolls made against [[aberration]]s with this weapon have disadvantage. A creature hit by this weapon experiences strange psychic effects and may find themselves stunned, confused, or filled with terror.
You can sheathe the whip by causing it to retract into your arm, or draw the whip out of your arm again.
See also [[Dyrrn]].
When wearing this set of tiny brass weight earrings, your balance is greatly improved.
This simple set of diamond stud earrings greatly improves the wearer's hearing, giving them the ability to eavesdrop on a conversation a hundred feet away. These earrings also protect the user from dangerously loud sounds.
This set of tiny, pale jade spheres on silver stud earrings allows the wearer to read fluently any language they see; however, it does not allow them to speak or write the language.
To attune to this [[symbiont]], you must hold it against the skin behind your ear for several minutes, whereupon it burrows into your head and bonds to your skull. While the earworm is inside you, you can speak, read, and write Deep Speech. You can also detect the thoughts of those around you a few times per day, and each time you do this, the earworm sends the information gleaned to the nearest [[daelkyr]], or to the next nearest earworm until it reaches a daelkyr.
While wearing these earrings, your hearing is enhanced; you have advantage on
attempts made to overhear conversations held within 30 feet of you.
Between [[Siberys]], the Dragon Above, and [[Khyber]], the Dragon Below, the surface of the Dragon Between stretches from
horizon to horizon, a patchwork of fields and forests, oceans
and mountains, deserts, swamps, jungles, tundra, and more.
Beneath a yellow sun, Eberron's varied environments give
way one to another across each continent. Mountains rise,
valleys fall, and water surrounds the land.
The world of Eberron has a rich history built on heroic
deeds, evolving magic, and the wounds of a long, devastating war. Action, adventure, good, evil, and a thousand
shades of gray paint the landscape in broad strokes. Ancient mysteries await discovery so they can influence the
world and its people.
!! Five Things to Know
# ''The Last War Has Ended—Sort Of.'' The [[Last War]] plunged the continent of [[Khorvaire]] into civil war more than a century ago, shattering the [[Five Nations]] that made up the kingdom of [[Galifar]]. Just two years ago, the war ended with the signing of the [[Treaty of Thronehold]] and the establishment of twelve recognized nations and a tenuous peace. The conflicts, the anger, and the pain of the long war remain, however, and the new nations seek every advantage as they prepare for the next war to break out on the continent.
# ''Dragonmarked Dynasties.'' The great [[dragonmarked families|dragonmarked house]] are the barons of industry and commerce throughout [[Khorvaire]] and beyond. Their influence transcends political boundaries, and they remained mostly neutral during the [[Last War]]. Not technically citizens of any nation, the matriarchs and patriarchs of each house live in splendor within their [[enclave]]s and emporiums located throughout Khorvaire. These dynastic houses of commerce derive their power from [[dragonmark]]s—hereditary arcane sigils that manifest on certain individuals within the family, granting them limited but useful magical abilities associated with the [[trade guild]]s each family controls.
# ''Lands of Intrigue.'' The war is over, and the nations of Khorvaire now try to build a new age of peace and prosperity. Ancient threats linger, however, and the world needs heroes to take up the cause. Nations compete on many levels—over economic dominance, political influence, territory, magical power, and more—each looking to maintain or improve its status by any means short of all-out war. [[Dragonmarked house|dragonmarked house]]s, churches both pure and corrupt, crime lords, monster gangs, psionic spies, arcane universities, secret societies, sinister masterminds, [[dragon]]s, and a multitude of organizations and factions join the struggle for position and power in the aftermath of the [[Last War]].
# ''A Continent of Adventure.'' From the jungles of [[Q'barra]] to the blasted hills and valleys of the [[Demon Wastes]], from the skyscrapers of [[Sharn]] to the dinosaur-filled [[Talenta Plains]], Eberron is a world of adventure. Adventures can draw heroes from one exotic location to another across the continent of [[Khorvaire]]. The quest for the Mirror of the Seventh Moon might take the heroes from a hidden mountain shrine in [[Darguun]] to a ruined castle in the [[Shadow Marches]] and finally to a dungeon deep below the [[Library of Korranberg]]. Through the use of magical transportation, heroes can reach a wide range of environments over the course of an adventure, and thus deal with a diverse assortment of monsters and other challenges.
# ''A World of Magic.'' The technology of Eberron has developed not through the advance of science but by the mastery of magic. The widespread use of magic pervades life in the cities and towns. [[Airship|airship]]s and [[rail|lightning rail]] transport make rapid travel across the continent possible. A working class of minor mages, called [[magewright]]s, uses spells to provide energy and other necessities. Advances in [[magic item]] creation have led to everything from self propelled farming implements to sentient, free-willed [[beings|warforged]] created in [[artificer]]s' forges. With the aid of rare crystals called [[dragonshard]]s, [[dragonmark]]s can be made more powerful, [[elemental]]s can be controlled and harnessed, and [[magic item]]s can be crafted and shaped.
!! Brief History of Eberron
See [[Progenitor Dragons]] for the creation myth.
In the first age of the world, powerful archfiends known as the [[overlord]]s
and their armies of [[rakshasa]] and lesser [[fiend]]s dominated Eberron. Forces of light—some versions of the
story say the nine gods of the [[Sovereign Host]], others
say an alliance of [[dragon]]s and [[celestial]]s—eventually
defeated the overlords. But these fiends couldn't be destroyed; instead, their immortal essences were bound in
[[Khyber]]. Whatever the true details of this tale, this much
is true: if the [[overlord]]s ever break their bonds, the consequences would be catastrophic.
Over the course of millennia, numerous civilizations
rose only to fall. [[Giant|giant]]s built mighty kingdoms on the
continent of [[Xen'drik]] that were devastated by a war
with the [[dragon]]s of [[Argonnessen]]. The [[goblin|goblinoid]] empire of
[[Dhakaan]] ruled [[Khorvaire]] until its reign was shattered
by an invading army of [[mind flayer]]s, [[beholder]]s, and the
[[foul creatures|daelkyr]] that created them. Today these civilizations are known only through the remnants left behind.
!! Eberron's Plane of Existence
The planet of Eberron is the heart of its own Material
Plane. It is surrounded by the Ring of [[Siberys]]. Beyond
this band of [[dragonshard]]s, thirteen moons orbit the
world. To date, no creature from Eberron has explored
the moons, and none can say whether they are lifeless
rocks or thriving worlds. Some sages believe that the
moons are connected to the planes, or that they might
even be physical extensions of the planes, but the truth
of these assertions remains unknown.
No other planets have been discovered within Eberron's Material Plane. The underworld of [[Khyber]], however, contains a host of demiplanes, tiny pockets of
altered reality. As such, venturing beneath the surface
of Eberron can lead you to a network of caverns and
passages, and if you find the right passage, it can take
you to fantastic and deadly places inhabited by [[fiend]]s,
[[aberration]]s, and other children of Khyber.
Ebon sedge is a type of grass that grows only in the [[Mabar]]an [[manifest zone]]s of the island of [[Farlnen]] in the [[Lhazaar Principalities]]. Rather than sunlight, it feeds on shadows and thrives in darkness; it is used as both a spice and as an [[alchemical|alchemist]] material component. The grass was developed over a thousand years ago by the [[Grim Lord|Grim Lords]] [[Varonaen]], along with other botanical innovations.
//"Sword against shadow. Faith against fear. I walk the edge of the world, and no horror shall pass my blade."//<br/>
<div align="right">—The Vow of the Edgewalker</div>
The Edgewalkers are a division of the [[Harmonious Shield]] of [[Riedra]]. These survivalists patrol the borders of the [[wild zone]]s and other dangerous regions, keeping the horrors within from escaping to harm innocent Riedrans. For nine hundred years these warriors have held the chaos of the outer realms at bay.
!! Joining the Edgewalkers
Service in the Edgewalkers is not a choice. It is an honor and
a duty, a calling from the [[Inspired]] themselves. Many Edgewalker soldiers are drawn from the other branches of the [[Harmonious Shield]]; these are among the most skilled and
dedicated. Others are chosen to serve the corps at an early
age and spend their adolescence in intensive training.
Edgewalkers are the shield of [[Riedra]], and it would
be almost unimaginable for a foreigner to be drawn into
the service. As such, an Edgewalker PC is most likely a
Riedran who already meets the entry requirements at the
start of the campaign, and who can be assumed to have
been raised as an Edgewalker.
Many Edgewalkers are rangers, [[psi warrior]]s, [[ardent]]s, and [[psion]]s, along with a handful of [[cleric]]s of the [[Path of Inspiration]]. However, even wielders of [[arcane magic]] can find a place in the Edgewalkers. While the [[Inspired]] have purged arcane magic from the common populace of Riedra, when it comes to
defending against extraplanar threats, they are willing to make exceptions. If a Riedran child develops the talents of a [[sorcerer]], specifically with a gift for [[divination]] or [[abjuration]], they might be claimed by the Edgewalkers. Such characters believe that it is dangerous to use arcane forces, but that devoted service to the Inspired is a
shield—an Edgewalker sorcerer should never use his powers
for his own benefit, but as long as he uses them solely in
defense of Riedra, his devotion should save him.
!! Edgewalker Benefits
The Edgewalkers are an elite military force trained to
deal with the myriad dangers of the [[wild zone]]s and other
supernatural and extraplanar threats.
An Edgewalker receives free room and board in any [[Riedran|Riedrans]] community.
Edgewalkers are assigned equipment. They do
not have to pay for basic goods, and might even receive
minor psionic or [[magic item]]s at no charge—though
they must account for such items at the conclusion of an
assignment. Although they could receive free supplies,
Edgewalkers have no access to nonstandard equipment,
since Riedrans are not expected to purchase goods, and
any unusual requests must be justified.
For a Riedran, an Edgewalker has an unusual level of access to [[divine|divine magic]], [[primal|primal magic]], and [[arcane magic]]. Edgewalker spellcasters might be motivated by the needs of a mission or by friendship with a character, but their services cannot be purchased with gold.
The Edgewalkers are the ultimate authority on the [[wild zone]]s of [[Riedra]]. By consulting at an Edgewalker stronghold, a member has advantage to gain information on any wild zone, or a large advantage on one of the zones specifically overseen by the fortress.
!! Playing an Edgewalker
You are a warrior on the front lines of a war beyond
imagination. Other soldiers of the [[Harmonious Shield]]
chase [[dromite]]s through tunnels or glare at the [[Adarans]]
across mountain walls. You? It's your job to go toe to toe
with [[demon]]s and [[monsters|aberration]] shaped by [[forces of madness|Xoriat]].
You've stared into raw chaos, and felt the heat of elemental fire. You'll be lucky if you live ten years in the service, but you wouldn't have it any other way. These horrors
can't be left to prey on the innocent.
As an Edgewalker, you know just how fragile the
world is. The [[wild zone]]s are permanent battlegrounds,
but the walls of reality can be breached anywhere, at any time. Also, extraplanar threats are only the beginning. [[Vampire|vampire]]s, [[ghost]]s, [[rakshasa]]s, [[undead]], and [[aberration]]s are all your concern. You are the sentinel who
walks the line between the natural and unnatural world.
Your greatest challenge is to hold to your faith, lest you
become the darkness that you battle.
You have no use for humor and no time for leisure.
Evil is out there, and every minute you spend at peace is
a moment you could serve in battle. Study those around
you for any signs of possession or corruption. Never
lower your guard, and never pass up an opportunity to
defend an innocent from harm.
Not all soldiers live up to this ideal. Perhaps you
are a fallen Edgewalker, one who has seen the power
that lies in the darkness and now pursues it. You have
abandoned the [[Path of Inspiration]], and you care nothing
for innocents. You conceal your true motives from your
comrades, but when you enter the [[wild zone]]s, you aren't
thinking of the safety of [[Riedra]]; your only interest is your
own gain. You intend to be a [[demon]] prince, the equal of
any of the [[Inspired]]... and woe betide anyone who stands
in your way.
Fallen or true, you were indoctrinated from birth
in the [[Path of Inspiration]]. You were taught to believe
in the //il-altas//, to believe that the [[Inspired]] are guided by
the spirit of [[Riedra]] itself. You have seen the good that
the Inspired have done for your people; you have fought
beside Inspired lords against [[aberration]]s and [[fiend]]s.
Nonetheless, of all the people in Riedra, you are best
equipped to realize the true nature of your rulers. But
what do you do if you determine your beloved masters are
alien terrors? If you speak out, you will be denounced as
a heretic and slain. Perhaps you can work from within,
helping dissidents and gathering information. Or you
might flee to a foreign land. You know that the battle
of the planes stretches beyond national borders; if you
decide to fight the [[quori]], you can fight them anywhere in
the world.
Some Edgewalkers remain loyal to the [[Inspired]] even after learning the truth about the [[quori]]. The quori might be alien spirits, but they have brought peace and security to the people of Riedra. In many ways, the [[kalashtar]] agenda is as selfish as that of the [[Dreaming Dark]]. Finally, you might decide that you can no longer work for the Inspired, and that you must find your own path, fighting both the kalashtar and the quori.
!!! Combat
You are a mortal fighting fiends and horrors.
You expect to be outmatched by your enemies, and you
must look for every possible advantage. Study your enemy.
Don't just charge into battle and fight until you fall. Study.
Observe. Adapt. If need be, retreat and reequip. You are
not afraid to die in battle, but if there's a possibility of
buying a later victory with retreat, do so.
You are always ready to do battle, but you know that
violence is not always the best solution. Many spirits can
be bound by oaths or flattery. In such situations, words
can be far more effective than weapons. Know your
enemy, and choose your tools wisely.
!!! Advancement
Edgewalkers are divided into two orders, the sentries and the inquisitors. A sentry might
spend his entire career at one fortress. You most likely follow the path of the inquisitor, a roaming agent who can be sent anywhere in [[Eberron]]. Edgewalker inquisitors are unlikely to ever get promoted: Your skills are too useful in the field. You go where the [[Inspired]] send you. If you are true to your cause, personal wealth and luxury
mean very little. If you are a fallen Edgewalker, you hope
to use your knowledge of the [[plane]]s to gain personal
power. If you are a rebel, you seek to protect the people
from supernatural danger, but this struggle could bring
you into conflict with your former masters.
!!! Missions
An Edgewalker sentry guards a specific [[manifest zone]]. Often this duty involves patrolling the perimeter, which is slashed and burned to provide a clear
line of sight. Other times, you might be sent into the zone
itself, to recover valuable resources or monitor experiments set in motion by the [[Inspired]].
Edgewalker inquisitors are constantly in motion,
and might be called in to investigate any supernatural
threat or flare in planar activity. Your duties are not
limited to [[Riedra]]. You might be sent to [[Syrkarn]] to battle
[[rakshasa]]s or to [[Xen'drik]] to investigate the planar magic
of the [[giant]]s. You could even be sent to [[Khorvaire]] to
uncover the secret of the [[Mourning]]. This sort of assignment would provide you with a solid base for traveling the world and working with Khorvairian adventurers, while
still remaining loyal to the [[Inspired]].
!!! Responsibilities
Whether you are a sentry or an inquisitor, your duties are simple. Follow the orders of
the Inspired. Defend the innocent people of Riedra from
extraplanar and supernatural horrors. In many ways, you
have much in common with a templar of the [[Silver Flame]],
but you serve the [[Path of Inspiration]], not a flame whose
own followers admit is tainted by [[demonic influences|Bel Shalor]].
!! Edgewalkers in the World
//"I am impressed by how efficiently these soldiers contained the eruption from [[Fernia]]. Nonetheless, I continue to question the wisdom of training mortals in the techniques of exorcism and dimensional binding."//<br/>
<div align="right">—Lord Xerakhesh, Dominator of the [[Dreaming Dark]]</div>
[[Wild zone|wild zone]]s hold a wealth of opportunities for adventurers,
and the Edgewalkers are the gatekeepers of these regions.
They might oppose adventurers who seek to release or
remove something held within a wild zone, or who
seek to destroy an [[Inspired]] installation based in
a wild zone. But Edgewalkers can just as easily
be allies who come to the aid of adventurers who underestimate the danger of the
planar breaches. Most Edgewalkers are
good people who have sworn their lives
to protecting innocents—even innocent foreigners.
!!! Organization
The Edgewalkers were founded in 390 Unity (88 YK), in response to a disastrous planar incursion in the province of [[Nulakesh]]. However, the group has
its roots in the nation of [[Khalesh]]. Before the [[Sundering]], the [[couatl]]-worshiping people of Khalesh sought to eliminate all supernatural threats in [[Sarlona]]. The Khaleshite Order of the Silver Blade developed techniques for banishing and binding [[fiend]]s of [[Khyber]] and the [[plane]]s. Although most Khalesh
were killed during the Sundering, their
legacy and techniques live on in the Edgewalkers.
The Edgewalkers are a military
corps, but the hierarchy is simple and
promotion is rare. The bulk of the members
belong to the Order of Sentries, soldiers
assigned to a specific region. All soldiers
begin with the rank of sentry. A sentry
guide commands a squad of sentries.
A sentry warden commands a small watchtower.
These posts are generally held by [[Chosen]], though a few
gifted [[human]]s have risen to this rank.
A sentry lord commands a fortress. Chosen who advance to this rank are usually [[tsucora]] or [[du'ulora]] [[Inspired]].
A lord commander coordinates efforts across an
entire [[province|Sarlonan province]]. The posts are all held by [[Inspired]].
The supreme commander of the order is Lord [[Kaltaresh]], Keeper of Seals ([[du'ulora]] [[Inspired]]). Kaltaresh guides the Edgewalkers from the division headquarters in the bastion of [[Dar Mun]].
A fraction of Edgewalkers belong to the Order of Inquisitors. There are no ranks within this order; technically, an inquisitor stands between sentry guide and sentry warden, and the activities of the inquisitors are coordinated by the lord commanders.
!!! NPC Reactions
Edgewalkers are heroes and always receive a
friendly welcome in [[Riedran|Riedrans]] communities. Beyond [[Riedra]], Edgewalkers
are much less well known; even in [[Adar]]
or [[Syrkarn]], few can tell the difference
between Edgewalkers and other Riedran
soldiers, and they react accordingly. The
exceptions are communities close to [[wild zone]]s. Lord [[Kaltaresh]] has occasionally sent Edgewalkers to counter dangerous planar
surges in [[Syrkarn]] and the [[Tundra|Tashana Tundra]]. In these
areas, locals might be friendly to Edgewalkers despite a general hostility toward Riedrans.
The Eel Bay lies the coast of mainland [[Lhazaar Principalities]] near [[Port Verge]]. It is primarily controlled by the [[Diresharks]].
Hulking [[genie]]s of [[Fernia]], the efreet are masters of flame, immune to fire and able to create it on a whim. Fine silk caftans and damask robes drape their magma-red or coal-black skin, and they bedeck themselves in brass and gold tores, chains, and rings, all glittering with jewels. When an efreeti flies, its lower body transforms into a column of smoke and embers.
The efreet are the brightest stars in the firmament of [[Fernia]].
They are aristocrats, dwelling in sprawling mansions and
castles, attended by countless servants, dwelling amidst
astonishing opulence. Fire consumes, and the efreet are
masters of conspicuous consumption. They are passionate
and wild, quick to both anger and joy. They are casually
cruel, and can consume or destroy the lives of others even
as they celebrate. However, the efreet aren't conquerors,
for they already have everything they could possibly want;
their elemental servants exist to serve them, and the efreet
consider them to be casually disposable.
The efreet have been competing with one another since
the dawn of time. Passionate arguments can escalate into
dramatic duels, and now and again, two efreet unleash their
armies in a grand display of fire and burning blood. But by
and large, the conflict between the efreet is social, as each
strives to outshine their rivals. Efreet society is bound by an
elaborate social calendar. At any moment in Fernia, one of
the efreet is hosting a grand celebration. Sometimes there's
a theme or explanation for the gala—the unveiling of a new
work of art, the epic burning of an old piece of art, or the
thousandth anniversary of an efreeti's last rebirth. Other
times, the party needs no explanation.
If an efreeti isn't hosting a gala, it's planning its next
one—and always, always searching for ways to outshine
every celebration that's come before. Often this is about
working with the resources within the plane, pushing [[azer]]s
and [[dao]] to create new wonders. But efreet have vast wealth
and the ability to travel the planes, and this can bring them
to the Material Plane. If a celebration sports a flight of red
[[dragon]]s performing synchronized pyrotechnics, remember
this—dragons aren't native to Fernia, and the plane doesn't
have manifestations of creatures; thus, the efreeti hired
those dragons from another plane. Imagine what it would
take to convince dragons of [[Argonnessen]] to perform as
entertainment! Efreet rarely have any reason to deal with
adventurers, but if the characters do have something to
offer—or if they're interesting enough simply to be invited
to a party as curiosities—an efreeti can make it worth
their time. An efreeti could also serve as the patron of a
[[warlock]], giving the mortal power, but demanding that they always search for things
that could give the efreeti an edge over their rivals in their
endless social battles.
While efreet have much to offer, any association with an
efreeti is dangerous. They abide by the letter of any contracts
they make, but adventurers would be wise to make sure a
contract includes safety clauses. After all, efreet are spirits
of fire, and they burn the things they touch. They care about
nothing save their own status and amusement, and destroy
lives without a thought.
There are a host of noble efreet in Fernia. Here are a few
of the most prominent, including their public names they use
with mortals—their Ignan names are far longer.
* Sultan [[Azhalar]] of High Hearth
* Pasha [[Shashraqa]] of Firefall
* Pasha [[Raqashtar]] of Gold Ash
One frequent guest of the [[Stormreach]] [[Phiarlan enclave|Phiarlan Enclave (Stormreach)]] is Eiras Tialaen, a [[bard]] who has
devoted his life to recovering lost artistic traditions of
the ancient [[elves|elf]] from the depths of [[Xen'drik]]. Tialaen
was scarred in an accident in the jungles, but he hides
his disfigurement beneath a layer of [[illusion]]. The
bard could be a useful patron or ally for explorers, or
a rival; a PC might want a [[magic item]] for its power,
while Tialaen wants the relic for its artistry.
Elabenna is an aging soothsayer who served many years as a [[Master|Master's Hall]] of the city of [[Io'lokar]]. Since then, she has built up an unofficial network of younger diviners
dedicated to reinterpreting the [[Draconic Prophecy]] as it relates to [[Io'lokar]]—or at least as Elabenna believes it does. This cabal has sponsored a number of scholarly expeditions into deepest [[Argonnessen]] as a result of Elabenna’s visions; three of them never returned. Now, Elabenna seeks foreign adventurers for her schemes. Such PCs can effectively set their own price in [[divination]] spells cast by Elabenna as payment for
such a mission.
Eladrin dwell in the verdant splendor of [[Thelanis]] and its glittering [[feyspire]]s. They are related to the [[elves|elf]] found on the Material Plane; some say the elves of Eberron descended from the doomed inhabitants of [[Shae Tirias Tolai]].
Eladrin are creatures ruled by emotion—and because of their unique magical nature, they undergo physical changes to match their changes in temperament. The fey magic flowing through eladrin transforms them into different seasonal aspects, with behaviors and capabilities that change with their forms. Some eladrin might remain in a particular aspect for years, while others run through the emotional spectrum each week.
For the eladrin of Thelanis, the seasonal aspect remains
a statement of their current mood and nature. However,
seasons are also used as a political statement, reflecting
a degree of support for that season in the [[Moon Court]];
there may be times when an eladrin will resist assuming
a particular aspect so as not to offend a host.
Another manifestation of the fey power of eladrin is their //fey step//, an ability that allows them to teleport short distances.
Baron Elar of House [[Thuranni]] is an enigmatic figure, driven and charismatic. It was Elar who ordered the extermination of the [[Paelion]] line, and who forced the [[Twelve]] to accept a new [[dragonmarked house]]. Always working to strengthen his
line, Elar is willing to make great sacrifices to accomplish his goals, and he expects the same of those around him.
Elar’s connection to the [[Mark of Shadow]] is exceptionally strong. He is accompanied by two shadowy creatures named Wrem and Wrek, who serve as
bodyguards and advisors; creatures as dark as night and as insubstantial as smoke. The origin of these spirits remains a mystery; some say that they are embodiments of the [[Mark of Shadow]] itself, made manifest to guide the baron.
The nature of Elar’s schemes could affect a Thuranni PC drawn into his service. If you decide that Elar seeks only to expand the influence of his family, PCs might be called upon to hunt down surviving [[Paelion]]s or to undermine House [[Phiarlan]].
But if you decide that Elar has ties to the Order of the [[Emerald Claw]]—or perhaps to the [[Queen of Shadows|Sul Khatesh]]—a PC might have to decide whether to embrace Elar’s purposes or challenge them.
Elari d'Orien is one of three [[dragonmark]]ed heirs of House [[Orien]] that run the [[Xen'drik]] teleportation circuit for the [[Transportation Guild]] (the tohers being [[Breyn|Breyn d'Orien]] and [[Dekker|Marishantar]]). Elari is a young prodigy who enjoys talking with travelers about their journeys.
The Eldeen Bay lies off the coast of the [[Eldeen Reaches]], the [[Demon Wastes]], and [[Aundair]].
''Capital:'' [[Greenheart]]<br/>
''Hallmarks:'' Agriculture, animal husbandry, [[druidic magic|primal magic]]
A stretch of fertile farmlands borders a vast, untamed
forest. Farmers tend the fields, while tribes of shifters
and circles of [[druid]]s and rangers roam through the
woods. These are the Eldeen Reaches.
Druids and [[shifter]]s dwelled in the [[Towering Wood]]
for thousands of years, but the eastern farmlands of the
Reaches were part of [[Aundair]] until the [[Last War]]. The
lords of Aundair focused their resources on the war effort, ignoring banditry and other problems faced by the
farmers of the east. The [[Wardens of the Wood]]—largest
of the [[druid]] sects—came to the aid of these farmers.
Fifty years ago, the people of eastern Aundair seceded
and formed the Eldeen Reaches. The [[Treaty of Thronehold]] recognized the Reaches as a nation, but its citizens fear Aundair will try to reclaim the region.
[[Druidic magic|primal magic]] is central to life in the Eldeen Reaches.
Its people seek to live in harmony with the natural
world, and each community has a druidic advisor
who helps with planning and planting. The Towering Wood is also home to tribes of [[shifter]]s, who maintain a nomadic existence. The [[Wardens of the Wood]] uphold
order and settle disputes, and the Great Druid [[Oalian]]—an [[awaken]]ed greatpine—is the spiritual leader of the Reaches.
!! Interesting Things About the Eldeen Reaches
* The [[Towering Wood]] is vast and untamed. The [[Wardens of the Wood]] seek to protect travelers, but swathes of forest remain entirely untouched by [[human]] or [[shifter]]. Such areas could hold giant beasts never seen in the outside world, or relics from a previous age—artifacts or ruins created by [[demon]]s or the terrifying [[daelkyr]].
* The [[fey]] have a strong presence in the Towering Wood. Even outside the fey stronghold of the [[Twilight Demesne]], [[manifest zone]]s tied to [[Thelanis]] allow passage between worlds. The Eldeen Reaches are a logical origin for a character with ties to the fey.
* [[Druidic|druid]] magic is a vital tool in the Eldeen Reaches. Residents use animal messengers to carry communications between villages, and beasts perform vital services. Goodberry wine takes the place of House [[Vadalis]] healing. Communities include [[awaken]]ed animals and plants as members.
!! Eldeen Characters
When creating an Eldeen character or NPC, consider
the following:
* ''Farm or Forest?'' Did you grow up on one of the farms of the eastern Reaches, or did you spend your childhood in the Towering Wood? Are you comfortable in buildings, or do you prefer the open air? As a child of the forest, you might take the outlander background, or perhaps you became a folk hero by defending farmers from bandits and beasts.
* ''Natural Magic.'' Druidic traditions play an important role in Eldeen society. If you're a [[druid]] or ranger, are you a stoic [[Warden of the Wood|Wardens of the Wood]] or a grim [[Child of Winter|Children of Winter]]? Even if you're not a spellcaster, the Magic Initiate feat can provide you with a few spells to reflect a basic initiation into the druidic mysteries.
* ''A Land with No Lords.'' The Reachers are fiercely independent. They broke with [[Aundair]], and they bow to no monarch. The folk of the Reaches value talent over titles. The Eldeen people respect the guidance of the [[druid]]s, but they all work together to solve their problems; no one gives orders to a Reacher.
!! Cities and Sites
Most people of the Eldeen Reaches live in villages and
on farms. Some folk in the Towering Wood make their
homes in the vast trees, while others are wanderers.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
The farmers of the eastern Eldeen seceded from [[Aundair]] during the [[Last War]], and tensions between the two
nations remain high. Most Reachers believe it's only a
matter of time until Aundair tries to reclaim the region,
and every village has a militia ready to serve.
The people of the Reaches value hospitality and regard all people as equals, but the fear of Aundairian
aggression can cause Reachers to treat foreigners with
suspicion or hostility.
The ultimate expression of [[illithid|mind flayer]] domination, an elder brain sprawls within a vat of dimly glowing viscous brine infused with [[psionic|psionics]] energy, touching the thoughts of creatures near and far. It scrawls upon the canvas of their minds, rewriting their thoughts and authoring their dreams.
!! Psychic Infiltrators
When an elder brain infiltrates a mind, it alters the creature's perception and deceives its senses, causing it to see, hear, touch, taste, or feel reality according to the elder brain's intent. From across great distances, it implants subconscious suggestions or subtly influences dreams to compel creatures toward a course of action that benefits its grand plan.
When its insidious suggestions fail to take hold, an elder brain asserts its dominance more directly. It seizes control of a resistant mind and controls the creature's body as it would a puppet. Against the rare, strong-willed stalwart that defies it or attacks it, an elder brain sends a blast of overwhelming psychic force to crush the upstart's mind, rendering the creature a thoughtless, drooling shell.
!! Devourer of Thoughts
An elder brain sustains itself by consuming the brains of other creatures. When the [[mind flayer]] servants that guard and tend to an elder brain don't bring its meals directly to it, the elder brain reaches out with tendrils of thought, mentally compelling creatures to come to it so that it may feed upon them.
When a mind flayer perishes, the elder brain's servants feed the contents of its skull to their master, which absorbs the illithid's brain and all the knowledge and experience contained therein. In this way the elder brain continually increases its knowledge, uniting the thoughts and experiences of the illithid colony into a unified whole. Mind flayers conceive of this "oneness" as a sacred state in the same way that a religious human might view an eternal afterlife—for an elder brain can evoke the persona of any illithid it has ever absorbed.
Non-illithids call this creature an elder brain because it acts as the central communication hub for an entire mind flayer colony just as a brain does for a living body. Linked to the elder brain, the colony acts like a single organism, acting in concert as if each illithid were the digit of a hand.
Terrifying storms manifest in the body of the elder tempest. An [[elemental]] being carved from clouds, wind, rain, and lightning, the elder tempest assumes the shape of a serpent that slithers through the sky. The tempest drowns the land beneath it with rain and stabs the earth with lances of lightning. Punishing winds scream around it as it flies, feeding the chaos it creates.
An elder tempest dwells in the center of the [[First Storm]], a [[layer]] of the [[plane]] of [[Lamannia]].
Most long-time residents of [[Stormreach]] know their
city was a [[thri-kreen]] colony centuries ago, but almost
no traces remain. The mysterious thri-kreen relic at
the center of [[Locksmith Square]] is one of the few remnants of that time. Locals refer to it as Eldred’s Pool, after a sage who garnered notoriety for his fascination
with and later hatred of the object.
Historians relate that Eldred was an antiquities scholar who arrived in
[[Stormreach]] in the early years of the first [[Storm Lords]]’
reign. The arrival of a wizened bookworm in this
pirate boomtown was made all the more strange by his
immediate obsession with the centerpiece of [[Locksmith Square]]. Reports came in about how he was paying individuals of low character to conduct experiments for
him, from attempting to carve pieces off the thing to
bringing him samples of the water that collected within
its basin. Eldred’s tale culminates in his approaching
the [[Storm Lords]] with a demand that they destroy the
object without delay. When asked why, legend tells that
his only reply was, “Because it endangers us all.” In the
absence of corroborating evidence, the Storm Lords
refused and sent the “mad” scholar on his way. Within
a day, Eldred had vanished without a trace.
Eldred’s Pool resembles a circular fountain seemingly carved from a single piece of a dark green stone. It measures 24 feet in diameter, with an outer rim that
rises 2 feet off the ground. At the center of the pool sits
the object’s most unusual attraction: a sculpture depicting two six-limbed figures standing back to back. Each
figure balances on one leg, and the first of two pairs of
arms meet in the center of each figure’s torso, palm flat
against palm, as if in prayer. Each figure’s other two
arms are raised skyward, palms to the sky, as if hefting
a great weight, and each one’s head is a shiny stone that
seems bowed low, as if in supplication.
!! The Magic of Eldred's Pool
Although the pool does not circulate the water
that collects within it, any liquid dumped into it is
purified instantly, a process that removes all the
liquid’s toxins, bacteria, and supernatural qualities.
Many locals, therefore, collect their water at the pool. The pool’s most powerful effect, however, remains unknown to most.
The pool is a powerful bane against extraplanar creatures. Every time such a creature sees its own reflection in the pool’s water, it must have immense resolve to resist its effects or be sent immediately back to its [[plane]] of origin. Even extraplanar
creatures possessing another creature—such as the [[quori]] who possess the [[Inspired]]—are torn from their hosts and sent home on a failed save. The [[Riedra]]n consul, Lord [[Katanavash]], is aware of the pool’s power and warns fellow Inspired to avert their eyes from it.
The Eldritch Groves are a forest in southern [[Aundair]], near the town of [[Arcanix]].
An eldritch knight combines martial mastery with the careful study of [[arcane magic]]. Often found in the ranks of [[Aundair]]'s [[Knights Arcane]], eldritch knights use magical techniques similar to those practiced by [[wizard]]s, focusing their study on [[abjuration]] and [[evocation]] magic. Abjuration [[spell]]s grant an eldritch knight additional protection in battle, and evocation spells deal damage to many foes at once, extending the knight's reach in combat.
In a [[Cannith]] [[enclave]], a team of [[artificer]]s maintain a
[[creation forge]] that produces [[warforged]]. In the [[Shadow Marches]], [[druid]]s guard the seals that hold the [[daelkyr]]
at bay. In the sewers below [[Sharn]], a mad [[necromancer|necromancy]]
puts the final touches on a device that will turn the
city's residents into [[undead]]. Such contraptions are
categorized as eldritch machines—magical devices of
immense power that are too large to be moved easily. Eldritch machines are marvels of magic and engineering
that require special components and conditions to function. For example, a particular eldritch machine might
function only in a [[manifest zone]] where two or more
[[plane]]s are coterminous.
Ultimately, eldritch machines are plot devices that can
represent the culmination of a villain's master plan or a
last defense against evil.
!! Eldritch Machines
<<list-links-article "[tag{!!title}sort[title]]">>
Eldritch whorlwood is a rare gnarled wood found in the jungles of [[Xen'drik]]. The twists in the wood are caused by the intrinsic magical power trapped in the wood. When used to make wands or staffs, [[spell]]s cast from the [[implement|magical implement]] can release some of this power, causing the wood to gradually untwist. When it is perfectly straight, the magic is expended.
Pure elementals are incarnations of the elements that make up the universe: air, earth, fire, and water. Though little more than animated energy on their own planes of existence, they can be called on by spellcasters and powerful beings to take shape and perform tasks.
On its home [[plane]], a pure elemental is a bodiless life force. Its dim consciousness manifests as a physical shape only when focused by the power of magic. A wild spirit of elemental force has no desire except to course through the element of its native plane. Like beasts of the Material Plane, these elemental spirits have no society or culture, and little sense of being.
Certain spells and magic items can conjure an elemental. Elementals instinctively resent being pulled from their native planes and bound into service. A creature that summons an elemental must assert force of will to control it.
Powerful magic can bind an elemental spirit into a material template that defines a specific use and function. For example, elementals can also be bound into [[elemental vessel]]s to power vehicles such as [[airship]]s and the [[lightning rail]]. [[Golems|golem]] are elemental spirits bound to physical forms, but weaker materials such as flesh and clay can't bind elemental power sufficiently. Durable materials such as stone and iron require stronger magic, which consequently binds an elemental more securely.
!! Types of Pure Elemental
* An ''air elemental'' is a funneling cloud of whirling air with a vague semblance of a face.
* A ''fire elemental'' is a force of capricious devastation. A faint humanoid shape threads through the core of this wild, moving flame.
* An ''earth elemental'' plods forward like a walking hill, club-like arms of jagged stone swinging at its sides. Its head and body consist of dirt and stone, occasionally set with chunks of metal, gems, and bright minerals.
* A ''water elemental'' is a cresting wave that rolls across the ground, becoming nearly invisible at it courses through a larger body of water.
!! Other Types of Elemental
The "elementals" described above, which are little more than animate masses of their respective elements, are the most recognizable on [[Eberron]]. However, other elementals exist that have biological forms infused with [[immortal]] elemental energy.
<<list-links-article "[tag{!!title}category[creature]] -[tag{!!title}tagging[]category[creature]] +[sort[title]]">>
Choose one creature you can see within 90 feet, and choose one of the following damage types: acid, cold, fire, or lightning. If the target can't resist the spell, then for up to one minute, they are vulnerable to that damage type.
If you are able to cast [[legendary-tier|spell tier]] spells, you can cast this as such to target up to two additional creatures.
The [[gnome]]s of [[Zilargo]] are best known for their mastery of the binding of [[elemental]]s, capturing their primal essence in [[Khyber dragonshard|dragonshard]]s and using it to power the [[elemental vessel]]s that define the transportation infrastructure of [[Khorvaire]]. But bound elementals also provide light, heat, and other amenities in every city in Zilargo. The elemental binding techniques are a state secret held tightly by the Zil gnomes and protected ruthlessly by the ever-watchful [[Trust]]. The binding guilds have their headquarters in the city of [[Trolanport]], where the [[artificer]]s and [[magewright]]s who know the process are monitored at all times.
[[Xen'drik]] explorers have seen evidence of elemental binding magic in use among the
[[drow]] of that land (namely, the [[Sulatar]] and their [[firesled]]s), and some suggest that the gnomes of [[Zilargo]] discovered the fundamental principles of elemental binding during an expedition to that continent over two hundred years ago. But even if the gnomes did take inspiration from the firebinders, two centuries of development by the unsurpassed [[alchemist]]s and [[scriber|Sivis]]s of Zilargo have resulted in unique and novel binding traditions that are distinctly Zil.
To this day, only the [[dao]] of the [[Deep Halls]] of [[Fernia]] (especially [[Naja Ash]]) outshine the Zil gnomes as true masters of elemental binding.
!! Ethics of Elemental Binding
The binders of [[Zilargo]] claim that bound [[elemental]]s are perfectly content; that elementals don’t experience the passage of time the way humanoids do. All they wish is to express their elemental nature, and that’s what they do through the binding. The Zil argue that elementals don’t even understand that they //are// bound, and that binding elementals is in fact more humane than using beasts of burden. An [[elemental]] doesn’t feel hunger, exhaustion, or pain; all a fire elemental wants to do is //burn//, and it’s just as content to do that in an [[airship]]'s ring of fire as it is in [[Fernia]].
On the other hand, an [[Ashbound]] or [[Lorghalan]] [[druid]] will insist that this is a fundamental disruption of the natural order. When a bound elemental is released, it usually goes on a rampage; opponents of binding point to this as evidence that the elemental is suffering in its imprisonment.
It is a complicated question. Raw elementals (as opposed to elemental-based corporeal creatures such as [[genie]]s and [[azer]]s) are fundamentally alien. They don’t experience existence in the same way as creatures of Eberron do. They are [[immortal]]s who exist almost entirely in the moment, not making plans for the future or worrying about the past.
The majority of the people in the [[Five Nations]] don’t think about the issue at all; they just board the [[airship]]. To them, it’s no different from yoking an ox or using a bonfire to cook dinner.
The most common form of cannon on [[Khorvaire]] is the elemental cannon produced by the [[gnome]]s
of [[Zilargo]], which uses the essence of a bound earth [[elemental]]
to project stone cannonballs with tremendous force; Zilargo
began supplying [[Breland]] with these weapons toward the
end of the [[Last War]]. While [[Cannith]] and the [[Five Nations]]
experimented with other cannon models, the [[siege staff]]
typically filled this role on the battlefield.
The crews of the [[Chaos Fleet]] are more akin to [[zombie]]s than sapient [[humanoid]]s. But these are no [[undead]]. Like their captain [[Magwroth]], these sailors are
elemental creatures wearing humanoid flesh. Their horrid features include eyes of fire, teeth and fingernails of ice, and wounds that bleed mud.
The elemental spirits that inhabit drudges are not native to any of the [[plane]]s of [[Eberron]]; they appear to be a strange amalgam of malign elemental energy, originating from a [[demiplane]]s somehow connected to the mist-shrouded waters around the island of [[Lastpoint]] in the [[Lhazaar Sea]]. When defeated, a drudge explodes in a burst of raw elemental fire, ice, and lightning.
A House [[Lyrandar]] galleon, also called an elemental
galleon, resembles a Lyrandar [[airship]] except that it has
a water [[elemental]] ring that propels it across oceans and
seas instead of through the air. This vessel has a speed
of 10 miles per hour but otherwise is similar to a Lyrandar airship.
This gem contains a mote of elemental energy. When you break the gem, an [[elemental]] is summoned as if you had cast the [[conjure elemental]] spell, and the gem's magic is lost. The type of gem determines the elemental summoned by the spell.
|!Gem |!Summoned Elemental |
|Blue sapphire |air |
|Yellow diamond |earth |
|Red corundum |fire |
|Emerald |water |
Long ago, [[gnome]] [[artificer]]s and specialists from House
[[Cannith]] discovered and developed a means of magical
travel. The heart of the process is a set of techniques
for [[binding elementals|elemental binding]] that uses Khyber [[dragonshard]]s.
This closely guarded procedure requires delicate engineering, arcane skill, and rare materials from around
the world, and different workshops employ varying
esoteric techniques. Building a new vehicle can occupy
a workshop for months while magical energy is painstakingly inlaid into the vessel's hull. Such work is a
complicated task requiring the labor of many; it is not
something that can be undertaken by a lone [[wizard]] for
any amount of compensation.
The construction of elemental vessels requires the use
of two kinds of [[dragonshard]]s. A Khyber dragonshard
of the largest size and finest quality is required to bind
the [[elemental]] to the vessel, and a Siberys dragonshard
is needed to craft the vehicle's helm. Production of new
vessels grinds to a halt without a steady supply of both
kinds of dragonshards, and a workshop with an order
to fill will pay a handsome fee to adventurers who can
find them.
!! Elemental Matrix
Every elemental vessel is imbued with an invisible,
arcane matrix. This magical essence extends from the
containment chamber at the core of the vehicle to the
binding struts, then through the rest of the vehicle's
hull. When a Khyber [[dragonshard]] holding a bound
[[elemental]] is placed in the containment chamber, the matrix comes alive. The unsuppressed elemental emerges
from the shard and flows along the matrix in the way
that blood moves through the arteries and veins of a
living creature.
The binding struts force the [[elemental]] into a ring
shape and give every elemental vessel its distinctive
appearance. From there, the elemental continues to flow
along the matrix through the hull, appearing as jagged,
snaking lines of living energy that pulse and shift. These
conduits of elemental energy take on an appearance
associated with the type of elemental bound into the vessel. A fire elemental, for example, sends tendrils of flame
along the hull of its ship.
At the command of the vehicle's [[dragonmark]]ed pilot,
the bound elemental can be suppressed, causing its
essence to flow back into the containment chamber and
the matrix to disappear from view. A vehicle whose elemental is suppressed ceases to be propelled.
!! Controlling the Elemental
Piloting an elemental vessel requires effective communication between the pilot and the bound [[elemental]].
The elemental controls the vehicle's movement, and
everything from basic propulsion to delicate maneuvering is dependent on the ability of the pilot to control
the elemental. If the elemental is uncontrolled and not
suppressed, the vehicle moves according to the elemental's whim until a pilot asserts control again.
A [[dragonmark]]ed heir at the helm of a vessel can command the elemental easily. Without such a pilot, it's very
difficult to control the vessel. A character who is touching either the Khyber [[dragonshard]] where the bound elemental is housed or the magic item at the vessel's helm
can try to communicate with the elemental and persuade it to cooperate, but with no
guarantee of success.
!! Freeing the Elemental
Shattering the Khyber [[dragonshard]] that binds it can
free an [[elemental]], preventing the vehicle from moving.
On most elemental vessels, the shard is sealed in a
protective metal chest, usually
made of iron but sometimes of [[mithral]]
or [[adamantine]]. The chest is often guarded with
a glyph of warding and housed in a room behind locked
and possibly trapped doors.
!! Elemental Vessels
<<list-links-article "[tag{!!title}sort[title]]">>
//Put up your swords and talk of peace, or hide behind your walls of stone. When the host of [[Valenar]] thunders forth, neither will save you.//
<div align="right">—[[Shaeras Vadallia]], High King of Valenar</div>
Tens of thousands of years ago, during the [[Age of Giants]], the elves of the distant
continent of [[Xen'drik]] rose up against the [[giant]]s who
ruled over them. This rebellion is the defining event in
elf history. As the ancient war progressed, the [[magebreeders|magebreeding]] of the giants bound magic into the elves who
remained loyal to them, forming the [[drow]]—assassins
bred to prey on their other kin. Ultimately, the elves fled
from Xen'drik and settled the island nation of [[Aerenal]],
where they split into two distinct cultures: the introspective [[Aereni]] and the warlike [[Tairnadal]]. Thus, a war
nearly forty thousand years ago established the pattern
of how elves live today.
Neither the Aereni nor the Tairnadal (which include
the elves of [[Valenar]]) have much interest in human activities, but small numbers of elves have immigrated to [[Khorvaire]] over the centuries and have more or less integrated with the cultures of the [[Five Nations]]. The [[drow]],
though, are virtually unknown on Khorvaire.
As a whole, elves are driven by tradition and respect
for the past. Where humans value innovation, elves
strive to master and perfect the techniques of their
ancestors over the course of studies lasting centuries.
Elf society has changed little over the last five thousand
years, while Khorvaire is constantly evolving. Whatever
the origin of your elf character, consider your relationship with the past: Do you value the traditions of your
ancestors? Or do you fear that your people are too
mired in the past, and need to find a way to adapt and
move forward?
!! Appearance and Longevity
With their unearthly grace and fine features, elves appear hauntingly beautiful to humans and members of many other races. They are slightly shorter than humans on average, ranging from well under 5 feet tall to just over 6 feet. They are more slender than humans, weighing only 100 to 145 pounds.
Elves' coloration encompasses the normal human
range and also includes skin in shades of copper,
bronze, and almost bluish-white, hair of green or blue,
and eyes like pools of liquid gold or silver. Elves have no
facial and little body hair. They favor elegant clothing in
bright colors, and they enjoy simple yet lovely jewelry.
Elves can live well over 700 years, giving them a broad
perspective on events that might trouble the shorter-lived races more deeply.
Another trait that distinguishes elves from many other races is their "trance". Elves don't need to sleep. Instead, they meditate deeply, remaining semiconscious, for 4 hours a day. While meditating, they can dream after a fashion; such dreams are actually mental exercises that have become reflexive through years of practice. After resting in this way, they gain the same benefit that a [[human]] does from 8 hours of sleep. This trait grants elves an immunity to any magic that might put a humanoid to sleep, as well as a resistance to [[charm|enchantment]] magic.
!! Subraces
* Undying Elves: the [[Aereni]]
* Warrior Elves: the [[Tairnadal]]
* Dark Elves: the [[Drow|drow]]
* [[Sea Elves|sea elf]]
!! Elves of the Five Nations
Throughout history, elves have occasionally migrated to
live among the other peoples of [[Khorvaire]]. On rare occasions, entire families have relocated (as House [[Phiarlan]] did, almost three thousand years ago), but more
often wanderers and exiles have come to Khorvaire and made their way there. Many of the finest [[wizard]]s and most renowned artisans in the [[Five Nations]] are [[Aereni]], and some of the mightiest warriors are [[Tairnadal]].
As an elf born and raised in Khorvaire, your character has grown up among the shorter-lived races. You
might not be as concerned with history and tradition as
the [[Aereni]] and [[Tairnadal]]; you could even live your life
entirely in the moment, with no care for your family or
your legacy. Or you could be fascinated by the history
and traditions of your ancestors and try to relearn the
ways your family has forgotten.
Consider also whether you've outlived [[human]] friends
and how that might affect you. Did you know the parents or grandparents of another member of your party?
Are you trying to repay a debt or fulfill a promise to
that long-dead friend, or are you trying to recapture
some spark of the friendship you felt years ago? Do you
remember a time before the [[Last War]]? Did you fight
in the war?
!! Elves and Dragonmarks
The [[Mark of Shadow]] first appeared among the elves
of the [[Phiarlan]] line, and the house quickly turned the
mark's powers of shadow and illusion into an economic
dynasty. The suspicion of their kin drove them from
[[Aerenal]] to [[Khorvaire]], and the house splintered during
the [[Last War]], giving rise to House [[Thuranni]]. The two
houses of shadow control the business of espionage
throughout Khorvaire, but they also operate more legitimate ventures related to art and entertainment.
Phiarlan blood still runs among some of the [[Aereni]]
elves, and the [[Mark of Shadow]] appears once or twice in
each elven generation. Elves bearing this mark are always inducted into the elite force of the [[Cairdal Blades]]—an espionage agency in the service of [[Aerenal]]'s [[Sibling Kings]].
Although the [[destruction|Age of Giants]] of [[Xen'drik]] was monumental,
some of the continent’s denizens did survive. While the
[[dragon]]s brooded, [[elf]] refugees established the nation of
[[Aerenal]]. Thousands of years of research into [[necromancy]] and the energies of [[Argonnessen]] produced the [[Undying Court]], an alliance of [[deathless]] elves with a
gestalt power that rivaled the [[overlord]]s of the [[first age|Age of Demons]].
Since that time—nearly twenty-five thousand years before
the founding of [[Galifar]]—dragons and elves have been at
war. The tides of strife ebb and flow, and centuries might
pass between battles... but sooner or later the dragons
return to fight once more. The basis of this age-old
conflict, and its conduct, is another of the mysteries
of Argonnessen.
Many find it impossible to imagine that the [[Aereni]]
could stand against the force that utterly destroyed
[[Xen'drik]]. In truth, the elves have never faced the full
power of [[Argonnessen]]. The strike on Xen’drik was
carried out by the full, unified force of Argonnessen;
the elf–dragon wars have involved only a few flights
from the [[Light of Siberys]]. The fact that the [[Undying Court]] has been able to hold off the dragons remains an impressive feat, but it has not faced the power that
ravaged a continent.
Those who study this puzzling behavior ask: Why
not? What motivates this seemingly endless struggle? If
the dragons truly wish to eliminate the elves, why don’t they commit their full forces to the task? If they don’t care enough to do so, why do they continue to fight in such intermittent fashion?
One theory is that the [[dragon]]s despise the extensive practice of [[necromancy]], even when it draws on the positive energy of [[Irian]], but do not view it with the
same abhorrence as the [[giant]]s’ planar studies. Thus,
they cannot agree en masse that [[Aerenal]] should be
laid low.
Another possibility is that the struggle is a form
of exercise for the dragons, a proving ground for the
younger warriors of the [[Light of Siberys]]. Conversely,
it might be that the wars are fought to test the elves and
harden them for some future conflict. The dragons might be unwilling to share the secrets of their power with lesser races, but they can still push the lower creatures to reach their full potential. The long struggle with the dragons has certainly forced the [[Aereni]] [[wizard]]s and [[Tairnadal]] warriors to master the arts of war and magic.
The lords of [[Argonnessen]] offer no explanations for
their actions, nor do they negotiate. Only two instances
of elves and dragons working side by side are known, and
both involve the [[noble line|Aereni noble line]] of [[Vol]]. Following the appearance of the [[Mark of Death]], a number of [[green dragon]]s began working with the line of Vol.
This alliance produced the half-green dragon [[Erandis|Lady Illmarrow]].
Allies of Vol claim that this was intended to forge a bond
between the two races and bring an end to the wars.
Others believe that the emerald dragons sought to gain control of the Mark of Death through their half-dragon offspring. In the end, Erandis Vol did unite [[Aerenal]] and [[Argonnessen]]... in a quest to eradicate the line of Vol. But this alliance was short-lived and involved minimal communication between the allies. Once the
house of Vol fell into shadow, the [[dragon]]s returned to
Argonnessen, and in a few centuries the cycle of war
began anew.
This clear red liquid has tiny bubbles of light in it, and has a strong unpleasant taste.
When you drink this potion, it cures any disease or poison afflicting you, and it heals temporary blindness, deafness, and paralysis. Afterwards, you sweat copiously for several minutes, but suffer no other ill effects.
Ellfate's is a small restaurant at the
base of Skysedge Tower. It specializes in omelets, with a
menu including the [[Blood of Vol]] (an omelet made with
[[Karrnath]]i sausage and red pepper sauce), the [[Skyway]]
Special (a very light and fluffy dessert omelet served
atop whipped cream), and the [[Eldeen|Eldeen Reaches]] Banquet (loaded
with vegetables). It is also a favorite meeting place for
zealous mercantilists, a group of political revolutionaries who would like to see the king overthrown and
replaced by a governing council of merchant-princes.
Though their ideals are similar to the secret agenda
of the [[Aurum]], this group is all bluster and no action,
and has no connection to the Aurum.
The Elli Forest is a woodland region in the [[Corvagura]] province of [[Riedra]], near the [[Varuz Bay]].
Head of House [[Phiarlan]] and leader of the [[Demesne of Shadow]],
Elvinor is a bard of exceptional skill. Her years weigh
upon her, and she is looking for a successor—not someone to lead the house, but someone to learn the secrets that she has borne for centuries. She knows tales long
forgotten—stories that might be the key to great adventures. If she takes a PC Phiarlan as her apprentice, these secrets could inspire a campaign.
[[Irian]] is bursting with life. Songbirds, rabbits, and other
creatures roam the [[Garden]]. The streets of the [[Amaranthine City]] are filled with happy people. But the Garden never has
too many rabbits, and there's no risk of the citizens of the
Amaranthine City starving—or needing to go on strike to
prevent it. Sometimes, if you glimpse one out of the corner of
your eye, you might see them differently, as an outline of pale
white light—a glowing shadow.
These are [[manifestation]]s, not living creatures. Called embers,
each one is linked to a spark—a tiny echo of a soul, each one
tied to a living creature. Through this connection, mortals draw
inspiration and hope, and remain linked to the positive energy
that flows to and from all living things. An ember resembles
the mortal whose spark fuels it, but it isn't fully conscious and
doesn't have any complete memories, merely echoes of that
mortal's brightest joys, deepest hopes, and greatest deeds.
There are many more sparks in Irian than there are embers
at any given moment; Irian simply dips into the pool of sparks,
manifesting as many embers as the scene calls for, shaping the
light of each soul into something that looks like them.
Embers don't need to eat, drink, breathe, or sleep. They
follow basic scripts, but can't improvise and don't have much
knowledge beyond what they need for their role. As a rule,
embers are happy, for they don't know any other way to be. An
ember can't be truly killed; its body dissolves, but the spark that
fueled it remains safely within Irian's deep well of light.
While adventuring in [[Irian]], you might see an ember that
resembles you—but it won't recognize you, and might not even
appear the same age. This ember is merely your light-shadow,
manifested by Irian and channeling your life force. It holds the
essence of your best moments and emotions, the light within
you that drives you to goodness—but merely as a spark, not the
fire of a living creature.
Embers is the center of the [[Thrane]] presence in [[Stormreach]]. Its residents keep to themselves for the most
part, united by their [[faith|Silver Flame]] and by a desire to make
their home a refuge from the wildness in so much of
the city. Even the Thrane dissidents here retain much
of their national pride and dedicate themselves to
the neighborhood’s welfare. If anyone tries to cause
trouble in the ward, the [[Knights of Thrane]], led by
[[Valen Vanatar]], do not stand for it.
The [[Candlelight]] is one of the best restaurants in Embers.
In the wake of the [[Mourning]] four years ago, the twisted Greatwenge Embrisa emerged from the depths of the [[Shadow Marches]]. The [[awaken]]ed tree claims [[Vvaraak]] herself charged her with knowledge to
be shared only under cataclysmic circumstance.
Hierophants and hermits argue if this event
is some unknown disaster that lies ahead, the
Mourning, or if she might have been its cause.
While Embrisa hasn’t engaged directly with
[[Oalian]] or the leaders of the [[Gatekeepers]], a
small conclave of [[druid]]s methodically recruit
promising aspirants from within the other sects
to an estuary hidden somewhere between the
[[Crawling Swamp]] and the [[Deepwood]], called the
Wengeweald, which plays hearth to this ancient
sentinel and her growing army of disciples. Now,
whippoorwills whisper of a tradition forgotten
millennia ago, called the Circle of the Arbiter, and
its followers blaze a trail once consigned to
oblivion.
Seemingly by design, the circle remains
intimate and its ultimate mission yet to be
revealed. If you have been recruited by Embrisa
and initiated into the mysteries of the Arbiter,
why? Is a massive [[planar|plane]] incursion looming?
Could the [[Mourning]] spread beyond [[Cyre]]? As an
Arbiter you will like receive assignments directly
from Embrisa or fellow agents, and your true
purpose will surely emerge in time.
!! Circle of the Arbiter
Members of the Circle of the Arbiter understand
that the material world is just one aspect of
reality. These planar defenders are sworn to
protect the natural world from the denizens and
influence of the outer [[plane]]s. The [[druid]]s of this
circle are drawn from many different sects, and
in this order an [[Ashbound]] stands shoulder to
shoulder with a [[Greensinger|Greensingers]] as the last bulwark
between Eberron and the beyond. This diversity
strengthens the circle, as every tradition offers
unique advantages and techniques that to
counter different threats.
What arose as an order of militant knights within the
nation of [[Karrnath]] fell into disgrace and became a
shattered remnant. The Order of the Emerald Claw now
operates as a collection of cells of fanatical warriors,
[[necromancers|necromancy]], and spies. On the surface, its members
seem to be driven by Karrnathi patriotism, and they
purport to be adherents of the [[Blood of Vol]]. The most
cursory investigation reveals that claim to be a facade.
The truth behind the Emerald Claw is that they serve
the [[lich]] [[Lady Illmarrow]], and in her name they carry out
acts of destruction, murder, and necromantic terrorism.
They have been linked to the theft of powerful items
imbued with necromancy magic, and they often employ
vicious [[undead]] minions that make even other Karrns
uncomfortable. Most worshipers of the [[Blood of Vol]] are
quick to point out that they don't accept the order's claim
to membership in their faith, and those true worshipers
vehemently reject the Emerald Claw's violent fanaticism.
!! The Emerald Claw and the War
During the [[Last War]], [[Karrnath]] was forced to embrace
the practice of [[necromancy]] to bolster the ranks of its
army. At the same time, a number of chivalric orders
were founded by devoted worshipers of the [[Blood of Vol]].
These groups included necromancers and [[bone knight]]s
that were trained to raise and command the [[undead]]
troops used during the war. The Order of the Emerald
Claw was one of the most infamous of these groups, renowned for its fighting skills but often sanctioned for its brutal treatment of enemy soldiers. The Emerald Claw were also accused of slaughtering civilians so they could be raised as skeletons or [[zombie]]s—behavior that was strictly forbidden by the Karrnath commanders.
When King [[Kaius III|Kaius ir'Wynarn III]] came to power near the end of
the war, he turned against the [[Blood of Vol]]. The orders were disbanded, and many members of the Emerald Claw were condemned as war criminals. While the
other orders complied with the king's edict, many knights of the Emerald Claw refused to surrender. The order fragmented as its original members scattered, but
a number of those rebellious knights started their own
cells, rallying all who wanted to see [[Karrnath]] achieve
its rightful glory. The order experienced a surge in membership following the [[Treaty of Thronehold]] because
many Karrns thought that Kaius III had betrayed their
nation by embracing peace.
Six years ago, shortly after Kaius's accession, a figure
known as [[Lady Illmarrow]] emerged as the leader of the
Order of the Emerald Claw. Few of her followers know
anything about her, other than her great skill as a necromancer; many members of the Order refer to her as Queen of the Dead. Some members of the order believe
she will ultimately raise [[Karrnath]] above all other nations. Others simply trust that she will grant them personal power. They believe that she is poised to become a god of death, and that when she ascends to divinity, they will be granted immortality or at least the eternal life
of undeath.
!! Emerald Claw Campaign Themes
At low levels, adventurers can clash with Emerald Claw skeletons and [[zombie]]s. As the characters grow more capable, the threats escalate. They might have to protect a village from a [[necromancer|necromancy]] who is sucking the life out
of the land, or race through a dungeon to acquire a necromantic relic before the Claw can claim it. The Emerald Claw is ideally suited to pulp action; it's a force that
is blatant in its villainy and has hordes of evil minions
to do its bidding. Defeating the schemes of the Emerald
Claw should always feel like the right thing to do.
Although many members of the Emerald Claw believe that they are fighting for [[Karrnath]], they are truly serving the [[lich]] [[Lady Illmarrow]]. The greatest necromancer of the age, she seeks to unlock the secrets of her inactive [[dragonmark]], the [[Mark of Death]]. If she
succeeds, she could come to possess unimaginable power. This makes her a formidable villain to drive the action of an entire campaign.
On the cliffs above the [[Harbor]] of [[Stormreach]] stands a great statue,
palms together and with a great beam of light rising from
its outstretched hands. Scholars believe this is a statue
of Emperor [[Cul'sir]] from the [[Age of Giants]]. Although
the general populace has no idea who Cul’sir was, everyone refers to the statue as the Emperor. It radiates an overwhelming magical aura, and despite many [[wizard]]s’
efforts to discern its purpose, it remains a mystery.
Your magic deepens a creature's understanding of its own talent. You touch one willing creature and grant it an advantage whenever performing a non-combat action the creature is already good at. The spell persists for up to an hour.
The Empress of Shadows of the [[Amaranthine City]] of [[Mabar]] is the first and greatest of the [[Dark Power]]s. Her defining principle is hunger,
the desire to consume all that is light, to expand her empire
across eternity.
She prefers an elegant [[fiend]]ish form, with
polished horns and chitin plates engraved with arcane sigils,
but she can take the shape of any [[yugoloth]]. She spends much
of her time presiding over the decaying pomp and grandeur of
the Amaranthine City, but also closely monitors the campaigns
in the [[Hinterlands]] and occasionally takes time to torment
her hostages. The sages of [[Syrania]] believe that the Empress
of Shadows chooses which fragments of other planes will be
pulled into [[Mabar]], and planar emissaries sometimes dwell in
the Amaranthine City seeking to negotiate with her.
The [[Irian]] counterpart of the Empress of Shadows is the [[Dawn Empress]].
Empty Handed is a shop in [[Respite]], [[Stormreach]]. Troy Alzander does his best to make sure that nobody leaves his store without buying something; he believes it is bad luck if they leave empty handed. The store has various tools, artworks, and knickknacks (and a small supply of minor [[magic item]]s that Troy will sell if a person knows to ask). If someone is about to leave without buying anything, Troy tries
to sell a cheap [[trinket]] as a last resort.
Enchantment spells affect the minds of others, influencing or controlling their behavior. Such spells can make enemies see the caster as a friend, force creatures to take a course of action, or even control another creature like a puppet.
!!! <<showspells-school {{!!title}}>>
In a small community, a [[dragonmarked house]] might be
represented by a single business. A village might have a
[[Jorasco]] healing house, a tiny [[Sivis]] [[message station|speaking stone]], or a
[[Gold Dragon Inn]] of House [[Ghallanda]], all run by individuals. Large cities and metropolises have dozens of such
house businesses, but they also have ''enclaves''—the citadels
of the dragonmarked houses.
A house enclave is a self-contained community where
a member of a house can spend months without ever
needing to leave. The center of the enclave includes production, training, and administration facilities, living
quarters, and shops catering to the everyday needs of its inhabitants. This region of an enclave is reserved for the
private business of the house, and strangers are allowed
in only under special circumstances.
The secondary ring of the enclave is where business
occurs, and is the site of [[guild|trade guild]] offices, shops, and other
facilities. Customers, [[dragonmark]]ed heirs, and guild
members with no family connections all cross paths here.
Though the everyday services of house and guild can be
found across [[Khorvaire]], a house’s most expensive services
are exclusive to its enclaves. Courier stations are common
throughout [[Sharn]], for example, but teleportation is
available only at the [[Orien]] enclave in [[Dragon Towers]].
Part shopping center, part production facility, and part
suburb, a house enclave is often the economic center of
the community in which it is found.
!! Enclaves of the Dragonmarked Houses
<ul>
<$list filter="[tag[dragonmarked house]sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag[enclave]tag<currentTiddler>sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
This [[layer]] of [[Lamannia]] reflects the majesty of the ocean depths. It's home
to a vast array of fish and aquatic beasts, along with [[merfolk]]
tribes and a wide range of water [[elemental]]s, from simple
sentient currents to massive [[leviathan]]s and battling
megafauna. The Endless Ocean is where the [[gnome]] [[Tasker|Tasker Torralyn d'Sivis]]
encountered an island that turned out to be a totem turtle. True
islands are few and far between, and most are actually portals
to other layers of Lamannia. There are many points in the
Endless Ocean tied to [[manifest zone]]s (most located in ocean
depths) in the Material Plane.
The [[Forest Queen]] rules the Endless Weald within [[Thelanis]], an arboreal realm
inhabited by [[dire beast]]s and wild [[fey]]. [[Faun|faun]]s and [[dryad]]s dance in clearings lit by gleaming [[sprite]]s, and peaceful beasts congregate by glittering springs. A series of paths connect the safe spaces within the woods. But for
those who stray from the path, the Endless Weald lives up to its
name; such fools can be lost indefinitely, until the Queen takes
mercy and leads them out.
The Weald often leaks
into the wood through [[manifest zone]]s found in deep forests;
in such places, [[dryad]]s lurk in the trees and beasts may
possess unusual cunning. Under the right circumstances,
travelers passing through a zone might even slip into the
Weald. Such forests typically have well-worn paths that avoid
these pitfalls, thus strengthening the story of stay on the path.
The [[Greensinger|Greensingers]] [[druid]]s know rituals to connect a forest to
the Endless Weald, establishing a temporary manifest zone in
any deep wood.
Within [[Adar]] boil [[manifest zone]]s to the realm of pure
chaos—[[Kythri]]—and the whispers of [[Ran Iishiv]] are said
to be audible in the darkest shadows of the mountains.
Some of the mystics who came to Adar found these places
and gained power from them. The strange ways of fate
drew many mad magicians together, and they coalesced
around the desire to see the end of all that was created by
the [[progenitor wyrms|Progenitor Dragons]].
Only dissolution—the utter unmaking of everything—can satisfy an Endseeker. Each one is a lost soul of sorts, often having seen dearly held truths melt away into the
chaos of fate. To these magicians, the universe and all of its
motion are an abomination, and this repugnance must
be unraveled.
Endseekers are usually quite mad, but it is an
enlightened sort of madness. They know that something
is underneath all of creation, something from which
everything came. It's not a god—it's greater than that,
for it is everything and nothing at the same time. It is
undifferentiated potential. Creation must be returned
to this place.
Although a few Endseekers are malicious killers who
randomly destroy, those who survive and flourish take calculated actions. A clever Endseeker might help a diabolic cult, then use his power or influence to set forces of good against that cult—internecine conflict culminating
in mutual annihilation of the factions being the goal.
Powerful Endseekers, or groups thereof, have networks
and wide-ranging plans. The head of such an organization is the eye of calm in a maddening vortex. Seemingly unrelated plots all lead to that center. Endseekers don't
work together as a unified whole, though, and might even
be found opposing one another.
Most Endseekers are spellcasters, and a large number of them are [[warlock]]s who have powers tied to chaos. Even stranger, many Endseeker masters are
contemplative [[cleric]]s, their "religion" centering on the divine notion of unmaking.
''Getting the PCs Involved:'' Endseekers, rare as
they are, make easy villains. The characters can run
across these mad magicians at any point, finding one
at the center of a web of seemingly unrelated problems. The [[Keepers of the Word]] are on the lookout for
Endseeker plots, and they reward those who end such
machinations.
Endseekers don't just strike within [[Adar]], however.
Some wander into [[Riedra]]—usually perishing sooner
rather than later, and providing fodder for stories of the
demonic magicians of Adar. An Endseeker could be an
ally of characters working against the [[Inspired]] and the
[[Dreaming Dark]]. Such an Endseeker might even expound
the philosophies of unmaking. But how far can the characters trust their "friend"?
!! Notable Endseekers
<<list-links-article "[tag{!!title}sort[title]]">>
This spellbook, along with anything written on its pages, can't be damaged by fire or immersion in water. In addition, the spellbook doesn't deteriorate with age.
The Endworld Mountains form a natural border between the nation of [[Q'barra]] and the rest of [[Khorvaire]]. There are remnants of an ancient [[dwarven|dwarf]] kingdom in these mountains dating back to early in the [[Age of Monsters]], but its name has been lost to history.
The eneko are the true children of [[Syrkarn]]. They were
born in the wake of the [[Sundering]] in [[Sarlona]], as [[ogre]] or perhaps [[oni]] refugees
mingled their blood with that of the nomadic [[giant]]s from [[Xen'drik]]. The giant explorers were eventually wiped out or fled the continent, and the ogres were assimilated into [[Riedra]]n culture in [[Borunan]], but the true-breeding "mongrel" eneko proved to be remarkably well suited to the harsh environment of [[Syrkarn]].
Eneko are around the same height as, or slightly taller than, [[ogre]]s (8-13 feet). Their skin carries a green tint, and some eneko sport vestigial horns and prominent canine teeth.
These [[artificer]]-designed heavy leather gloves have iron fingertips and are constantly sparking with magical electricity. You can cast [[shocking grasp]] for free at will. The gauntlets may occasionally run out of charge; you can recharge them by striking a metal object or a [[construct]].
This is a finely crafted child's toy tea set in a wooden case. To activate the tea set's magical properties, you must perform a 10 minute ritual in which you host an imaginary tea party. This requires having a solid, relatively flat surface in which to set up all parts of the tea set (a tablecloth, five plates, five cups, and a teapot). At the end of the ritual, you conjure four invisible servants, as if by the [[unseen servant]] spell. They disappear after 1 hour or until you choose to dismiss any number of them.
This guild is House [[Phiarlan]]’s public face. It runs most of the
theaters, music halls, circuses (including the traveling
Carnival of Shadows), and similar establishments in
[[Khorvaire]], which employ only guild-licensed talent.
Phiarlan heirs are among the finest performers in
the world, but anyone can be licensed who meets the
guild’s standards and pays its annual fee.
As the name implies, most [[warforged]] were
built to fight in the [[Last War]]. The
majority of warforged are [[juggernaut]]s or
[[skirmisher]]s—soldiers and scouts who fought
under the banner of one of the [[Five Nations]].
Warforged envoys, however, were designed
to perform other functions. As an envoy you are lightweight, dextrous, and proficient with some type of toolset that is integrated into your body. When you make
an envoy character, consider the following
questions: what is your purpose? How does your skill and tool reflect that purpose?
What form does your integrated tool take?
If you have embedded [[thieves' tools]], for instance, are your fingers actually lockpicks,
or can you produce keys from various parts
of your body? The following characters are
examples of warforged with integrated tools.
''Lute'' is a [[bard]] with the entertainer
background; his namesake instrument folds
out of his left arm.
''Compass Rose'' is a wizard with the
outlander background. A keen explorer,
she uses her built-in cartographer's tools to
records the paths she travels.
''Masque'' is an infiltrator. A rogue with the
charlatan background and an integrated
disguise kit, she was built to blend in and
assassinate. [[Cannith]] built six warforged of
her design, and Masque has vowed to hunt
down and destroy the other five.
In developing your integrated tool,
remember that you must have your hands
free to use it. Masque, the infiltrator mentioned above, doesn't shapeshift like a
[[changeling]]; she has to manually adjust her
appearance.
Popularized some forty years ago by [[Aundair]]’s bards, this tale takes about forty-five minutes to recite—and most Aundairians have heard it so many times that they can recite it from memory. The Epic of Valiant and Vigilant describes the twin sieges of [[Tower Valiant]] and [[Tower Vigilant]] in 951 YK, told from the perspective of two lovers, each trapped within one of the castles but believing the other to be safe.
The equator is the line of latitude that is equidistant from the north pole and south pole.
The present is shaped by the past. The shadow of the [[Last War]]
hangs over [[Khorvaire]], setting the stage for conflicts ahead. But
Khorvaire also bears the marks of struggles far more ancient.
The [[goblin]]s in [[Sharn]]'s slums are descended from the founders
of a mighty empire, and they rightfully feel that [[human]]ity stole
their homeland. The [[purging|Silver Crusade]] of [[lycanthrope]]s early in the ninth
century strains relations between humanity and [[shifter]]s. The
Church of the [[Silver Flame]] was founded at the end of the third
century, but it's simply the latest manifestation of a conflict that
began at the dawn of time—a battle still fought in the shadows
by the [[fiend]]ish [[Lords of Dust]] and the [[dragon]]s of the [[Chamber]].
The history of [[Eberron]] can be split into five eras:
* The [[Dawn of Time|Progenitor Dragons]] (pre-history)
* The [[Age of Demons]] (over 100,000 years ago)
* The [[Age of Giants]] (80,000-40,000 years ago)
* The [[Age of Monsters]] (40,000-5,000 years ago)
* The [[Modern Age]], Age of Humanity, or Dragonmarked Age (5,000 years ago to today)
See [[Khorvaire calendar]] for a summary on timekeeping conventions.
Mostly retired now, Ereg sponsors younger hunters seeking
entrance into the [[Lords of the Hunt]] in [[Stormreach]], supposedly in hope of bolstering the organization’s honored membership. His true intentions are more sinister. Bored with hunting mere animals and creatures, he now seeks cunning [[humanoid]] foes to hunt at his leisure. He takes up-and-coming hunters out on expeditions, only to stalk
and kill them. The hunter became obsessed with necromantic arts after discovering an old [[Qabalrin]] tome detailing [[necromantic|necromancy]] blood rites during an excursion in [[Xen'drik]], and now he enjoys animating his dead enemies to serve him. He
keeps a grim cave of his [[undead]] trophies in a mazelike area of canyons over a hundred miles from [[Stormreach]]. He often visits the canyons, claiming the dry air there does wonders for his constitution. [[Vanson|Vanson ir'Lain]] joins Ereg
on a few of his special hunts when the prey includes
one or more [[shifter]]s. The two keep their expeditions
secret, since exposure would no doubt cause their
expulsion from the [[Lords|Lords of the Hunt]].
The most beautiful and striking of all lesser and greater [[devil]]s, the erinyes are fierce and disciplined warriors. Sweeping down from the skies, they bring swift death to creatures that have wronged their masters or defied the edicts of the [[Iron Ward]]. The erinyes appear as male or female [[humanoid]]s with statuesque builds and large feathery wings. Most wear stylized armor and horned helms, and carry exquisite swords and bows. A few also use [[ropes of entanglement|rope of entanglement]] to ensnare powerful foes.
This artificial eye replaces a real one that was lost or removed. While the ersatz eye is embedded in your eye socket, it can't be removed by anyone other than you, and you can see through the tiny orb as though it were a normal eye.
The Erudite Order is a small [[wizard's circle|arcane order]] in modern-day [[Valenar]], formerly eastern [[Cyre]], having branched off from the [[Arcane Order of Aureon]] several hundred years ago. The order incorporates cultural viewpoints from the [[Khunan]] community there (see the "Eastern Cyre" section under [[Cyre]]).
The Eska Mountains dominate the northern reaches of the [[Tashana Tundra]] in [[Sarlona]]. They are home to the [[Dorann Holds]] [[dwarves|dwarf]], the [[Chuniigi]] [[shifter]]s, various [[human]] nomadic tribes, and the mysterious [[Icebinders]].
Members of the Esoteric Order of [[Aureon]]
take a vow to use their talents to preserve and advance
civilization and to operate within the confines of the law.
Beginning as a branch of the [[Arcane Order of Aureon]], the Esoteric Order helped maintain the rule of law during the kingdom of [[Galifar]], and many of its members served [[Breland]] during the [[Last War]]. Although its members aren't prohibited from studying any form of magic, the specialties of the order
are [[abjuration]], [[divination]], and [[evocation]] magic. [[Wizards|wizard]]
and [[artificer]]s are almost always welcome in the guild.
[[Sorcerers|sorcerer]] must prove their grasp of arcane theory to
earn a place, and [[warlock]]s are rarely accepted as members.
The hall of the Esoteric Order of Aureon is in the
district of [[Clifftop]] in [[Upper Dura]]. The Order's tower
is built of white marble, and glamers have been
woven into the stone that cause the tower to shimmer
and glow so that it seems as if it has been crafted of
solid light. The [[Mystic Market]] surrounds the tower.
Within the house, the title given the head of House [[Lyrandar]] is
“Firstborn.” Because she is the youngest leader of a [[dragonmarked house]], Lyrandar elders sometimes call Esravash “Just-born” behind her back. But what an elder sees as impetuous, a teenage Lyrandar sailor calls bold. Esravash is adored by the rank-and-file members of the [[Windwrights Guild]] in particular.
Esravash’s immediate goal is to expand elemental [[airship]] service as much as possible, building docking towers in more cities and paying House [[Cannith]] and the [[gnome]]s of [[Zilargo]] for more elemental airships. To finance these plans, Esravash scrutinizes the house’s bottom line, and she doesn’t tolerate shipping losses.
Esravash plans to stop losses to the pirates of the [[Lhazaar Principalities]]. [[Elemental galleon|elemental galleon]]s are now fitted with catapults, and House [[Lyrandar]]’s spies are busy following the rumors of experimental, magic naval weapons said to have been developed by [[Aundair]] and [[Karrnath]] near the end of the [[Last War]].
A creature that inhales this poison and can't resist its effects falls unconscious for up to 8 hours. The creature wakes up if it takes damage or if another creature shakes it awake.
//As the creature rears up from a reptilian coil of tail and limbs, its passing resemblance to some sort of dragon quickly fades. Bony plates ripple across its emaciated wingless frame, grinding as taloned claws rend the ground. A twisted spike at the end of its tail glows a dull red, and the beast's razortoothed maw splits wide as it screams.//
The [[Inspired]]'s long dominance of [[Sarlona]] has seen
most of the [[aberration]]s that once roamed the continent
systematically hunted to extinction. The essence reaver
remains a notable—and deadly— exception.
The essence reaver is a fast-moving, voracious, and
insane killing machine drawn inexorably to sources of
both [[psionic|psionics]] and magical power—spellcasters and manifesters in particular. The creatures are highly intelligent,
but their inherent mania makes them unpredictable at
best. Any party given the opportunity to flee from an
essence reaver is generally wise to do so, but these creatures are prone to stalk magical or psionic targets for days
before attacking without warning.
Physically, essence reavers resemble wingless black
[[dragon]]s, but dead white eyes and a whiplike tail give away
their aberrant nature. A glowing membrane at the end of
its spike-tipped tail allows a reaver to absorb magical or
psionic energy from creatures or items. A reaver's long
maw is filled with razor-sharp teeth, and ropes of viscous
spittle hang from its jaws.
Essence reavers are found throughout the deserts and
hills of [[Sarlona]], from the [[Tashana Tundra]] to the steppes of [[Syrkarn]].
Though universally feared by the people of the Tundra,
[[Syrkarn]], and the [[Riedra]]n frontier for their willingness to prey on virtually anything that moves, essence reavers are best known for their [[psionic|psionics]] and magical hunger—and their particular appetite for manifesters, spellcasters, and [[magic item]]s.
In combat, essence reavers trust their [[psionics]] detection and magic detection more than their mundane senses. Normally solitary predators, essence
reavers often kill others of their kind. However, bands of
up to six essence reavers have been known to congregate
in packs around high levels of magical or psionic power.
Where these packs form, they hunt with a chilling degree
of cunning.
The essence reaver is one of the few apex predators
that the [[Inspired]] have made no effort to exterminate
in [[Sarlona]], since the creatures' occasional forays into
[[Riedra]] are outweighed by the their usefulness as they
hunt down rogue manifesters and spellcasters in the
[[Tundra|Tashana Tundra]] and [[Syrkarn]]. Rumors emerging from [[Adar]]
suggest that the Inspired have long sought to introduce
essence reavers into the [[mountains|Ahnadiv Mountains]] of that nation, but the creatures' tendency to kill any creature that comes within
sight makes them difficult to relocate.
Once the seat of House [[Cannith]], this was a place of
wonders—a city where "magic comes to life." Marvels
of the city included the Clockwork Menagerie, showcasing the [[golem]]s and [[homunculi|homunculus]] made by generations of
[[artificer]]s; production facilities that housed three [[creation forge]]s, and the miraculous Steel Gardens, an early breakthrough that paved the way for
the living [[warforged]]. If you're an [[artificer]] or have ties to
House [[Cannith]], you might have roots in Eston.
!! Before and After the [[Mourning]]
House Cannith was born in Eston, and the house's labors transformed the city into a place of wonders. Clockwork birds perched and sang in silvery trees covered in
steel bark. [[Skycoaches|skycoach]] carried smiths and [[magewright]]s
from forge to forge, and an iridescent dome protected
the city from storms and harsh winds. On the proving
grounds of the [[Cannith]] [[creation forge]]s, cadres of newborn [[warforged]] learned the combat skills that would
prepare them for active duty.
Eston began as a successful mining settlement,
extracting iron and rare ores from the nearby hills.
Drawing on these resources, the Cannith [[artificer]]s in
Eston spent decades researching all sorts of artificial
creatures, which eventually gave rise to the warforged.
Because of these wonders, Eston is an irresistible attraction for treasure hunters hoping to access the vaults
of House Cannith. Reports suggest, however, that it has
become a strange and deadly place. It's said that the city
is overrun by [[living spell]]s. In addition to the remnants of
damaging spells, there are stranger phenomena: living continual flames that
crawl along the streets, cling to lampposts, and flee from
strangers, and living scrying spells that shift and shimmer, displaying distant scenes on their amorphous skin.
Eston was renowned for its Clockwork Menagerie and
its Steel Gardens, a showcase that chronicles House
Cannith's centuries of work developing [[construct]]s and
homunculi. These creatures have been twisted by the
[[Mourning]] and have become deadly monsters. Stories
tell of an enormous gorgon golem, of razor-winged
swarms of silver songbirds, and many other equally
strange things.
The woman known as Eston (after the [[city|Eston]] in ruined [[Cyre]]) is a vitally important member of [[Dannel's Wrath]]. An [[artificer]] of considerable skill, she produces the [[magic item]]s used in Wrath operations, including arcane explosives ([[alchemical explosive]]s and makeshift [[blast disk]]s). Should Dannel’s
Wrath begin using [[fireball]]s in taverns and markets in [[Stormreach]], capturing Eston becomes a priority. Eston won’t speak of her
past, but many believe that she’s an expatriate of House
[[Cannith]] and that she seeks vengeance on Cannith as
well as the [[Five Nations]]. The limited resources available
in [[Dannel's Pride]] restrict what Eston can create.
Any sailor in [[Stormreach]] can tell you that the [[sahuagin]] worship
the [[Devourer]], who they call Shargon. But this is only part of the
story. Sahuagin storm priests tell the common tale of how gods
and demons fought in the first age, but their story doesn’t end
with the binding of the [[overlord]]s. Once the [[fiend]]s were defeated,
the [[Sovereigns|Sovereign Host]] were determined to take their place and rule as
tyrants. The [[sahuagin]] Sha’argon was a bold hunter and mighty
warrior. He stalked the Sovereigns of the natural world, [[Arra’ai|Arawai]]
and [[Ba’alor|Balinor]]. Sha’argon trapped them and consumed them,
claiming their power as his own. The other Sovereigns were
angry, but none could outwit Sha’argon, and he already had the
power of two gods; so they fled to the world above and beyond,
and to this day, they flee when the mighty hunter draws near.
Sha’argon is the greatest of the gods. He sets the laws of the
world, and they are cruel. Life is an endless struggle. The weak
will perish in the storm or be consumed by the mighty. Those
with cunning and courage can conquer the world itself, and the
victor has the right to devour their vanquished foe. The [[sahuagin]]
of the Eternal Dominion take these messages to heart. There is
no foe they cannot conquer, no power they cannot claim. They
have forged a dominion from the bones of [[kraken]]s and the
blood of the [[kar'lassa]], an empire that will never end.
If the Dominion wished to conquer the surface world, it
could do so easily—or so the [[sahuagin]] say. But to what end?
Dryskins are pathetic barbarians, weak in both body and mind.
The Eternal Dominion seeks grander prey, power worthy of
Sha’argon. Some seek to consume the [[overlord]]s; others plan the
conquest of worlds beyond the world. Is this pure arrogance?
Or can the Eternal Dominion gain mastery over reality itself?
!! Victory Above All
//Life is conflict. All things must eat or be eaten. Flee if victory is impossible in the moment, but never surrender.//
[[Sahuagin|sahuagin]] culture is deeply aggressive; in any situation,
they look to see how they can win. This combines with a deep
sense of cultural unity; what matters isn’t that //I// defeat the foe,
it’s that //we// defeat it. So while sahuagin frequently compete
with other sahuagin, seeking to advance in rank and earn
evolution into a higher form, this is about strengthening the
Dominion, not simply personal pride. Sahuagin don’t seek to
cheat their way into positions they believe they don’t deserve.
Similarly, weakness can’t be tolerated, and they spare no time
on sentimentality. The sahuagin are children of the [[Devourer]]:
the point of storm and sickness is to cleanse weakness and
strengthen those who survive. Anyone who grows too old or
infirm should be challenged by those below them—but this
is rare in practice, for a sahuagin who realizes they can no
longer perform their role will usually abdicate before they’re
challenged. It’s common practice for a respected retiring leader
to be consumed by their subordinates, so their spirit and
skills will remain part of the Dominion. The sahuagin warrior
who has grown too old to serve has no regrets about being
consumed; they lived well, and now they give what strength
they have left to nourish those who will come after them. A
single life is fleeting; the Dominion is eternal, and your spirit
lives on in your comrades who consume you. On the other
hand, those seen as having no value—who are best excised
from the Dominion—will simply be fed to the sharks.
Stemming from this, the people of the Eternal Dominion
are extremely industrious. [[Sahuagin|sahuagin]] never relax, and don’t
understand why anyone would—if you stop moving, you’re
dead. They’re always looking for something to do, a challenge
to overcome. However, this leaves them little time for abstract
reflection, romance, or whimsy; life is war, and there’s no time
for poetry. Some would also say this limits innovation, and the Dominion is indeed slow to change its methods. Sahuagin are austere in their needs and desires, and don’t seek comfort, luxury, or personal wealth. This isn’t to say the sahuagin don’t enjoy life or seek entertainment—but rather, what drives the sahuagin is victory. They don’t care for music or theater, but they enjoy gladiatorial combat and other forms of aggressive sport, such as public debates and arcane duels. They also love to eat, as this is a symbolic victory over whatever they’re eating. Symbols of all kinds are important in sahuagin culture. Their armor, weapons, and architecture are designed to intimidate enemies and show off one’s rank and status.
!! Social Structure
[[Sahuagin|sahuagin]] have no families nor concept of personal property.
Your loyalty is to your city, and then to the Dominion as a whole.
You were born in the spawning pools of your city and assigned
a purpose and a //shiver//—the group of sahuagin you trained with
as a child, to whom you may have a personal attachment. From
there, you worked your way up to prove your value and earn
a higher rank. All positions are based on merit; while the title
of a military leader is often translated as “baron,” the position
is earned, not inherited. The city gives you equipment and
lodging based on your position, though you can earn trophy
items through sporting victories. Sahuagin always look for ways
to prove themselves and earn advancement, but never at the
expense of your shiver, your city, or the Dominion. Sahuagin
find criminal behavior and those who betray their people for
personal gain to be repulsive, a sign of an inferior species.
The society of the Eternal Dominion is split into three
primary forces:
* the [[Ra'har]]: the military
* the [[Ta'har]]: the scholars
* the [[Su'har]]: the civil servants
Each city is governed by a //Sha'rei//—Council of Three—with a
leader from each force. Councilors add the prefix “kar” to their
force, so the Kar’ra’har is the military leader of a sahuagin city.
Cities coordinate through the Sha’lassa—Council of Dreams—as described in the “Harvesting the Dreamers” section.
The priesthood of the Eternal Dominion follows one of two
paths. The razh’ash—storm priests—are devoted to [[Sha’argon|Devourer]],
and serve as the primary spiritual guides of the people. They
teach the harsh lessons of the Devourer, while also wielding
his might in battle when needed. The second path is that of
the lass’ash, “dream priests”; their work is important and they
support the [[Su'har]], but they don’t preach to the people.
!! Territory
The Eternal Dominion claims the entirety of the [[Thunder Sea]]
as its territory, and maintains outposts across the sea, often
carved into stone spires that rise up to the surface. However,
most of their population is concentrated in the great cities of the
Dominion. These lie on the seafloor, thousands of feet below
the surface, far beyond the reach of sunlight—yet illuminated by
[[sahuagin]]-engineered bioluminescent coral. Each city is named
after the [[kar'lassa]] it’s built around, and the kar'lassa in turn are
in turn named for the [[plane]] they’re bound to.
<<list-links-article "[tag{!!title}tag[city]tag[kar'lassa]sort[title]]">>
These major cities are each home to hundreds of thousands
of [[sahuagin]], and the total population of the Dominion is well
into the millions. Farms and other small communities scattered
between the great cities are often largely inhabited by [[locathah]],
with a core group of sahuagin overlords. In between, there are
large stretches with no [[humanoid]] population; here, ruins of the
[[giant]]s and remnants of other fallen civilizations might be found.
!! Harvesting the Dreamers
The eight greatest cities of the Eternal Dominion are built
around [[kar'lassa]], each tied to a different plane. The [[sahuagin]]
harvest biomatter from the slumbering behemoths, and this is
the driving fuel of the Eternal Dominion. Pipelines channel the
blood of the beasts, and workers dig muscle and bone out of
mines carved into their flesh. The eldritch energies sustaining
the kar’lassa regenerate damage at a remarkable rate; the
Dominion has been harvesting them for over a thousand years,
and so far, they haven’t come close to taxing these resources.
All biomatter from the [[kar'lassa]] is infused with arcane energy,
and the [[sahuagin]] use these substances in the same way the
[[Five Nations]] rely on [[dragonshard]]s. In addition, the biomatter
of each kar’lassa has unique properties and potential due to
the [[plane]] it’s tied to. The scales of [[Hal'shavar]] can be forged
into powerful armor and weapons. The steam-breath of [[Hal'fer]]
is an extremely powerful catalyst for [[evocation]] magic. The
blood of [[Hal'kyth]] is an exceptional conduit for [[transmutation]].
These are just a few examples of the potential of the kar’lassa,
and the Dominion itself is still discovering new uses for these
resources. The [[Five Nations]] have never had an opportunity to
work with this biomatter and know nothing of the kar’lassa.
If a group of adventurers recovered a significant amount of
biomatter—or secured a trade deal with the Dominion—House
[[Cannith]] could produce strange new wonders.
So the [[kar'lassa]] are priceless resources and sources of power
for the [[sahuagin]]; their biomatter drives Dominion industry, and
cities benefit from the effects of their manifest zones. Only eight
of the twelve kar'lassa have cities built around them, due to
the dangers of the [[manifest zone]]s extending from the kar’lassa
tied to [[Mabar]], [[Xoriat]], [[Thelanis]], and [[Risia]]. But even in the cities
of the “safer” kar’lassa, the sahuagin pay a price for the power
they’ve harnessed. When the people of these cities sleep, their
spirits are drawn into the dream of the local kar’lassa—a vast
alien dream that takes place in its bound [[plane]], rather than
[[Dal Quor]]. Most sahuagin aren’t lucid dreamers, and don’t
remember their dreams with any more accuracy than most
humans do. But this experience has a notable impact on the
personality and aptitudes of the people of each city; the people
of [[Hal'shavar]] are the most aggressive of the [[sahuagin]], while
the people of [[Hal'syra]] are the most conciliatory.
The lass’ash—the “dream priests”—are an arm of the [[Ta'har]]
devoted to the [[kar'lassa]] of their cities. These priests treat the
kar’lassa both as divine beings and as servants; they believe
that it’s their rituals and devotions that keep the dreamers
safely asleep, allowing the Dominion to continue to harvest
their biomatter. At the heart of each temple lies the Or’lassa,
the First Dreamer—a [[sahuagin]] priest sustained by direct
infusions of kar’lassa blood. These infusions cause physical
mutations that often reflect the shape of the kar’lassa and
the plane it is tied to, as well as keep the First Dreamer in a comatose state. Their spirit permanently resides in the kar’lassa dream, where they anchor a temple formed from their pure will. Dream priests are trained in lucid dreaming, and
they use these temples as a base both for planar research and
to maintain communication across the Dominion. While they
reside in different planes, the temples are mystically linked
through the kar’lassa, and rituals allow the priests to spiritually
travel between the dream-temples, carrying messages to the
other cities. And it’s in the dream of [[Hal'iri]] that the spirits of the
Or’lassa meet to coordinate the actions of the Dominion; this
is the Sha’lassa, the Council of Dreams.
!! Tools and Traditions
The Eternal Dominion is an advanced civilization that employs
both [[arcane|arcane magic]] and [[divine magic]] as part of everyday life. It’s
generally more sophisticated than the [[Five Nations]], but less
advanced than [[Aerenal]]. Though the Dominion possesses
capabilities beyond the Five Nations, its approaches can vary
dramatically; for example, while the Dominion could generate
[[continual flame]], light is largely provided by engineered
bioluminescent coral. While the sahuagin employ all schools
of magic—generally influenced by the resources of that city’s
[[kar'lassa]]—the Dominion’s greatest advances are in [[alchemy|alchemist]],
[[transmutation]], and [[magebreeding]].
The Dominion has an exceptional talent for producing
[[potion]]s, allowing Dominion forces to temporarily boost their
capabilities. But their technologies go far beyond temporary
alterations, as the Dominion specializes in [[magebreeding]] all
manner of creatures. The [[sahuagin]] themselves are carefully
engineered to excel at the tasks chosen for them. In particular,
the Dominion //creates// [[magewright]]s and sorcerers. This process
isn’t quick, taking place over the course of a sahuagin childhood,
and including training as well as ongoing rituals and an unusual
diet. The blood of the [[kar'lassa]] is used as a transformative
catalyst, combined with the sahuagin principle, “If you
consume a thing, you gain its power.” As a result, creating a
draconic [[sorcerer]] requires a young sahuagin to
consume the flesh of a [[dragon]]—so there’s a concrete limit on
how many of these sorcerers the sahuagin can create.
In addition to these basic techniques that guide the evolution
of a young sahuagin, the Dominion can also induce dramatic
secondary mutations; many sahuagin are highly motivated
by this prospect of attaining a higher form. The [[malenti]] and
the four-armed barons are the best known of these, but they
represent just a fraction of the Dominion’s [[magebreeding]]
abilities, and the DM can create additional mutants to suit the
story. For example, the [[Claw of Sha'argon]] possesses a secondary mutation that’s granted to powerful priests. These forms of ascension require rare resources and a
significant amount of [[kar'lassa]] blood (drawn from a particular
dreamer based on the type of transformation sought), and are
only granted to [[sahuagin]] who prove themselves worthy.
In addition to altering themselves, the [[sahuagin]] put many
enhanced beasts to good use. Enhanced mantas are a common
mount. Mutated giant sharks and eels are used as larger vehicles, sometimes with
seating areas formed upon their backs, other times with bony
handles protruding from the beast’s hide, allowing multiple
riders to cling to the side. In place of warships, the Dominion
fields [[dragon turtle]]s with [[siege staff]]s embedded into their
shells. The sahuagin have also created entirely new forms of
life. The [[alchemist]]s of [[Hal'kyth]] used the blood and biomatter
of the [[kar'lassa]] to create [[plasmid]]s: protean creatures similar
to [[mimic]]s, but capable of replicating the texture of inanimate
objects as well as shape. Plasmids can be guards—often
serving as living doors to secure chambers—but they’re also a useful tool of industry, as a trained [[plasmid]] can itself become the tools a [[sahuagin]] artisan needs to perform its work.
Skilled Dominion [[magewright]]s can cast [[fabricate]] as a ritual,
shaping raw materials into their desired form through magic.
The Dominion also uses a substance called [[korlass]] (“dream
stone”), formed from dreamer biomass, as an industrial
material.
!! Subject Races
“Dominion” isn’t just a title; the [[sahuagin]] dominate other
creatures, from other aquatic humanoids to mighty [[dragon turtle]]s. Before the rise of the Eternal Dominion, there were six [[locathah]] nations spread across the [[Thunder Sea]]; in the last thousand years, these have all been conquered and assimilated by the Dominion. Locathah laborers are now found in all of
the great cities, and there are farming communities across the
seafloor where locathah are ruled by sahuagin overseers.
The [[locathah]] are the most widespread subjects of the
Dominion, but other creatures have been forced into servitude
as well. The [[sahuagin]] of [[Hal'laman]] may have [[merfolk]] subjects.
There could be a small population of subjugated [[koalinth]] near
the coast of [[Darguun]], or a city where there are still a few
[[storm giant]]s compelled into service. Typically, creatures that
are Dominion subjects know the Sahuagin language, either
instead of Common, or in addition to it (if they have regular
contact with dryskins).
The [[Kalamer|Karakala]] [[merfolk]] of the [[Thunder Sea]] have largely been allowed to remain independent, as long as they continue to serve the needs of the Dominion.
The Kalamer provide a valuable service, containing the impact
of dangerous [[manifest zone]]s and serving as intermediaries
between the Dominion and the [[Valraean Protectorate]].
!! Foreign Relations
The people of the [[Five Nations]] know little about the Eternal
Dominion. Ambassadors and envoys have visited [[Hal'syra]],
so there are stories drifting around that the [[sahuagin]] city is
built around a massive, mysterious [[creature|kar'lassa]]. This experience
and the occasional clashes when people have challenged the
territorial demands of the Dominion have taught the Five
Nations and the houses to respect the Dominion, but they still
know almost nothing about it, aside from the fact that they
worship the [[Devourer]]. The [[Aereni|Aerenal]] have greater knowledge
of the Dominion, and have seen its power in the long conflict
with the [[Valraean Protectorate]]. They know about the [[kar'lassa]],
but because of the ongoing conflict, haven’t actually explored
its lands or visited its cities. So any adventurers who venture
into the Dominion are pioneers, exploring unknown realms;
academic institutions and [[dragonmarked house]]s alike will
surely want to hear about their exploits.
For their part, the [[sahuagin]] have little interest in the affairs
of the dryskins. At this time, the Dominion has no interest
in conquering the surface world, and they don’t believe the dryskins pose any threat to their rule of the sea. However, the proud sahuagin don’t want surface-dwellers bumbling
through their territory or polluting their waters. They enforce
their territorial waters as a show of strength, demanding that
travelers pay tolls and follow the established trade routes.
The Dominion remained neutral in the [[Last War]]. Trade
between the sea and the surface has been limited, but has
expanded in recent years. In particular, [[Merrix d'Cannith]] has
discovered that the sahuagin have a surplus of [[Siberys]] [[dragonshard]]s;
the shards fall into the ocean, but the Dominion economy is
based on the blood of the [[kar'lassa]] as opposed to dragonshards,
and they have little use for them. As such, the Dominion has
much to offer [[Cannith]], and securing a steady supply of Siberys
shards would strengthen Merrix’s position within his house.
The trick is finding something the Dominion wants in return,
and he’s currently pursuing this. Merrix (and other dryskins)
are as yet unaware of the vast resources of the kar’lassa; if they
were discovered, and [[Cannith]] found a way to harness them, it
could change the face of industry in [[Khorvaire]].
The Dominion despises the [[sea elves|sea elf]] of the [[Valraean Protectorate]], and in the past, they’ve launched full-scale campaigns against them, but the power of the [[Undying Court]] has thus far repelled all assaults. Currently, it’s a stalemate;
the Protectorate can’t expand beyond the Undying Court’s
sphere of influence, and the Dominion can’t drive them back.
!! Story Hooks
The Eternal Dominion has no interest in conquering
[[Khorvaire]]—at least for now. But the [[sahuagin]] believe life is
conflict, and if you aren’t moving forward, you’ll wither away.
This section contains story hooks and major aspirations of the
sahuagin that might drive an encounter—or an entire campaign.
//''The Valraean Cold War.''// The [[sahuagin]] hate the [[sea elves|sea elf]]
and yearn to hold dominion over the entirety of the [[Thunder Sea]]. The power of the [[Undying Court]] protects the elves from any direct assault, so the sahuagin must find another answer. They’ve been embedding [[malenti]] agents into the [[Valraean Protectorate]] for years. What’s the next step? Will they launch
a decisive first strike from within the Protectorate? Will they
target [[Shae Mordai]] itself? Might they be willing to forge an
alliance with a [[dragonmarked house]] or a dryskin nation to
bring down the Protectorate?
//''Consume the Overlords.''// The [[sahuagin]] don’t need more
land, but they’re always hungry for more power. The most
powerful beings in [[Eberron]] are the [[overlord]]s of the [[First Age|Age of Demons]]. These arch[[fiend]]s have lingered in their prisons since
the dawn of time—while they can’t be destroyed, could they be //consumed//? Could a [[sahuagin]] champion follow Sha'argon’s
path to divinity by somehow devouring the essence of an
overlord, thus taking its spirit and strength? This goal could
bring sahuagin agents to the surface if they determine the most
vulnerable overlords are imprisoned on land. This is no simple
task; it could require [[eldritch machine]]s, planar alignments, and
a particular unfolding of the [[Draconic Prophecy]]. [[Rak Tulkhesh]] is bound
to multiple shards; perhaps the sahuagin have found a way to
consume these one at a time, and now seek each shard. What
will happen if a sahuagin champion completes this ascension?
//''The Conquest of the Planes.''// The [[kar'lassa]] give the Eternal
Dominion a foothold in eight [[plane]]s, and they’ve been learning
new ways to exploit this over the last century. Now, some among
the [[Ta'har]] wonder if they could expand their influence, using
the kar’lassa as an anchor from which to conquer a layer of a
plane. This idea is unprecedented—is it even possible? Success
could depend on recovering artifacts created by the [[Cul'sir]]
[[giant]]s during their war against the [[quori]], and the sahuagin
would need a way to bind the immortal spirits of that plane.
Which plane will they try to conquer? What would happen to
[[Eberron]] if they succeeded?
//''Strange Trade.''// A group of adventurers could accompany
a [[Cannith]] delegation sent to [[Hal'syra]] to negotiate for [[Siberys shard|dragonshard]]s. Or they could be sent to the ocean floor in search of
[[kar'lassa]] blood or forgotten relics from ancient ruins.
//''Deadly Shortcuts.''// A vessel could run afoul of Dominion
forces when it strays into forbidden territory, adventurers
finding themselves bound for [[Hal'shavar]], compelled to battle in
the great arena. Or perhaps a [[dragonmark]]ed heir could change
their fate, bargaining with the sea devils and initiating an
alliance with their house.
//''The Lurker in Shadow.''// The schemes of the [[Lords of Dust]] threaten all people. When [[aboleth]]s serving the [[Lurker in Shadow]] threaten a coastal community, the adventurers could end up working alongside Dominion champions to fight the
[[archfiend|overlord]]. Perhaps an aboleth uses [[sahuagin]] thralls to try to
start war between the surface and the sea; can the adventurers
expose the plot?
//''Locathah Rising.''// The [[locathah]] were conquered long ago,
and toil as subjects of the Eternal Dominion. But a resistance
could be forming within the locathah, drawing adventurers
into the conflict. Some locathah may possess the gift of lucid
dreaming, allowing them to meet secretly within the dreams of
the [[kar'lassa]]; they have no weapons in the waking world, but
they could be building schemes and supplies in their dreams.
Queen Etrigani met her husband [[Kaius III|Kaius ir'Wynarn III]] of [[Karrnath]] when she appeared before his court on behalf of the [[Sibling Kings]] of [[Aerenal]] during a diplomatic tour of the [[Five Nations]]. An intense courtship followed, and the two were married in 993 YK, on the second anniversary of Kaius's ascension to the throne. The queen has taken an active interest in the affairs of her adopted nation, and alongside Lady [[Moranna]], performs most of the daily tasks of governing.
An ettin is a two-headed giant with [[orc]]-like characteristics. Its thick skin is usually encrusted with a thick layer of dirt and grime beneath the stinking hides it wears. Its long stringy hair hangs in an unkempt mess about its faces, and its breath reeks from mouths filled with crooked teeth and tusks.
The twin heads of an ettin are two individuals trapped in the same body. Each head has its own mind, personality, and name, and possesses unique preferences and quirks. Bound from birth, both minds only rarely experience privacy or solitude. This familiarity breeds contempt, and often an ettin bullies and argues with itself.
When other creatures refer to an ettin, they combine its double names to form a single compound name that applies to the creature as a whole. If an ettin has one head named Harg and another named Shagol, other creatures call the ettin Hargshagol.
As much as an ettin argues with itself, it is even less tolerant of other ettins, since a conversation between two ettins almost always amounts to a shouting match between a crowd of four belligerent heads. Most ettins are solitary creatures as a result, tolerating one another only to reproduce.
On [[Eberron]], ettins are native to [[Khorvaire]], and are distantly related to [[orc]]s. The largest populations of ettins dwell in the mountains of [[Droaam]].
This piece of clothing cannot be dirtied or stained, and always carries the faint scent of soap. This enchantment is often placed on [[clothes of mending]].
''District Type:'' Magic district<br/>
''Buildings:'' Magic item dealers (8), spellcasters for
hire (20), temple ([[Aureon]]), shrine (The [[Shadow]]),
upscale food (20), exotic trades (45), upscale trades
(65), upscale services (40), upscale residences (80)<br/>
''First Impression:'' [[Everbright lantern|everbright lantern]]s keep the towers
here well illuminated, and other magical effects are
visible everywhere—from [[soarsled]]s carrying people
through the air to [[construct]]s following their masters
as they visit different shops<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Warden Towers]] (northwest); [[Little Plains]] (northeast); [[Platinate]] (southeast); [[Cassan Bridge]] (southwest); [[Dragon Towers]] (bridge, north); [[Kenton]] (bridge, south); [[Center Bridge]] (below); [[University District]] (above)
Everbright might not be home to the majority of
[[Sharn]]'s [[magic item]] dealers and spellcasters for hire,
but it certainly can boast the largest concentration of
them in any one district. While magic item dealers
in the [[Central Plateau]] cater to wealthy collectors,
those in Everbright tend to keep a more practical
focus, selling items to the people who are most likely
to actually use them—adventurers. For this reason, dealers in Everbright are far more willing to buy
(and likely to sell) items that are not fully charged
or are otherwise partially used up. Similarly, Everbright is the best place to find spellcasters for hire, whose talents are rare and in significant demand in Sharn.
While the spellcasters and dealers of Everbright
are accustomed to trading with adventurers, they are
also (for the most part) law-abiding citizens. Characters who need spells cast with no questions asked
are better advised to seek out spellcasters affiliated
with Sharn's criminal gangs rather than walking
into a spellcaster's office in Everbright.
!! Noteworthy Locations
* The [[Shrine of the Shadow]]. Hidden down a dark alley, the shrine of The [[Shadow]] represents the dark side of Everbright.
This bullseye lantern contains an Eberron [[dragonshard]]
that sheds light comparable to that produced by a [[continual flame]] spell. The effect looks like a regular flame, but it creates no heat and doesn't use oxygen. An everbright lantern sheds light in a
120-foot cone; the closest 60 feet is bright light, and the
farthest 60 feet is dim light.
At the world's poles—Everice to the south and the [[Frostfell]] to the north—you might...
* Discover an ancient civilization hidden beneath the ice.
* Search for the survivors of a lost expedition.
* Find the source of a mysterious mystical signal.
It's common knowledge that Everice is the domain of
the [[Queen of Winter]], an [[archfey]] who commands a host
of winter wolves and knights carved from living ice. The
queen lives in a glacial palace, and those who overcome
her guards and the deadly weather to earn her favor can
gain powerful boons.
It's also common knowledge that Everice is the home
of [[frost giant]]s who escaped the destruction of [[Xen'drik]].
Now they hone their arctic magic and plot vengeance.
However, a clan of [[white dragon]]s battle the [[giant]]s to
keep them from growing too powerful. Woe betide the
people of [[Khorvaire]] if dragon and giant ever set aside
their ancient vendetta and join forces!
Mystery shrouds the poles of [[Eberron]]. A few expeditions have ventured to the [[Frostfell]], but no one from
[[Khorvaire]] has set foot in Everice in living memory and
returned to speak of it.
!! The Poles' Influence in Khorvaire
In [[Khorvaire]], you might...
* Clash with a cabal of winter [[warlock]]s serving a sinister power stirring in Everice.
* Encounter a group of frost [[giant]]s or [[Frostfell]] dwarves establishing a foothold in [[Khorvaire]].
* Discover a journal from a Frostfell expedition that reveals a horrifying threat.
The people of Khorvaire have no commerce with the
arctic regions and no certainty about what lives there. If
a threat comes from Everice, it might take time for people to identify its origin.
With this in mind, relics from Everice or the Frostfell
could take any form. Are these treasures created by [[giant]]s, [[fey]], or [[dwarves|dwarf]]? Are they carved from eternal ice,
or are they forged from dwarven steel?
!!! Trinkets from the Frostfell and Everice
| !<<dr d8>> |!Trinket |
| 1 |A small prism carved from ice that doesn't melt |
| 2 |A rusted iron coin, depicting a dwarf lord and the worlds "Five Rex Undra" |
| 3 |A pair of eight-sided dice carved from ice that doesn't melt |
| 4 |A swatch of silvery fur that's cold to the touch, possibly from a winter wolf |
| 5 |A snowball; it doesn't melt and can't be compressed into ice |
| 6 |A tiny [[white dragon]] sculpted from ice that doesn't melt |
| 7 |A key carved from ice that doesn't melt |
| 8 |A single scale from a [[white dragon]] |
Smoke leaks from the lead-stoppered mouth of this brass bottle, which weighs 1 pound. When you remove the stopper, a cloud of thick smoke pours out in a 60-foot radius from the bottle. The cloud's area is heavily obscured. Each minute the bottle remains open and within the cloud, the radius increases by 10 feet until it reaches its maximum radius of 120 feet.
The cloud persists as long as the bottle is open. Closing the bottle requires you to speak its command word. Once the bottle is closed, the cloud disperses after 10 minutes; a strong wind can disperse the cloud in just a few seconds.
A member of the [[Sharn]] [[Sixty]],
Evix ir'Marasha ([[human]] councilor for [[Skyway]]) owns the [[Celestial Vista]] in Skyway, along
with a host of other valuable properties. She is one
of the most eloquent members of the [[Council|Sharn Council]],
and she takes a great interest in Sharn's role in the
greater politics of [[Breland]]. She is part of the cabal
who believe that the monarchy should be abolished
when King [[Boranel|Boranel ir'Wynarn]] dies, and she is a close friend of
[[Hass ir'Tain]]. Evix also believes that Sharn should
be recognized as an independent province, a view
shared by [[Sava Kharisa]]. However, first and foremost
she represents the people of [[Skyway]] and the interests
of these wealthiest citizens of [[Sharn]]. Because of this,
she usually sides with [[Javan Tomollan]], [[Maza Thadian]], and [[Bestan ir'Tonn]] in Council debates.
Evocation spells manipulate magical energy to produce a desired effect. Some call up blasts of fire or lightning. Others channel positive energy to heal wounds.
!!! <<showspells-school {{!!title}}>>
An expeditious messenger is a speedy flying [[homunculus]], designed to quickly carry messages for its creator. Their speedy and efficient attitude makes expeditious messengers quite chatty, and they natter on as fast as they move.
These messengers come in a variety of forms, often looking like mechanical birds or [[sprite]]s.
The energy of the [[plane]]s permeates [[Eberron]], and Externalist [[wizard]]s shape their [[spell]]s by drawing on this power. Where a [[Siberyan|Siberyan Theory]] harnesses ambient energy and shapes that into fire, an Externalist draws primal fire directly from [[Fernia]]. The elements of this magic—the components—are similar to those used in Siberyan magic. Words of power summon specific energies and eldritch gestures help to shape those forces, and ultimately it is the mind of the [[wizard]] that weaves these elements together and channels the power. But the Externalist asserts that the most effective source of power isn’t the blood of [[Siberys]]; it is the energy of the [[plane]]s.
Primitive Externalist techniques require a direct connection to the planes. Such magic can only be performed in or near a [[manifest zone]] or during a coterminous period. This is an important factor in the overall dominance of [[Siberyan magic|Siberyan Theory]]; when the people of [[Sarlona]] discovered that their spells no longer worked in new lands, they began developing new approaches. However, the energies of the [[plane]]s do permeate the world, albeit to a lesser degree—and more importantly, //creatures// are themselves tied to the planes. This is most clearly demonstrated when a mortal creature dreams—passing along its innate connection to [[Dal Quor]]—but can also be seen in the [[conscript|manifestation]]s of [[Shavarath]] and the [[shadow]]s of [[Mabar]], echoes of mortals in the [[plane]]s. So sophisticated Externalist [[wizard]]s don’t require access to [[manifest zone]]s or gain additional benefits from them (aside from whatever benefit the zone provides to all spellcasters); it’s primarily an academic point that the energy is flowing from an extraplanar source.
Externalist verbal components draw on elements of planar languages; depending on the power being shaped, it could use root syllables from Primordial, Celestial, Abyssal, or even Quori. As with [[Siberyan theory|Siberyan Theory]] and Draconic, the spellcaster doesn’t have to //understand// these languages.
!! Pact Magic
Pact magic is an offshoot of Externalism, drawing power not from a [[plane]], but rather from a specific entity (such as an [[archfey]] or an [[overlord]]). Typically this is associated with [[warlock]]s, who are granted the ability to cast specific [[spell]]s; but it’s possible that a powerful entity could grant a [[wizard]] more general access to their power. Like [[Dominion|Dominion Theory]] wizards, Pact wizards will generally call out the source of their power in their invocations.
!! Animist Magic
Animists work with spirits, often [[fey]], [[elemental]]s, or [[ghost]]s; an animist might have a minor fire [[elemental]] that manifests when called on in the form of [[fire bolt]] or [[burning hands]]. Animists are often [[sorcerer]]s or even [[druid]]s as opposed to [[wizard]]s.
For up to one minute, your eyes become an inky void imbued with dread power. As long as the spell is active, whenever you spend at least five seconds staring at a creature you can see within 60 feet of you, they must magically resist your gaze or else succumb to one of the following effects of your choice. If you try to target a creature who successfully resisted your magic already, you have disadvantage on subsequent attempts.
''//Asleep.//'' The target falls unconscious, though they can be forcefully shaken awake.<br/>
//''Panicked.''// The target is frightened of you and flees.<br/>
''//Sickened.//'' The target is overwhelmed with nausea and dizziness.
The {{!!title}} is a collection of odd individuals in [[Sharn]] who paint
symbolic eyes on their clothing and
armor and claim to see things others
cannot (in fact, they are a cult dedicated
to the [[daelkyr]] [[Belashyrra]] and serve a
hidden [[beholder]]).
These crystal lenses fit over the eyes. While wearing them, you can cast the [[charm]] spell up to three times per day, provided that you and the target can see each other.
No dragon can escape the baleful gaze of the Eyes of
Chronepsis. The Eyes are a force of roughly one hundred fifty elder dragons, hand-picked by the [[Conclave]] of [[Argonnessen]]. Once chosen, they answer only to each
other and the dragon deity [[Chronepsis]]; not even the
Conclave can command an Eye of Chronepsis.
Established in the wake of [[Aureon’s Folly|Age of Giants]], the Eyes
of Chronepsis hold the power of life and death over
all [[dragon]]s. They act as both judge and executioner
in any case where a dragon threatens the stability of
[[Argonnessen]] or of the [[Draconic Prophecy]]. They also monitor those dragons that live beyond Argonnessen and eliminate any who place it at risk. The
presence of the Eyes is the primary reason rogue dragons keep
a low profile. The Eyes don’t care how dragons treat
the lesser races, but a dragon whose actions are too
obvious and disruptive could draw unwanted attention
to Argonnessen. In theory, the Eyes prevent dragons
from sharing knowledge with the lesser races. The
example of [[Vvaraak]], however, shows that either it
is possible to evade the Eyes, or that the Eyes tacitly
approved of her actions.
The Eyes of Chronepsis closely track the [[Draconic Prophecy]]. Prior to the formation of the [[Chamber]], it was the Eyes who battled the [[Lords of Dust]] to prevent
the fiends from manipulating the Prophecy. However, unlike the Chamber, the Eyes have always been dedicated to observing the Prophecy without pushing
it in any particular direction. If the [[rakshasa]]s were
trying to force a particular outcome, they’d act—but if
that same outcome came about naturally, they’d stand
aside. Even when they did act, the Eyes sought only to
protect the Prophecy; it is not their mission to take
the battle to the Lords of Dust or to fight the other
forces of evil in [[Eberron]]. They watch. They gather
information. They punish dragons who threaten the
homeland. And they protect the Prophecy itself. All
else is extraneous.
The appearance of the [[dragonmark]]s was a shock
to the Eyes of Chronepsis. In the wake of this event,
they agreed to allow the dragons of the [[Chamber]] to
take a more active role in the wider world, and to observe the impact on the [[Prophecy|Draconic Prophecy]]. To date, they have been content to watch—but at any time, the Eyes of Chronepsis could demand an end to the activities
of the Chamber.
The Eyes of Chronepsis watch the watchers—they
are a force that even [[dragon]]s fear. However, they
act only in truly dire circumstances. The actions of
a rogue dragon can’t simply threaten [[Khorvaire]]; a
threat to [[Argonnessen]] must exist. Although the Eyes
of Chronepsis might help adventurers by eliminating
a dangerous dragon, they could also be a deadly foe.
A dragon providing vital aid—as [[Vvaraak]] did during
the [[daelkyr]] incursion—could be targeted by the Eyes.
Alternatively, the Eyes could strike against an organization that threatens the Prophecy, such as a [[dragonmarked house]].
Some of the Eyes specialize in [[scrying]] and other [[divination]]s, while others are trained in battle. One of the best-known figures among the Eyes is the Lightkeeper [[Silaesteron]], who speaks for the Eyes when the [[Conclave]] gathers.
These crystal lenses fit over the eyes. While wearing them, a creature with the [[Mark of Finding]] has advantage on perception attempts that rely on sight. In conditions of clear visibility, they can make out details of even extremely distant creatures and objects as small as 2 feet across.
''Color:'' Silver<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Making|Mark of Making]]<br/>
''Associated Plane:'' [[Fernia]]
When Eyre is full, a keen-eyed observer can pick out on its surface a shadowy shape that vaguely resembles an anvil. According to [[druid]]ic belief, those born under Eyre inherit a solid, practical nature and a gift for nature crafts. Some smiths will wait until Eyre is full to work on especially difficult projects, and House [[Cannith]] [[enclave]]s often hold celebrations when the Anvil is full in the sky.
This [[trade guild]] of House [[Cannith]] runs shops that
produce all manner of mundane equipment, much of
which it creates with the aid of magic. The stamp of
the [[gorgon]]—the symbol of House Cannith—is a sign of
good quality and reasonable price, and can be found
on items as varied as horseshoes, longsword hilts, and
watertight barrels.
The guild maintains some retail establishments,
but it is largely content to focus on production and
leave the selling to others. [[Cannith]] goods can be
found everywhere, both in the emporiums of [[Khorvaire]]’s largest cities and in the general stores on the edges of civilization.
Near the southern shore of [[Argonnessen]], a stone dragon’s head rises up from the
ground. It is an unfamiliar shape, not quite conforming
to any kind of dragon seen on [[Eberron]]. More shocking,
however, is its size. The head stretches three miles from
snout to horns. If it is the work of a sculptor, it would
have had to be carved from a mountain range. Many
priests of [[Thir]] say it is the face of Eberron, and that when
she speaks it will be heard across the world. The [[children of Eberron|child of Eberron]] consider it a holy site, and young initiates come here to learn the mysteries of [[primal magic]] from older children.
Statues, shrines, and other sacred sites speckle
the countryside of [[Thrane]], holy ground for the
people to send their prayers to the [[Silver Flame]].
Though each is impressive in its own way, none
compares to the Face of Tira. Sculpted from a rocky
crag atop a massive stone outcropping west of
[[Flamekeep]], it bears the likeness of the famed [[Voice of the Flame|Tira Miron]] in 80-foot-tall splendor. Her eyes peer
eastward, her gaze resting on the site where the
Silver Flame was born.
The Faded Forest is a forest in central [[Breland]], home to rare trees of [[alchemical|alchemist]] interest such as dragonseye and ghost oak. Citizens of nearby [[Mistmarsh]] send an expedition to gather magical acorns from this forest once a year.
The capital of [[Aundair]] is one of the most beautiful
cities in [[Eberron]]. Stunning displays of magical light
and other arcane wonders enhance the exquisite architecture. This is the seat of the [[University of Wynarn]], a
prestigious institution that draws students from across Khorvaire. As a noble, entertainer, or sage, you might
have your roots in the City of Lights.
!! Notable Features
Founded soon after [[human]]ity spread across [[Khorvaire]], Fairhaven is a city with a rich history. The capital features straight roads and tidy buildings,
with tree-lined neighborhoods, manicured parks, and
statues depicting great leaders and heroes. Grand
universities fill city blocks, teeming with students and
scholars. Great temples dedicated to the [[Sovereign Host]], mage towers, museums, and more give the city a refined atmosphere. The Royal Court of [[Fairhold]] dominates the metropolis’s impressive
skyline.
Fairhaven is also Aundair’s commercial crossroad. All the [[dragonmarked house]]s have [[enclave]]s here: the [[Aundair Enclave]] is the headquarters of [[Cannith]] West, and the prominent [[Demesne of Memory]] of [[Phiarlan]] exemplifies the written word. Caravans from all across the [[Five Nations]] arrive regularly. Overhead, elemental [[airship]]s drift through the clouds, descending to dock at the sky
tower, while [[elemental galleon]]s prowl the [[Aundair River]], laden with goods being conveyed to and from distant ports. Merchants and traders wheel and deal
with skeptical peasants from the surrounding farmlands in Fairhaven’s numerous marketplaces. The Distant Exchange, a bustling market specializing in
foreign goods, provides silks, exotic consumables, and brilliant artwork from faraway lands, catering to the city’s elite.
Above all, Fairhaven is a city of learning. Schools
ranging from single classrooms to the sprawling [[University of Wynarn]] are home to students from all cultures and races. This crucible produces regular advances in philosophy, magic, sciences, and commerce. Fairhaven’s reputation for scholarship makes education its greatest industry.
Fairhaven is also home to the [[headquarters|Wayfinder Foundation Headquarters]] of the [[Wayfinder Foundation]] and home of its founder, Lord [[Boroman ir'Dayne]].
The royal seat of power of [[Aundair]], Fairhold occupies
a significant amount of real estate in the city of [[Fairhaven]]. Rising above the tallest buildings in the city, Fairhold
is a wonder of architectural achievement, a graceful fusion of style and defense. Behind steep walls
pierced by looming gates rest half a dozen towers and
twice as many minarets.
The King’s Hall, where Queen [[Aurala|Aurala ir'Wynarn]] holds audience with
the public, is an impressive chamber capable of permitting fifteen hundred people to stand before Aundair’s crown.
The Royal Collection of Aundair, housed in the south wing of the estate, provides one of the best libraries
available in northern [[Khorvaire]]. The collection includes
records dating back to the founding of [[Galifar]], as well
as a few older documents that come from the days of the
original [[Five Nations]]. The public can view some parts of
the collection, but large sections are only accessible to those
who receive special dispensation.
The Courts of Justice,
located in the east wing of the estate, handle the various
trials and mediations that require interpretations and
rulings on the law. Fairhold also maintains a museum
dedicated to the crown, displaying relics that examine
the nation’s history—both as an independent country and
when it was part of the [[Galifar]] kingdom.
Fairhold also houses a garrison of the [[Knights Arcane]], as well as the [[Tower of the Eyes]], the headquarters of the [[Royal Eyes]] of Aundair.
Falazure, the Night Dragon, the Reaver, is the [[Dragon God|Dragon Gods]] of Decay, Undeath, and Exhaustion. Just as exhaustion is followed by sleep, followed by waking renewed, adherents of Falazure revere death as a joyous releasing of the burdens of the flesh. Many take the analogy further, and consider [[undeath|undead]] to be akin to awaking from a refreshing sleep. "When sleep comes, let me wake from the sleep. When death comes, let me wake in undeath."
Falconer’s Spire rises high above the [[Marketplace]] of [[Stormreach]], even
taller than the [[Lorsmarch Palace]] and the great tent
that covers the [[bazaar|Stormreach Bazaar]]. A great blue-inlaid edifice, the
spire acts as a docking station for [[airship]]s and as the
[[enclave]] for House [[Lyrandar]], overseen by [[Calynden d'Lyrandar]].
!! Lyrandar in Stormreach
[[Stormreach]] is a center for sea trade and a port that
lies outside the restrictive [[Korth Edicts]] imposed by
[[Galifar]]. House [[Lyrandar]] has always seen tremendous
opportunity in Stormreach, but its ambitions were
held in check by the [[Harbor Lords|Wylkes family]]. Despite being
fellow [[half-elves|half-elf]], the Wylkeses obeyed the orders of the king of [[Galifar]] and placed limits on Lyrandar expansion. But over the last thirty years, everything has
changed. With the development of the [[airship]], Lyrandar raised Falconer’s Spire in the [[Marketplace]]. Lord [[Lassite|Varen Lassite]] is open to Lyrandar persuasion, and the house uses the spire as its embassy and seat of business.
The next shift came with the arrival of [[Calynden d'Lyrandar]] at the end of the [[Last War]]. See his page for more information.
Many [[Lyrandar]] vessels pass through [[Stormreach]],
and any heir in good standing can find simple lodging
at the [[enclave]]. One of the most recognized captains is
[[Lazrea d'Lyrandar]].
House Lyrandar has two strong allies in Stormreach. The first is House [[Tharashk]], which relies on Lyrandar shipping to transport its [[dragonshard]]s and other goods to [[Khorvaire]]. Also, Lyrandar has spent decades cultivating relations with the [[sahuagin]] of the [[Eternal Dominion]] in order to ensure safe passage across the [[Thunder Sea]]. Dominion emissaries are often seen in the house’s harbor facilities, and [[Calynden|Calynden d'Lyrandar]] frequently dines with
[[Ta'har]] priests, conversing with them in their own
tongue. Most likely, this alliance is simply a matter of
business—something that gives [[Lyrandar]] an edge over
independent captains.
''District Type:'' Slum<br/>
''Buildings:'' Temple (The [[Silver Flame]]), poor lodging (2), poor food (12), poor trades (40), poor
services (20), poor residences (285)<br/>
''First Impression:'' At first glance, this district
looks like a ruin. Huge chunks of stone are scattered around the outer streets. Statues of the gods
look down upon you, but many have shattered features or missing limbs. A few buildings and bridges
have collapsed, in whole or in part, and most of the
surviving buildings show some amount of scarring
and damage.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' the [[Stores]] (northwest); [[Foundation]] (southeast); [[Sharn's Welcome]] (below and west); [[Forgelight Towers]] (bridge, northeast); [[Downstairs]] (bridge, east); [[Mud Caves]] (below and southwest); [[Rattlestone]] (above)
The Fallen district in [[Lower Dura]] was once known as
Godsgate. When the first towers were raised, Godsgate
was the temple district. It had shrines and statues dedicated to the [[Sovereigns|Sovereign Host]], a proud church of the [[Silver Flame]], even a monument to the [[Undying Court]]. But
as [[Sharn]] grew and prospered, religious services were
moved to grander temples in the upper wards. Godsgate became a tenement district, and the shrines and
monuments were forgotten and left to decay. The final
blow to this once-proud district came early in the [[Last War]]. A team of [[Aundair]]ian saboteurs brought down one of Sharn's floating towers, the [[Glass Tower]], and the falling spire struck Godsgate. Buildings collapsed, and hundreds died. Untended corpses led to infection and disease. The [[City Council|Sharn Council]] had no interest in sinking gold into [[Lower Dura]]
to restore the area, and the district was abandoned.
Today, the district known as Fallen is strewn with the
rubble of the fallen tower, mingled with shattered buildings and broken statues. Those who venture into Fallen
must deal with the [[Ravers]], feral savages that lurk in the
shadows. There's no question that the Ravers exist, but
their true nature remains a subject of debate. A common
hypothesis is that they're the descendants of the original inhabitants of the district, who were possessed and
driven mad by the ghosts of those who died when the
tower fell. Others claim that House [[Vadalis]] has been trying to [[magebreed|magebreeding]] super-soldiers, and the Ravers are the
result of failed experiments.
Only the most desperate people live here, and the
forces of the law won't come near it. As a result, the
district has a lot of space available for any cult or secret
society that needs a lair. The followers of a [[radiant idol]],
the [[Cults of the Dragon Below]], or any other cabal could
lay claim to a shattered church in Fallen.
!! Noteworthy Locations
* [[Blackstone Church]]. [[Sharn]]'s first temple to the [[Silver Flame]], a single priest still holds vigil in this otherwise abandoned church.
The Finches reside on the outskirts of [[Zarash'ak]],
where civilization pretends to dwell in the heart of
the [[Shadow Marches]]. Their estate is sprawling and
grand, but its fences are rusted, its paths overgrown,
and its walls peeling.
The Finch family has long laid claim to titles of
aristocracy within the scattered, clannish society
of the [[Shadow Marches]]. How much of that claim is
genuine, and how much a pretense to mask the poverty that has slowly overtaken them, even the Finches themselves no longer know. But they have their pride.
They have their ties to the community of [[Zarash'ak]],
where the people are happy to take their coin even
as they whisper behind upraised hands. And the
Finches have their gods: dark, alien powers who they
believe will restore the family’s wealth and power
and set the Finches to rule atop the festering graveyard of twisted flesh once called Eberron.
Oh, yes, and one other thing: Every Finch for
generations uncounted has a burning, inherited
madness.
!! Something Not Quite Right About That Family
The Finches are the perfect candidates for every
creepy, insular, darkness-worshiping, backwoods
family story you’ve ever imagined. They can serve as
a typical evil cult, as a slow cancer eating away at a
(mostly) decent society, as political and mercantile
rivals of the PCs, or as the heart of a Lovecraftian
nightmare. The Finches kill, to protect their secrets
or as sacrifices to their dark gods. They corrupt,
spreading their influence over local governments.
They raid and steal, acquiring wealth and magic
items. They delve deep into secrets mortals were not
meant to know. But because none of the Finches are
overwhelmingly powerful individually, the PCs can
face them at early levels, introducing the characters
to the larger threat of the [[Cults of the Dragon Below]].
!! Rumors and Whispers
The Finches are one of the
region’s oldest families. Family members
mostly keep to themselves, except when they send
servants or younger members into town to buy
goods and supplies. They’re a stiff, proper, unsmiling bunch, but they’ve been decent enough to the community.
The Finch family is ruled with iron fists by Thelonius and Lucretia. They have
one son, Julius, who’s not known for his intellectual
capacity. Their favored heir is Lucretia’s niece, Eliza
Winthrope, who came to live with them when she
was just a child.
Rumor has it that the Finch
estate is haunted, but that the Finches won’t admit
to it in order to avoid shaming the family. This, some
locals say, is the reason for their stern, unbending
demeanor.
!! Meet The Finches
Thelonius and Lucretia look to be in their early fifties. He dresses in somber blacks and grays like an
undertaker, and wears a well-kept but thick beard to
hide the deformed shape of his jaw. She dresses in
fancy gowns with extravagant trains, long enough to
hide the fact that her left leg ends not in a foot, but in
a grotesque, fleshy flipper. Both have dark hair and
soulless eyes.
Julius resembles a younger version of his father, but with an exaggerated musculature. He is incapable of smiling and is well known for his temper. He’s not particularly intelligent, and he looks unintelligent—more primitive than his parents—and he knows it.
Eliza lacks the physical quirks of her relatives; she’s
a trim, attractive young woman. Her eyes, however,
burn with a madness that the rest of the family has
nurtured in her since her childhood.
Fang is an adjunct professor of Arcane Engineering at [[Morgrave University]] in [[Sharn]]. As a creation of [[arcane magic]], Professor Fang
brings remarkable insight into both the study
of [[artifice|artificer]] and the role of the [[warforged]] in the
modern age. Students are encouraged not to
comment on Professor Fang’s unusual draconic
appearance.
This pit in the [[Great Barrier Mountains]] is hundreds of miles across and punches deep into the earth. The stone rim is blackened and smooth, and volcanic gases rise from cracks and vents in the walls. The crater was caused by a planar incursion from [[Fernia]], when forces from the [[Sea of Fire]] flooded into [[Argonnessen]]. The [[Light of Siberys]] repelled the assault, and the [[loredrake]]s sealed the rift. Still, a [[manifest zone]] to Fernia remains at the very center of the crater—a pit of lava more than a mile wide.
An ancient, ruined [[planar observatory]] called the Orrery of Vortuum is set into the rim of the crater.
The Fangs of Argarak are an enormous mountain range in central [[Xen'drik]], featuring some of the highest peaks in the world. Strange beelike elves that call themselves [[abeil]]s can be found in the foothills of these mountains, while the [[minotaur]]-like [[yikaria]] dwell in the highest peaks. In between, the [[Sulatar]] firebinders dwell near [[volcanic fields]] and in ruined [[blood glass]] fortresses of their former [[masters|Sulat League]].
Legend has it that the great [[gold dragon]] Orstyx lairs somewhere in the western wall of the Fangs of Argarak. According to ancient fables, Orstyx's fiery belly is hot enough to destroy any item he swallows.
Fantaz the Merry, a [[blue|blue dragon]] [[rogue dragon]] in [[Khorvaire]], believes that the purpose of life is enjoyment, and that the lesser races know the secret of merriment better than [[dragon]]s. Fantaz lives permanently in [[humanoid]] form and spends every night drinking, dancing, and wooing beautiful people.
The Far Strait lies between [[Cape Far]] of mainland [[Lhazaar Principalities]] and the islands of [[Greentarn]] and [[Ninebay|Ninebay Island]].
A general store and pawnshop near [[Hammersmith's Inn]] in [[Stormreach]], Fare Trades often makes unfair trades, contrary to its name; exchanges should always be modified in
favor of the merchant. The store’s saving grace is its
proprietor’s willingness to trade for almost anything.
The frozen island of Farlnen is part of the [[Lhazaar Principalities]]. It is defined by its patchwork of [[Mabar]]an [[manifest zone]]s, as well as [[Port Cairn]], the seat of power of the [[Bloodsails]].
In the aftermath of the destruction of the [[line|Aereni noble line]] of [[Vol]], many [[Aereni]] were exiled from their homeland and sailed north, finding their way to Farlnen and making a new home in the long shadow of the Fingerbone Mountains. Today, many [[elves|elf]] choose to remain in isolated communities deep in the Fingerbones, but others have embraced [[Lhazaar|Lhazaar Principalities]] culture and the life of the sea. The largest of these is the [[Bloodsail|Bloodsails]] principality, centered in [[Port Cairn]].
High in the mountains, protected by the hostile environment as well as powerful [[abjuration]]s, is the fortress of [[Lady Illmarrow]].
!! The Black Isle
Farlnen is cold and bleak, with cliffs of basalt and beaches covered with black sand. When the [[elves|elf]] came to the island, they found almost no vegetation; Farlnen is close to the [[plane]] of [[Mabar]], and full sunlight never reaches its stony soil. The [[Grim Lord|Grim Lords]] [[Varonaen]] overcame this challenge, and the fruits of his labors can be seen today: [[darkwood]] trees and [[ebon sedge]] grass that feed on shadows instead of sunlight. Varonaen has continued his work over the course of generations, and the merchants of Farlnen trade spices and wines that cannot be produced anywhere else in the world.
The waters around the island are just as dangerous as the stories say. Basalt columns and treacherous reefs pose inanimate threats to those who don’t know the coastline, and the [[undead]] sentinels pose an even greater threat. Anything that roamed the water over the centuries might have been slain at some point and bound to protect Farlnen. [[Kraken|kraken]]s? [[Dragon turtle|dragon turtle]]s? Worse? It’s up to the DM to decide what lies hidden in the dark water.
!! The Faces of Farlnen
Farlnen is a dark reflection of [[Aerenal]]. The cities are made of basalt and [[darkwood]], and the sun never pierces the [[Mabar]]an haze that hangs over the island. Most of the [[elves|elf]] who reside there have pale complexions, as one might expect in such a sunless land. However, children conceived when Mabar is coterminous are sometimes born with jet-black skin; such elves can be mistaken for [[drow]].
Although [[Bloodsail|Bloodsails]] merchants and privateers are found across the [[Lhazaar Principalities]] and the [[Bitter Sea]], strangers receive a cold welcome in Farlnen. [[Port Cairn]] is the gateway to the island and the seat of Prince [[Tasil|Shaen Tasil]], but any visitor quickly realizes that the place has few families. It is home to travelers and those who cater to them, but the family estates lie in the interior and the Fingerbone Mountains. Foreigners who want to travel into the interior of Farlnen are treated with suspicion or hostility; it is all but impossible to find a guide unless the traveler is an [[elf]] or has some other connection to the [[Bloodsails]] or [[Grim Lords]].
Farlnen is primarily inhabited by elves, along with a handful of [[eladrin]] and [[half-elves|half-elf]]. The eladrin arrived eighteen hundred years ago, fleeing a disaster in [[Thelanis]]; they have fully embraced the [[Bloodsail|Bloodsails]] culture and married into elf families. Members of other races might be accepted as guests, but there is no place for [[human]]s on the Black Isle.
Farwatch is an island in the [[Lhazaar Principalities]], located in the [[Eel Bay]].
This tag indicates a [[magic item]] or other object whose primary function is to make the wearer look stylish or impressive.
<<list-links-article "[tag{!!title}sort[title]]">>
(Leaellynasaura)
Fastieth are human-sized, two-legged saurians with
large eyes, brightly colored and patterned scales, and
strong legs. They are the most common mounts of the
[[halfling]]s of the [[Talenta Plains]], bred for speed. Although
too small to bear larger riders, a fastieth can carry a halfling with light gear easily and at a good pace. Fastieths are typically stubborn creatures, so specimens with an
even temperament are prized among the Talenta tribes.
Being herbivores, fastieths prefer to flee rather than
fight. However, even though not trained for battle, they
can deliver a vicious bite if pressed.
''Date: '' [[25 Barrakas|Khorvaire calendar]]
This celebration commemorates a priest of the [[Silver Flame]] who was martyred while exposing [[lycanthrope]]s in [[Sharn]]. The day's activities often cause tension with
the [[shifter]] community.
See also [[Shrine of Fathen the Martyr]].
You project a phantasmal image of a creature's worst fears. Each creature within 30 feet of you sees terrifying illusory creatures in their minds, visible only to them; if they are not able to resist the illusion, they are frightened for up to one minute, dropping whatever they are holding and fleeing.
If you are able to cast legendary-tier spells, you can cast this as such to extend the range to 120 feet, and afflicted targets suffer psychic damage.
When this spell is cast on a falling creature, the creature's rate of descent slows to 10 feet per second for 1 minute (or until the spell ends by other means). If the creature lands before the spell ends, it takes no falling damage and can land on its feet, and the spell ends for that creature.
This small metal disk is inscribed with the image of a feather. When you fall at least 20 feet while the token is on your person, you descend 10 feet per second and take no damage from falling. The token's magic is expended after you land, whereupon the disk becomes nonmagical.
This thin, light blue liquid has a sparrow's feather suspended in the center. A creature that drinks this potion weighs one tenth of their normal weight, can jump triple the normal distance, and is under the effects of the [[feather fall]] spell for up to 1 hour.
Ostensibly this is an apothecary in [[Respite]], run by Salar and Quolish, a pair of ambitious [[halfling]]s whose moneymaking schemes often fall flat. The apothecary is their only real
success, but it also acts as a store for whatever remains
after their latest get-rich-quick plan has foundered.
They have a wide selection of [[common|rarity]] potions.
The duo keeps a handful of uncommon-rarity potions. These are reserved
for customers who make a good impression on them.
This is the dark shadow hidden within House [[Vadalis]]. The [[magebreeders|magebreeding]] of the Feral
Heart seek to unleash the full potential of the natural world—no matter how horrific. They have been uncovering the forbidden techniques of the Seryan
line from their laboratories at the [[Hearth]] in [[Breland]], and even searching for the tools of the [[daelkyr]] in
hopes of creating living weapons of war. The [[Dragon Below|Cults of the Dragon Below]] cultist [[Mazina|Mazina d'Vadalis]] is secretly using the Heart as
a cover to bring fiendish spirits into the world. Will
PCs who fight the beasts of the Feral Heart discover
the secrets of their makers?
A massive shard of basalt rises out of a vast ocean of magma. A castle sprawls atop the peak, a glittered fortress sculpted from brass. Firefalls of lava tumble down the edge of the spire. A flight of [[red dragon]]s takes to the air, circling the castle and creating a dazzling spectacle of synchronized flames. Welcome to High Hearth: the party's about to begin.
It's simple to say that Fernia embodies the concept of fire. The plane is filled with magma and flame, from massive volcanoes to cities eternally on the verge of being consumed by fire. But Fernia isn't about mundane fire; [[Lamannia]] is the source of simple, natural flame, and holds volcanoes and fire [[elemental]]s. Rather, Fernia is about all
the things we see //in// the flame, all the ideas it represents. It
has layers reflecting wild destruction, where verdant forests
eternally burn. It incorporates industry, with legions of [[azer]]s
forever toiling over fire and forge. And it reflects wild passion,
burning emotions that can't be held in, and glorious spectacle;
these are the realm of the [[efreet|efreeti]], the lords of the [[Sea of Fire]],
forever striving to outshine their rivals.
Fire draws the eye and the attention, but where there's
magma, there's also earth. The [[azer]]s stand between earth and
flame, harvesting the ore they feed to their hungry forges. And
in the deep caverns, the [[dao]] polish jewels and admire their
treasures. Even in these deep layers, the air sears the lungs of
creatures that lack the proper protection, but for adventurers
willing to brave the flames, wonders and wealth are waiting
in the halls of fire and stone.
!! Universal Properties
The sweltering heat of Fernia can be deadly to unprotected
creatures, and it burns through mortal metabolisms. The
following properties apply to the entire plane.
* //''Deadly Heat.''// All regions of Fernia are subject to extreme heat. In addition, all creatures gain resistance to cold damage, and a creature that is usually resistant to cold damage becomes immune to it.
* //''Empowered Fire.''// Spells and other magical effects involving fire are enhanced.
* //''Fires of Industry.''// A creature has advantage when using tools (such as baking with cook's utensils, or forging an item with smith's tools) when it incorporates Fernian flame into its action in place of mundane flame.
* //''Burning Bright.''// All creatures' metabolisms are doubled. For example, exhaustion sets in faster, but creatures recover from it faster. In Fernia, whether you live or die, it's going to happen quickly!
* //''Standard Time.''// Time passes at the same pace as on the Material Plane, and is consistent across its layers.
!! Denizens
Fernia is home to [[celestial]]s and [[fiend]]s, spirits that embody
key concepts of fire and flame. But its primary denizens are
[[elemental]]s of earth and fire. There are no native mortals or
manifestations in Fernia: the elemental population is set in
stone, and when one elemental dies, a new one takes its place.
This can take many forms; new [[mephit]]s spring out of open
flame, while the [[dao]] craft new [[azer]]s out of bronze. But overall,
the population is stable; when an [[efreeti]] pits two legions of
[[salamander]]s against one another in a grand display, they know
the salamanders will eventually be reborn.
!!! Efreet
The [[efreet|efreeti]] are the brightest stars in the firmament of Fernia.
They are aristocrats, dwelling in sprawling mansions and
castles, attended by countless servants, dwelling amidst
astonishing opulence. Fire consumes, and the efreet are
masters of conspicuous consumption.
!!! Dao
Where do the many treasures of [[efreet|efreeti]] come from? Who built
their glorious [[City of Brass]]? The [[dao]] are the answer to both of
these questions. [[Azer|azer]] laborers keep the foundries burning, but
it's the dao who pluck wondrous jewels and pure [[adamantine]]
from the primal earth, and it's they who craft the grandest
and most remarkable wonders.
!!! Lesser Elementals
Fernia is home to raw fire and earth [[elemental]]s (though
these can also be found in [[Lamannia]]), abstract spirits that
want nothing more than to burn or surge. These primordial
creatures are largely ignored by the [[efreet|efreeti]] and [[dao]], and
they're driven by pure instinct. Elementals are Fernia's most
common inhabitants; an efreeti wouldn't be a lord without
subjects to lord over, and these lesser elementals serve that
role. While humanoid in form, they're deeply alien, [[immortal]]
spirits shaped by their element and driven by singular
purpose. An [[azer]] lives for the forge, and a [[mephit]] delights in
mischief. Most lesser elementals are content as long as they
have the opportunity to pursue their purpose, but occasionally
a lesser elemental unexpectedly develops a quirk that drives
it to pursue a new purpose.
The population of these elementals is limited, and thus
their service is valuable to the efreet and dao. The efreet
and dao often barter the service of their elemental subjects,
sending them to allied or rival courts. Typically this doesn't
matter to the elementals, but there have been a few cases of
[[salamander]]s rebelling against a new lord or mephits playing
tricks on their new comrades.
[[Azer|azer]]s, [[mephit]]s, and [[salamander]]s are the most common
elementals, though others might be encountered somewhere
in this plane.
!!! Fiends and Celestials
The [[fiend]]s and [[celestial]]s of Fernia embody specific aspects of
the concept of fire. Fire is an integral part of their appearance;
they may have burning eyes, orange-red skin, or wings and
halos formed of flame.
[[Angels|angel]] represent the comfort fire offers: its life-giving
warmth, the light that holds back the shadows. The angels
of Fernia are typically [[deva]]s or other lesser angels, and they
generally seek to assist and comfort travelers when they can.
[[Demons|demon]] reflect the terrifying destructive power of fire,
the wildfire that can't be contained and the spark that brings
down a mansion. They are wild and violent, and it's rarely a
good thing when adventurers cross paths with them. Demons
yearn to burn all wondrous things. Sometimes this leads
them to target the grand mansion of an [[efreeti]], but during
coterminous periods, they can also influence untended flames
in the Material Plane, or occasionally manipulate mortals
into carelessness with fire. Common demons include [[quasit]]s
(malevolent counterparts to the elemental [[mephit]]s), [[vrock]]s
with burning wings, and terrifying [[balor]]s.
[[Devils|devil]] represent the intentional use of fire as a weapon
or to inspire fear—the burning iron used in torture, the
screams of those dying on burning battlefields. Devils are
rare and exceptionally cruel. They thrive both on causing
pain and suffering in Fernia, and cajoling mortals into acts
of arson or fiery torture in the Material Plane. Like [[demon]]s,
they can usually only influence mortals when the planes are
coterminous, but occasionally a Fernian devil manages to slip
through fire into Eberron. [[Imp|imp]]s, [[barbed devil]]s, and [[pit fiend]]s
can all be found in Fernia.
!! Layers
Fernia is dominated by the vast [[layer]] known as the [[Sea of Fire]]. Where the sky can be seen, it's almost always obscured by ash and smoke. Its smaller layers embody specific concepts, such as infernos and campfires. These can usually be reached
through burning circles on the islands in the Sea of Fire, or
via tunnels in the [[Deep Halls]].
<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>
!! Planar Manifestations
Here are a few of the ways Fernia can affect the Material Plane.
!!! Manifest Zones
[[Manifest zone|manifest zone]]s tied to Fernia often share one or more of the
plane's universal properties. Those with //Deadly Heat// often have
unusual volcanic or tectonic activity, and are generally shunned.
However, House [[Cannith]] is always searching for Fernian zones
with the //Fires of Industry// property; in addition to enhancing crafting, these zones often allow [[artificer]]s to craft enchantments that can't be replicated elsewhere (especially
those tied to [[evocation]] and flame). A Fernian manifest zone
can provide an unexpected haven in an arctic environment, or
provide unusual geothermal benefits. In [[Karrnath]], the town of
Ember—on the edge of the Icetop Mountains—is renowned for
its pleasant climate and thermal pools.
!!! Coterminous and Remote
While Fernia is coterminous, temperatures rise sharply, and
warmer regions that would normally be safe can become
extremely hot, taking on the //Deadly Heat//, //Empowered Fire//,
and //Burning Bright// properties of the plane. During these times,
on rare occasions, creatures caught in an area of exceptionally
intense flame can find themselves pulled through to Fernia itself.
When Fernia is remote, intense heat loses some of its bite.
Creatures have advantage to resist the
effects of extreme heat, as well as against
[[spell]]s that deal fire damage.
Traditionally, Fernia is coterminous once every five years
during the month of [[Lharvion|Khorvaire calendar]], and it's remote once every five
years during the month of Zarantyr (exactly two and a half
years after it's coterminous).
!!! Fernian Artifacts
The [[dao]] and the foundries of Fernia produce a vast array of
wonders. Many of their creations are effectively trinkets, such
as a gold model of a [[dragon]] that breathes actual fire. Others are
far grander, such as [[figurines of wondrous power|figurine of wondrous power]]. While many Fernian artifacts relate to fire in some way—wands of [[fireball]],
[[flame tongue]] swords—they aren't limited to fire or [[evocation]].
Fernian items are often made from brass, obsidian, or basalt,
but the [[dao]] work with all metals.
Two additional resources from Fernia are [[cold fire]] and
[[Fernian ashes]]. Both of these can occasionally be harvested from Fernian [[manifest zone]]s.
!! Fernian Stories
Fernia is difficult to reach and dangerous to visit, but here are
a few ideas that might spark adventures related to that plane.
//''The Life of the Party.''// The Pasha [[Shashraqa]] of Firefall is
determined to unseat the Sultan [[Azhalar]] with her next gala. And
what's in fashion at the moment? Adventurers. The Pasha whisks
the adventurers to Fernia, promising to reward them well if they
make the gala a success—and to throw them into the [[Sea of Fire]]
should they fail her. Can the characters shine at a party of [[efreet|efreeti]]
and [[dao]]? Do they know which fork to use, especially when one
of them is on fire? What happens when Azhalar's [[salamander]]
general challenges a party member to a duel?
//''The Infernal Machine.''// The adventurers stumble across
an [[Emerald Claw]] camp. These Seekers are working with the
[[dao]] [[Sar Saeran]], who's building them a devastating explosive
device capable of leveling a city. Can the adventurers find out
why Saraean is working with the Emerald Claw? If the dao is
being compelled, can they free him? If it's part of a negotiation,
can they make a better offer? And what will they do if they end
up with the completed bomb?
//''The Back Door.''// The adventurers find a curious brass key.
When inserted into a door, it transforms that door into a portal
to the [[First Hearth|Campfires]], an inn in Fernia. Who does the key belong
to? How often can its power be used? The barkeep Ashe is
always happy to see a few new faces, but who else will the
adventurers meet at the bar?
[[Fernia]]n ashes are a potent component
of [[magic item]]s tied to the [[evocation]] school. In addition, if a
spellcaster discards a pinch of Fernian ashes while casting a
fire [[spell]], that spell is magnified.
This building in [[Krona Peak]] houses the meeting chambers of the [[Iron Council]] of the [[Mror Holds]]. Its utilitarian design gives it a passing resemblance to a titanic lock-box.
The location of Ferrous House continues to be a source of antagonism for rival [[clans|Mror clan]]. The building was constructed on a slope directly below the entrance to
[[Mroranon]]’s estate—traditionally the location where a clan establishes its storehouses and counting rooms. To some, this placement seems symbolic of the [[dwarven|dwarf]] nation being little more than a part of Mroranon’s business interests. Clan leaders dismiss such claims, saying that they raised Ferrous House in its central location to demonstrate the importance of the dwarven confederation.
Festering Holt lies approximately fifty miles
southwest of Ashtakala, the nearest [[humanoid]] habitation to the demon city, a charnel pit of ramshackle structures and ill will. It is a way station of sorts for groups
searching for the fabled demon city, and adventurers, savage humanoids, and even [[fiend]]s seek refuge along its streets.
While the Holt doesn’t have many
comforts to speak of, it can look like paradise to a traveler
coming across it in the midst of the [[Wastes|Demon Wastes]]. However, more than a few visitors have been known to disappear while staying in
Festering Holt, and it is said that the locals prey on
the weak and injured, always in need of fresh meat
for the cooking pots.
The Holt has a livery of sorts, though the last time it
actually housed mounts not even its proprietor can say.
The general store, tavern, and inn can be found under the
same roof, in the largest structure in the Holt—''Dead Before Morning''. The innkeep, a [[bugbear]] named Karbal, opens the doors every evening and starts the festivities
with the same toast: “Drink well, lads, because it’s a sure bet
we’ll all be dead before morning!” The name stuck.
Fey are magical creatures with [[immortal]] spirits native to the plane of [[Thelanis]]. They dwell in twilight groves and misty forests, seemingly closely tied to the forces of nature. However, the fey of Thelanis aren't part of nature; as creatures tied to the plane of stories, they begin as [[manifestation]]s of the magic that humanoids //want// to see in the natural world. The fey reflect hopes, fears, secrets and desires both conscious and unconscious. Fey live entirely in the moment, with no concept of yesterday or tomorrow and no real depth of personality—until they become part of a story of their own, at which point they can spontaneously develop individual identity, goals, and desires.
Fey include creatures such as [[dryad]]s, [[pixie]]s, [[sprite]]s, and [[satyr]]s, as well as the mighty [[archfey]], the subjects of ancient legends and fables.
!! Types of Fey
<<list-links-article "[tag{!!title}category[creature]] -[tag{!!title}tagging[]category[creature]] +[sort[title]]">>
This rose was plucked from a garden in [[Thelanis]], and remains forever youthful and vibrant. Regardless of location, the rose opens at sunrise and closes at sunset.
The feyspires are the cities of the [[Moonlit Vale]] in [[Thelanis]]. Each is
home to a single [[archfey]] whose personal story is reflected
by the spire, along with a few greater [[fey]] and a host of
[[eladrin]] and other mortals. Many feyspires serve as planar
beachheads; they are tied to specific [[manifest zone]]s in
[[Eberron]], and when the time is right, they can slip into
Eberron for a short time. Usually the feyspires are hidden by
powerful [[illusion]]s during these times, but there are stories
of people stumbling into magical cities that are gone the next
day. It's possible that some number of feyspires could be trapped in Eberron following
the [[Mourning]]; it's up to a DM to decide if that's the story they
want to tell.
!! Notable Feyspires
<<list-links-article "[tag{!!title}sort[title]]">>
[[Cyre]] was the site of incessant battles during the [[Last War]], from the first extended campaign—the siege of
[[Eston]] in 895 YK—to the running battle on the Saerun
Road that was cut short when the [[Mourning]] occurred.
Battlefields across the [[Mournland]], both ancient and
recent, stand like open graves as evidence of the horrors
of the war. In some places, armies that were fighting on
the Day of Mourning became stone statues anchored in
position. Others were crystallized or reduced to ash.
On the Field of Ruins—around the Saerun Road in the
southwest part of the [[Mournland]], where allied forces
of [[Thrane]] and [[Breland]] battled an outnumbered Cyran
army on the Day of [[Mourning]]—the fallen soldiers are
preserved just as they fell, with no sign of rot or decay.
Thousands upon thousands of corpses lie scattered
across the field, facedown in the dirt or staring lifelessly
at the gray sky. Even seasoned bands of treasure hunters are loath to enter the Field of Ruins.
The Field of Ruins is the only known source of [[mournlode]], a newly-discovered ore that is particularly harmful against [[Mabar]]an [[undead]].
This layer is the [[Xoriat]] domain of [[Dyrrn]] the Corruptor. Purple fields
are bathed in ultraviolet light, and fluorescent sculptures shed eerie dim light. //Varr// farmers dance as they tend the fields, but what they cultivate are emotions; anyone walking through a field feels a powerful emotion (fear, sorrow, anger, guilt) washing over them. Each field has an outpost containing an [[elder brain]], with a bright line of thought transmitting the emotions to Dyrrn's tower at the heart of the layer.
Dyrrn's tower is made of glowing threads of pure thought
intertwined around a massive steel spinal column. This tower
is filled with the tools of fleshcrafting. There are pools of
blood and canals of amniotic fluid, massive pulsing organs
waiting for a purpose, and untended tendrils crawling across
the floor. Adventurers might find a chamber that contains half-formed clones of the adventurers themselves... or perhaps the
clones are completed, and consider the adventurers to be evil
[[doppelganger]]s.
The spire amplifies Dyrrn's telepathic abilities, letting it
sense all living creatures within the layer. Dyrrn specializes
in corruption, and it may challenge adventurers with mental
projections, such as people plucked from their memories, who
seek to turn them against their allies.
Fiends are [[immortal]] creatures of wickedness formed in the [[demiplane]]s of [[Khyber]], or in another plane such as [[Shavarath]], [[Fernia]], or [[Dal Quor]]. Fiends cannot be destroyed; unless they are bound, they will always reform some time later after being killed.
Included among their number are [[demon]]s, [[devil]]s, [[quori]], [[night hag]]s, [[rakshasa]]s, and the mighty [[overlord]]s, archfiends who ruled [[Eberron]] during the first age of the world.
In the early days of the [[Last War]], [[Cyre]] relied on House [[Phiarlan]] to gather
intelligence but knew that such an arrangement
with a [[dragonmarked house]] might not last. Over
the course of decades, Cyre began to develop its own spies, the agents of the Fifth Crown, who were trained to infiltrate enemy territory. In the wake of the [[Mourning]],
the fate of the Fifth Crown remains unknown. Most people assume the agency was obliterated with its headquarters, but there are conspiracy
theorists who say that agents of the Fifth Crown
have worked their way into secure positions
across the [[Five Nations]], and that they are simply
waiting for Prince [[Oargev|Oargev ir'Wynarn]] or another [[Cyran|Cyre]]
leader to devise an effective way to use them. Until then, they might be the neighbors, postal carriers, teachers, or even community leaders, biding the time until such time leadership activates these pocket splinter cells.
A figurine of wondrous power is a statuette of a beast small enough to fit in a pocket. If you speak the command word and throw the figurine to a point on the ground within 60 feet of you, the figurine becomes a living creature. If the space where the creature would appear is occupied by other creatures or objects, or if there isn't enough space for the creature, the figurine doesn't become a creature.
The creature is friendly to you and your companions. It understands your languages and obeys your spoken commands. If you issue no commands, the creature defends itself but takes no other actions.
The creature exists for 12 hours, after which it reverts to its figurine form. It reverts to a figurine early if it is incapacitated or if you speak the command word again while touching it. When the creature becomes a figurine again, its property can't be used again until 7 days have passed.
|!Figurine |!Living Creature |!Notes |
|Bronze Griffon |[[griffon]] |Can be ridden as a mount |
|Ebony Fly |giant horsefly |Can be ridden as a mount |
|Golden Lion |lion |Figurine usually comes in pairs |
|Ivory Goat |giant goat |Can be ridden as a mount |
|Marble Elephant |elephant |Can be ridden as a mount |
|Onyx Dog |mastiff |Can speak Common, has [[truesight]] |
|Serpentine Owl|[[giant owl]] |Can communicate telepathically |
|Silver Raven |raven |Can speak Common |
A final messenger is a tiny homunculus—a delicate winged
creature designed to facilitate communication between
[[warforged]] soldiers during the [[Last War]].
If you are a warforged, you can hold a final messenger and integrate it into your body. You can only have one messenger attached to your body at a time.
A final messenger holds four pieces of data, accessible only
to the warforged it is attached to:
* A destination for the messenger. This can be very specific (a particular apartment in [[Sharn]]) or more general (an open marketplace).
* A target individual. This could be a specific person or a category (“Any [[Karrnath]]i warforged”).
* A single image recorded through the eyes of a warforged attached to the messenger.
* A message of up to 25 words.
While the messenger is attached to you, you can take a moment
to review the data currently stored within the final messenger,
and if you choose, to change any or all of these data points. You
can release the final messenger, at which
point it flies to its destination by the most direct route possible.
Once it reaches the destination it seeks the target individual; if
no target has been set, it approaches the nearest [[warforged]].
If you are incapacitated while a final messenger is
attached to you, it immediately detaches and seeks out its target.
It retains its stored message, but replaces its stored image with
the last thing you saw before losing consciousness.
A final messenger is a tiny [[construct]] with darkvision and a flying speed of 15 mph. A messenger can only remain active for 8 hours after it detaches from a warforged body, after which time its energy dissipates and it falls unconscious. An unconscious messenger must spend at least an hour or two attached to a warforged, after which it regains its energy, as well as repairs any minor damages.
\define lingo-base() $:/language/Manager/
\define results-count() $(count)$ results
<div class="tc-manager-wrapper">
<div class="tc-manager-controls">
<div class="tc-manager-control">
<<lingo Controls/Search/Prompt>> <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>
</div>
<div class="tc-manager-control">
[[Creature Tier|creature tier]]:
<$vars tid="$:/config/Manager/CreatureTier", fld="tier", list="range[0,6]">
<$select tiddler=<<tid>> field="comparison" actions=<<comp-actions>>>
<option>≤</option>
<option>=</option>
<option>≥</option>
</$select>
<$select tiddler=<<tid>> field=<<fld>>>
<$list filter="[range[0,6]]" variable="cr">
<option value=<<cr>>><<cr>></option>
</$list>
</$select>
</$vars>
</div>
<div class="tc-manager-control">
Creature type: <$select tiddler="$:/config/Manager/CreatureType" default="">
<option value="">---</option>
<$list filter="[has[tier]tags[]category[creature]] -[category[creature]tagging[]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
Other tag: <$select tiddler="$:/config/Manager/CreatureTag" default="">
<option value="">---</option>
<$list filter="[category[creature]tag:strict{$:/config/Manager/CreatureType}tags[]!title{$:/config/Manager/CreatureType}] [{$:/config/Manager/CreatureTag}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
Exclude tag: <$select tiddler="$:/config/Manager/ExcludeCreatureTag" default="">
<option value="">---</option>
<$list filter="[category[creature]tag:strict{$:/config/Manager/CreatureType}tags[]!title{$:/config/Manager/CreatureType}] [{$:/config/Manager/ExcludeCreatureTag}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
<<lingo Controls/Sort/Prompt>> <$select tiddler="$:/config/Manager/CreatureSort" default="title">
<$list filter="title tier relevance" variable="field">
<option value=<<field>>><$text text=<<field>>/></option>
</$list>
</$select>
<$checkbox tiddler="$:/config/Manager/CreatureSortOrder" field="text" checked="reverse" unchecked="forward" default="forward">
<<lingo Controls/Order/Prompt>>
</$checkbox>
</div>
<div class="tc-manager-control">
<$button><<resetcreatures>>Reset All Fields</$button>
</div>
<div class="tc-manager-control" align="right">
<$list filter={{$:/config/Manager/LimitCreatures}} variable="count">
<<results-count>><br/>
<$checkbox tiddler= "$:/config/Manager/LimitCreatures" field="limit50" checked="[limit[50]]" unchecked="[has[title]]" default="[limit[50]]">
Limit display to 50 results?
</$checkbox>
</$list>
</div>
</div>
<div class="tc-manager-list">
<table class="manager-table">
<tr><th align="left" class="th-sticky">Creature</th><th align="center" width="60px" class="th-sticky">Tier</th><th align="left" width="300px" class="th-sticky">Tags</th></tr>
<$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}subfilter{$:/config/Manager/CreatureTier}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/CreatureType}tag:strict{$:/config/Manager/CreatureTag}!tag{$:/config/Manager/ExcludeCreatureTag}category[creature]sort[title]order{$:/config/Manager/CreatureSortOrder}sort{$:/config/Manager/CreatureSort}order{$:/config/Manager/CreatureSortOrder}subfilter{$:/config/Manager/LimitCreatures!!limit50}]">
<tr><td><$link/></td>
<td align="center">
<$text text={{!!tier}}/>
</td>
<td>
<$list filter="[is[current]tags[]sort[]butlast[]]">
<$link/>,
</$list>
<$list filter="[is[current]tags[]sort[]last[]]">
<$link/>
</$list>
</td>
</tr>
</$list>
</table>
<$reveal type="match" state="$:/config/Manager/LimitCreatures!!limit50" text="[limit[50]]">
<$button set="$:/config/Manager/LimitCreatures!!limit50" setTo="[has[title]]">Show All Results</$button>
</$reveal>
</div>
<style>
.tc-manager-list {border-style: none;}
</style>
\define lingo-base() $:/language/Manager/
\define rarity-tag() [rarity[$(rarity)$]]
\define results-count() $(count)$ results
See also the [[magic item]] page.
<div class="tc-manager-wrapper">
<div class="tc-manager-controls">
<div class="tc-manager-control">
<<lingo Controls/Search/Prompt>> <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>
</div>
<div class="tc-manager-control">
[[Rarity|rarity]]:
<$list filter="[range[6]]" variable="rarity">
<$checkbox tiddler="$:/config/Manager/Rarity" tag=<<rarity-tag>>> <$transclude tiddler="RarityNames" index=<<rarity>>/> </$checkbox>
</$list>
</div>
<div class="tc-manager-control">
<<lingo Controls/FilterByTag/Prompt>> <$select tiddler="$:/config/Manager/ObjectTag" default="">
<option value="">---</option>
<$list filter="[category[object]has[rarity]tags[]sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
Exclude tag: <$select tiddler="$:/config/Manager/ExcludeObjectTag" default="">
<option value="">---</option>
<$list filter="[category[object]has[rarity]tags[]sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
<<lingo Controls/Sort/Prompt>> <$select tiddler="$:/config/Manager/ObjectSort" default="title">
<$list filter="title rarity relevance" variable="field">
<option value=<<field>>><$text text=<<field>>/></option>
</$list>
</$select>
<$checkbox tiddler="$:/config/Manager/ObjectSortOrder" field="text" checked="reverse" unchecked="forward" default="forward">
<<lingo Controls/Order/Prompt>>
</$checkbox>
</div>
<div class="tc-manager-control">
<$button><<resetobjects>>Reset All Fields</$button>
</div>
<div class="tc-manager-control" align="right">
<$list filter={{$:/config/Manager/LimitObject}} variable="count">
<<results-count>><br/>
<$checkbox tiddler= "$:/config/Manager/LimitObject" field="limit50" checked="[limit[50]]" unchecked="[has[title]]" default="[limit[50]]">
Limit display to 50 results?
</$checkbox>
</$list>
</div>
</div>
<div class="tc-manager-list">
<table class="manager-table">
<tr><th align="left" class="th-sticky">Item</th><th align="left" width="100px" class="th-sticky">Rarity</th><th align="left" width="250px" class="th-sticky">Tags</th></tr>
<$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/ObjectTag}!tag{$:/config/Manager/ExcludeObjectTag}subfilter{$:/config/Manager/Rarity!!tags}category[object]sort[title]order{$:/config/Manager/ObjectSortOrder}sort{$:/config/Manager/ObjectSort}order{$:/config/Manager/ObjectSortOrder}subfilter{$:/config/Manager/LimitObject!!limit50}]">
<tr><td><$link/></td>
<td>
<$transclude tiddler="RarityNames" index={{!!rarity}}/>
</td>
<td>
<$list filter="[is[current]tags[]sort[]butlast[]]">
<$link/>,
</$list>
<$list filter="[is[current]tags[]sort[]last[]]">
<$link/>
</$list>
</td>
</tr>
</$list>
</table>
<$reveal type="match" state="$:/config/Manager/LimitObject!!limit50" text="[limit[50]]">
<$button set="$:/config/Manager/LimitObject!!limit50" setTo="[has[title]]">Show All Results</$button>
</$reveal>
</div>
<style>
.tc-manager-list {border-style: none;}
</style>
\define lingo-base() $:/language/Manager/
\define results-count() $(count)$ results
\define misc-cat() [category[$(cat)$]]
<div class="tc-manager-wrapper">
<div class="tc-manager-controls">
<div class="tc-manager-control">
<<lingo Controls/Search/Prompt>> <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>
</div>
<div class="tc-manager-control">
Category: <$select tiddler="$:/config/Manager/MiscCat" default="">
<option value="[has[category]!category[location]!category[object]!category[spell]!category[creature]!category[person]!category[entity]!category[organization]]">---</option>
<$list filter="[!category[location]!category[object]!category[spell]!category[creature]!category[person]!category[entity]!category[organization]each[category]get[category]sort[title]]" variable="cat">
<option value=<<misc-cat>>><$text text=<<cat>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
Filter by tag: <$select tiddler="$:/config/Manager/MiscTag" default="">
<option value="">---</option>
<$list filter="[has[category]subfilter{$:/config/Manager/MiscCat}tags[]] [{$:/config/Manager/MiscTag}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
Exclude tag: <$select tiddler="$:/config/Manager/ExcludeMiscTag" default="">
<option value="">---</option>
<$list filter="[has[category]subfilter{$:/config/Manager/MiscCat}tags[]] [{$:/config/Manager/ExcludeMiscTag}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
<<lingo Controls/Sort/Prompt>> <$select tiddler="$:/config/Manager/MiscSort" default="title">
<$list filter="title category relevance" variable="field">
<option value=<<field>>><$text text=<<field>>/></option>
</$list>
</$select>
<$checkbox tiddler="$:/config/Manager/MiscSortOrder" field="text" checked="reverse" unchecked="forward" default="forward">
<<lingo Controls/Order/Prompt>>
</$checkbox>
</div>
<div class="tc-manager-control">
<$button><<resetmisc>>Reset All Fields</$button>
</div>
<div class="tc-manager-control" align="right">
<$list filter={{$:/config/Manager/LimitMisc}} variable="count">
<<results-count>><br/>
<$checkbox tiddler= "$:/config/Manager/LimitMisc" field="limit50" checked="[limit[50]]" unchecked="[has[title]]" default="[limit[50]]">
Limit display to 50 results?
</$checkbox>
</$list>
</div>
</div>
<div class="tc-manager-list">
<table class="manager-table">
<tr><th align="left" class="th-sticky">Thing</th><th align="left" width="35%" class="th-sticky">Category</th><th align="left" width="35%" class="th-sticky">Tags</th></tr>
<$list filter="[all{$:/config/Manager/Show}has[category]subfilter{$:/config/Manager/MiscCat}!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/MiscTag}!tag{$:/config/Manager/ExcludeMiscTag}sort[title]order{$:/config/Manager/MiscOrder}sort{$:/config/Manager/MiscSort}order{$:/config/Manager/MiscOrder}subfilter{$:/config/Manager/LimitMisc!!limit50}]">
<tr><td>{{!!article}}<$link/></td>
<td>{{!!category}}</td>
<td>
<$list filter="[is[current]tags[]sort[]butlast[]]">
<$link/>,
</$list>
<$list filter="[is[current]tags[]sort[]last[]]">
<$link/>
</$list>
</td>
</tr>
</$list>
</table>
<$reveal type="match" state="$:/config/Manager/LimitMisc!!limit50" text="[limit[50]]">
<$button set="$:/config/Manager/LimitMisc!!limit50" setTo="[has[title]]">Show All Results</$button>
</$reveal>
</div>
<style>
.tc-manager-list {border-style: none;}
</style>
\define lingo-base() $:/language/Manager/
\define results-count() $(count)$ results
\define org-type() [tag:strict{$:/config/Manager/OrgType}!is[system]] [list{$:/config/Manager/OrgType}tagging[]category[organization]!is[system]]
<div class="tc-manager-wrapper">
<div class="tc-manager-controls">
<div class="tc-manager-control">
<<lingo Controls/Search/Prompt>> <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>
</div>
<div class="tc-manager-control">
Organization type: <$select tiddler="$:/config/Manager/OrgType" default="">
<option value="">---</option>
<$list filter="[tag[organization type]!has[draft.of]sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
Tag 1: <$select tiddler="$:/config/Manager/OrgTag" default="">
<option value="">---</option>
<$list filter="[category[organization]subfilter<org-type>tag:strict{$:/config/Manager/OrgTag2}!tag{$:/config/Manager/ExcludeOrgTag}tags[]!regexp<capitalized>!title{$:/config/Manager/OrgType}] [category[organization]subfilter<org-type>tag:strict{$:/config/Manager/OrgTag2}!tag{$:/config/Manager/ExcludeOrgTag}tags[]!regexp<capitalized>is[missing]] [{$:/config/Manager/OrgTag}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
Tag 2: <$select tiddler="$:/config/Manager/OrgTag2" default="">
<option value="">---</option>
<$list filter="[category[organization]subfilter<org-type>tag:strict{$:/config/Manager/OrgTag}!tag{$:/config/Manager/ExcludeOrgTag}tags[]regexp<capitalized>!title{$:/config/Manager/OrgType}] [category[organization]subfilter<org-type>tag:strict{$:/config/Manager/OrgTag}!tag{$:/config/Manager/ExcludeOrgTag}tags[]regexp<capitalized>is[missing]]
[{$:/config/Manager/OrgTag2}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
Exclude tag: <$select tiddler="$:/config/Manager/ExcludeOrgTag" default="">
<option value="">---</option>
<$list filter="[category[organization]subfilter<org-type>tag:strict{$:/config/Manager/OrgTag}tag:strict{$:/config/Manager/OrgTag2}tags[]!title{$:/config/Manager/OrgType}] [category[organization]subfilter<loc-type>tag:strict{$:/config/Manager/OrgTag}tag:strict{$:/config/Manager/OrgTag2}tags[]is[missing]][{$:/config/Manager/ExcludeOrgTag}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
<<lingo Controls/Sort/Prompt>> <$select tiddler="$:/config/Manager/OrgSort" default="title">
<$list filter="title relevance" variable="field">
<option value=<<field>>><$text text=<<field>>/></option>
</$list>
</$select>
<$checkbox tiddler="$:/config/Manager/OrgSortOrder" field="text" checked="reverse" unchecked="forward" default="forward">
<<lingo Controls/Order/Prompt>>
</$checkbox>
</div>
<div class="tc-manager-control">
<$button><<resetorgs>>Reset All Fields</$button>
</div>
<div class="tc-manager-control" align="right">
<$list filter={{$:/config/Manager/LimitOrg}} variable="count">
<<results-count>><br/>
<$checkbox tiddler= "$:/config/Manager/LimitOrg" field="limit50" checked="[limit[50]]" unchecked="[has[title]]" default="[limit[50]]">
Limit display to 50 results?
</$checkbox>
</$list>
</div>
</div>
<div class="tc-manager-list">
<table class="manager-table">
<tr><th align="left" class="th-sticky">Organization</th><th align="left" width="60%" class="th-sticky">Tags</th></tr>
<$list filter="[all{$:/config/Manager/Show}subfilter<org-type>category[organization]regexp<capitalized>!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/OrgTag}tag:strict{$:/config/Manager/OrgTag2}!tag{$:/config/Manager/ExcludeOrgTag}sort{$:/config/Manager/OrgSort}order{$:/config/Manager/OrgOrder}subfilter{$:/config/Manager/LimitOrg!!limit50}]">
<tr><td>{{!!article}}<$link/></td>
<td>
<$list filter="[is[current]tags[]sort[]butlast[]]">
<$link/>,
</$list>
<$list filter="[is[current]tags[]sort[]last[]]">
<$link/>
</$list>
</td>
</tr>
</$list>
</table>
<$reveal type="match" state="$:/config/Manager/LimitOrg!!limit50" text="[limit[50]]">
<$button set="$:/config/Manager/LimitOrg!!limit50" setTo="[has[title]]">Show All Results</$button>
</$reveal>
</div>
<style>
.tc-manager-list {border-style: none;}
</style>
\define lingo-base() $:/language/Manager/
\define results-count() $(count)$ results
<div class="tc-manager-wrapper">
<div class="tc-manager-controls">
<div class="tc-manager-control">
<<lingo Controls/Search/Prompt>> <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>
</div>
<div class="tc-manager-control">
Creature type: <$select tiddler="$:/config/Manager/PplEntType" default="">
<option value="">---</option>
<$list filter="[subfilter<ppl-ent>tags[]category[creature]] -[category[creature]tagging[]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
Other tag: <$select tiddler="$:/config/Manager/PplEntTag" default="">
<option value="">---</option>
<$list filter="[subfilter<ppl-ent>tag:strict{$:/config/Manager/PplEntType}tags[]!title{$:/config/Manager/PplEntType}] [{$:/config/Manager/PplEntTag}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
Exclude tag: <$select tiddler="$:/config/Manager/ExcludePplEntTag" default="">
<option value="">---</option>
<$list filter="[subfilter<ppl-ent>tag:strict{$:/config/Manager/PplEntType}tags[]!title{$:/config/Manager/PplEntType}] [{$:/config/Manager/ExcludePplEntTag}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
<<lingo Controls/Sort/Prompt>> <$select tiddler="$:/config/Manager/PplEntSort" default="title">
<$list filter="title relevance" variable="field">
<option value=<<field>>><$text text=<<field>>/></option>
</$list>
</$select>
<$checkbox tiddler="$:/config/Manager/PplEntSortOrder" field="text" checked="reverse" unchecked="forward" default="forward">
<<lingo Controls/Order/Prompt>>
</$checkbox>
</div>
<div class="tc-manager-control">
<$button><<resetpplents>>Reset All Fields</$button>
</div>
<div class="tc-manager-control" align="right">
<$list filter={{$:/config/Manager/LimitPplEnt}} variable="count">
<<results-count>><br/>
<$checkbox tiddler= "$:/config/Manager/LimitPplEnt" field="limit50" checked="[limit[50]]" unchecked="[has[title]]" default="[limit[50]]">
Limit display to 50 results?
</$checkbox>
</$list>
</div>
</div>
<div class="tc-manager-list">
<table class="manager-table">
<tr><th align="left" class="th-sticky">Person/Entity</th><th align="left" width="60%" class="th-sticky">Tags</th></tr>
<$list filter="[all{$:/config/Manager/Show}subfilter<ppl-ent>!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/PplEntType}tag:strict{$:/config/Manager/PplEntTag}!tag{$:/config/Manager/ExcludePplEntTag}sort{$:/config/Manager/PplEntSort}order{$:/config/Manager/PplEntOrder}subfilter{$:/config/Manager/LimitPplEnt!!limit50}]">
<tr><td>{{!!article}}<$link/></td>
<td>
<$list filter="[is[current]tags[]sort[]butlast[]]">
<$link/>,
</$list>
<$list filter="[is[current]tags[]sort[]last[]]">
<$link/>
</$list>
</td>
</tr>
</$list>
</table>
<$reveal type="match" state="$:/config/Manager/LimitPplEnt!!limit50" text="[limit[50]]">
<$button set="$:/config/Manager/LimitPplEnt!!limit50" setTo="[has[title]]">Show All Results</$button>
</$reveal>
</div>
<style>
.tc-manager-list {border-style: none;}
</style>
\define lingo-base() $:/language/Manager/
\define results-count() $(count)$ results
\define loc-type() [tag:strict{$:/config/Manager/LocationType}!is[system]] [list{$:/config/Manager/LocationType}tagging[]category[location]!is[system]]
See also <$button class="tc-btn-invisible tc-tiddlylink"><$action-setfield $tiddler="$:/state/tab/sidebar--595412856" text="Map"/>Map</$button>.
<div class="tc-manager-wrapper">
<div class="tc-manager-controls">
<div class="tc-manager-control">
<<lingo Controls/Search/Prompt>> <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>
</div>
<div class="tc-manager-control">
Location type: <$select tiddler="$:/config/Manager/LocationType" default="">
<option value="">---</option>
<$list filter="[tag[location type]sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
Tag 1: <$select tiddler="$:/config/Manager/LocationTag" default="">
<option value="">---</option>
<$list filter="[category[location]subfilter<loc-type>tag:strict{$:/config/Manager/LocationTag2}!tag{$:/config/Manager/ExcludeLocationTag}tags[]!regexp<capitalized>!title{$:/config/Manager/LocationType}] [category[location]subfilter<loc-type>tag:strict{$:/config/Manager/LocationTag2}!tag{$:/config/Manager/ExcludeLocationTag}tags[]!regexp<capitalized>is[missing]] [{$:/config/Manager/LocationTag}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
Tag 2: <$select tiddler="$:/config/Manager/LocationTag2" default="">
<option value="">---</option>
<$list filter="[category[location]subfilter<loc-type>tag:strict{$:/config/Manager/LocationTag}!tag{$:/config/Manager/ExcludeLocationTag}tags[]regexp<capitalized>!title{$:/config/Manager/LocationType}] [category[location]subfilter<loc-type>tag:strict{$:/config/Manager/LocationTag}!tag{$:/config/Manager/ExcludeLocationTag}tags[]regexp<capitalized>is[missing]]
[{$:/config/Manager/LocationTag2}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
Exclude tag: <$select tiddler="$:/config/Manager/ExcludeLocationTag" default="">
<option value="">---</option>
<$list filter="[category[location]subfilter<loc-type>tag:strict{$:/config/Manager/LocationTag}tag:strict{$:/config/Manager/LocationTag2}tags[]!title{$:/config/Manager/LocationType}] [category[location]subfilter<loc-type>tag:strict{$:/config/Manager/LocationTag}tag:strict{$:/config/Manager/LocationTag2}tags[]is[missing]][{$:/config/Manager/ExcludeLocationTag}!is[blank]] +[sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
<<lingo Controls/Sort/Prompt>> <$select tiddler="$:/config/Manager/LocationSort" default="title">
<$list filter="title relevance" variable="field">
<option value=<<field>>><$text text=<<field>>/></option>
</$list>
</$select>
<$checkbox tiddler="$:/config/Manager/LocationSortOrder" field="text" checked="reverse" unchecked="forward" default="forward">
<<lingo Controls/Order/Prompt>>
</$checkbox>
</div>
<div class="tc-manager-control">
<$button><<resetplaces>>Reset All Fields</$button>
</div>
<div class="tc-manager-control" align="right">
<$list filter={{$:/config/Manager/LimitLocations}} variable="count">
<<results-count>><br/>
<$checkbox tiddler= "$:/config/Manager/LimitLocations" field="limit50" checked="[limit[50]]" unchecked="[has[title]]" default="[limit[50]]">
Limit display to 50 results?
</$checkbox>
</$list>
</div>
</div>
<div class="tc-manager-list">
<table class="manager-table">
<tr><th align="left" class="th-sticky">Location</th><th align="left" width="60%" class="th-sticky">Tags</th></tr>
<$list filter="[all{$:/config/Manager/Show}subfilter<loc-type>category[location]!is[system]regexp<capitalized>!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/LocationTag}tag:strict{$:/config/Manager/LocationTag2}!tag{$:/config/Manager/ExcludeLocationTag}sort{$:/config/Manager/LocationSort}order{$:/config/Manager/LocationOrder}subfilter{$:/config/Manager/LimitLocations!!limit50}]">
<tr><td>{{!!article}}<$link/></td>
<td>
<$list filter="[is[current]tags[]sort[]butlast[]]">
<$link/>,
</$list>
<$list filter="[is[current]tags[]sort[]last[]]">
<$link/>
</$list>
</td>
</tr>
</$list>
</table>
<$reveal type="match" state="$:/config/Manager/LimitLocations!!limit50" text="[limit[50]]">
<$button set="$:/config/Manager/LimitLocations!!limit50" setTo="[has[title]]">Show All Results</$button>
</$reveal>
</div>
<style>
.tc-manager-list {border-style: none;}
</style>
\define lingo-base() $:/language/Manager/
\define tier-tag() [tier[$(tier)$]]
\define results-count() $(count)$ results
See also the main [[spell]] page.
<div class="tc-manager-wrapper">
<div class="tc-manager-controls">
<div class="tc-manager-control">
<<lingo Controls/Search/Prompt>> <$edit-text tiddler="$:/config/Manager/Filter" tag="input" default="" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>
</div>
<div class="tc-manager-control">
[[Spell Tier|spell tier]]:
<$list filter="[range[5]]" variable="tier">
<$checkbox tiddler="$:/config/Manager/SpellTier" tag=<<tier-tag>>> <$transclude tiddler="SpellTierNames" index=<<tier>>/> </$checkbox>
</$list>
</div>
<div class="tc-manager-control">
<<lingo Controls/FilterByTag/Prompt>> <$select tiddler="$:/config/Manager/SpellTag" default="">
<option value="">---</option>
<$list filter="[category[spell]tags[]sort[title]]" variable="tag">
<option value=<<tag>>><$text text=<<tag>>/></option>
</$list>
</$select>
</div>
<div class="tc-manager-control">
<<lingo Controls/Sort/Prompt>> <$select tiddler="$:/config/Manager/SpellSort" default="title">
<$list filter="title tier relevance" variable="field">
<option value=<<field>>><$text text=<<field>>/></option>
</$list>
</$select>
<$checkbox tiddler="$:/config/Manager/SpellSortOrder" field="text" checked="reverse" unchecked="forward" default="forward">
<<lingo Controls/Order/Prompt>>
</$checkbox>
</div>
<div class="tc-manager-control">
<$button><<resetspells>>Reset All Fields</$button>
</div>
<div class="tc-manager-control" align="right">
<$list filter={{$:/config/Manager/LimitSpells}} variable="count">
<<results-count>><br/>
<$checkbox tiddler= "$:/config/Manager/LimitSpells" field="limit50" checked="[limit[50]]" unchecked="[has[title]]" default="[limit[50]]">
Limit display to 50 results?
</$checkbox>
</$list>
</div>
</div>
<div class="tc-manager-list">
<table class="manager-table">
<tr><th align="left" class="th-sticky">Spell</th><th align="left" width="100px" class="th-sticky">Spell Tier</th><th align="left" width="250px" class="th-sticky">Tags</th></tr>
<$list filter="[all{$:/config/Manager/Show}!is{$:/config/Manager/System}!has[draft.of]search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/SpellTag}subfilter{$:/config/Manager/SpellTier!!tags}category[spell]sort[title]order{$:/config/Manager/SpellSortOrder}sort{$:/config/Manager/SpellSort}order{$:/config/Manager/SpellSortOrder}subfilter{$:/config/Manager/LimitSpells!!limit50}]">
<tr><td><$link/></td>
<td>
<$transclude tiddler="SpellTierNames" index={{!!tier}}/>
</td>
<td>
<$list filter="[is[current]tags[]sort[]butlast[]]">
<$link/>,
</$list>
<$list filter="[is[current]tags[]sort[]last[]]">
<$link/>
</$list>
</td>
</tr>
</$list>
</table>
<$reveal type="match" state="$:/config/Manager/LimitSpells!!limit50" text="[limit[50]]">
<$button set="$:/config/Manager/LimitSpells!!limit50" setTo="[has[title]]">Show All Results</$button>
</$reveal>
</div>
<style>
.tc-manager-list {border-style: none;}
</style>
<div style="font-family: 'masoch-dirach'; font-variant: small-caps; font-weight:500;font-size: 1.7em;">{{$:/state/tab-1473298955}}</div>
<<tabs "[[Find Items]] [[Find Spells]] [[Find Creatures]] [[Find People/Entities]] [[Find Organizations]] [[Find Places]] [[Find Miscellaneous]]" "[[Find Items]]">>
The lenses of these garish goggles are carved from Siberys [[dragonshard]]s. While wearing these lenses, a creature with the [[Mark of Finding]] can examine an object to identify the aura of the last creature that touched it. If successful, the wearer can learn the creature's type and can see the creature's aura through any physical barriers up to 1,000 feet away from the wearer. This property can't be used again until the next dawn.
The Finders Guild of House [[Tharashk]] oversees a
range of different services. The most lucrative of these
is the prospecting division. In addition to locating
[[dragonshard]]s and other precious resources, the guild
undertakes more mundane tasks, such as helping
villages find sources of water or helping archaeologists locate relics. The guild has even worked with
[[Riedra]]ns in [[Xen'drik]], finding the crystals that the
Riedrans use in their architecture.
The Finders Guild also dominates the urban [[inquisitive]] trade, providing a wide range of investigative services. Its primary competition in this field is House [[Medani]], but whereas Medani provides counter-espionage to wealthy clients, the Finders Guild makes
its services available to the common folk.
Finally, the Finders Guild trains and licenses bounty hunters—both those who hunt fugitives (and who must compete with the [[Sentinel Marshals]] of House [[Deneith]]) and those
who eliminate dangerous monsters.
The spellcaster hurls a mote of fire at a creature or object within 120 feet.
Fire [[giant]]s are broader and stronger than some of their taller kin, resembling huge [[dwarves|dwarf]] with fiery orange hair and beards and soot- or ash-colored skin. They are known among the giants as the most talented crafters of metal and [[magic item]]s, and are thought to be descendents of the mighty [[Sulat League]]. Average height: 18 ft.
Soldiers of this division of the [[Harmonious Shield]] of [[Riedra]] are often used in raids
on [[Adar]], when speed and the ability to hit hard and fast are vital. These highly mobile and versatile troops are often equipped with chain shirts, shortbows, and greatswords.
A bright streak flashes from your pointing finger to a point you choose within 150 feet and then blossoms with a low roar into an explosion of flame. Each creature in a 20-foot-radius sphere centered on that point must dodge from the flames or be scorched. The fire spreads around corners.
This spell can be upgraded to legendary-tier for an even more destructive effect.
''District Type:'' Red light district<br/>
''Buildings:'' Temple ([[Olladra]]), average lodging (9),
poor lodging (70), average food (20), poor food (80),
poor trades (80), poor services—brothels, gambling
halls, pawnshops, etc. (140)<br/>
''First Impression:'' Noisy crowds fi ll taverns, casinos, and bordellos, the sound of laughter spilling
out onto the dark streets. A great deal seems to be
going on that appears illegal, but everyone seems to
be having a good time.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Torchfire]] (north); [[Center Bridge]] (northwest); [[Dragoneyes]] (bridge, southeast); [[Black Arch]] (bridge, south); [[Little Plains]] (above)
The Firelight district caters to clients seeking
entertainment of an intimate nature, as well as
hardcore and casual gamblers. While Sharn's other
red-light districts, [[Sharn's Welcome]] and [[Dragoneyes]], are dangerous and disreputable places most
respectable citizens wouldn't dream of visiting,
Firelight has somehow managed to maintain a
reputation as a socially acceptable place to come and
have fun, whatever type of fun one might be interested in having. Crime is much better controlled in Firelight than in the other red-light districts,
so customers are less likely to become victims.
[[Changelings|changeling]] control most of the bordellos here, as
they do in [[Dragoneyes]], but they employ members
of almost all races.
!! Noteworthy Locations
* The [[Burning Ring]]. This illegal fight club where spectators bet on amateur gladiators moves around [[Lower Menthis]], but is most often found somewhere in [[Firelight]].
* The [[Lucky Nines]]. A casino which employs a great deal of magic in the entertainment and operation of the business.
* [[Savia's]]. The most elegant bordello in Firelight, Savia's is owned by [[city councilor|Sharn Council]] [[Savia Potellas]].
These rare plants grow only in [[Xen'drik]] on the
burning plains tied to [[Fernia]], but gourmands across
[[Khorvaire]] covet them for their exquisite flavor and
strength. A single firepepper can command up to 1c
in the markets of [[Sharn]].
Similar in principle to an [[elemental]] [[airship]], a firesled is a
small flying vessel used by the [[Sulatar]] of [[Xen'drik]].
A firesled is a slender, 9-foot-long sled
of [[darkwood]] inlaid with [[firebrass|orichalcum]]. A ring of fire wraps around the stern. A
short staff set just before the ring is attached to a movable mount that allows it to be aimed in any upward or lateral direction. The staff can also be used to fire a [[scorching ray]]. The pilot lies prone, stretched out along the sled. A second passenger can stand in front of the ring, bracing against the mounted staff.
A firesled is controlled by the thoughts of the pilot. A [[Sulatar]] can control the sled without difficulty; other characters must enforce their control over the [[elemental]]-enhanced sled as if controlling any other [[elemental vessel]]. The sled can travel through the air at a speed of 25 mph with good maneuverability.
House [[Orien]]’s First Step [[magewright]]s are the foremost experts on teleportation in the [[Five Nations]]. They developed the latest innovations in [[teleportation circle]]s, and
most teleportation circles in [[Khorvaire]] are [[Orien]]’s. However, teleportation is still a fledgling science, and many people are nervous about using it; a ride on a [[lightning rail]] or a [[Lyrandar]] elemental [[airship]] might take longer, but it is seen as safer.
[[Jaunt]] is an [[eladrin]] [[wizard]] and leading teleportation researcher in the [[First Step]] program.
A layer of plains and low hills, this region is permanently lashed
by hurricane winds and endless storms. Beasts huddle in caves
and the limited shelter, while all manner of [[elemental]]s clash
in the storm-lashed plains. A massive [[elder tempest]] drives
the heart of the storm; during the Sundering of [[Sarlona]], an
apocalyptic cult in [[Ohr Kaluun]] sought to bring this elemental to
Eberron, believing it would destroy the world.
At first glance, First Tower
doesn’t appear to deserve a mention alongside such massive
population centers as [[Sharn]] and [[Wroat]]. If a settlement
were judged solely on the number of permanent residents (just over 300),
then the place might not even appear on a [[Brelish|Breland]] map.
As the gateway to Sharn from the northern land passages,
however, First Tower earns prominence and notoriety
befitting the number of travelers who regularly pass
through its humble environs.
The town grew up around a single stone tower,
maybe thirty feet high, that legends claim was the first
tower built in the greater [[Sharn]] region. Long before
any of Sharn’s massive structures climbed into the sky,
the people of First Tower believe, the stones of their
ancient spire were stacked one atop the other. Historians dispute this legend, because the tower and the ramshackle inn that has been built around it are clearly
not as old as the ancient [[goblinoid]] foundations upon
which Sharn grew. The people of First Tower nod, smile
politely, and leave the scholars to their delusions, for
they know in their hearts that they live in an historic
and significant location.
Regardless of the accuracy of the place’s history, First
Tower serves an important role in the cycle of life around
[[Sharn]]. Those traveling to or from Sharn by land, whether
walking, riding, or as passengers in a caravan or lightning
rail, have only one route they can take. This route cuts
through the crags and cliffs upon which Sharn sits, slices
north, and passes through the settlement of First Tower. Whether coming from or going to Sharn, if you travel by
land you must pass through First Tower.
All the residents of First Tower earn a living by catering to the travelers moving through the settlement. The inn employs most of them, for travelers need to eat, drink,
relax, and have a place to stay while waiting for the next
outbound caravan or for their papers to clear so they can
enter the City of Towers.
The [[lightning rail]] station, the caravan stables, a general store, and the crown’s checkpoint make up the rest of
the town, as well as a scattering of houses where the locals
live. Royal clerks stationed at the checkpoint examine the
identification and traveling papers of everyone seeking to
travel to [[Sharn]] proper. The checkpoint maintains a small
garrison that enforces order in First Tower and keeps the
place safe from bandits and marauders who sometimes slip
out of the [[King's Forest]].
This active volcano in the southern [[Ironroot Mountains]] is a sacred site to followers
of the [[Sovereign Host]], particularly those who worship [[Onatar]], the god of forge and fire. It is said that Onatar dwells within the volcano, and that his divine
forge provides its unearthly heat. A strong source
of magical power lurks deep within the rumbling
mountain—thought by some to be an incredible cache
of [[dragonshard]]s whose worth would be greater than
all the other wealth of the [[Holds|Mror Holds]] combined.
The Fists of Dal Quor are a [[kalashtar]] [[monk]] combat order drawing
supernatural power from the [[Region of Dreams|Dal Quor]]. These powerful [[psionic|psionics]] martial artists manifest physical projections of their "astral self", or their [[quori]] inhabitant, into the Material Plane. Fists of Dal Quor among the [[Haztaratain]] or [[Tashalatora]] monks of [[Adar]] can be seen striking with extra pairs of spectral arms or the luminous visage of a [[quori]] surrounding them.
The {{!!title}} is a street gang of
[[changeling]] pickpockets who work
[[Middle Menthis]], [[Sharn]].
In the modern age, the greatest power was the kingdom of [[Galifar]], which covered most of the continent
of [[Khorvaire]]. The Five Nations—[[Aundair]], [[Breland]],
[[Karrnath]], [[Thrane]], and [[Cyre]]—formed the heart of the
kingdom. Although each has a unique cultural identity,
they share this unified foundation. Families are spread
across the Five Nations; the rulers of the Five Nations
descend from the [[Wynarns|Wynarn family]], the royal bloodline of Galifar. Despite their differences, an Aundairian has more
in common with a Thrane than with a [[Zil|Zilargo]] [[gnome]] or a
[[Lhazaar|Lhazaar Principalities]] pirate.
A century ago Galifar collapsed into civil war, and the
Five Nations became separate countries at odds with
their neighbors. The [[Last War]] came to an end after Cyre
was destroyed in a cataclysm known as the [[Mourning]].
The Five Nations remain divided today, sharing Khorvaire with the new nations established by the [[Treaty of Thronehold]]. The remaining Five Nations remain the
largest and most powerful countries in Khorvaire.
The term "Five Nations" even predates the founding of [[Galifar]], however. The five pre-Galifar nations of [[Daskara]], [[Korth]], [[Metrol]], [[Thaliost]], and [[Wroat]], were well established in Khorvaire by about [[2500 years ago|Modern Age]].
!! The Treaty of Thronehold
The [[Treaty of Thronehold]] officially ended the [[Last War]].
The treaty recognized the following nations as sovereign states: [[Aundair]], [[Breland]], [[Darguun]], the [[Eldeen Reaches]], [[Karrnath]], the [[Lhazaar Principalities]], the [[Mror Holds]], [[Q'barra]], the [[Talenta Plains]], [[Thrane]], [[Valenar]], and
[[Zilargo]]. These nations abide by a common set of laws
and maintain diplomatic relations. The [[Demon Wastes]]
and [[Shadow Marches]] regions have no unified government. [[Droaam]] has declared itself a nation but has yet to
be recognized by the treaty nations.
This tag indicates a [[magic item]] or other object that is installed in place, as opposed to a portable, personal item.
<<list-links-article "[tag{!!title}sort[title]]">>
''Sovereign:'' [[Onatar]]
Many people think of [[dragon]]s as lazy creatures sleeping atop hoards of stolen treasure. But industrious innovators exist among the dragons of Eberron. Using [[disintegrate]], [[fabricate]], and the pure power of dragonfire, flames of the forge have crafted many wonders and mighty artifacts. From the [[Pit of Five Sorrows]] to the [[Great Aerie]] of [[Argonnessen]], the work of the forge wyrms can be seen across the continent.
Many flames of the forge rely on [[construct]] assistants or nondragon companions. However, some of the most brilliant forge wyrms work in absolute solitude, using magic to accomplish their work.
By speaking this magic sword's command word, you can cause flames to erupt from the blade. While the sword is ablaze, it deals additional fire damage to any target it hits. The flames last until you speak the command word again or until you drop or sheathe the sword.
The Flamebrow Clan guards an [[Age of Demons]] ruin in the [[Q'barra]]n jungle, a mere 50 miles from the city of [[Newthrone]]. High Elder [[Bhisma Na'kala Flamebrow]], ruler of [[Ka'rhashan]], hails from this clan.
{{dragonborn clanhold}}
Built where the divine battle between the [[paladin]]
[[Tira Miron]] and the abomination of darkness and
shadow was fought, Flamekeep began as a small
temple built around the purified fire. In time, a
cathedral replaced the temple, and the church’s
evolution from cult to religion brought people from
all over the realm until a city took shape. The city
bears the signs of its devotion in all things—icons,
flame imagery, and stone placards bearing sacred
texts adorn nearly every surface. Architects were
commissioned to use light and soaring construction
to capture the nation’s devotion to the [[Silver Flame]],
giving the city its distinctive look.
The spiritual heart and capital of [[Thrane]], Flamekeep is
a massive fortress city. Pilgrims descend on the city from all over the
nation and beyond to behold its beauty, to enter the
[[Cathedral of the Silver Flame]], and, if they are lucky,
to catch a glimpse of the miraculous flames within.
Although the presence of the divine infuses the city,
with statues and imagery devoted to the church wherever space allows, the city is also a hotbed of intrigue. Influential religious officials, foreign emissaries, and
others meet to negotiate secret alliances and make
backroom deals to advance their agendas and grow
their power. Flamekeep is also home to [[Thalingard]], the ancestral palace of the rulers of Thrane and current residence of Queen [[Diani ir'Wynarn]].
Most of the city rises from a tiered pedestal of land
surrounded by a deep channel. The waterway leads
all the way south from [[Scions Sound]], enabling ships
to sail in and dock at the low-lying western ports.
Three bridges span the water, to the north, east, and
south.
Only found in [[Thrane]], this metal is considered sacred by the Church of the [[Silver Flame]]. Weapons fashioned from flametouched iron are particularly devastating against [[undead]] and [[fiend]]s.
A [[sphinx]] with oracular powers came
back to [[Morgrave University]] with a [[Xen'drik]] expedition two years ago (asking to be taken to the "land of the [[fiend]]s", meaning [[Khorvaire]]), and took up residence there in [[Lareth Hall]]. In addition to her first-hand knowledge of Xen'drik, she
is one of the few non-[[dragon]]s to have made extensive
study of the [[Draconic Prophecy]]. She sometimes
sends adventurers on missions by uttering a cryptic
prophecy. "It is time for the Globe of Seven Lights to
be brought out of Xen'drik," she might say. She never
explains her proclamations, and never provides information on mundane affairs.
The [[Mockery]] is the lord of pain and vengeance, the deceiver who destroys. His [[monk]]s embrace suffering; through ritual torture, they overcome weakness of body and mind. As part of this training, a monk flays strips of their skin, treating the muscle below with an alchemical substance that toughens it. Once an initiate has learned to endure pain, they are taught to inflict it. The monks of the Flayed Hand are master torturers and deadly warriors. A monk of the Mockery seeks communion with her god through violence and treachery. Many members of the order sell their services as mercenaries and assassins. Others cause pain in more subtle ways by destroying hopes and dreams instead of spilling blood.
''Leader:'' [[Drifter]]<br/>
''Notable Members:'' [[Sear]], [[Tick]]<br/>
''Turf:'' [[Harbor]] district, [[Cross]], the [[Marketplace]], [[Locksmith Square]]<br/>
''Portfolio:'' Fraud, petty theft<br/>
''Tactics:'' Deception, stealth
Life is harsh on the streets of [[Stormreach]], and children grow up fast or not at all. A number of gangs of feral children prey on strangers to the city. In the shadows of the city, a ghost named [[Drifter]] watches the savage children and recruits the cream of this motley crop for his gang—a twisted family known as the Fleas.
The Fleas don’t claim territory. They move
around the city, focusing their attacks on newcomers
and travelers, relying on their youthful appearance to distract
and disorient foreign adults. A common ploy is for six
to eight children to surround a traveler, begging and
pleading for coppers or sweets; meanwhile, one of their number cuts the victim’s purse. If their guise is discovered, they scatter in all directions. Fleas also
run simple con games on gullible foreigners. They are
always looking for opportunities to scavenge or take
advantage of others. If a group of adventurers engages
in a battle in the streets, Fleas dart in and pluck loot
from fallen foes while the heroes are still engaged
in battle.
Even though they are children, the Fleas have
seen more horrors than most adults. They have a
maturity beyond their years, coupled with an innocent
cruelty. They feel no remorse for their actions, and
their only loyalty is to their adopted family. Because
of their skills, Fleas advance to join adult gangs once
they are old enough; as a result, other criminals
watch over the Fleas or pay the Fleas to serve as decoys
or lookouts.
The Fleas are typically homeless orphans. [[Drifter]]
helps them establish safe havens around the city,
hideouts they can slip into to escape pursuit. They
make full use of their small size, and many of these
holes are inaccessible to larger creatures. The gang
has three primary dens, located in the [[Sloths]], the
[[Harbor]] district, and [[Locksmith Square]]. At any given
time, the members of the gang are split between two
of these locations.
The level of skill displayed by the Fleas is remarkable for children, reflecting [[Drifter]]’s strict training regimen and the fact that he picks his recruits carefully.
<<list-links-article "[tag{!!title}sort[title]]">>
This spell creates a circular, horizontal plane of force, 3 feet in diameter and 1 inch thick, that floats 3 feet above the ground in an unoccupied space of your choice that you can see within 30 feet. The disk remains for up to 1 hour, and can hold up to 500 pounds. If more weight is placed on it, the spell ends, and everything on the disk falls to the ground.
The disk is immobile while you are within 20 feet of it. If you move more than 20 feet away from it, the disk follows you so that it remains within 20 feet of you. It can move across uneven terrain, up or down stairs, slopes and the like, but it can't cross an elevation change of 10 feet or more. For example, the disk can't move across a 10-foot-deep pit, nor could it leave such a pit if it was created at the bottom.
If you move more than 100 feet from the disk (typically because it can't move around an obstacle to follow you), the spell ends.
The ancestral seat of House [[Vadalis]] and
the largest of its ranches lies near the city of [[Varna]]
in the [[Eldeen Reaches]]. Foalswood has come under
attack by the [[Ashbound]] [[druid]]s on multiple occasions.
You create a 20-foot-radius sphere of fog centered on a point within 120 feet. The sphere spreads around corners, and its area is heavily obscured. It lasts for up to 1 hour or until a wind of moderate or greater speed (at least 10 miles per hour) disperses it.
If you are able to cast [[rare-tier|spell tier]] spells, you can cast this as such to increase the radius of the fog to up to 80 feet.
This object appears as a wooden box that measures 12 inches long, 6 inches wide, and 6 inches deep. It weighs 4 pounds and floats. It can be opened to store items inside. This item also has three command words.
One command word causes the box to unfold into a boat 10 feet long, 4 feet wide, and 2 feet deep. The boat has one pair of oars, an anchor, a mast, and a lateen sail. The boat can hold up to four human-sized creatures comfortably.
The second command word causes the box to unfold into a ship 24 feet long, 8 feet wide, and 6 feet deep. The ship has a deck, rowing seats, five sets of oars, a steering oar, an anchor, a deck cabin, and a mast with a square sail. The ship can hold fifteen human-sized creatures comfortably.
When the box becomes a vessel, its weight becomes that of a normal vessel its size, and anything that was stored in the box remains in the boat.
The third command word causes the folding boat to fold back into a box, provided that no creatures are aboard. Any objects in the vessel that can't fit inside the box remain outside the box as it folds. Any objects in the vessel that can fit inside the box do so.
This fine grey cloth, soft as silk, is folded up to the dimensions of a handkerchief. It unfolds into a circular sheet 3 feet in diameter. When unfolded, it activates the [[floating disk]] spell imbued within. The fabric circle then functions as the plane of force created by that spell, and lasts until you fold the disk or your attunement to this item is broken.
Folly is the [[barony]] of [[Fortune's Fool]]. Here, great misfortunes
regularly occur, but invariably lead to unlikely success. Folly contains
a charming village and a number of threats—a [[dragon]], a [[giant]]—
that can't be defeated with weapons alone. However, other actions can be used to achieve things that might seem impossible in reality. For example, one could convince the dragon to eat its own hoard. This is a place where wits are more important than brawn, though it
may take time for the adventurers to discover this.
The most hideous and wicked of all [[giantkind|giant]] are the fomorians, whose deformed bodies reflect their vile demeanors. Some have facial features randomly distributed around their misshapen, warty heads. Others have limbs of grossly different sizes and shapes, or emit terrible howls each time they draw breath through misshapen mouths.
The fomorians are native to the [[plane]] of story and song, [[Thelanis]], where they live in a brutal civilization maintained by enslaved [[fey]]. Some say that fomorians are sapient [[manifestation]]s of the plane, formed as a storybook reflection of the [[Cul'sir]] titans and their fabled assault on the [[feyspire]] [[Shae Tirias Tolai]] and subsequent subjugation of the [[elves|elf]]. This may explain the fomorians' wretched appearance and dependence on slaves, as these elements of the story are emphasized in elves' retellings of the events of the [[Age of Giants]].
<<list-links-article "[tag{!!title}sort[title]]">>
The spellcaster unleashes a bolt of mystical power at a creature or object within 180 feet. On a hit, the target feels an impact akin to being struck with a hammer.
The Forest of Lurking Shadows is a massive woodland in the north of the province of [[Nulakesh]] in [[Riedra]]. It holds several [[manifest zone]]s to [[Lamannia]], but it is also closely linked to the [[demiplane]] of [[Khyber]] known as the [[Abyssal Forest of Khaar]].
//There was a time when the world was the wood, when there were no towns or steel. The Forest Queen ruled the [[Endless Weald]], maintaining peace between people and beasts. But as ages passed, her children grew restless in the shade of her leaves. Her eldest son came to her and said, “Mother, I dream of war! I want to build a fortress and wield a blade of steel.” The Queen replied, “Then leave the wood, but do not bring your metal into my domain.” And so he left the wood and founded the kingdom of [[Karrnath]]. The next day the eldest daughter came before the Queen. “Mother, I dream of magic! I want to build a tower and conjure fire!” The Queen replied, “Then leave the wood, but do not cast your spells in my domain.” And so she left the wood and founded the kingdom of [[Thaliost]]. One by one, the Queen's children left her, until she was alone in the woods with the spirits and the beasts. And as each child raised a kingdom, the woods grew smaller and farther apart, and the heart of the Forest Queen grew bitter and cold. The people are her great-grandchildren, and she will not harm those who stay on the path and respect the beasts of the forest. But those who stray from the path, who conjure fire or hunt with steel, those fools will be lost in the Endless Weald and never again see the light of day.//
From the Towering Wood in the [[Eldeen Reaches]] to the
[[Harrowcrowns]] of [[Thrane]], from the [[Greenhaunt]] of [[Breland]]
to the [[Shadowmount Forest]] of [[Karrnath]], wherever people
dwell by the deep forest, they share stories of the Forest
Queen. She is the archdryad, linked to every root and bough.
She is proud, and when protecting her subjects, she can
be ruthless; but she shares many wonders with those who
enter her woods with empty hands and open eyes. The
story above is clearly apocryphal, but it's a common tale
with many variations, such as her children founding nearby
towns instead of nations. Regardless, the message is the
same: //there is a power that watches over the woods//. Stories
often depend on the character of the local forest; near the
[[Towering Woods|Eldeen Reaches]], the Forest Queen is often depicted as
benevolent, while near the [[Nightwood]] of [[Karrnath]], they talk
of how the betrayals of her children froze the heart of the
Forest Queen, leaving her cruel and hungry for revenge.
The Forest Queen rules the [[Endless Weald]] within [[Thelanis]], an arboreal realm
inhabited by [[dire beast]]s and wild [[fey]]. The Queen's influence can also be felt in any
forest in times when [[Eberron]] and [[Thelanis]] are coterminous.
Just like the stories, the Queen's personality often reflects the
forest where she's currently manifesting; the Forest Queen
is more likely to be benevolent in the [[Twilight Demesne]]
and cruel in the [[Nightwood]].
!! The Queen as Ally or Patron
The Forest Queen has close ties to the [[Greensingers]], and any Greensinger [[druid]] or ranger could have the Forest Queen as a patron. She's an option for
a [[warlock]], but the magic she teaches is primal in nature, not arcane. This doesn't change the spells available to the warlock; their spells simply draw on elemental
forces and the power of the [[fey]] rather than arcane formulas.
As a more exotic option, a character could have slipped into the [[Endless Weald]] as a
child and been raised in the court of the Forest Queen.
Regardless of origin, any character allied with the Forest
Queen is expected to follow her rules.
* Don't use weapons or armor of metal. ([[bronzewood]] is a suitable alternative)
* Don't kill a natural beast with magic or for sport.
* Protect those who travel on a marked path, unless they harm the forest with their actions.
* Help any [[fey]] of the forest who comes to you in need.
Beyond these basic principles, the Forest Queen's quests
typically relate to the woods in some way. An agent of the
Forest Queen could be tasked to reconsecrate a grove, to
destroy an infestation of [[aberration]]s or other unnatural
predators, or to prevent an ambitious [[dragonmarked house]]
from expanding into woodlands. Beyond the forest, an agent
could be tasked to recover a relic stolen from the [[Endless Weald]] (and once reclaimed, perhaps entrusted to carry this artifact on their adventures). Agents of the Forest Queen might be charged to act as envoys, negotiating with agents of other
[[archfey]] or dealing with the [[feyspire]]s. Or perhaps there's a
darkness in the Endless Weald, a canker that appeared when
the forests of [[Cyre]] were consumed by the [[Mourning]]. The
Forest Queen could task mortals to explore this region within
the Weald, or charge them to explore the [[Mournland]] and to
seek a cure for the wounded land.
!! The Queen as an Enemy
One could make an enemy of
the Queen by breaking one of her rules while in her woods,
or perhaps by killing one of her favored beasts or devoted
agents. Such a personal enmity could lead to a character
being targeted by natural threats—singled out by aggressive
beasts, led astray on journeys through wild regions, or
targeted by malicious [[sprite]]s. A character could also earn
her ire by taking one of her relics from a forest, perhaps not
knowing that the [[magic item]] is tied to the wood. On a larger
scale, the Forest Queen could grow tired of civilization
itself. The forests containing her [[manifest zone]]s could
expand, with [[fey]] and feral beasts attacking villages and
towns as they're overgrown. Could adventurers find a way
to placate the bitter Queen, or must they defeat her to end
this advance?
The Forge Maiden is a brilliant artisan. What she
invents depends on the story; she can be an [[alchemist]],
a smith, or even a [[wizard]] devising new [[spell]]s. She
often creates things that solve problems, but other
stories begin when she creates something that causes
a problem—a metal beast that ravages the land, or a
potion of immortality that doesn't grant eternal youth.
Depending on her depiction, she's also known as the
Mother of Invention.
Her [[barony]] is the [[Assembly]].
''Population:'' Predominantly [[human]], along with
most of the city’s [[warforged]].<br/>
''Character:'' No-nonsense and businesslike.<br/>
''Businesses:'' Mercenaries and smiths.<br/>
''Key Personalities:'' [[Greigur d'Deneith]] and [[Maru Sakhesh]].<br/>
''Overseer:'' Lady [[Paulo Omaren]].
//Forgelight isn’t quiet, not at all. The hammering of the smithies, the clash
of arms against shields and armor, the roar of the furnaces—these things
make the place a tempest of metallic noise.//
//It isn’t quiet, but the people are hushed. The people here don’t
waste words; they go about their business with a grim and admirable
efficiency of language and motion that infects the whole district
with seriousness.//
Forgelight is [[Stormreach]]’s most heavily rebuilt and reordered district, where evidence of the ancient city has to be sought out rather than being obvious. Each time the city has been resettled in past centuries, this district has been a starting point; it has clean water, stable ground, and newer structures.
These days, Forgelight is dominated by House
[[Deneith]]. The house’s numbers are modest, but its
employees are numerous. Martial skill is much prized in
[[Stormreach]] and [[Xen'drik]], so the house’s [[Defenders|Defenders Guild]] and
[[Blademarks Guild]]s do a booming business. Even a simple
club-swinger can make a tempting wage working in the
city or accompanying expeditions into the jungle.
Forgelight’s mercenaries fill in for the [[Stormreach Guard]] and protect shipments and explorers. Its forges and shops buy, sell, and repair the equipment used by
these mercenaries, as well as by adventurers. This district also houses the headquarters of the [[Iron Watch]]. But despite the militant populace, don't assume the streets are safe at night, lest you be the next target of the [[Skin Shucker]].
!! Noteworthy Locations
* the [[Anvilfire Inn]]
* House [[Deneith Enclave|Deneith Enclave (Stormreach)]]
* [[Dragon Tooth Arms]]
* [[Fare Trades]]
* the [[Foundry]]
* [[Hammersmith's Inn]]
* the [[Rusty Nail]]
* [[Stormreach Forge]]
* the [[Temple of the Sovereign Host]]
!! Adventure Hooks
* An independent mercenary company is presenting competition to the [[Blademarks|Blademarks Guild]] by undercutting their fees. House [[Deneith]] intends to eliminate this rival, an act that could result in open or covert violence. Adventurers could be caught in a brawl between the two groups or hired to help with a strike against one of them.
* A shipment of exotic metal destined for the Foundry has vanished beneath the waves, attacked by [[sahuagin]]. A reward is offered for the metal’s recovery.
* The [[tunnels|Undercity]] beneath Forgelight are particularly labyrinthine and deep. Regular work is available to those willing to sweep through the tunnels and sunken buildings, clearing out trouble.
!! Overheard in Forgelight
//“Up until two years ago, we would have stuck a blade in one
another on sight. Now we drink and share stories and laugh
and salute fallen comrades on all sides of the [[Last War]]. Yet
here we are, still fighting things. We can’t stop.”//
//“Wizards—phooey! Let me tell you about wizards. Cowards, the lot of ’em! Hidin’ behind spells, flouncin’ around in their robes like they own the place, actin’ like they’re better ’n us. I hate wizards, never done an honest day’s work in their lives. All that readin’, fillin’
their heads with junk. Never trust a man who reads! It ain’t natural. Now, buy a veteran a drink, eh?”//
//“If I point you out, come to the front, and you’ll be admitted through the gate to the docks for unloading. If you kick, punch, bite, or throw anything at any of the people being brought through, you’ll be escorted to the gates of Forgelight and thrown out. Clear?”//
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Orderly collections of townhouses
ring the towers of this quiet district. Children play
in the streets and couples stroll arm in arm.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Downstairs]] (south); [[Center Bridge]] (southeast); [[Fallen]] (bridge, southwest); the [[Stores]] (bridge, northwest); [[Granite Halls]] (bridge, north); [[Warden Towers]] (above)
Forgelight Towers mostly succeeds where [[Center Bridge]] fails in being a relatively quiet residential neighborhood amid the rowdy chaos of [[Lower Menthis]]. A number of older citizens live in Forgelight Towers, long-time homeowners who established
their residence here before the ward became quite
so seedy. Many of them are fond of complaining how
far downhill the neighborhood has gone; others are
more interested in sampling the wares in [[Downstairs]]
and [[Torchfire]].
//Once there was a prince of a grand kingdom, the youngest of eight sons. His brothers were celebrated as heroes of the realm, but whatever the youngest prince did, his deeds were never noticed; the shadows cast by his brothers were too long. Even when he saved the kingdom from a cruel dragon, the people assumed one of his brothers had done the deed. But in that dragon's lair, the prince discovered a strange sack. Reaching inside it, he found a toy he'd loved as a child and long forgotten about, a comb lost by his sister, and a map of a nation that no longer exists. Curious, he climbed into the sack and found a castle within it, filled with forgotten wonders. No one ever noticed he was gone, and no one remembers his name or his deeds. But the Forgotten Prince still dwells in his [[Castle of Lost Things]]. When you forget something you love, or when something you need is nowhere to be found, it's because the Forgotten Prince has taken it for his hoard.//
When a sock goes missing or a tool is misplaced, people
curse the Forgotten Prince for stealing it away. When
someone forgets what they were about to say, they might
remark “The Prince has taken my thought.” Needless
to say, his reach is not truly as wide as such stories
make out; but the Forgotten Prince and his minions do
indeed steal unappreciated things, both material items
and even ideas themselves, keeping them in the vaults
and library of his [[Castle of Lost Things]]. Often such thefts
are never noticed, but he might take things that are
quite valuable if he believes them to be unloved or
unappreciated by those who have them. Sometimes
this is done to teach a lesson, how the loss of a simple
and undervalued item or idea can have disastrous
consequences. Battles have been lost and cities fallen
because of the Prince's thefts—though often people
fail to appreciate the lesson, as they never recall
what was lost to begin with.
The Forgotten Prince dwells in the [[Castle of Lost Things]] in
[[Thelanis]]. His attendants are sly and cunning [[fey]], along with
mortals who were unappreciated in their mundane lives. Some
say that the [[kenku]] are servants of the Forgotten Prince who
fled from his service—that he stole their voices as punishment
for their betrayal, but that a kenku can earn it back with
clever deeds. True or not, the Prince has followers
scattered across [[Khorvaire]]—thieves who sacrifice
unloved objects and undervalued secrets to the Prince
in exchange for his guidance and gifts. Followers of the
Forgotten Prince rarely work together, but they can be
found in many positions of influence. There are [[elves|elf]] in
the Shadow Houses ([[Phiarlan]] and [[Thuranni]]) who receive visions from the Prince
when they trance, and [[changeling]]s among the [[Tyrants]] of
[[Sharn]] who engage in more subtle thefts on behalf of the
Prince, stealing hearts or faces. While his thefts often go
unnoticed by the greater world, the Forgotten Prince also
takes pleasure in seeing celebrated people whose reputations
are undeserved brought low, and his agents may act to expose
such poseurs. Adventurers could also be forced to deal with
the Prince if he has something they need—perhaps an artifact
or secret long forgotten, now sealed away in the vaults of his
dark castle.
!! The Prince as Ally or Patron
The Forgotten Prince may reach out to people who have themselves been forgotten or
unappreciated, provided he sees potential in them. Sometimes
he brings them to the [[Castle of Lost Things]]; in other cases, he
offers these agents purpose, rewarding them for their service
with gifts or secrets. The urchin background is an excellent
option for someone forgotten by the world but chosen by the
Prince, while the hermit background could reflect someone who
spent much of their life in the Castle of Lost Things, perhaps having discovered a long-forgotten secret or artifact they discovered in the Castle. The Forgotten Prince could be
an [[archfey]] patron for a [[warlock]], or a Hexblade warlock could
also receive their weapon as a gift from the Prince; what is the
forgotten history and destiny of this weapon? The Forgotten
Prince can also be an interesting patron for a [[bard]] of the College of Lore; the Prince values secrets no one else considers valuable, and the Cutting Words feature can be depicted as stealing opportunity from a foe—a trick taught by the Forgotten Prince. The Forgotten Prince could teach a rogue the talents of an [[arcane trickster]] or the skills of a thief, provided they are willing to use those skills on his behalf.
Missions issued by the Prince typically involve
the theft of an object or a secret. These things
may not be seen as valuable by the people that
possess them, and such a task could easily
be added on top of the mission for an existing
adventure—“While you're in [[Dreadhold]], steal the
ring under the warden's bed.” The Prince could
teach his agents a ten-minute ritual which allows
him to pull the requested item into [[Thelanis]]
(this only works with objects the Prince //wants//,
so it's not a way to dispose of just any item).
The Prince may also task agents with actions to
expose or bring down people whose reputations
are undeserved, or to assist those who are
unappreciated. Note that good and evil don't
enter into these judgments; the Prince could call
on agents to bring down someone who's using
their undeserved reputation for a good cause,
or to help an unappreciated serial killer!
!! The Prince as an Enemy
The simplest way for the Prince to enter a story is for one of his agents to steal something that the adventurers need, or to take actions that cripple an organization or patron that the characters work for. This ties to the
idea that the Prince may target someone
with an undeserved reputation even if they
are using it to do good; the adventurers
themselves could be targeted if they acquire
fame that the Prince considers unearned. Or the characters might discover they need something stolen long ago by the Prince—or an object they've recently acquired and
desperately need has gone missing, and no
one else seems to remember it. Characters
could also be set against the Prince by
another immortal patron; perhaps the
Prince has stolen one of the memories of
the [[Forest Queen]], and she wants it back.
A defining part of the Forgotten Prince's story is
that he himself has been forgotten.
Should a character somehow learn the
true name of the Forgotten Prince
during their adventures, they can gain
advantage on actions taken against him.
The Forsaken Forest is a small forest in the mainland [[Lhazaar Principalities]], near the town of [[Skairn]].
//“It is time for us to embrace peace. Let us sheathe our swords and let our dead finally rest.”//
<div align="right">—King [[Kaius ir'Wynarn III]], addressing the [[Thronehold]] Assembly</div>
Fort Bones lies far from the heart of [[Karrnath]]. No
[[lightning rail]] leads to this bleak citadel, and roads
shattered by war have yet to be repaired. The bones
of fallen enemies are fused to its walls, and skeletal
warriors keep silent vigil on the ramparts. As a show
of good faith and dedication to peace, Kaius III withdrew most of Karrnath's [[undead]] legions and sealed
them in the vaults below the city of [[Atur]]. Only a few
elite units remain in the service of the crown, scattered across the nation. Fort Bones is one of the only places where the dead outnumber the living. Here [[bone knight]]s lead fleshless cavalry
against [[Valenar]] raiders, while the [[Corpse Collectors]]
pioneer new forms of [[necromancy]] in preparation for
wars to come.
!! During the Last War
The citadel now known as Fort Bones was once
the seat of Gyrnar Shult, a priest of the [[Blood of Vol]]
and the reeve of the agricultural region of Odakyr. The [[Cyran|Cyre]] warlord Kaina ir'Durna claimed Gyrnar's keep
at the start of the [[Last War]]. The warlord
dismissed Gyrnar's warnings about the power of
the [[Mabar]] [[manifest zone]] surrounding the keep and the importance of his rites. Then, when Mabar entered a coterminous phase, its
dark power flowed out of the keep and leached the
life from the land. Across Odakyr, crops failed and
livestock withered. This event was just one among
those that led to the first crippling famine, but it was
one that could have been prevented.
When [[Kaius I|Kaius ir'Wynarn I]] embraced the aid of the [[Blood of Vol]], Gyrnar returned as commander of the newly fortified keep. He rechristened it Fort Bones, swearing that the bones of every Karrn that had fallen
would serve as a wall to protect those still alive. It
would be decades before actual bones would be
incorporated into the walls, but Gyrnar devoted
himself to improving the military applications of
[[necromancy]]. It was during this time that Gyrnar and the high priest [[Malevanor]]—then a living person—developed and perfected the [[Odakyr Rites]],
the ritual that produces the infamous [[Karrnathi undead]]. While [[Atur]] became the primary seat for
the production of undead, the power of the [[Mabar]]
[[manifest zone]] ensured that Fort Bones remained a
vital center for the development of undead and the
training of [[bone knight]]s.
Fort Bones weathered many sieges without falling, and no one expected the outright devastation that accompanied the Long Night in 990 YK. The finest [[druid]]s and [[wizard]]s of the [[Valenar]] joined together for the attack, shattering the fort's walls with earthquakes and storms. By the time relief arrived from [[Fort Zombie]], the fortress had been obliterated. The
new commander swore to rebuild the walls with the
bones of her enemies, and this was no idle threat.
Bones of humans and elves are embedded into the
pale stone and mortar of the restored fortress, and
they moan softly when enemies approach.
!! Fort Bones Today
Even within [[Karrnath]], many people despise the role
that the [[undead]] played in the war. [[Kaius I|Kaius ir'Wynarn I]] was forced
to use undead soldiers out of desperation, but many
of the warlords believe that his decision was a stain
on Karrnath's proud martial history—that [[Rekkenmark|Rekkenmark Academy]]'s finest could have found a way to overcome
the odds. Beyond this, heavy reliance on undead greatly increased the influence of the [[Blood of Vol]] across Karrnath, something that concerned [[Kaius III|Kaius ir'Wynarn III]] and Regent [[Moranna]]. The decision to seal the
legions below [[Atur]] and to cease the mass production
of undead in the City of Night was a vital move to
strengthen Kaius's position both within and beyond
Karrnath's borders. However, Kaius isn't willing to
let this power go. Fort Bones is far from Atur and the
public eye. The fortress serves as a vital watchtower
against [[Valenar]] incursion, but it is also the primary
research facility for the [[Corpse Collectors]], the royal
necromancers of Karrnath.
[[Alinda Dorn]] is the military commander of Fort Bones.
Fort Zombie is a fortress in [[Karrnath]] that was built to guard the border with [[Cyre]]. Today it stands thirty miles from the wall of [[dead-gray mists]] that cover the [[Mournland]]. Like [[Fort Bones]], Fort Zombie was the site of [[necromantic|necromancy]] research during the [[Last War]].
On the Day of [[Mourning]], [[warforged]] soldiers guarding Fort Zombie abandoned their posts and marched across the [[Cyre River]] to found the mysterious [[Becoming God]] cult.
<<list-links-article "[tag{!!title}sort[title]]">>
''Sovereign:'' [[Olladra]]
These [[dragon]]s prefer travel to solitude, and enjoy moving among other creatures, whether they are dealing with dragons or mingling with humanity. Many serve as spies within the [[humanoid]] nations, but others prefer the path of the [[bard]]. Some simply wander across [[Argonnessen]], enjoying the many wonders of their homeland.
The [[archfey]] known as Fortune's Fool is forever stumbling into a new disaster,
though miraculously she invariably emerges unscathed.
Her arrival usually bodes ill for those unfortunate enough
to be around her, though sometimes others can profit
from the chaos that follows in her wake. Her formal title
in the [[Moon Court]] is Lady Perilous, and her [[barony]] is [[Folly]].
''District Type:'' Apartment townhomes<br/>
''Buildings: ''Average residences (40), poor
residences (220)<br/>
''First Impression:'' This district is solid and unremarkable, filled with low-income housing for the
people who work the [[Cogs]] and the caravan districts
of [[Terminus]] and [[Wroann's Gate]].<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Fallen]] (northwest); [[Black Arch]] (east); [[Downstairs]] (bridge, north); [[Center Bridge]] (bridge, northeast); [[Mud Caves]] (below and south); [[Kenton]] (above)
Foundation is a simple residential area, home to
[[Cogs]] and caravan workers. It is a poor district, plain
and unremarkable, made from bare gray stone.
Often when people refer to the Foundry in [[Stormreach]], they mean
the foundry itself and the many forges that cluster on
the streets around it, including the [[Stormreach Forge]].
More metal is cast in the Foundry than anywhere else in the city, and the neighborhood’s metalworkers, weaponsmiths, and armorsmiths produce excellent
work. The bulk of the goods go to the [[Stormreach Guard]] and House [[Deneith]], but the Stormreach Forge also sells weapons to other buyers.
The Foundry is close to a small dock on the river,
owned by the [[Omaren family]] and heavily used by House
[[Deneith]]. It allows small ships to dock and load and
unload goods. The Foundry requires ore to feed its
hunger, and this comes from House [[Tharashk]]’s mining
operations outside the city. A few dockworkers land
highly desired jobs unloading ore and ingots. This work
is handed out by lottery every time a ship comes in.
The Four Sails restaurant is the
exception to the general rule of [[Downstairs]] that
drink comes first, food second. Known as one of
[[Sharn]]'s hidden dining treasures, regular patrons
of Four Sails claim that it has the best seafood in
Sharn. Located at the base of Seventh Tower, Four
Sails is owned by a [[Lhazaarite|Lhazaar Principalities]] named Ulfen Marcrot ([[human]]), who
certainly knows his seafood. Though he prefers not
to discuss his past with the tourists and slumming
upper-ward residents who come to Four Sails for
the dining experience, Ulfen has a colorful history
he does enjoy sharing with adventurers. Born and
raised a pirate in the [[Lhazaar Principalities]], he took
up an adventuring career later in life and has even
explored [[Argonnessen]]'s coast.
//"Big country, Syrkarn. Lot of places for someone to hide. Just not from me.//
Fraihna is the best tracker in the steppes of [[Syrkarn]]—hard to find and
expensive to hire, but well worth both effort and price.
A lifetime in the wild has burned his leathery skin to the
color of a Syrkarn sunset, and his distinctive shock of
bleached hair is often the first indication of his approach
across the plains. Fraihna roams at an easy pace between
the farmsteads of the [[Lamecha]] Lowlands and
the clanholds of the [[Marrah|Mae-Kree]]. Messages can be passed to
him through any of the veteran drovers of the trade roads,
and such are usually returned within the month.
It's possible that Fraihna (and his enhanced hunting hound, Creysaa) could be an adversary of the PCs, hired to track them for an enemy or rival group. The
[[eneko]] ranger cares more about survival and his reputation
than about the moral particulars of a given situation.
The Legion of Freedom reflects the ideal of war fought to end oppression. They rarely field large armies and instead use swift strikes and guerrilla war; these [[angel]]s
embody the idea of champions who fight impossible odds for a
noble cause, even if this forces them to follow ignoble paths.
[[Io'lokar]]’s lowest ward seems misnamed to many first-time visitors, since the people here are no freer than anywhere else in the city. However, the original translation from Draconic involves the concept of “freedom” from authority and power. The people of this ward are thus the lower castes—the mundane servants, laborers,
smiths, crafters, and clerks who keep the city going. Most visitors need this fact explained to them, however, because the Freeward bears more resemblance to
a noble’s enclave than any [[Khorvairian|Khorvaire]] working-class
borough. Buildings here are a riot of color and architectural styles, and the nighttime streets are alive with music and light.
Visitors to the city are initially welcome in the Freeward and nowhere else, but because the city sees few travelers, inns are nonexistent here. Most taverns feature
private dining rooms easily converted to short-term residences for the right barter price. Alternatively, PCs can seek lodging in private homes.
The wall gates that lead to the [[Terrace]] and higher wards are unguarded, and [[citizens|Io'lokari]] of [[Io'lokar]] move through the city at will. However, strangers are easily recognized, and will be stopped and questioned as to their business. Those not in the upper wards at the invitation of a resident are politely directed back to the Freeward. A second warning often finds characters deposited by force outside the city gate.
!! Noteworthy Locations
<<list-links-article "[tag{!!title}category[location]sort[title]]">>
Frigidus the Horrible, a [[white|white dragon]] [[rogue dragon]] in [[Khorvaire]], compensates for his unusually small stature with delusions of grandeur (and self-appointed titles). The sole offspring of a rogue dragon, Frigidus has never laid eyes on [[Argonnessen]] and would be shocked to learn that an entire continent of [[dragon]]s has never approached him to offer him tribute. Although good-natured, Frigidus flies into a rage when not treated with what he considers proper reverence.
When you hit with an attack using this magic sword, the target takes extra cold damage. In addition, while you hold the sword, you have resistance to fire.
In freezing temperatures, the blade sheds bright light in a 10-foot radius and dim light for an additional 10 feet.
When you draw this weapon, you can extinguish all nonmagical flames within 30 feet of you. This property can be used no more than once per hour.
Frost [[giant]]s have hair and beards that are pale white or light blue, matted with frost and clattering with icicles. Their flesh is as blue as glacial ice. They reside in [[Everice]], but the oldest among them dwell in the [[plane]] of [[Risia]]. Average height: 21 ft.
The Frostblades (not to be confused with the [[Paqaa Mountains]] in [[Sarlona]]) are a [[Seren]] tribe that was founded by a principled [[white dragon]]. While they ruthlessly defend the land from outsiders, they also seek to preserve weaker tribes from the depredations of more violent clans such as the [[Bringers of Fire]]. Frostblade dragonspeakers know the secret of [[alchemist's frost]] and sometimes use this as a weapon in battle.
At the world's poles—[[Everice]] to the south and the Frostfell to the north—you might...
* Discover an ancient civilization hidden beneath the ice.
* Search for the survivors of a lost expedition.
* Find the source of a mysterious mystical signal.
The Frostfell is thought to be the original homeland of
the [[dwarves|dwarf]], and some believe that an ancient nation of
dwarves still thrives under the ice. Others say that the
Frostfell was once a verdant realm until the dwarves
uncovered the prison of an [[archfiend|overlord]], which buried their
nation under endless ice. These scholars warn against
disturbing this overlord, lest a new age of ice be unleashed across the entire world.
Mystery shrouds the poles of [[Eberron]]. A few expeditions have ventured to the Frostfell, but no one from
[[Khorvaire]] has set foot in [[Everice]] in living memory and
returned to speak of it.
!! The Poles' Influence in Khorvaire
In [[Khorvaire]], you might...
* Clash with a cabal of winter [[warlock]]s serving a sinister power stirring in [[Everice]].
* Encounter a group of [[frost giant]]s or Frostfell dwarves establishing a foothold in Khorvaire.
* Discover a journal from a Frostfell expedition that reveals a horrifying threat.
The people of Khorvaire have no commerce with the
arctic regions and no certainty about what lives there. If
a threat comes from Frostfell, it might take time for people to identify its origin.
With this in mind, relics from Everice or the Frostfell
could take any form. Are these treasures created by [[giant]]s, [[fey]], or [[dwarves|dwarf]]? Are they carved from eternal ice,
or are they forged from dwarven steel? If the civilization
of the dwarves truly began in the Frostfell, did it fall
into ruin, or are there progenitor dwarves who possess
spells and weapons beyond anything known in [[Khorvaire]]? And how would these ancient dwarf lords react to
their [[Mror|Mror Holds]] descendants?
!!! Trinkets from the Frostfell and Everice
| !<<dr d8>> |!Trinket |
| 1 |A small prism carved from ice that doesn't melt |
| 2 |A rusted iron coin, depicting a dwarf lord and the worlds "Five Rex Undra" |
| 3 |A pair of eight-sided dice carved from ice that doesn't melt |
| 4 |A swatch of silvery fur that's cold to the touch, possibly from a winter wolf |
| 5 |A snowball; it doesn't melt and can't be compressed into ice |
| 6 |A tiny [[white dragon]] sculpted from ice that doesn't melt |
| 7 |A key carved from ice that doesn't melt |
| 8 |A single scale from a [[white dragon]] |
This city is the capital of Clans [[Toldorath and Tordannon]], located near the shores of [[Mirror Lake]]. Some of the finest healers in the [[Mror Holds]] historically came from this city, and even today, Frosthaven's [[Jorasco]] [[enclave]] is well-renowned for clinical research using local medicinal herbs and expertise.
This seemingly endless range of mountains, formed of solid
ice, is surrounded by a sea of dense mist in this [[layer]] of [[Risia]]. Perhaps land lies
somewhere far below, or the mountains might continue down
indefinitely into the darkness. Frostmantle is the primary
home of the [[frost giant]]s of Il'Ara, who have carved citadels
from the ice of the mountains. The three largest fortresses
are called Freehearth, Remorse, and Winter. Remorse holds
many [[giant]]s who have chosen to enter icy stasis out of
eternal boredom, while Winter is the abode of Il'Ara herself.
Numerous smaller keeps are spread across the peaks, the
abodes of individual giants. [[Yeti|yeti]]s and occasionally other cold-suited creatures native to [[Eberron]] can be found in cave dwellings throughout the mountains.
Clouds hide the sky above Frostmantle, but the light is steady
and unchanging; night never falls here. Travelers must deal
with the effects of high altitude as well as the lethal cold.
The southernmost peninsula and archipelago of [[Argonnessen]], the Frostspur is the domain of many flights of [[white dragon]]s. It separates the [[Dark Sea]] from the [[Sea of Lost Souls]].
The Frostwall Mountains in [[Dor Maleer]], [[Riedra]], stretch from the coast of the [[Sea of Rage]] to the [[Kelneluun]].
Imagine an ocean frozen in a single instant. There's no
sign of any shore, just waves caught mid-crest alongside
the frozen funnels of maelstroms. And scattered across the
realm, there are countless ships—vessels pulled from the
oceans of [[Eberron]] in moments when the moons were right
and [[Risia]] was coterminous. Some are shattered or wrecked,
caught halfway through the process of sinking. Others are
in perfect condition, frozen under the thinnest layer of ice.
Ships from throughout history can be found here, [[Lyrandar]]
[[elemental galleon]]s alongside massive ships built by the
ancient [[giant]]s of [[Xen'drik]]. There could be age-old survivors
here, sheltering in their trapped vessels, or a [[frost giant]]
might have raised a tower of ice above the frozen water.
But the spirits are strong here as well, preying on survivors
and pulling them down into the frozen depths.
It's always night on the Frozen Sea; the moon [[Dravago]] is
fixed in the cloudless sky, shedding dim light on the water.
The [[monk]]s of the Fulcrum meditate on the
balance of the [[plane]]s, contemplating the delicate
array of forces that underlie reality. The order
was founded in [[Zilargo]], and its roots are closely
tied to the [[elemental binding]] industry. The
masters of the Fulcrum believe that industrial
binding carries the risk of disrupting the
planar balance, and that the devotions of the
Fulcrum serve as a counterbalance and prevent
catastrophes.
Through their devotions, monks of the
Fulcrum learn to channel powerful [[elemental]]
forces. Rather than being part of the natural
world, these powers are drawn from the [[plane]]s,
and the energies of [[Fernia]], [[Risia]] and [[Lamannia]]
flow through the Fulcrum monk. Most members of the order use such energies in abstract ways, acting purely to maintain the balance of elemental energies within the world. Others focus on the martial potential of these powers, sheathing their fists in fire and skin in stone.
The Fulcrum isn’t a religious order, but its members are concerned with anything that could disrupt the balance of the [[plane]]s and are especially interested in solving the mystery of the [[Mourning]].
After rolling dice, if your highest die is a 6, it's a full success. Things go well. You accomplish what you set out to accomplish, either with no associated [[consequence]]s or with some added bonus.
Rolling two or more 6's is a ''critical success'', and grants you some additional bonus.
<<<
Side note: You can only roll a critical if you are rolling at a +2 or higher; if you are at zero or negative dice, and therefore are rolling two dice and taking the single lowest result, you don't get a critical if you roll two 6's.
<<<
The Fury is a silent whisper that can drive you to doubt or
despair. She is reckless rage and all-consuming passion.
Instinct is the voice of the Fury, guiding us when rational
thought fails. And she is the Sovereign of revenge, promising
vengeance to those willing to surrender to her. Her father
the [[Devourer]] embodies the devastating power of the storm
outside us; the Fury is the storm that rages within us, the
wild emotions we fight to control.
Devotees of the Fury generally follow one of two paths.
Revelers believe that suppressing emotion causes anguish,
and that people should embrace their emotions fully
and act on impulse and instinct. They hold wild, ecstatic
celebrations as a way for participants to throw off the
chains of civilization for a moment and experience
life and emotion fully. A player character who follows
this path might be a Berserker barbarian or a [[bard]]
using the College of Glamour—either embracing their own primal emotion or
inspiring it in others. A [[sorcerer]] might attribute their power to
wild emotion; they can only access their magic when they let
the Fury guide them.
The other path of the Fury is the road of revenge. People
who have suffered grievously can call on the Fury to give them
the will and strength to take vengeance into their own hands.
Or rather than seeking revenge themselves, one tradition calls
for someone who has been wronged to place a red candle in
a window, inscribed with the name of their tormentor. This is
an invitation for the Fury to take vengeance on their behalf.
A player character following this path could be charged to
investigate and fulfill these calls for revenge. While this could
be the path of a [[cleric]] or [[paladin]], it could just as easily suit an
assassin, a [[bard]] of the College of Whispers, or a [[warlock]].
The fury's symbols include a winged wyrm with woman's head and arms.
The local leader of [[Dannel's Wrath]] is a [[changeling]]
named Fury. He maintains multiple identities within
[[Dannel's Pride]], using a different face for every cell
he works with. Once an infamous [[Cyran|Cyre]] spy, Fury is
embittered by the loss of his family and is utterly ruthless; he believes that he is at war with every nation in the world. The [[Royal Eyes]] of [[Aundair]] and the [[King's Dark Lanterns]] both want to capture Fury so he can pay for his actions during the [[Last War]].
The Gaala River in [[Adar]] flows into the [[Jathara Sound]] near [[Kasshta Keep]].
Every rule has its exception, and
[[Torchfire]]'s reputation for lowbrow entertainment
is broken by Gailan's. The model of the restaurant
and dinner theater (copied extensively in [[Middle Menthis]] particularly) originated with the innovation of Gailan Uthran ([[half-orc]]),
who felt he could put on better shows if the audiences had something to do besides heckle the performers. His idea has clearly worked, and performing in
Gailan's is now the dream of every chorus member
in [[Ten Torches]]—the first step toward a successful
musical career.
By general consensus, one of
the finest restaurants in [[Sharn]] is Galdin's Garden.
An elegant setting for a fine meal situated at the top
of [[Seventh Tower]], a garden of exotic and fragrant
flowers, particularly roses and orchids, surrounds
the establishment. Both indoor and outdoor seating
is available, and some of the tables offer views of the
distant ocean to the south on (the relatively rare)
clear days. The menu consists of spicy [[Brelish|Breland]] offerings, while the wine list includes the best vintages
from the [[Eldeen Reaches]] and [[Aundair]].
The metallic head of this javelin is embellished with three small wings. When you speak a command word while throwing this magic weapon, a swirling vortex of wind follows its path through the air, extending 10 feet from the javelin's path. Creatures hit by the wind or by the javelin who can't resist the wind are pushed backward, and possibly knocked prone.
With buildings surrounding the Galethspyre, a narrow
sliver of blue stone jutting up over 600 feet from the bank
of the [[Dagger River]], this town is a major hub for barges
and ferries landing on the west bank of the mighty river.
Ferries run to [[Wroat]] on the other side of the Dagger
River four times a day. The dock area is always bustling
with activity, even at night, as Citadel agents check all
goods going into Wroat at Galethspyre before issuing
a permit to sail on the [[Howling River]].
Galethspyre specializes in textiles, with both bolts
of cloth and finished garments filling the marketplace.
The town is also home to the nation’s largest dyer.
The distinctive “[[Breland]] Blue” dye seen throughout
the country is crafted here in huge copper cauldrons.
The smell can be overwhelming for the new visitor,
as boiling dyes reek of fish, herbs, and rare earths.
The city also has several major lumberyards; timber
cutters at [[Woodhelm]] lash together rafts of logs and
ride them down the river to Galethspyre to be milled
or carved.
House [[Deneith]] maintains a large [[Defenders Guild]]
enclave in Galethspyre, because the town is a major
staging area for caravans journeying into [[Droaam]].
The town also boasts an enormous outdoor amphitheater, and House [[Phiarlan]] promotes grand festivals three times a year as the [[Artisans Guild|Entertainers and Artisans Guild]] fills the streets
with song and color. These festivals have become a
large enough part of [[Breland]]’s social calendar that
thousands make the short journey from [[Wroat]] to
attend, with more spectators coming from [[Sharn]] or
even as far away as [[Starilaskur]].
''Capital:'' [[Thronehold]]
In the modern age, the greatest power was the kingdom of Galifar, which covered most of the continent of [[Khorvaire]]. After a century of [[civil war|Last War]], Galifar is no more, carved into separate nations as defined by the [[Treaty of Thronehold]].
[[Karrn the Conqueror]] failed to unite [[Khorvaire]] by force, but
centuries later, his descendant [[Galifar ir'Wynarn]] succeeded
through might and clever diplomacy. Galifar didn’t just want
power—he wanted to build a better world, and on many
levels, he succeeded. He abolished slavery and instituted
laws that promised justice for all. Over time, the kingdom
would promote public education and the rise of the merchant
class. It can be argued that Galifar stumbled in giving the
[[dragonmarked house]]s too much economic power; while the
[[Korth Edicts]] prevent dragonmarked heirs from holding lands
or titles, they also lay the foundation for the near-monopolies
the houses hold today.
Galifar can also be faulted for his precarious system of
succession. By this tradition, the children of the reigning
monarch served as governors of the [[five provinces|Five Nations]], with the
eldest governing [[Cyre]]. The previous governors served as
regents until an heir came of age, at which point they were
expected to step aside. This system led to multiple rebellions
and attempted secessions over the course of history, the [[Last War]] simply the largest and last of them.
!! Why Does It Matter?
A century of brutal war has divided the people of the [[Five Nations]], but they are still united by a host of common laws and
customs—the legacy of Galifar. And there are still many who
look back to Galifar as a golden age, who would be willing to go
to war again for a chance to return to that supposed paradise.
Many of the institutions that define the nations—the [[Arcane Congress]], the [[King's Citadel]], [[Rekkenmark Academy]]—were
originally dedicated to the common good of Galifar. Members of
the longer-lived races, such as [[elves|elf]] and [[dwarves|dwarf]], likely trained
at these institutions, regardless of the nations they serve today.
King Galifar ir'Wynarn ([[-45 YK—53 YK|Khorvaire calendar]]) was the founder of the Kingdom of [[Galifar]], uniting all [[Five Nations]] under one rule. He and representatives from the [[Twelve]] drafted and signed the [[Korth Edicts]], which defined the role of the [[dragonmarked house]]s within the kingdom for its entire duration, and are still used as guidance today. He also established the [[Arcane Congress]] in 15 YK. He was succeeded by his youngest (but oldest surviving) child [[Cyre ir'Wynarn]], after he abdicated at the age of 85.
Galifar's kingdom would span the continent of [[Khorvaire]] for almost 900 years before the [[Last War]] sundered the nation.
The [[Lhazaar Principalities]] developed during the same period
when the [[Five Nations]] were formed, more than a thousand
years before the birth of [[Galifar]]. By the time King [[Galifar I|Galifar ir'Wynarn]] was uniting the Five Nations, the Principalities were well
established, as was their inhabitants’ well-deserved reputation as raiders and pirates. When Galifar proclaimed that his kingdom “stretched across the width and breadth
of [[Khorvaire]],” the Lhazaar princes ignored him. Their
domains were far from the great cities of the Five Nations,
separated by a formidable [[mountain range|Ironroot Mountains]] and the endless seas over which the princes ruled supreme.
By 28 YK, King Galifar had fortified his hold over the
[[Five Nations]] and turned his attention to the threat from
the east. The Lhazaar princes and sea barons were wreaking havoc among the coastal communities, interfering with
shipping and refusing to bend to the will of the crown.
Thus began the Galifar-Lhazaar War, a series of naval
engagements that lasted nearly a decade. The sea barons
knew the currents better and started out with better vessels,
but Galifar dedicated his efforts to building a powerful
navy. Aided by magic and the help of some of the [[dragonmarked house]]s, Galifar was able to garner enough victories to force the Lhazaar princes to meet to discuss terms. In the end, the Principalities became part of Galifar’s kingdom but remained autonomous, the Lhazaar princes more or less independent within their own domains yet agreeing to
pay tribute to Galifar and recognize him as the legitimate ruler of the mainland kingdom.
This Chosen supposedly rules [[Mokush]], though she is lazy
and decadent, and very resentful of being housed with
[[ogre]]s. Her tedious nature, lack of focus and discipline,
and childish petulance have gained her no friends in
the courts of [[Riedra]]. Now, she feels she has wasted her
life and deserves her exile. She has given up. Only when
[[Yrnuxi]] assumes Galshani's form does the lady of Mokush
seem interested in goings on in the town.
<ul>
<$list filter=[list{!!title}sort[title]]>
<li><$link/></li>
<<list-links-article "[tag{!!title}category[organization]regexp<capitalized>sort[title]]">>
</$list>
</ul>
There is only one safe harbor on the island of [[Dreadhold]], and there lies the garrison village of Gaolgate. Every building supports the prison in some way, from the massive smithy to the small brewery. A fleet of fishing boats brings in food for the villagers and the prison, as the waters around the island teem with fish. Gaolgate is not designed with the comfort of travelers in mind, but there is one large inn—The Gallows—which caters to the crews of support ships and prison transports. Most of the inhabitants of the island are [[Kundarak]] [[dwarves|dwarf]], but there are a few [[gnome]]s from House [[Sivis]] who manage the [[message station|speaking stone]]s of the island. There are also a handful of others, mostly being former prisoners who chose to remain on the island after serving their sentences.
!! Residents of Gaolgate
While most of the guards of [[Dreadhold]] prison live in the garrison town of Gaolgate, other island residents spend most of their time in town and are only called to the prison when their skills are needed or when working on a specific project. The inhabitants of Gaolgate have two things in common: Most are highly skilled in a specific trade or craft, assuring everyone has something to contribute to the community, and the vast majority are trained for combat, ready to grab a waraxe and join the fray should the island fall under attack or a prison break occur.
!! The Trench
A winding, 10-foot-wide and 15-foot-deep trench leads up from the village. Three gate stations stand along the way, each manned by two wand guards and a scout. While there are curves in the path, the final 400 feet of the trench is a straight line to the prison, ending smoothly in a path that winds around to the main gate.
The Garden of [[Irian]] lives up to its name; it's a vast zoological garden
filled with foliage. It contains every plant that can be found
in the Material Plane, along with many that can't. There
are winding paths, peaceful pools, wondrous topiaries, and complicated hedge mazes. In contrast to the wilds of [[Lamannia]],
this is very carefully cultivated. The Garden is suffused with a
sense of peace, beauty, and the wondrous things life can create. It is the realm of the [[Gardener]], an [[Architect]] whose principle is life.
The many layers of the Garden realm showcase various
elements of fertility and the triumph of life. There are a few
layers that are slightly darker than the rest of [[Irian]], though still
suffused with dim light in their darkest corners—these reflect
the principle that life overcomes hardship. The message of the
ruined castle isn't to dwell on the destruction, but to see the
flowers blooming on the walls. Most of the [[ember]]s in the region
take animal form, and [[ki-rin]] are the most common [[celestial]]s.
The Garden of [[Respite]] is a multitiered garden maintained by the [[Healers Guild]]. A sanctuary from [[Stormreach]]’s clamor, the fragrant garden is a favorite place for
quiet walks and romantic rendezvous.
Each of the garden’s three tiers is home to a different type of plant. The top tier, which sees the most sun, is reserved for flowering plants from [[Xen'drik]] and other
continents. The second tier is used for plants that
require less light and less heat than those in the top
tier. This means plants and trees from more temperate
parts of the world. The third and lowest tier harbors
winter plants and mushrooms. This is the least-visited
part of the garden, where garden tools are stored in
stone sheds that were once tombs, which are rumored
to connect with the [[Undercity]].
The Gardener, an [[Architect]] whose defining principle is life, tends the [[Garden]] of [[Irian]]. He's a blend of [[angel]] and plant—more
[[humanoid]] than [[treant]], but with skin of bark, a beard of leaves,
and a crown of flowers. Like all of the Architects, he's devoted
to his planar seeds, but he also spends time wandering the
garden, both tending it and appreciating its wonders. He
appreciates those who nurture and heal others, and this is
the behavior he expects of any mortals he associates with.
The homes of [[Io'lokar]] are universally stocked with [[magic item]]s that produce
hearty food and drink, and the chefs and tavernkeepers of the city take such magic beyond the sublime. Nonetheless, the [[Io'lokari]] are as passionate about gastronomy as they are all other arts, and city folk supplement their magical fare with the bounty of the gardens. High-level [[druid]]s use their spellpower to augment permanent magical effects that produce a full harvest each and every day. Produce is available at the [[public markets|Public Markets of Io'lokar]] from dawn to dusk.
[[Druid|druid]]s are rarer within the city than other spellcasters, and druid characters can easily find a place in the ranks of the city’s gardeners. However, the magic
that forces an entire season’s growing into a single day involves powerful [[planar|plane]] magic tapping into the power of [[Lamannia]], the Twilight Forest. Planar disturbances that open up rifts to [[Lamannia]] are a constant risk to the city.
Each ward in the [[Riedra]]n city of [[Dar Jin]] includes a
place for people to come and meditate. These gardens
of reflection contain lovely foliage, but the primary
attractions are the mosaics of crystal and [[sentira]]. These
psiactive displays hold specific emotional chords; [[Riedrans]] focus on these mosaics to clear their own thoughts.
Priests of the [[Path of Inspiration]] are always present, willing to offer spiritual guidance to anyone in need—even troubled outlanders. Those who undergo meditation with a priest occasionally have guiding dreams the following night; this could be the work of manipulative [[quori]], a [[dreamtouched]] scion using [[dream of contact]], or the
spirit of [[Riedra]] itself, if such a thing exists.
The inanimate gargoyles that perch atop great buildings are inspired by these malevolent creatures of elemental earth that resemble grotesque, fiendish statues.
Gargoyles are likely native to [[Eberron]], though some scholars hypothesize they are creations of the [[daelkyr]] [[Orlassk]]. They can be found throughout [[Khorvaire]] (but especially [[Droaam]]), as well as [[Xen'drik]].
!! Gargoyles in Droaam
Since the rise of the [[Daughters|Daughters of Sora Kell]], gargoyles have
been deployed across [[Droaam]]; they are also favorite recruits
of House [[Tharashk]]. Civilian gargoyles serve as messengers
and couriers, while most warlords also have a unit of combat-ready gargoyles that serve as scouts and rapid response. As
[[elemental]]s, gargoyles don't eat, sleep, or drink, and they can
remain motionless for months or years. While gargoyles have
traditionally been depicted as cruel predators, the fact is that
they love the //thrill// of hunting. They yearn for challenge, and
love riddles and puzzles almost as much as hunting prey.
Garyx, the Firelord, the Cleanser of Worlds, is the [[Dragon God|Dragon Gods]] of Fire, Destruction, and Renewal. When the [[Light of Siberys]] rained destruction on [[Xen'drik]] at the end of the [[Age of Giants]], they shouted prayers to Garyx, beseeching Him for the power to reforge the future.
You transform a willing creature you touch, along with everything it's wearing and carrying, into a misty cloud for up to one hour. The spell ends if the creature is incapacitated. An incorporeal creature isn't affected.
While in this form, the target's only method of movement is flying (about 2 mph without wind). The target can pass through small holes, narrow openings, and even mere cracks, though it treats liquids as though they were solid surfaces.
While in the form of a misty cloud, the target can't talk or manipulate objects, and any objects it was carrying or holding can't be dropped, used, or otherwise interacted with. The target can't attack or cast spells.
''District Type:'' Tenement district<br/>
''Buildings:'' Poor residences (240)<br/>
''First Impression:'' The great gate from which this
district takes its name was stripped of its gilt plating
many centuries ago. Old mansions and towers that
once belonged to wealthy lords and merchants have
been converted into tenement housing for the poor,
and the inhabitants appear lean and hungry.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Oldkeep]] (northwest); [[Malleon's Gate]] (north); [[Callestan]] (southwest); [[Ashblack]] (below); [[Hareth's Folly]] (above)
Once home to many of the founding families of
[[Sharn]], Gate of Gold is now little more than a slum.
Small and wretched townhomes crowd the crime
ridden, extremely dangerous district.
The [[Arcanix]] towers house strange
artifacts and relics, but few compare in size and scope
to the Gate of Xabra. A circle of menhirs sits atop one
of the residential towers. The standing stones, and
indeed the very earth they rest upon, came to Arcanix
from an ancient [[Q'barra]]n ruin ages ago after the mages
discovered that the stones could bridge the [[plane]]s. On
each stone is a magic rune. When the stones are activated in a specific sequence, everything inside the ring
is whisked to another plane. Concentrated research
has uncovered a few sequences so far, sometimes with
disastrous results, but the studies continue.
In Carosten Park, near the edge of the plateau, stands a small stone building. Passersby generally assume the building belongs to the park caretakers and pay it no heed, but it is actually a sacred site to the sect of [[druid]]s known as the [[Gatekeepers]]. From this small shrine in the midst of a “natural” site in the City of Towers, the Gatekeepers monitor the [[manifest zone]], the [[sewers|Sewers of Sharn]] and ruins below, and the activity of powerful spellcasters in Sharn to ensure that no dangerous planar breach appears in the city. They are not overly concerned with ordinary summoning spells and have little worry that the angels of [[Syrania]] are planning an invasion of the Material Plane, but they are deeply worried about recent events in the Depths.
//We, the Gatekeepers, protect the natural world from the forces that come from outside it, from those beings that slither in from the darkness beyond. //
The Gatekeepers are a [[druid]]ic sect dedicated to protecting the natural world from unnatural forces. They battle
[[aberration]]s and guard against extraplanar invasions
and the release of ancient evils.
The Gatekeepers maintain the oldest druidic tradition on [[Khorvaire]]. Over fifteen thousand years ago, the [[dragon]] [[Vvaraak]] came to the [[Shadow Marches]]
and gathered a following from among the [[orc]]s of the
region. In her studies of the [[Prophecy|Draconic Prophecy]], Vvaraak had
foreseen a great threat that could be stopped only by
the younger races. So she taught the orcs the secret
language of the natural world and showed them how
to work with stone and soil, and how to read the future
in the movement of the Ring of [[Siberys]]. She charged
her students to remain ever vigilant against the threat
that was to come, and to protect nature from those that
would corrupt it.
Thousands of years later, the [[daelkyr]] opened gates from the plane of [[Xoriat]] and unleashed hordes of [[mind flayer]]s, [[beholder]]s, and other foul creatures into the world. The conflict that followed destroyed
the [[goblin]] empire of [[Dhakaan]], and the daelkyr's invasion left scars across [[Khorvaire]]. Ultimately, Vvaraak's students sealed the gates and imprisoned the daelkyr
in [[Khyber]]. Even after this triumph, the orcs couldn't be
sure if they had turned back the threat Vvaraak had foreseen, or if a greater danger lay ahead. So, in addition to
guarding the [[seals|dimensional seal]] that bind the daelkyr and keep Xoriat
at bay, the Gatekeepers remained vigilant against the
possibility of worse to come.
In the millennia since that struggle ended, the Gatekeepers have shared Vvaraak's wisdom and druidic
magic with [[human]]s, [[shifter]]s, and others who came
to Khorvaire. New interpretations of Vvaraak's teachings gave birth to new druid sects: the [[Wardens of the Wood]], the [[Greensingers]], and the [[Ashbound]]. Today, the
Gatekeepers are one of the smaller sects, and many of
the sites of their long-ago battles have been abandoned
and forgotten. But some Gatekeepers still remain in the
[[Shadow Marches]] and the [[Eldeen Reaches]], continuing
their vigil to this day.
!! The Gatekeepers in the War
The [[Last War]] had only minimal impact on the Gatekeepers, and vice versa. The druids' primary concern was to prevent military activity from disrupting the seals
they guarded. Occasionally the Gatekeepers attacked
groups of scouts or military patrols, driving them away
to ensure that battles didn't erupt in their vicinity. Sometimes the Gatekeepers failed in those efforts, and [[Xoriat]]'s corruption spread over some remote regions while
the war raged around them.
!! Gatekeeper Seals
The [[seals|dimensional seal]] forged by the Gatekeepers have a variety of
purposes and forms. Some are tied to specific [[daelkyr]],
keeping those individuals bound in [[Khyber]] and stripping them of some of their powers. Others ward against [[aberration]]s in general, or suppress the influence of the
plane of [[Xoriat]]. Some seals are amulets, objects that can be carried and stolen. It's said that one of the seals is a druidic bloodline, and it will last until the last member of the line is slain.
The most common form of Gatekeeper seal is a great stone slab set into the ground or a cavern wall. It is carved with mystical symbols that hedge out the influence of [[Xoriat]] and maintain the barrier. Often, druidic trappings and dwellings surround it.
A seal is a protected site, usually attended at all times
by Gatekeepers who live at or near the seal. A circle of standing stones serves to focus the magic of the area toward the seal itself, and the stones also serve as a place of
worship for the druids' devotions and ceremonies.
!!! Gatekeeper Seal Adventures
The location of a Gatekeeper seal might be the site of
an adventure's climax, or the characters might need to
find one in order to consult with the guardians there.
The table below presents some
possibilities.
| !<<dr d4>> |!Adventure Goal |
| 1 |Deliver a specially treated Khyber [[dragonshard]] to the Gatekeepers to repair a widening crack in the seal. |
| 2 |Petition the keepers of a seal for information on an [[aberration]] that has been terrorizing the countryside. |
| 3 |Assist the Gatekeepers in an annual ritual that will reenergize the seal and keep it shut for another year. |
| 4 |Escort a new Gatekeeper guardian safely to the seal after its previous guardians were corrupted. |
!! Gatekeeper NPCs
Gatekeepers are sworn to protect the world, and thus
are more likely to be encountered as allies than as enemies. It's always possible, though, for even noble Gatekeepers to fall prey to madness and corruption, thus
becoming the very evils they are sworn to fight.
| !<<dr d4>> |!NPC |
| 1 |The spirit of a long-dead Gatekeeper lives on in the body of an ancient toad. It speaks in a deep, croaking voice. |
| 2 |A [[half-orc]] Gatekeeper works in House [[Tharashk]] as an investigator, searching for signs of planar disturbances. |
| 3 |A [[human]] Gatekeeper is on a pilgrimage, carrying an amulet that serves as a seal on a journey to a number of sacred sites to restore its power. |
| 4 |An old [[orc]] ranger is murdering people in [[Sharn]], claiming that they've been corrupted by the [[daelkyr]]. |
!! Gatekeeper Campaign Themes
The Gatekeepers are the remnants of an ancient order. Once they saved the world. Now they are all but forgotten, and the world needs saving again. The surviving Gatekeepers might not have the strength to win the fight alone, and that's where adventurers come in. Gatekeepers can serve as patrons or advisors, providing crucial information or setting the adventurers on the proper path. They can also come to the rescue of adventurers who are close to being overwhelmed by [[mind flayer]]s or [[dolgaunt]]s.
At certain points in a campaign, the Gatekeepers might seem to be villains. The druids' mission to protect their seals and to oppose the rise of [[aberration]]s is of the utmost importance. Anyone who threatens a seal or assists the machinations of the [[daelkyr]], no matter how unwittingly, risks making relentless enemies in the Gatekeepers. A simple shift in circumstances, such as the death of a noble that causes ownership of a trackless
parcel of land to change hands, could bring the characters into sudden conflict with the Gatekeepers.
!! Gatekeeper Adventure Hooks
Gatekeepers can be at the center of any number of potential stories. The table below offers some options.
| !<<dr d8>> |!Gatekeeper Adventure Hook |
| 1 |While pursuing rumors of [[lycanthrope]] activity, the characters discover a good-aligned werebear that is working with the Gatekeepers to stop an incursion from [[Khyber]]. |
| 2 |A Gatekeeper seal in the form of a stone tablet falls into the characters' hands. They must return the seal to the Gatekeepers before its magic fades. |
| 3 |A logging operation is moving close to the area protected by a seal, and the party must convince the loggers to relocate before their work touches off a conflict with the Gatekeepers. |
| 4 |Working with an agent of the [[Chamber]], the Gatekeepers are convinced the actions of the characters will bring a [[daelkyr]] one step closer to freedom. |
| 5 |The characters discover evidence suggesting that the rituals performed by the local Gatekeepers are weakening their seal, not empowering it. |
| 6 |Pilgrims traveling through a forest draw the attention of Gatekeepers, who think they are spies sent to sabotage the nearby seal. |
| 7 |One of the kidnapped victims who was rescued from a marauding band of [[aberration]]s turns out to be a Gatekeeper initiate. |
| 8 |The adventurers are sent to the [[Mror Holds]] to investigate the activity of [[Dyrrn]] the Corruptor and uncover a daelkyr cult among the dwarves. |
This [[densewood]] structure is the physical and spiritual heart of [[Shae Lias]].
Dedicated to the [[Undying Court]], it serves as crypt,
temple, and embassy. Citizens of [[Aerenal]] who die in [[Sharn]] are embalmed in the Gates and preserved
until their remains can be transported back to the
island kingdom. [[Mayne Jhaelian]] and the other
priests act as spiritual advisers and political ambassadors, performing in the interests of citizens of Aerenal. Jhaelian has ties to the [[Deathguard]] of Aerenal, and it is possible that he might ask adventurers
to help resolve a situation involving the [[Blood of Vol]]
or other [[undead]] menaces.
The Gates of Sorrow is a bay off the southwest coast of [[Aerenal]].
Built into a rocky outcropping along the eastern shore of [[Lake Cyre]], Gatherhold has space for 15,000 or more [[halfling]]s, though its population approaches that number only a few times a year. Fewer than 2000 residents live here full time, and these are nearly all representatives of the [[dragonmarked house]]s.
House [[Ghallanda]] built and maintains Gatherhold,
both as its [[headquarters|Ghallanda Enclave]] and as a place where all
the [[Talenta|Talenta Plains]] tribes might gather and meet as equals.
Gatherhold’s houses are for the use of visitors from
other parts of [[Khorvaire]]. Years ago, people came by boat through [[Cyre]]; now
the [[Mourning]] has cut off that passage. The [[halfling]]s prefer to put
up their tents along the surrounding hills rather than
stay cooped up inside “boxes,” as they call even the
most lavish set of rooms.
House [[Jorasco]] has a strong presence in Gatherhold,
though its [[headquarters|Vedykar Enclave]] was moved years ago to
[[Vedykar]] in [[Karrnath]]. Many Talenta halflings resent
what they see as Jorasco’s abandonment of their homeland and values for the world of the human cities. However, the house continues to operate a handful of
mobile clinics that travel throughout the Plains, dispensing healing and comfort to the tribes they meet.
At least three times a year, Gatherhold hosts a
meeting of the tribal council. All tribes are welcome
to attend, but attendance by the [[lathon|Lathon Halpum]] and the //laths//
of the five largest tribes is mandatory. During the five
or ten days that the council remains in session, the
town’s population swells as a continuous stream of
tribes passes through.
A great [[Ghallanda]] stronghold on the eastern shore of [[Lake Cyre]], the cliff dwellings of [[Gatherhold]] are the jumping-off point for many an adventure in
eastern [[Khorvaire]]. The ramps that connect one cliff
dwelling to another are always teeming with nomadic
[[Talenta|Talenta Plains]] tribesmen, caravans en route to [[Valenar]] or
[[Q'barra]], or adventurers embarking on expeditions
into the eastern [[Mournland]]. The house’s baron,
[[Yoren d'Ghallanda]], has his personal domain deep in
the cliff-tunnels.
The [[Adarans]] and [[kalashtar]] are concentrated on the northern edge of [[Overlook]]. Adaran citizens have pooled their resources to
rent a large hall, the Gathering Light, that serves as
an anchor for the community. During the day, the
hall functions as a school, where people come to study
kalashtar martial arts and meditation techniques.
In the evenings, the people gather to celebrate their
heritage. Activities at the gatherings vary considerably. Some nights song, dance, or other forms of
art play a dominate role, while other nights involve
serious discussions of philosophy, metaphysics, or
current events.
[[Selkatari]] oversees martial training and monastic discipline at the
Gathering Light, while [[Hanamelk]] serves as the resident scholar
and sage. These two also work together to protect the
community from crime and violence, using diplomacy
when possible and force when reason fails.
House [[Deneith]] has carefully reestablished relations with the
Lhesh [[Haruuc|Haruuc Shaarat'kor]], leader of the insurrection that led to the founding of [[Darguun]]). This relationship is one
of convenience: Darguun gets diplomatic legitimacy through the association, and
House Deneith gets a steady stream of
[[goblin]] mercenaries. But some within
the house are still bitter about Haruuc’s
insurrection; the [[enclave]] in Darguun is
a tense place to do business.
This fortress [[enclave]] sits just outside the city of [[Rhukaan Draal]], and serves as a staging area for [[goblin]] mercenaries who wish to work
for the house. It provides a stable and secure haven for
travelers passing through the region, provided you're on
good terms with House Deneith. Many [[Blademarks|Blademarks Guild]] receive their initial training in large-unit tactics here.
This fortress is one of two parts of the [[Rhukaan Draal]] enclave. The other is a diplomatic stronghold within Rhukaan Draal called Fort Cail, named after Lord Cail d’Deneith, who first recruited goblins to fight under the Deneith banner more than a century ago.
Gaulronak is the oldest and most respected [[giant]] residing in the encampment known as the [[Tents of Rushemé]], just outside of [[Stormreach]]. An herbalist, he often sells jungle herbs and plants to cooks and healers. He serves as the main liaison between
the giants of the tents and the [[Storm Lords]]. Of late, he
has become more and more preoccupied with the city’s
[[vision circle|circle of visions]]s. Many see him as a simple wanderer, but
he is an important spiritual leader among his people.
In fact, Gaulronak is the rushem'dal (watcher) of [[Stormreach]] and a leader of the [[Guardians of Rushemé]]. Although the giants know of the important
role that he plays and respect his wisdom, Gaulronak
rarely reveals his influence. He sells fruits and rare
herbs at a tent near the city gate, sharing stories with
anyone who will listen. He has lived in the region for
almost two hundred years, and he possesses remarkable intelligence and charisma for a [[hill giant]]. Now and again, he repeats the warning that his grandmother
brought to Stormreach, cautioning the [[Storm Lords]]
that they could still escape their doom, but his words
are always dismissed.
While you wear both of these steel gauntlets, any non-magical weapon you grasp with either gauntlet is treated as a magic weapon. You can use the gauntlets to cause magical flames to envelop one or two melee weapons in your grasp. The flames last until you sheath or let go of either weapon.
While wearing these gauntlets, your physical strength is like that of an [[ogre]].
These solid, heavy gauntlets are made of intricately forged silver, [[byeshk]], and tiny Khyber [[dragonshard]]s.
The wearer can cast [[dispel magic]] on a creature conjured from another [[plane]], banishing that creature to its native plane. In addition, if the wearer uses the gauntlet to touch an [[immortal]] native to a different plane as it dies, the time before the immortal can be reborn is doubled.
This pair of gauntlets is covered in black scales that glitter with a violet sheen. While wearing these gauntlets, the wearer can speak a command word to shroud the gauntlets and whatever weapon they are holding in a faint black mist. Anything attacked by this weapon rapidly decays, suffering additional necrotic damage. Any small plants or animals touched by the gauntlets while they are active immediately wilt away and die.
This pair of gauntlets are made of plates of tarnished iron and a deep black leather made from [[Mabar]]an [[quintessence]]. The wearer can sacrifice some of their own life force to the gauntlets in exchange for enhanced strength and dexterity in battle. The more life sacrificed, the greater the bonus. The wearer can make the sacrifice as often as they like, but the effects only last for ten minutes.
A gauth is a hungry, tyrannical [[beholder]]-like creature that feeds on magic. Its body is about 4 feet in diameter, with six eyestalks, a central eye (sometimes surrounded by multiple smaller eyes), and four small grasping tentacles near its mouth. It has color and texture variations similar to a true beholder.
''//Magical Metabolism.//''A gauth can survive on meat but prefers to sustain itself with power drained from magical auras and [[objects|magic item]]. If starved of magic for several weeks, it is forced back to its home [[plane]] of [[Xoriat]], so it constantly seeks new items to drain. A gauth might employ creatures to serve it by bringing it items that provide it with sustenance.
When a gauth is killed, the magical energy within it explodes, blasting everything within 10 feet with force damage as well as a completely unpredictable array of spell effects.
//''Accidental Summoning.''// When the ritual to summon a [[spectator]] goes wrong, a gauth might push itself through the flawed connection, arriving immediately or several minutes later. It might present itself as a [[beholder]] to ignorant creatures in an attempt to intimidate them, or as a spectator to its summoner in order to drain [[magic item]]s it is expected to guard.
This wooden gavel is nearly the size of a warhammer in human hands.
You can use the gavel to strike a point on a hard surface. The first time in the next minute that a creature within 60 feet of that point deals damage to another creature with an attack that hits, the attacker suffers psychic damage equal to the damage it dealt to the target. The gavel can create this effect a few times each day before it must recharge.
A gazer is a tiny manifestation of a [[beholder]]'s dreams. It resembles the beholder who dreamed it into existence, but its body is only 8 inches wide, and it has only four eyestalks. It follows its creator like a devoted, aggressive puppy, and sometimes small packs of these creatures patrol their master's lair for vermin to kill and lone creatures to harass.
A gazer can't speak any languages but can approximate mimicking words and sentences in a high-pitched, mocking manner. [[Beholder|beholder]]s find gazers amusing and tolerate their presence like spoiled pets. A gazer can't be tamed by anyone but its creator, except through the use of magic or by bonding with a spellcaster. Some beholders with [[wizard]] minions insist they take a gazer as a [[familiar]] because they can see through the eyes of these creatures.
This spell takes 1 minute to cast. You place a magical command on a creature that you can see within 60 feet, forcing it to carry out some service or refrain from some action or course of activity as you decide. If the creature can understand you, and if it cannot resist your enchantment, it becomes charmed by you for up to 30 days. While the creature is charmed by you, it experiences agonizing psychic pain each time it acts in a manner directly counter to your instructions, but no more than once each day. A creature that can't understand you is unaffected by the spell.
You can issue any command you choose, short of an activity that would result in certain death. Should you issue a suicidal command, the spell ends.
You can end the spell early by choosing to dismiss it. A [[remove curse]] or [[wish]] spell also ends it.
If you are able to cast legendary-tier spells, you can cast this as such to extend the duration to 1 year.
Gelatinous cubes, [[ooze]]s that usually take the form of a cube about 10 feet to a side, scour dungeon passages in silent, predictable patterns, leaving perfectly clean paths in their wake. They consume living tissue while leaving bones and other materials undissolved.
A gelatinous cube is all but transparent, making it hard to spot until it attacks. A cube that is well fed can be easier to spot, since its victims' bones, coins, and other objects can be seen suspended inside the creature.
Gellis Candar runs a pawnshop in the [[Bazaar]] in [[Sharn]], and maintains a [[shrine to the Keeper|Shrine of the Keeper]] in a hidden back chamber. A few of the other merchants know of the shrine and attend Candar's services, believing that the [[Keeper]] can help them fulfill their greedy desires.
When you activate this gem, you have [[truesight]] out to 120 feet when you peer through it. The gem has 30 minutes of charge, and each time you activate it, it stays activated for minimum of 10 minutes.
Genies are rare elemental creatures out of story and legend. Only a few can be found on the Material Plane. The rest reside on the other planes, namely [[Fernia]], [[Thelanis]] and [[Syrania]], where they rule from lavish palaces and are attended by worshipful slaves.
Genies are as brilliant as they are mighty, as proud as they are majestic. Haughty and decadent, they have a profound sense of entitlement that stems from the knowledge that few creatures except the gods and other genies can challenge their power.
Although they resemble [[humanoid]] beings, genies are [[elemental]] spirits given physical form. They don't mate with other genies or produce genie offspring; as all genies are [[immortal]], if they are killed, they simply re-manifest at some point in the future (but perhaps with a different appearance or personality).
Some genies can veil themselves in illusion to pass as other similarly shaped creatures. The most potent genies, such as those among the nobility, are able to cast [[wish]] on the behalf of a mortal.
!! Types of Genie
<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
<$list filter="[list{!!title}sort[title]]">
<$macrocall $name="tag" text={{!!title}}/>
</$list>
"Lord" Gerald Goodblade is nothing of the
sort; his title is the result of his skill at lying about
himself. When visitors first arrive in [[Stormreach]],
Gerald’s “good name” is likely to be one of the first
things they hear about, thanks to his practice of
paying off street urchins, beggars, and other poor
people to talk him up to new arrivals. He makes his
living fleecing newcomers, selling stolen goods, and
sponsoring minor acts of theft and grave robbing.
His latest scam involves some nice-looking but poorly
made swords, which he tries to pass off as magical. He
offers them as a reward to those willing to do some of
his “little tasks.”
Gerazan Sandaili is a master weaver in [[Nderitese]],
[[Syrkarn]]'s largest settlement. He has lived in Syrkarn
since fleeing [[Riedra]] some fifteen years ago, but unknown
to even those closest to him is the full story of the life
he led there. A secretly practicing [[psion]], Gerazan was
a member of the [[Broken Throne]], studying the mental
techniques of old [[Dor Maleer]]. As a law-abiding [[Riedran|Riedrans]],
Gerazan fully expected to be punished should his gift be
discovered. What he hadn't counted on were agents of
the [[Thousand Eyes]] slaying his wife and child when they
finally came for him.
Gerazan is now part of the Watch—an unofficial organization of Riedran refugees who make it their business to
uncover agents of the [[Inspired]] in [[Syrkarn]]'s larger centers.
No stranger enters [[Nderitese]] without passing through
the market corner. No stranger leaves the market corner
without having come under Gerazan's watchful eye.
The Ghaal River in [[Khorvaire]] flows from the [[Seawall Mountains]] in [[Darguun]], past [[Rhukaan Draal]], and into the [[Kraken Bay]].
The Ghaal'dar [[goblinoid]] tribes arose from the remnants of the
[[Dhakaan]]i Empire. [[Hobgoblins|hobgoblin]] are the leaders of the
Ghaal'dar, enforcing their will on their [[goblin]] and [[bugbear]] peers; in fact, the Dhakaani word "ghaal'dar" simply means "hobgoblin". The history of the Ghaal'dar is filled with strife; when they weren't fighting [[Galifar]] or [[Zilargo]], the
tribes usually turned on one another. This came to an
end with the [[Last War]]. House [[Deneith]] hired Ghaal'dar
mercenaries, and this gave focus to the divided tribes.
A brilliant hobgoblin, [[Haruuc Shaarat'kor]], united the Ghaal'dar,
and under his leadership they seized control of what is
now [[Darguun]]. The aging Lhesh Haruuc
remains as the ruler of Darguun, and many fear that his
death could throw the region into chaos.
The Ghaal'dar are an alliance of tribes. The Lhesh Haruuc belongs to the largest of these, the Rhukaan Taash. The name means “Razor Crown,” and a line of
scars encircles the head of each Rhukaan warrior, the
result of a ritual marking when a hobgoblin becomes
a soldier. The Lhesh Haruuc has greatly improved the
lives of his people, but unless he finds a capable successor, the Ghaal'dar chieftains seem certain to turn
on one another once he is gone.
This three-foot warhorn, a revered artifact of [[Dhakaan]], is carved
from the tip of a [[red dragon]]'s horn, banded with [[adamantine]],
and covered with runes of power. An inscription in Goblin reads
“A mighty dirge for the fallen foe.” Ghaal'duur was crafted by
[[Jhazaal Dhakaan]], a legendary [[dirge singer]] who united the
ancient warring clans. Any kech warlord who obtained it would
gain great influence among the [[Heirs of Dhakaan]]—and any non-Dhakaani that possesses it bears a dangerous burden.
The wielder of this horn's natural charisma is greatly enhanced by the presence of Jhazaal's spiritual aura. Blowing the horn magically inspires all allies who hear it (especially [[goblinoid]]s), and disheartens all foes who hear it.
The Ghaash'kala (a name that roughly translates as "ghost guardians") [[orc]] tribes dwell in the [[Labyrinth]] of the [[Demon Wastes]], and believe they have a sacred duty to prevent evil from escaping that blasted land. They act to keep travelers from entering the Wastes, and consider anything that emerges from the Wastes (including barbarians of the [[Carrion Tribes]] or even travelers returning from an expedition) to be hopelessly tainted, and they strike against such creatures without warning or mercy.
The Ghaash'kala worship an entity they call Kalok Shash, the "Binding Flame." This is the same ancient divine force that channelers of the [[Silver Flame]] have access to, but the traditions are entirely separate; their faith predates [[human]] civilization itself. Kalok Shash is a harsh faith that requires all able-bodied folk to fight in the endless war against the forces of darkness.
The four clans of the Ghaash'kala are:
* the ''Jaasakah''
* the ''Kastar''
* the [[Maruk]]
* the ''Vanka''
The clans consist of mostly orcs, but [[half-orc]]s, [[human]]s, and even a few [[tiefling]]s can be found among their numbers.
Each clan has two leaders: the //kizshmit//, the chieftain and war leader, and the //sar'malaan//, the spiritual leader who communes with the Binding Flame and offers guidance.
The Ghaash'kala risk their lives every day to
protect all mortals from the evils of the Wastes. They typically
consider the people of “the south”—meaning everywhere
south of the Demon Wastes—to be weak and naive, but still
see it as their duty to protect these innocents from evil. They
don't care that they receive no acknowledgment for their
eternal vigilance; it is a war that must be fought.
This ceramic jug appears to be able to hold a gallon of liquid and weighs 12 pounds whether full or empty. Sloshing sounds can be heard from within the jug when it is shaken, even if the jug is empty.
A person with the [[Mark of Hospitality]] can name one liquid from the table below to cause the jug to produce the chosen liquid. Afterward, they can uncork the jug and pour that liquid out, up to 2 gallons per minute. The maximum amount of liquid the jug can produce depends on the liquid they named.
Once the jug starts producing a liquid, it can't produce a different one, or more of one that has reached its maximum, until the next dawn.
|!Liquid |!Max Amount |
|Acid |8 ounces |
|Basic poison |1/2 ounce |
|Beer |4 gallons |
|Honey |1 gallon |
|Mayonnaise |2 gallons |
|Oil |1 quart |
|Vinegar |2 gallons |
|Water, fresh |8 gallons |
|Water, salt |12 gallons |
|Wine |1 gallon |
''Leader:'' [[Yoren d'Ghallanda]]<br/>
''Headquarters:'' [[Gatherhold Enclave]] ([[Gatherhold]], [[Talenta Plains]])<br/>
''Dragonmark:'' [[Mark of Hospitality]]
//Welcome, welcome! So good to see you again. Let me get your drink—blackroot tal with honey, yes? And then you have to listen to this story I've heard about the strange things going on in the Cogs.//
<div align="right">—Alara d'Ghallanda, halfling bartender</div>
The majority of inns, taverns, and restaurants in the
[[Five Nations]] are either directly owned by House Ghallanda or licensed by its Hosteler's Guild. Most people
give little thought to House Ghallanda; when compared
to the soldiers of House [[Deneith]] and the factories of
House [[Cannith]], an alliance of innkeepers seems harmless and inconsequential. But Ghallanda's strength lies
in charm and connections. A Ghallanda innkeeper hears
many things—if you want to know what's really going
on in a community, talk to the [[halfling]] bartender. The
leaders of House Ghallanda don't sell information; they
prefer to build friendship and deal in favors. But should
a Ghallanda baron ever truly need something, they likely
have a favor they can call in.
Ghallanda has a number of "bound businesses"—franchises run directly by the house. The [[Gold Dragon Inn]] is such a business, with Gold Dragon Inns being found in every major city, each serving a familiar menu and providing similar services. But many Ghallanda heirs take
pride in creating their own unique businesses. There are
also many independent restaurants, inns, and taverns
licensed by House Ghallanda. The [[blink dog]] emblem is
an assurance that a locale meets Ghallanda standards of
health and quality—but not every inn is run by a [[halfling]].
House Ghallanda's mandate extends beyond providing
creature comforts to travelers. Every one of the house's
[[enclave]]s—which are more numerous than those of any
other [[dragonmarked house]]—is a sanctuary beyond the
legal reach of any government or [[dragonmarked house]].
Baron [[Yoren|Yoren d'Ghallanda]] and his daughter [[Chervina|Chervina d'Ghallanda]] have greatly expanded the house's presence even in remote areas such as the edge of the [[Demon Wastes]], guided by their study
of the [[Draconic Prophecy]].
!! History of House {{!!title}}
More than 3,000 years ago, the [[Mark of Hospitality]] started appearing
among the nomadic [[halfling]] tribes of
the [[Talenta Plains]]. Those who manifested the mark tended to congregate
together and eventually took the name
Ghallanda, meaning “helpful hounds.”
Moving from oasis to outpost across
eastern [[Khorvaire]], the Ghallandas
offered food and shelter to any fellow
travelers, and they were instrumental
in quelling feuds, monster depredations,
and other local concerns at each stop.
When [[Karrn the Conqueror]] explored the [[Talenta Plains]], the other [[dragonmarked house]]s discovered the Ghallandas. After countless hours at
the bargaining table, the other houses recognized
the Ghallandas as a full-fledged house, and House
Ghallanda started spreading across [[Khorvaire]], first
establishing inns and taverns and then constructing
[[enclave]]s from the [[Barren Sea]] to the [[Lhazaar Sea]].
!!! The Last War
When House [[Deneith]] mercenaries marched into battle early in the [[Last War]], they
had a contingent from House Ghallanda marching with them to provide food and shelter in the field. Other armies noticed how useful the magical creations of the Ghallandas were, and eventually all sides were hiring House Ghallanda to furnish provisions and supplies for their rear echelons. In the
chaos of war, House Ghallanda sometimes found
itself on the front lines, and its promises to remain a
noncombatant weren’t always kept. As a result, House
Ghallanda has more than a few capable veteran soldiers among its ranks today.
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]reverse[]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
Engraved with arcane sigils and imbued with ground Siberys
[[shards|dragonshard]], this cauldron allows someone with the [[Mark of Hospitality]] to prepare food in the blink of an eye. While you have to provide the raw materials, the
Ghallanda cauldron can mystically heat, chill, or flavor contents,
allowing precise control over temperature and replicating the
flavor of spices or herbs you don't possess. While cooking food
in the cauldron, you can reduce its cooking time by 90%, and
you gain advantage on your attempts to prepare the meal.
//Ghallanda Hall has more fugitives, scoundrels, and mysterious strangers per square foot than anywhere else in Eberron.//
<div align="right">—An anonymous [[Sentinel Marshal|Sentinel Marshals]]</div>
While many of the finest inns
have left Underlook, one exceptional establishment
remains. Ghallanda Hall was the first outpost House
[[Ghallanda]] established in [[Sharn]], and while it is not as
fancy as the [[enclave]] in [[Dragon Towers]], it still makes for
an imposing place. The hall is divided into three sections, each catering to customers with different financial means—effectively, an upscale, average, and poor
lodging combined into one. Some rooms have been
specially prepared for members of different races, so
[[halfling]]s and [[gnome]]s can feel at home in a smaller
environment. While each section of the inn has its
own common room, there is also a grand hall open
to all that features a tavern and a stage. Acts change
on a nightly basis, and Ghallanda Hall generally has
the best entertainment in [[Middle Dura]].
Ghallanda Hall is one of the few locations where
the house hosts its heroes' feasts. A private dining room in
the upscale quarter of the hall is reserved for this function, and the clients receive exceptional treatment and
entertainment to accompany the enchanted meal.
The [[Sentinel Marshals]], the
[[Dark Lanterns|King's Dark Lanterns]], the [[Sharn Watch]], spies from across
the [[Five Nations]], the Order of the [[Emerald Claw]],
and elements from many of the other [[dragonmarked house]]s would very much like to extract specific people from the hospitality of the [[Ghallanda]]s here, but House Ghallanda’s ironclad diplomatic immunity and a cadre of well-trained veteran Ghallanda soldiers ensure that the house’s guests remain unmolested as long as they remain within the walls of Ghallanda Hall.
The current Lord of Ghallanda Hall, [[Keslo d'Ghallanda]], bears the [[Mark of Hospitality]]. Keslo is a man of many talents, a diplomat,
a poet, and a master chef. Eight elite Ghallanda
guards provide security, and two [[clawfoot]] dinosaurs can be brought into
play during serious altercations.
This shadowy group of sneaks and assassins is little known beyond the membership of
House [[Kundarak]]. Answering only to Baron [[Morrikan|Morrikan d'Kundarak]] and his six hereditary chieftains, members of the Ghorad’din are expert at bypassing security—even
House Kundarak’s security—and at a variety of assassination techniques.
Ghosts are formed when a [[shade]] clings to a particular
memory with such intensity that even [[Dolurrh]] can't completely
eradicate it—perhaps a terrible mistake or a bitter grudge. The
rest of the spirit's memories fade, and it becomes immune to
ennui, but this ember remains, defining its existence. Ghosts
are driven by a primal desire to return to [[Eberron]], to haunt the
place where they died or where their anchoring memory was
forged; they might escape to the Material Plane when Dolurrh
is coterminous or when a resurrection goes wrong. Ghosts that
are destroyed eventually reform; they can only find peace if
their unfinished business is resolved.
This shimmering, semi-translucent cloak is made of a mysterious lightweight material. Once per day, the user can use the cloak's magic to assume a spectral form for up to one hour. The user becomes incorporeal, and cannot interact with the material world. They can pass through walls and cannot be seen by most living creatures, though some can sense their cold presence.
//The [[halfling]]s of the [[Talenta Plains]] tell the stories of the Hungry Hunter, Orlasca. The greatest hunter of his age, Orlasca swore to eat every creature that he killed. When he was forced to kill another halfling, his oath compelled him to consume his enemy… and he developed an insatiable appetite for halfling flesh. After he slew his own tribe, Orlasca was finally slain. But so great was his hunger that his spirit lingered, slipping into the forms of weaker creatures and trying to work its way up to halfling form. A great Talenta taboo is never consume the flesh of a creature that eats its own kind—because that allows the spirit of Orlasca to pass into you and transform you into a ghoul.//
Ghouls are the most commonly encountered [[undead]] threat in the [[Five Nations]]. They roam the night in packs, driven by an insatiable hunger for [[humanoid]] flesh. Like maggots or carrion beetles, ghouls thrive in places rank with decay and death. When it can't feed on the dead, it pursues living creatures and attempts to make corpses of them. Though they gain no nourishment from the corpses they devour, ghouls are driven by the unending hunger of [[Mabar]] that compels them to consume. A ghoul's undead flesh never rots, and this monster can persist in a crypt or tomb for untold ages without feeding.
Ghouls are especially common in [[Mabar]]an [[manifest zone]]s, but they can spontaneously spawn when Mabar is coterminous, when powerful necrotic forces are unleashed, or seemingly, anywhere where large numbers of people die at once; massive battlefields often spawn ghouls prowling among the corpses. While technically sentient, ghouls have no memory of their former lives and are driven by their hunger. The [[Restful Watch]] and the templars of the [[Silver Flame]] patrol cemeteries and sewers watching for ghouls, and most cities in the [[Five Nations]] have a bounty on ghouls, the value of which varies based on the extent of the threat. After skeletons and [[zombie]]s, ghouls are the easiest undead to create; it’s largely a matter of binding a corpse to [[Mabar]]. However, such ghouls are more aggressive than [[zombie]]s, and unless they are directly controlled they will seek to sate their endless hunger. [[Karrnath]] experimented with ghoul forces during the [[Last War]], but the resources required to control them were too great; however, on a few occasions they used [[bags of holding|bag of holding]] to drop packs of ghouls behind enemy lines, sowing terror among their enemies.
While ghouls that rise from corpses are savage, there are other strains that can transform living creatures. The ghouls that roam the [[Talenta Plains]] inhabit the forms of [[beast]]s, and the Talenta [[Maskweavers]] say that all of these creatures are guided by the spirit of Orlasca; this can result in surprising cunning and pack tactics, or a pack of ghouls all speaking with one voice.
Another strain of ghoul can be found among the cults of [[Katashka]] the Gatekeeper. These cults revolve around the idea that the practice of ritual cannibalism will protect the cultists from disease, aging, and death. And it does—but over time, the rituals transform the cultists into ghouls. These ghouls retain their full memories and intellect, but are increasingly consumed and driven by their unnatural appetites. Some of Katashka’s ghouls can maintain their original mortal appearance as long as they are well fed, but if they food supply dwindles, their [[undead]] nature becomes increasingly apparent. Such ghouls can potentially form mutually beneficial partnerships with [[vampire]]s; the vampire needs the blood of the living, and the ghouls consume the flesh that remains.
The longer a ghoul survives, the deeper the power that animates it sinks into its flesh. When a ghoul persists long enough for this process to take hold, it is known as a ''ghast'' ([[creature tier]] ''2''). Ghasts have greater intellect than ghouls, and can inspire a pack of ghouls to follow its commands. They also tend to emit a powerful stench that can poison nearby living creatures.
South of a wide point in the waterway [[Adarans]] call
[[Jathara Sound]]—the wide area known as Kasshta's Belly—
sits the hidden fortress of Ghoza. Although Ghoza is
built high on the cliffs near the sound, it has rooms that
occupy caverns to the waterline. These natural chambers lead to flooded grottos that eventually open into Kasshta's Belly. Ghoza's warriors are expert swimmers
and more free spirited than many of [[Adar]]'s monks. The
magic of local elemental binders (some affiliated with the
[[Keepers of the Word]]) allowed Ghozan specialists to build
a few vessels that permit limited underwater operations.
However, most missions rely on people instead of craft.
For centuries, Ghozans have caused trouble for [[Riedra]]n shipping—problems easily blamed on weather, the creatures that inhabit the sound, or the "mongrel ogres" ([[eneko]]) of [[Syrkarn]]. Riedra's activities on the sound are limited now, and much of its supplies pass overland.
The Ghoza River in [[Adar]] flows into the [[Jathara Sound]] near [[Ghoza]].
Giants are humanoid creatures of exceptionally large size. Details of their appearance and capabilities depends on the type of giant, of which six are known:
* [[hill giant]]
* [[stone giant]]
* [[frost giant]]
* [[fire giant]]
* [[cloud giant]]
* [[storm giant]]
!! Giants in Eberron
Some [[eighty thousand years ago|Age of Giants]], [[Xen'drik]] was home to
Eberron's first civilized race—the giants, towering beings
possessing tremendous strength and intellect. By studying the continent's ruins, sages have been able to develop
a general sense of the lives and history of this lost age, but
the precise nature of its people remains a mystery. Scholars believe that the first giants were of a type unknown in
the modern age, both wiser and more powerful than the
giants of the present day. Some who study them refer to
these mighty founders as “titans.”
Though Xen'drik has likely always been a dangerous land, over the course of twenty thousand years, the
giants rose from savagery to create a stable and advanced
civilization. The lesser races and creatures of Xen'drik
were all brought under giant dominion in time. Among
the giants' slaves were the [[elves|elf]], who became common
throughout their masters' cities and settlements.
Sixty thousand years ago, something happened that
would change the giants and the fate of Xen'drik forever.
Giant explorers made contact with the [[dragon]]s of [[Argonnessen]], and a group of dragons took a great interest in
the fledgling kingdoms. Flights of dragons migrated to
Xen'drik to take up residence among the giants, sharing
their knowledge of magic with the younger race. The
giants quickly mastered these mystical arts, creating artifacts and wondrous locations still beyond the knowledge of modern civilization. The giant nations even taught
their elf slaves to use magic, with the elves' talent for the arcane arts allowing them to overcome the limitations of their size. For a time, dragon and giant lived in harmony,
but conflict in Argonnessen eventually drew the dragons
away from Xen'drik. In centuries to come, the dragons
became insular and broke off contact with the giants;
they would not return for thousands of years.
The civilization of the giants prospered for another twenty thousand years, and its empires spread across the continent. Then, forty thousand years ago, the collapse of Xen'drik was set in motion by an extraplanar invasion from [[Dal Quor]], the Region of Dreams. Living nightmares tore into the nations of the giants, and reality
itself was scarred by their battles. In the end, an alliance
of giant arcanists drew on cataclysmic powers to sever the
connection between Dal Quor and Eberron—an action
that unleashed destruction nearly as disastrous as the war
it sought to end.
For almost a thousand years, magical curses and
plagues swept through the land, civil war raging even as
the giants' [[elf]] and [[drow]] slaves seized the opportunity to
throw off their chains. Desperately weakened, the giants
prepared to call again on the powerful magic that had
banished the [[quori]]—magic that might have destroyed
Eberron if not for the intervention of the [[dragon]]s. No one
knows the full extent of the power the lords of [[Argonnessen]] brought to bear, but in the aftermath, the Xen'drik of old was no more. Eldritch energy spread across the land,
leaving a twisted environment and bizarre monsters in its
wake. The giants were reduced to savagery and have never
recovered, their cities falling to ruin.
!! Other "Giants"
Other creatures of Eberron are classified as giants due to their oversized humanoid stature, despite being completely unrelated to the "true" giants of [[Xen'drik]]. These include [[ettin]]s (which are distantly related to [[orc]]s), [[ogre]]s, [[troll]]s, [[oni]], and the fey [[fomorian]]s.
Giant owls originated in the forests of the [[Eldeen Reaches]], but were brought to [[Sharn]] hundreds of years ago to participate in the [[Race of Eight Winds]]. While far from the fastest participants in the race, they are the most intelligent, able to speak languages and even cast a few spells (such as [[mage hand]]), enabling them to use cunning and trickery to gain an edge.
A few former racing owls are now merchants in the [[Bazaar]], and one even serves on the [[Sharn Council]] ([[Hruitt]]).
The gibbering mouther's body is an amorphous mass of mouths and eyes that propels itself by oozing forward, fastening several mouths to the ground and pulling its bulk behind. Though it moves slowly, it swims through water, mud, and quicksand with ease.
When a gibbering mouther senses prey, its mouths begin to murmur and chatter, each with a different voice: deep or shrill, wailing or ululating, crying out in agony or ecstasy. This cacophonous gibbering overcomes the senses of any creature that hears it, causing most to flee in terror. Others are overcome with madness or stand paralyzed, fixated on the horrific creature as it oozes forward to consume them.
Driven to devour any creature it can reach, a gibbering mouther flows over victims transfixed by its mad ranting, its multitudinous voices temporarily silenced as it gnaws and swallows living flesh. The monster liquefies stone with which it comes into contact, hindering creatures that overcome its gibbering and attempt to flee.
A gibbering mouther leaves nothing of its prey behind. However, even as the last of a victim's body is consumed, its eyes and mouth boil to the surface, ready to join the chorus of tormented gibbering that welcomes the monster's next meal.
While small, the Gilded Labyrinth is the one truly respected [[arcane order]] in [[Thrane]]. Its members are more commonly known as Silver Pyromancers, and specialize in incorporating the [[divine|divine magic]] energy of the [[Silver Flame]] into [[arcane|arcane magic]] spells. This requires a deep devotion to the Flame in addition to arcane knowledge. The Labyrinth is an arm of the Church of the [[Silver Flame]], and the "Beacon" [[wandslinger]]s of [[Thrane]] each train under one or more Labyrinth [[wizard]]s.
!! Arcane Theory
The magic that Silver Pyromancers channel falls between [[Dominion Theory]] and [[Externalist Theory]]. They draw their arcane power from the concrete source of the [[Silver Flame]], but this isn’t an easy thing to do. The Flame responds more easily to the draw of faith than to scientific manipulation, and Silver Pyromancers generally need both; they manipulate the Flame using scientific principles, but it is still their faith that allows them to grasp the power to begin with.
Gilead Rhoy, a former [[Brelish|Breland]] noble, leads a group of [[cleric]]s and warriors in [[Stormreach]] known as Gilead's Flock, under the umbrella of the [[Covenant of Light]]. This group is tasked with locating and sheltering potential Covenant recruits when they
arrive in Stormreach.
Gilead is a highly charismatic man with an aura of genuine peace and serenity about
him. He has proven to have an uncanny ear for hearing the Song within others and guiding them to their proper role within the [[Covenant|Covenant of Light]]. When Gilead first arrived in [[Stormreach]], he was abducted by the [[Cabal of Shadows]] and held prisoner for several days before the Covenant rescued him from a chamber deep beneath the city. No one knows the full story of
what happened to Gilead at that
time, but he lost the use of his legs
permanently—no healing magic
has been able to mend him. Gilead
now makes his way around the city
on a small (5-foot-by-5-foot) [[carpet of flying]]—a gift from an anonymous
benefactor. This experience inspired Gilead to actively
seek out and protect new disciples for the Covenant.
Gilead is accompanied at all times by his two most trusted companions and friends: [[Boorne]] and [[Leahtari]].
This small green stone amulet hangs on a silver chain. The faint scent of eucalyptus emanates from the smooth gem.
Mundane, non-dire insects and arachnids cannot get within five feet of the wearer. If a bug does happen to get past the barrier, it explodes loudly and violently.
Gimcrack thought to make a small fortune smuggling luxuries into [[Stormreach]] from [[Khorvaire]] for the expatriates in the city. It was a sound plan, but
he fell afoul of [[Berrigan Enge]]. By the time Berrigan was done taxing him, he didn’t have enough gold left to buy passage home, let alone to invest in exotic items to take back to double his money. All but destitute and reduced to working on the docks, Gimcrack drowns his sorrows in the [[Wavecrest Tavern]] and dreams of working for, and joining, the [[Storm Lords]].
A girallon looks like an oversized, four-armed ape with gray skin and white fur. Its long fangs and claws further set it apart from a normal ape.
Girallons are native to [[Xen'drik]]. They often form loose bands of several individuals and their offspring, usually led by a dominant adult that also tends to be the oldest member of the group. When on the hunt away from their lair, girallons use roars and body language to communicate with one another over distance.
[[Old Silverclaws]] is an infamous girallon known to the hunters of [[Stormreach]].
The warlike githyanki and the contemplative githzerai are a sundered people—two cultures that utterly despise one another. The two races look very similar to outsiders, with appearances like that of angular humans with pointed ears and pale yellow or green skin.
!! Githzerai
Focused philosophers and austere ascetics, the githzerai pursue lives of rigid order. Lean and muscular, they wear unadorned clothing free of ornamentation, keeping their own counsel and trusting few creatures outside of their own kind. Having turned their backs on their warlike githyanki kin, the githzerai maintain a strict monastic lifestyle, dwelling on islands of order in the vast sea of chaos that is the [[plane]] of [[Kythri]].
!! Githyanki
The githyanki plunder countless worlds from the decks of their astral vessels and the backs of [[red dragon]]s. Feathers, beads, gems, and precious metals decorate their armor and weapons—the legendary silver swords with which they cut through their foes. Since winning their freedom from the [[mind flayer]]s, the githyanki have become ruthless conquerors under the rulership of their dread [[lich]]-queen, Vlaakith.
!! History of the Gith
Long ago, a proud empire was crushed by the [[daelkyr]]. But this
wasn't the Empire of [[Dhakaan]], but a nation of gifted psychics
who lived in towers of [[crysteel]] and [[sentira]]. [[Dyrrn]] the Corruptor
transformed their champions into the first [[illithid|mind flayer]]s, using them as
living weapons to subjugate their own people. When defeat was
inevitable, the great leader Gith led a planar exodus, fleeing into
[[Kythri]]. The Churning Chaos hid the refugees from pursuit, and
through absolute discipline, they imposed stability upon chaos.
Once the refugees regained their strength, a bitter divide split
their people. Zerthimon the Wise maintained that the people of
Gith should remain within Kythri. He believed mental discipline
was the ultimate key to victory and that, in time, they could gain
the power to reclaim their reality. But Gith was a warrior, and her
followers yearned for battle. They wanted to build their strength
and resources by raiding every layer of reality until they found a
way to destroy [[Xoriat]].
This situation remains today. The githzerai dwell in their
monastery vessels in [[Kythri]], gaining strength through the
endless imposition of order upon chaos. The githyanki dwell in
vast fortress-ships the size of cities, anchored in the trackless
wastes between [[plane]]s, but their raiders can attack any plane. They slaughter [[devil]]s in [[Shavarath]] and pillage the grand
galas of [[Fernia]]. At any time, a githyanki warship could attack
a major city in [[Khorvaire]]; it's up to the DM if this has ever
happened before, or if the githyanki have left [[Eberron]] alone.
Alternately, a githyanki merchant could be a recurring NPC,
showing up and offering items pillaged from across the planes.
Where the githzerai are serene and disciplined, the githyanki
are passionate and aggressive. All gith despise the [[daelkyr]] and
slaughter illithids whenever they can, and they could be curious
and unexpected allies against a [[cult of the Dragon Below|Cults of the Dragon Below]].
Hearing this tale, one might well ask: where are the gith
from? They're from [[Eberron]]—but not the Eberron that exists
today. They came from a world surrounded by the Ring of
[[Siberys]], but there were no [[human]]s or [[elves|elf]] on their Eberron.
According to the githzerai, when the [[daelkyr]] completed their
work on Eberron, they wiped the gith world from existence and
created a new reality. If this is true, they may have done this
countless times... and if they break the [[Gatekeeper|Gatekeepers]] [[seals|dimensional seal]], they
could do it again. What the githzerai ultimately hope to achieve
is to reassert their reality onto the Material Plane.
It's possible that the gith are deluded about all of this. Even
if the gith myth is true, it's doubtful the githzerai will ever have
the strength to rewrite reality. But can it be entirely dismissed?
Note that the draconic allies of the githyanki are descended
from dragons from the gith Eberron; they have no loyalty to
[[Argonnessen]], and could be a curious wild card.
Time moves strangely in Kythri and the Astral Plane, and
the gith could've been dwelling in Kythri and raiding reality for
thousands of years—or it could be that from their perspective,
the destruction of reality was barely a century ago. Are the
githyanki led by an ancient lich-queen, or by Gith herself?
The //glaive of the darkest depths// is one of the [[destiny arms]]—a
mighty weapon of the [[giant]]s forged during the war against the [[quori]]. Created by the powerful giant [[necromancer|necromancy]] Izzdelth, the glaive was forged for the sole purpose of combating the ethereal quori.
This glaive has a shaft made of an oily black metal with a spiral pattern running up its length. At the head of the glaive, a broad silver blade ends in a wicked point. No matter what the light, the blade flickers with a dull shimmering radiance.
While [[quori]] can no longer physically manifest in the Material Plane, this weapon can still be a powerful boon against the forces of the [[Dreaming Dark]]. Striking an [[Inspired]] with the glaive also strikes the [[quori]] within, and forces all but the most powerful quori to end their possession of the host and return to their body in [[Dal Quor]].
In addition, using this weapon to attack other incorporeal creatures, such as [[ghost]]s, grants advantage to the attack.
The Glamer Bay lies off the coast of [[Zilargo]].
The Glamer River in [[Zilargo]] flows from its headwaters near the city of [[Oskilor]] into the [[Glamer Bay]].
Glamerweave is a fine, light fabric that
has delicate illusions woven into its threads. The color of
glamerweave seems to shift subtly and is hard to describe,
but this property makes for a striking and strangely beautiful appearance.
Rarer and higher-quality glamerweave can have the pattern rise
from the cloth. For example, a glamerweave gown might
be wreathed in harmless, illusory flames, while a glamerweave hat might have illusory butterflies fluttering around it.
This magically enhanced studded leather armor allows you to create an illusion, causing the armor to assume the appearance of a normal set of clothing or some other kind of armor. You decide what it looks like, including color, style, and accessories, but the armor retains its normal bulk and weight. The illusory appearance lasts until you use this property again or remove the armor.
See also [[glamerweave]] and [[shiftweave]].
The ruins of the city of [[Making]] in the [[Mournland]] is surrounded by a nightmare tableland of flat, pale glass. Jagged formations like blown glass,
sometimes enormous in size, jut up from the ground
here and there. Obsidian makes up the central plateau, forming bladelike protrusions. Liquid glass and magma ooze around the edges of the highland, and
fire flashes deep under the glass. Nothing grows on the plateau, and few creatures haunt its jagged peaks and flat expanse. [[Living spell|living spell]]s, on the other hand, seem drawn to the area.
The Glass Tower was once one of the fantastic floating towers of the [[Skyway]] of [[Sharn]], one of the city's oldest floating citadels. On [[9 Olarune 918 YK|Khorvaire calendar]], saboteurs believed to be working for [[Aundair]] destroyed the magic supporting the tower with powerful [[abjuration]] magic, sending it careening down, crumbling as it fell. Most of the wreckage landed in the [[Dagger River]], but a significant portion of the citadel struck the district of Godsgate in [[Lower Dura]], causing widespread devastation. A poor area to begin with, Godsgate never recovered from the disaster, and was left in ruins. Today the condemned district is known as [[Fallen]], and the event is commemorated each year on [[Crystalfall]].
While the disaster occurred in the early years of the [[Last War]], no foreign power ever claimed responsibility for the attack. Most of the common folk of [[Sharn]] blame the [[wizard]]s of [[Aundair]], but dedicated historians and scholars of magic remain unconvinced, and have continued to study the tower's fall.
The true answer to the fall of the Glass Tower may have no bearing on mortal wars. Whispers from the wretched residents of [[Fallen]] suggest coordinated action among some of the [[Raver|Ravers]] tribes, a dedicated campaign to collect and reassemble fragments of a broken statue among the rubble of the Glass Tower. The statue is nearly complete, and is beginning to bear a disturbing resemblance to a petrified [[radiant idol]]. Could the devastation of the Glass Tower have been caused by the curse of a fallen [[angel]]?
This set of circular golden frames has no lenses. These "glasses" grant the wearer advantage to see through [[illusion]]s.
While wearing these glasses, you can twist
a knob and cause everything seen through them to be
magnified to twice their size (as a [[spyglass]]). You can twist the knob again and end this effect.
This pair of glasses has thick, smoked lenses. While worn, these glasses make all metal within sixty feet of the wearer appear to glow slightly, even through walls. The color of the glow will change depending on the type of metal.
This pair of glasses has large, circular lenses made from pink glass. When these glasses are worn, the user can see into and through solid matter out to a radius of 30 feet. To the wearer, solid objects within that radius appear transparent and don't prevent light from passing through them. The vision can penetrate 1 foot of stone, 1 inch of common metal, or up to 3 feet of wood or dirt. Thicker substances block the vision, as does a thin sheet of lead.
(Pteranodon)
These flying reptiles have wingspans of 15 to 20 feet and typically dive for small marine prey, though they are opportunists and will attack any creature that appears edible. A glidewing has no teeth, instead using its sharp beak to stab prey too large to swallow with one gulp.
Glidewings are sometimes used as flying mounts in [[Sharn]], and are seen in the [[Race of Eight Winds]] every year.
A quick glint of refracted light, gone in the blink of an
eye, might be the only warning before a skin-searing
blast of lightning obliterates the unfortunate target
of Glimmerdoom’s wrath. This mutated [[behir]] stalks [[Xen'drik]]'s
ancient ruins, subterranean tunnels, and canopied
rocky mesas. The creature’s mirrorlike hide bends
light around its massive powerhouse frame, allowing
it to mask its presence or distort and refract its image
at will. Glimmerdoom is nowhere and everywhere, a
deadly mirage bristling with electricity and hungry
for scorched flesh. Worse yet for those who would
challenge it, the mirror-plated behir reflects magic as
easily as it does light, and spells hurled at it turn back
on the caster more often than not.
The Glimmergleam is a river that flows from [[Mirror Lake]] in the [[Mror Holds]] into [[Karrn Bay]].
In the depths of the [[Towering Wood]], splendor and beauty surrenders to the darkness known as the Gloaming. Here, malformed trees
are hosts to parasites, disease, and swarms of horrid
insects. Monstrous beetles, spiders, and centipedes
attack unwary travelers. The [[druid]]s believe that this
place marks the location of a [[manifest zone]] to [[Mabar]],
the Endless Night. It could also have close ties to the [[layer]] of [[Lamannia]] known as the [[Rot]].
The [[Children of Winter]] often dwell among the twisted trees here, meditating on the cycle of life and death.
This inquisitive
agency run by [[Kava Velderan]], a [[dragonmark]]ed heir of the
House of [[Finding|Mark of Finding]], has ties to House [[Tharashk]]. Kava
prides herself on her ability to find anyone, anywhere. Her agents escalate cases to her attention only
when they prove to be nearly impossible to solve.
While wearing this glove, you can hold out your hand toward a [[humanoid]] you can see within 30 feet of you and attempt to compel them to shake your hand. On a success, the target is forced to shake your hand for up to 1 minute. You have disadvantage on the attempt if you are fighting the creature, and the effect ends early if someone in your party harms it.
Once you have used this property, it can't be used again
until the next dawn.
This pair of red silk gloves allow the wearer to identify and sense the dimensions of any object they touch. If the wearer touches a wall or floor, they can sense the floorplan of the structure within a 60-foot radius.
While wearing these gloves, you can climb and swim as quickly as you can walk, and gain advantage to actions involving climbing or swimming.
These heavy elbow-length gloves are made of dark brown leather. Once per day, the wearer can transform their hands and forearms into large stone fists, chiseled with arcane runes and geometric designs. When in this form, the wearer is capable of performing feats of incredible strength and throwing devastating punches. The form persists for up to 10 minutes.
This pair of soft, tan leather gloves has the symbol of [[Irian]] on the back of each glove in thick silver paint. Three times per day, the wearer can use the magic in the gloves to touch an injured person and heal their wounds.
These gloves seem to almost meld into your hands when you don them. You can deflect or even catch projectiles (if they are small enough to fit in your hand).
This set of two right-hand gloves are made from beautiful red leather. When one glove is worn, the user can telepathically control the second. The empty glove can levitate 10 feet off the ground at a distance of 60 feet, and is capable of lifting 10 pounds.
This pair of brown leather gloves is hemmed with red thread. Anything thrown by the wearer of these gloves reappears in their hands after a few minutes.
Gloves of storing come in pairs, each one tied to a small pocket
dimension. While wearing the gloves and holding an object
that weighs no more than 20 pounds and can be held in one
hand, you can store that object inside
the glove's extradimensional space. When an object is stored
inside the extradimensional space, you can summon it back into your empty hand. You can only store a single object in each glove's extradimensional space, for a total
of two items between the pair.
The gloves' weight is negligible, regardless of their contents.
If a glove is pierced or torn, it ruptures and is destroyed, and
the object it was storing is lost to the cosmos.
Placing gloves of storing inside an extradimensional space
created by a [[bag of holding]], [[portable hole]], or similar item
instantly destroys both items.
While wearing these gloves, you can snap your fingers and cause a 3-inch jet of flame to shoot out from your thumb. The flame sheds bright light in a 10-foot radius and dim light for an additional 10 feet. The flame can ignite combustible materials and persists until you snap your fingers and end this effect.
Once this gloves' flame has been activated for a total of 10 minutes, the magic ceases to function until they are allowed to recharge overnight.
These heavy leather gloves are studded with [[dragonshard]]s and bear the sign of House [[Kundarak]]. When worn by a person with the [[Mark of Warding]], they allow the wearer to cast [[arcane lock]] three times per day. In addition, the caster can attach up to 3 separate keys to the spell effect. As a general rule, the customer gets two keys and the third is kept in the House Kundarak [[enclave]]. The gloves can only be used three times per day, no matter who wears them.
While these silk gloves are worn, the wearer becomes adept at playing keyboard instruments.
These gloves are invisible while worn. While wearing them, you gain advantage to sleight of hand and lockpicking attempts.
Cold violet light illuminates the air and sky for miles around this gash in the northern [[Mournland]]. The glow emanates from deep within the chasm, its source indiscernible from the canyon’s rim. Horrid monsters, some mutated beyond recognition, congregate about the supernatural rift. The bruised luminance continues to warp them if they stay for long.
The [[warforged colossus]] WX-11, "Arkus", lies prone at the bottom of the Glowing Chasm, with one of its arms torn off.
The Glum River in [[Khorvaire]] flows through the swamps of the [[Shadow Marches]], past the city of [[Zarash'ak]], into [[Zarash Bay]]. The river is unpredictable, and prone to floods, which is why Zarash'ak is built on stilts.
Glumtown is a small prospecting town in the [[Shadow Marches]]. It is located near some of the richest [[dragonshard field]]s in the Marches, and is controlled by House [[Tharashk]].
Gnolls are hyena-headed humanoids. Though gnolls usually hunch when standing, a typical gnoll standing to its full height averages 7 to 7½ ft tall, and weighs around 300 lbs.
The gnolls of [[Droaam]], once servants of the [[overlord]]s, broke ties with the [[demon]]s long ago and swore an oath of loyalty to the pack above all else.
Since standing together and being bound by this
[[Znir Pact]], the gnolls have never been subjugated by
any other force, and have never sought to conquer.
Instead, they sell their services as hunters and soldiers, serving all warlords. The gnolls are trusted
across [[Droaam]].
!! Gnoll Characteristics
//''Physical Appearance.''// A typical gnoll stands over seven feet
in height, but this is belied by their hunched posture. Males
and females are similar in appearance, and other species have
difficulty telling them apart. Gnolls have thick fur over their
bodies; depending on clan, this can be uniform in color, or
broken up with spots or stripes. Their eyes are yellow or green,
and gleam with reflected light. While these are common traits,
the [[fiend]]ish heritage of the gnoll sometimes manifests itself in
its appearance. An unusual gnoll could have glowing red eyes,
fur with stripes that glow like flames, or other unusual traits.
Typically these don't grant special abilities, though you could
attribute a class ability or feat to such a mutation.
//''Bone Eaters.''// Gnolls possess powerful jaws, as reflected by
their bite attack. They can chew through and digest bone, and
dislike letting food go to waste. When feral gnolls raid a village,
they consume even the bones of their victims. [[Znir|Znir Pact]] gnolls won't
eat their fallen foes if they're in the company of creatures who
are uncomfortable with such behavior. But they often eat a
small piece of any creature they slay—even if it's just a finger—to
form a bond with the victim. The Znir believe that those you kill
wait for you in the realm of death, and honoring them ensures
that they won't be hungry when you travel to that land.
//''Pack Instincts.''// Gnolls have very strong pack instincts. They
instinctively work together in combat, and think nothing of
placing themselves in harm's way to protect their kin. Znir gnolls
won't deceive members of their pack; if there are problems,
they call them out directly. If a gnoll character adopts a group of
adventurers as their temporary pack, these things apply to the
other characters—but the gnoll will be surprised and angry if
their non-gnoll packmates don't show them the same respect.
//''Casual Aggression.''// Gnolls often seem very aggressive to
other creatures. However, gnolls themselves don't consider
casual intimidation to be a hostile act; it's just a way to establish
a place in the hierarchy of the pack, largely ignored once that
hierarchy is established. This manifests in how gnolls make
demands rather than requests, and use active statements
rather than passive queries.
//''Cunning Hunters.''// Gnolls are strong and aggressive by
nature. But both the Znir gnolls and their uncivilized kin
are cunning hunters rather than simple brutes. Gnolls work
together as a pack, always searching for weaknesses in
enemies and supporting injured allies. Znir gnolls won't break
their word, but they don't hold to any idea of honorable conduct
on the battlefield; they are ruthless and efficient, and see nothing wrong with ambushing or tricking a superior foe. Some gnolls have a supernatural knack for mimicry and use this gift to draw enemies into danger.
//''Working Relationships.''// [[Droaam]] is a diverse region, and
the Znir gnolls have always been prepared to work for any
master. They don't judge people by appearance or by their
beliefs; just as they put up with [[demon]]-worshiping [[minotaur]]s
in Droaam, a Znir //hwyri//—Gnoll for "warden", a champion trained to face [[fiend]]s and [[undead]]— can work alongside a templar of the [[Silver Flame]] or a [[warforged]] [[paladin]] of [[Dol Arrah]]. They may not like the people they are working with, and they may think that the beliefs of their companions are vile or foolish. But they place duty before such personal concerns, and won't insult allies or pick fights with them.
//''Communication.''// The Gnoll language is unique, with a
range of pitches that are difficult for humans to hear, let along
duplicate. At first, it sounds much like the vocalizations of
hyenas, with whining and chattering “laughter.” It's possible for
non-gnolls to learn Gnoll, but it's a difficult feat. When stealth
isn't necessary, the Znir are often quite vocal in battle; they
generally coordinate actions and confirm positions with short
bursts in Gnoll. Each Znir gnoll has a //whoop//, a unique call it
uses as a sort of verbal signature; while these are extremely
short, they convey both personal identity and clan loyalty. These
are used to coordinate in the field, and it's common for a gnoll
to whoop when entering a friendly location, as a simple way of
identifying itself and giving allies an opportunity to respond.
Body language and posture—usually slumped—are an
important part of gnoll communication; for example, when
a gnoll feels threatened or angry, its thick crest of fur down
the spine rises up. The Znir dislike written communication,
though they use it for contracts.
//Five words can defeat a thousand swords. //
<div align="right">—Zil proverb</div>
The average gnome has a love of knowledge that borders on obsession, a curiosity that admits no limits, and
a vast collection of potentially useful information on every personal acquaintance. Most gnomes detest physical
violence and prefer to solve their problems with words—whether that's a [[bard]]'s eloquent persuasion, a [[wizard]]'s
words of power, or a rogue's careful threat. They give
an initial impression as friendly busybodies, always
ready to lend a hand or share a story, while asking questions that tend toward the slightly-too-personal. Often, though, a cheerful and amiable gnome is methodically adding to a mental storehouse of knowledge that might one day provide important leverage.
Gnomes are between 3 and 4 feet tall and average about 40 pounds. They mature at the same rate humans do, and most are expected to settle down into an adult life by around age 40. They can live 350 to almost 500 years.
!! Gnomes of Zilargo
To say that every [[Zil|Zilargo]] gnome is a ruthless schemer would
be a hurtful exaggeration. Intrigue is the favorite pastime of most Zil, though. Every gnome child of Zilargo is taught to manipulate and deceive, and by the time
they reach adulthood most have been involved in dozens
of schemes and feuds, some of which persist well into
adulthood. Even a gnome with a good heart and noble
goals—of which there are many—often still prefers to
use trickery and cunning rather than the unreliable
tools of honesty or brute force.
The gnomes' natural talent for [[illusion]] aids them in trickery and
entertaining, and they often use small animals as messengers and guides.
When you're making a Zil gnome character, consider
what kinds of schemes you or your family might be
involved in. The table below offers some suggestions, but you should feel free to elaborate on these schemes, even to absurd extremes.
| !<<dr d10>> |!Scheme |
| 1 |Your family is working on a new form of [[elemental binding]], but they need a lot of Khyber [[dragonshard]]s. |
| 2 |You have an anonymous contact who sends you missions via the [[sending]] spell. When you do as you're asked, you receive handsome rewards. |
| 3 |You've inherited a plot of land in [[Q'barra]]. If you don't visit within a year, you'll lose the claim. |
| 4 |Due to an unusual twist of [[Triumvirate]] law, you share the same name with a number of other Zil, and you're all legally considered to be the same person. |
| 5 |You've acquired a [[spellshard]] that contains a vast amount of text in a strange code. |
| 6 |You know the location of a wanted war criminal, and you've been trying to decide whether to turn them in or try to get something in exchange for your silence. |
| 7 |You've been selling false treasure maps, but now you've found one that might be real. |
| 8 |You've acquired a controlling stake in a [[dragonshard]] mine, which was abandoned long ago. But why? [[Kobold|kobold]]s? [[Aberration|aberration]]s? There's only one way to find out! |
| 9 |Your family is facing financial ruin, and they've taken out a life insurance policy on you. It only pays out if you die under unusual circumstances, and they're encouraging you to seek out more dangerous adventures. |
| 10 |You're peddling a life-extension scheme where clients are petrified by a [[medusa]] and then restored later. |
Additionally, consider your relationship to [[Zilargo]]:
why you have left, and what ties do you still have to it?
Your scheme could provide a good reason for you to
leave. Or you could be a sage gathering information
for the [[Library of Korranberg]] or an investigator sending stories of your adventures back to the [[Korranberg Chronicle]]. Family is important to the Zil, and you could
be pursuing your family's interests. You could even be
working for the mysterious [[Trust]], the conspiracy behind
the [[Triumvirate]]'s throne that quietly maintains order
in Zilargo. If you are working for the Trust, you could
have a specific mission, but you could also be a sleeper
agent—gathering information and allies until you're activated and you are put to your intended use.
//''Zil Names.''// Zil society is divided into major houses,
each of which is composed of multiple families. Each
gnome carries the name of a house and of a family in addition to a personal name. For example, [[Alina Lorridan Lyrris]] and Tallian Talius Lyrris are members of different families (Lorridan and Talius) within House Lyrris. Gnome names are long and lyrical; a Zil proverb claims "the sweetest song is the name of a friend." Personal and clan names are usually at least three syllables long, and there is a strong tradition of alliteration.
!! Gnomes of the Five Nations
As they have for countless generations, insatiable curiosity and endless opportunity draw gnomes from
Zilargo into the wider lands of [[Khorvaire]]. Most of these
dispersed gnomes find new homes and integrate easily
into local cultures. Gnomes can be found in any walk of life, whether they be as merchants, [[magewright]]s, scholars, or scoundrels. While the gnomes of the [[Five Nations]] aren't as inherently devious as their Zil cousins,
they share the Zil emphasis on the importance of family.
As a gnome character from the Five Nations, you
might have a network of connections to the community
your grew up in, likely built on the exchange of information. Alternatively, you might seek your own path in life,
avoiding the intrigues your cousins adore.
See also [[Lorghalan]], if you're looking to play a [[bard]] or [[druid]] and want no connection to the schemes and secrets of the [[Zil|Zilargo]].
!! Gnomes and Dragonmarks
The [[Mark of Scribing]] appears among the gnomes of
House [[Sivis]]. The gnomes of this house were among
the first of their kind to leave [[Zilargo]] and live in human
lands. They love bureaucracy and intrigue as much as
the gnomes of their homeland, but they have carefully
cultivated a reputation for impartiality and secrecy,
since their services rely on trust.
Today, House Sivis provides avenues of communication across [[Khorvaire]]. Translation, mediation, interpreting, and legal advocacy all fall within House Sivis's
broad purview, and they maintain the network of [[message stations|speaking stone]] that allow cross-continent communication.
Goblins are small [[goblinoid]]s with flat faces, broad noses, pointed ears, and small, sharp fangs. Their foreheads slope back, and their eyes vary in color from red to yellow. Their skin color ranges from green to yellow through any shade of orange to a deep red. They stand about four feet tall and weigh about 40 lbs. They can see well in darkness, and are often quite nimble. Goblins reach adulthood at age 8 and live up to 60 years.
The word "goblin" is sometimes used collectively to refer to all goblinoids, including [[hobgoblin]]s and [[bugbear]]s. By contrast, in [[Droaam]], the word "goblin" often refers collectively to goblins and [[kobold]]s.
The [[Dhakaan]]i word for goblins is //golin'dar//, meaning "quick people".
!! Goblins in Droaam
Both goblins and [[kobold]]s were
once oppressed underclasses within the Barrens (present-day [[Droaam]]), dominated
by almost every other species in the plains. Over time, they
developed their own shared culture that's entirely different from
the cultures of either species elsewhere in Khorvaire; when
someone says “goblin” in Droaam, it's understood that they
mean “goblins or kobolds.” Most goblins and kobolds feel a close
kinship and look out for each other. They learned long ago to
value cunning over strength; the heroes of their tales are quick
and clever. They are patient and enduring, and tolerate endless
suffering while waiting for an opportunity to present itself.
Those goblins who serve the [[Daughters of Sora Kell]] lead far better lives than their ancestors in the Barrens, and they are among the most numerous inhabitants of the large cities—and the most devoted supporters of the Daughters of Sora Kell. Most are especially excited about [[Kethelrax the Cunning]], the [[kobold]] warlord; they believe that this marks the beginning of a new age where goblins will be recognized and rewarded for their work. However, there are still goblins in the domains of some warlords—notably [[Turakbar's Fist]]—who live miserable, short lives. While most goblins are content to focus on their work, some seek to help their oppressed kin or take petty vengeance on [[ogre]]s and [[troll]]s for the vast suffering inflicted on their people.
//Hoisting the head by the fading plumes of the ruined helmet, still tied under the chin by a cord, [[Haruuc|Haruuc Shaarat'kor]] raised it in one hand and his bloody sword in the other. "Your lord is dead!" he howled in the human language. "The battle is done! By my sword, I claim this place and name it [[Rhukaan Draal]], the crown city of [[Darguun]], the land of the people!"//
<div align="right">—Don Bassingthwaite, //The Doom of Kings//</div>
The goblinoid species—[[goblin]]s, [[hobgoblin]]s, and [[bugbear]]s—were once the dominant civilization in [[Khorvaire]], with the goblinoid Empire of [[Dhakaan]] ruling the
continent for thousands of years. It was crippled by a
long conflict with the [[daelkyr]] and their aberrant armies;
even though the daelkyr were defeated, the seeds of
madness took root in the empire and tore it apart. Today in Khorvaire there are four primary cultures of //dar// - a goblin word meaning "the people".
!! City Goblins
Goblins dwell in most of the major cities of the [[Five Nations]]. When humans first came to [[Khorvaire]], they
enslaved many goblins and built their cities on the foundations of [[Dhakaan]]i ruins. [[Galifar|Galifar ir'Wynarn]] ended the practice of
slavery, and these goblins are now citizens of the Five Nations. Gifted goblins can be found in all walks of life,
and goblins served in the armies of the Five Nations
during the [[Last War]].
!! The Ghaal'dar
As a [[Ghaal'dar]] goblinoid, you hold your place through
cunning and strength. You may have been a former mercenary now seeking adventure. You could be working
as an emissary for one of the Ghaal'dar tribes or even
Lhesh [[Haruuc|Haruuc Shaarat'kor]] himself. Or you could have been driven
from your tribe by the actions of a rival; perhaps you're
seeking allies to reclaim your birthright.
!! The Marguul
[[Marguul]] [[bugbear]]s are savage and proud of it. They worship the [[Mockery]] and believe in victory by any means necessary: there is no such thing as honor on the battlefield. It's certainly an unusual choice for a player character, but if you've taken a liking to a particular group of the small folk, you could be a powerful ally.
!! The Heirs of Dhakaan
Though the [[Dhakaan]]i Empire defeated the alien
[[daelkyr]], the war left seeds of [[corruption|Kapaa'vola]] strewn throughout the empire. As Dhakaan began to fall, a number of generals and governors gathered their forces and
retreated into shelters deep within the earth, determined to preserve their civilization until the Empire could finally be restored. After thousands of years, their
[[descendants|Heirs of Dhakaan]] have finally emerged, competing among
themselves to determine which leader deserves the imperial crown. Once this is settled, they will turn to the
conquest of [[Darguun]] and [[Khorvaire]].
The Dhakaani are far fewer in number than the
Ghaal'dar; they had to carefully limit their population in
the underground vaults they've dwelled in for the past
age. However, the //dar//—a goblin word meaning "the people"— have held onto the martial discipline and techniques that allowed their ancestors to dominate
the continent. Their weaponsmiths are superior even
to the [[artificer]]s of House [[Cannith]], and they are experts
in the working of [[adamantine]] and other exotic metals.
Anyone who presumes to look down upon goblinoids
should be surprised by the skills of the Dhakaani.
The [[Heirs of Dhakaan]] are an agnostic society and
don't have [[cleric]]s, [[paladin]]s, or [[druid]]s. Their focus is
on martial excellence, and their spiritual leaders are
[[bard]]s, who tell tales of past glory. Among the dar,
goblinoids work together. [[Hobgoblins|hobgoblin]] are the strategists
and commanders, typically having the skills of fighters,
bards, or rangers. [[Bugbears|bugbear]] cultivate a focused battle
rage and are typically barbarians. [[Goblins|goblin]] are largely artisans and laborers, but exceptional goblins join the [[Khesh'dar]] ("silent folk"), learning the skills of rogues,
monks, or rangers. The Khesh'dar spread agents across
the [[Five Nations]], and one can never know when a city
goblin might turn out to be an assassin.
As an adventurer from a Dhakaani clan, consider why
are you working with the other player characters? Are
you a scout gathering information? Are you searching
for allies to defeat a rival clan, or to support your own
unlikely bid for the Imperial throne? Are you an exile?
If so, do you hope to regain your position, or have you
abandoned your ties to the dar?
!! Goblinoid Names
Goblinoid names often feature drawn-out vowel sounds
(represented by doubled letters), as seen in the names of
both their ancient empire ([[Dhakaan]]) and their newborn
country ([[Darguun]]). Goblins, hobgoblins, and bugbears
use the same names and naming conventions, despite
their tribal differences.
//''Masculine Names:''// Aruget, Chetiin, Daavn, Dabrak, Dagii,
Drevduul, Duulan, Fenic, Gudruun, Haluun, Haruuc,
Jhazaal, Kallaad, Krakuul, Krootad, Mazaan, Munta,
Nasaar, Rakari, Reksiit, Tariic, Taruuzh, Thuun,
Vanii, Vanon, Wuudaraj
//''Feminine Names:''// Aaspar, Aguus, Belaluur, Denaal,
Draraar, Duusha, Ekhaas, Eluun, Graal, Gaduul, Hashak, Jheluum, Kelaal, Mulaan, Nasree, Raleen, Razu,
Rekseen, Senen, Shedroor, Tajiin, Tuneer, Valii, Wuun
While wearing these dark lenses, you have darkvision out to a range of 60 feet. If you already have darkvision, wearing the goggles increases its range by 60 feet.
This large tavern is usually filled with off-duty guards of the [[Watch|Sharn Watch]] and
royal soldiers. Anyone wearing the insignia of a
non-[[Brelish|Breland]] military unit, or who can be identified as having served with another nation during
the [[Last War]], receives an unfriendly attitude by
the patrons of The Gold & White. Conversely, any
character who served [[Breland]] during the war gets
a bonus to gather information in the tavern,
in addition to any bonus received from being a
regular customer.
Powerful and majestic, a gold [[dragon]] has a sagacious face anointed with flexible spines that resemble whiskers. Its horns sweep back from its nose and brow, echoing twin frills that adorn its long neck. A gold dragon's sail-like wings start at its shoulders and trace down to the tip of its tail, letting it fly with a distinctive rippling motion as if swimming through the air.
A gold dragon wyrmling has scales of dark yellow with metallic flecks. Those flecks grow larger as the dragon matures. As a gold dragon ages, its pupils fade until its eyes resemble pools of molten gold.
Gold dragons can eat just about anything, but their preferred diet consists of pearls and gems.
Gold dragons are respected by the other dragons for their wisdom, but they are the most aloof and grim of the dragons. They value their privacy to the extent that they rarely fraternize with other dragons except their own mates and offspring.
Older gold dragons can assume animal and [[humanoid]] forms. Rarely does a gold dragon in disguise reveal its true form. In the guise of a peddler, it might regularly visit a town to catch up on local gossip, patronize honest businesses, and lend a helping hand in unseen ways. In the guise of an animal, the dragon might befriend a lost child, a wandering minstrel, or an innkeeper, serving as a companion for days or weeks on end.
!! Magic and Breath Weapon
The gold dragon can exhale fiery breath, as well as a cloud of gas that temporarily weakens any creature who breathes it. As innate spellcasters, adult gold dragons can cast spells such as [[hold]], [[invisibility]], [[dimension door]], [[wall of fire]], and [[immolation]].
{{DragonAgeCategories}}
Travelers and explorers making their way across [[Khorvaire]], especially in out-of-the-way areas, often find themselves in need of a safe place to spend the night. Thanks
to the efforts of House [[Ghallanda]], there's no better
place to take a rest than at one of the hundreds of Gold
Dragon Inns that the house operates.
Every city, most towns, and even some villages have a
Gold Dragon Inn, and a large city might boast several.
Every major road through the countryside has Gold
Dragon Inns along much of its length, spaced roughly a
day's travel apart. Sometimes an inn is the nucleus of a
small community whose industry is focused on providing for the needs of travelers. A few Gold Dragon Inns
are found in locations that offer no other comforts for
the weary traveler—for example, high in a pass through
the [[Byeshk Mountains]], deep in the [[Karrnwood]], or beneath the surface of the [[Mror Holds]].
!! Inn Features and Amenities
Every Gold Dragon Inn provides a standard menu of
reliable services at reasonable rates. Prices are fixed, and the quality of services is reliably modest, with some comfortable upgrades available. Every inn uses
one of a small number of possible floor plans, and every
inn's restaurant offers the same menu.
The size and number of guest rooms can vary from
inn to inn: a small roadside inn has four rooms and a
moderately sized common room, while a thriving inn in
a large city has forty rooms, a restaurant, and a separate common room, with two stages for entertainment.
Because the inns are owned by House [[Ghallanda]], the
buildings all include accommodations for [[halfling]]-sized
guests as well as taller folk.
Because travelers often carry valuables with them,
each inn has a heavy strongbox secured with an [[arcane lock]] spell. To make a traveler's stay more enjoyable,
perhaps even memorable, House [[Ghallanda]] has arranged with House [[Thuranni]] and House [[Phiarlan]] to
employ guild-licensed entertainers at almost every Gold
Dragon Inn.
!! Inn Attractions
The table below offers some ideas for unique
twists on an inn's character or atmosphere.
| !<<dr d6>> |!Attraction |
| 1 |The bartender is a [[changeling]] who is always mimicking the patrons for a laugh. |
| 2 |The innkeeper is 7 feet tall, claiming to have grown 2 feet after venturing into the mist of the [[Mournland]]. |
| 3 |Rumor has it that the innkeeper here is a [[gold dragon]] cloaked in a humanoid guise. |
| 4 |This inn is haunted by a ghost who loves to sit by the fireplace and tell stories—but it has been accused of more sinister activities once the fire burns down to embers and the guests are in their beds. |
| 5 |The inn has a [[blink dog]] that wanders around with her five pups, all of them eager for attention and treats. |
| 6 |This inn offers "the true [[Talenta|Talenta Plains]] experience"—the [[halfling]] family that runs it keeps pet [[dinosaur]]s. |
!! Gold Dragon Inns in Dar Jin
House [[Ghallanda]] has three Gold Dragon Inns spread across the [[Jhodra]] of [[Dar Jin]] in [[Riedra]]. All three are virtually identical, providing reliable room and board for
0.2c per night. A House [[Phiarlan]] entertainer is typically on duty in the each inn; the lineup changes each night, alternating between song, dance, and comedy.
This upscale inn is the local
outpost of the [[Circle of Song]]. It has a considerable area set
aside for members of the Circle, including a library,
meeting hall, and even a small concert hall. The
proprietor of the Horn is a man named Mandyran
([[half-elf]]). A former wanderer, the old man has settled down and opened the
inn to help support the Circle.
''Leader:'' [[Jacques the Hook]]<br/>
''Turf:'' [[Respite]] (base), [[Forgelight]], [[Locksmith Square]], the [[Marketplace]]<br/>
''Portfolio:'' Assault, extortion, fraud, minor smuggling<br/>
''Tactics:'' Financial coercion, political connections, violence
This gang is composed of the young members of [[Stormreach]]’s most respected families. [[Dragonmarked scions|dragonmarked house]], heirs to wealthy merchant families, and even the child of a [[Storm Lord|Storm Lords]] or two are all counted among its crew. Most of these dandies think of the “gang” as a social
club. On any given night, the Lions are just as likely to
go out to a high-end tavern as they are to hit the streets
and bust heads. For a select few among the Lions’ upper-level members, the gang is a training ground for the
vicious political wheeling and dealing they will eventually tackle at the helm of their family’s power. Rumors assert that many of the Lions’ parents are members of
the mysterious [[Aurum]]. Powerful families with deep
pockets encourage their children’s involvement with the
Lions. Some view the gang’s activities either as a sowing
of their kids’ oats or a means of grooming them for a
place in the Silver Concord when the time is right.
The Golden Lions are not powerful by any means,
but they command respect from other criminals for
two reasons. The first is money. This gang is better
financed than any other, with the possible exception
of the [[Bilge Rats]]. The Lions’ weekly allowances alone
from their gold-heavy families exceed what most
gangs’ illegal businesses net in a month. Second, their
enemies in the underworld fear the retribution that
the Golden Lions’ parents could bring to bear if one
of the gang members was maimed or killed.
The Lions engage in a range of crimes. Some enjoy irresponsible violence and their freedom to beat and maim their lesser members. Others focus on more sophisticated crimes, from blackmail and extortion to elaborate gambling schemes. When the [[Aurum]] comes calling, these Lions are likely to make the cut.
The [[Aurum]] maintains public offices in every capital of the [[Five Nations]], and in
most other large cities as well. These structures are usually plain and windowless, with only the Aurum’s sigil—a golden crown surrounded by a heavy chain—to mark the building’s purpose. To the public eye these are private clubs where Concordians enjoy membership’s benefits.
Rising from the side of [[Krona Peak]] in the [[Mror Holds]] is the Golden Vault, the Aurum’s headquarters and the site where the organization was first founded.
Unlike the Aurum’s other strongholds, the Golden Vault is ostentatious—a sprawling structure spacious enough to accommodate hundreds of members and luxurious enough to satisfy their every need. Gardens filled with priceless statuary, a museum with treasures from nearly every age, and libraries containing the collected works of the greatest thinkers make it a veritable palace of culture and refinement. For these reasons, the Vault has countless traps, sentries, and magical wards—the best security money can buy.
The Golden Wing Inn is popular among younger
immigrants finding their way in the city of [[Stormreach]]. Relatively
spartan and reasonably priced, the Golden Wing
is partly underground and smells of damp earth.
Though cheaper lodging is available in the [[Temple District]], the
Golden Wing has the advantage of being a safer place,
its staff having no patience for customers getting their
pockets picked or being cheated at cards or dice.
The Goldwings are a division of the [[Sharn Watch]], an air cavalry unit who use [[Vadalis]]-trained [[hippogriff]]s to scout for trouble and to respond to mid-air crimes. The unit is stationed in [[Daggerwatch Garrison]] in [[Upper Dura]].
Golems are magically created [[construct]]s. They are made from humble materials—clay, flesh and bones, iron, or stone—but they possess astonishing power and durability. A golem has no ambitions, needs no sustenance, feels no pain, and knows no remorse. An unstoppable juggernaut, it exists to follow its creator's orders, and it protects or attacks as that creator demands.
The construction of a golem begins with the building of its body, requiring great command of the craft of sculpting, stonecutting, ironworking, or surgery. Sometimes a golem's creator is the master of the art, but often the individual who desires a golem must enlist master artisans to do the work.
After constructing the body, the golem's creator infuses it with an [[elemental]] spirit. This tiny spark of life has no memory, personality, or history. It is simply the impetus to move and obey. This process binds the spirit to the artificial body and subjects it to the will of the golem's creator.
The "average" golem's [[creature tier]] is 3, but depending on the skill of the [[wizard]] or [[artificer]] creating it, it could be a tier 2 or 4 creature.
Holding a sprig aloft, you channel the primal power of [[Lamannia]], causing up to ten berries to instantly grow on the branch. These berries are infused with magic. Eating a berry slightly accelerates the healing of injuries, and the berry provides enough nourishment to sustain a creature for one day.
The berries lose their potency if they have not been consumed within 24 hours of the casting of this spell.
This 100-mile-long gash in the
earth splits the [[Ironroot Mountains]] and drops down into the depths of [[Khyber]]. The
canyon is reputedly home to a foul beast, greater in
size and power than the largest [[dragon]]s. However,
it is rumored that explorers who brave the perils of
Goradra will find themselves in a massive undiscovered section of the [[Realm Below]], which may hold more secrets of the origins of the [[dwarf]] kingdom. Perhaps distant kin of the surface dwarves live there to this day.
Few creatures that encounter a gorgon live to tell about it. Its body is covered in iron plates, and its nostrils fume with green vapor.
A gorgon's iron plates range from steely black to gleaming silver, but this natural armor in no way hinders its movement or mobility. The oils of its body lubricate the armor. A sick or inactive gorgon gathers rust like fungus or mange. When a rusty gorgon moves, its plates squeal as they rub together.
When a gorgon spots potential prey, it charges with a hideous clamor of metal on metal. When the gorgon hits, it pulverizes the foe and sends its sprawling, then tramples it to death with its cruel hooves. Faced with multiple foes, the gorgon exhales its deadly vapor to overcome the creatures it touches by turning them to stone. When it grows hungry, it smashes its petrified prey to rubble and uses its strong teeth to grind the stone into a powder that provides nourishment. The crisscrossing network of trampled trails and splintered trees that surrounds a gorgon lair is strewn with the uneaten fragments of its shattered foes.
This fortified village lies close to the [[Mournland]]. Once it
maintained the front line against [[Cyre]]. Now, the [[hobgoblin]]s stationed here protect their people from the horrors
that crawl out of the warped realm. If you're a [[goblin]]
soldier, you might have served in Gorgonhorn. It's also a
base for the scavengers and salvagers who venture into
the Mournland.
For those who study it, the sparse history of [[dragon]]s in
[[Sarlona]] is punctuated by regular tales of [[rogues|rogue dragon]] driven
mad by the pursuit of [[psionic|psionics]] power. The strange
energy of psionics often reacts poorly with the [[arcane|arcane magic]]
potential of the children of [[Siberys]]. However, Sarlona
is a land steeped in psionics, from the ancient ruins
of the [[yuan-ti]] to the [[hanbalani alta]]s that focus and shape
the collective mind-power of the people of [[Riedra]].
A small number of rogue dragons are drawn to the
arts of the mind—and to the destructive madness that
inevitably results.
Gornath is a native Sarlonan, born in the [[Frostblade|Frostblades]] foothills of the [[Tashana Tundra]]. From his lair on the Tundra–Riedra frontier, he ranges through
virtually all the lands of [[Sarlona]] except central [[Riedra]] (which holds the great cities of the [[Inspired]]) and eastern [[Syrkarn]] (where lairs [[Qataakhast]], self-styled guardian of that land). From [[Ohr Kaluun]] to [[Adar]], Gornath has
begun to unite other [[rogue dragon]]s and isolated clans
of persecuted [[yuan-ti]] in the name of his own twisted
version of draconic destiny. In his madness, he sees
[[psionics]] as the next stage of draconic evolution, and he
is the paragon and path through which that evolution
will unfold.
!! Description
Gornath is a young adult [[red dragon]], though he is barely
recognizable as such. Endless skirmishes with the [[Harmonious Shield]] have combined with the ravaging effect of his pursuit of [[psionic|psionics]] power to twist his form. His
body is deeply scarred, the dull red of his gnarled scales flecked with black.
His jet-black wings and neck frill are shredded, trailing flayed skin that creates a distinctive hiss as he flies. Each of his frill-spikes has been set with a skull (mostly
[[yuan-ti]] and [[human]]), and a heavy [[mithral]] chain strung
with yuan-ti and [[eneko]] skulls adorns his throat. The teeth of his reeking maw are jagged stumps, stained the same red-black as his tongue and his unblinking eyes.
Even more disturbing than Gornath’s physical appearance is his reputation in battle. The Madwyrm attacks with no provocation or thought to his own safety, and is as likely to decimate ranks of weaker creatures as he is to take on foes stronger than himself. He typically leads off with a maximized breath weapon attack, often after turning invisible to get into optimal position. Gornath otherwise eschews spellcasting in battle with lesser creatures, but he uses his potent [[wilder]] [[psionics]] against the weak-willed.
One of the most powerful [[warlord]]s serving the [[Daughters of Sora Kell]], the [[fire giant]] Gorodan Ashlord is a
[[Xen'drik]] exile and one of the few of his kind in [[Khorvaire]]. Gorodan rules [[Vralkek]], the only port in [[Droaam]].
The king of a [[fire giant]] realm in
[[Xen'drik]] exiled Gorodan for seeking power above his
station. Gorodan came to [[Droaam]] more than twenty
years ago, bringing an entourage of [[azer]]s and [[salamander]]s
with him.
Carving out a large fiefdom on the shores of the
[[Thunder Sea]], Gorodan subjugated the [[ogre]]s and [[goblin]]s of the area, then built a fortress on the bluffs east
of the [[Scar River]]. When the [[Daughters of Sora Kell]]
came to power in [[Droaam]], they won the [[fire giant]]’s
grudging allegiance, granting him the resources to
raise a settlement around his fortress.
Though Gorodan has a reputation
as a warrior, he is also a mystic of sorts. He knows
only a little magic, but he is constantly seeking ways
to emulate his fire titan ancestors.
<ul>
<$list filter="[tag[government]tags[]tag[nation]] [tag[government]tags[]tags[]tag[nation]] +[sort[title]]">
<li>{{!!article}}<$link overrideClass="graylink"/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[government]] [tag<currentTiddler>tagging[]tag[government]tags[]tag<currentTiddler>!tag[province]category[location]] [tag<currentTiddler>tagging[]tag[government]tags[]tag<currentTiddler>!title[government]!tag[fleet]category[organization]] +[sort[title]]">
<$list filter="[<currentTiddler>tag[government]]" emptyMessage="""<li>{{!!article}}<$link overrideClass="graylink"/></li>""" variable="noop">
<li>{{!!article}}<$link/></li></$list>
<ul>
<$list filter="[tag<currentTiddler>tag[government]] [tag<currentTiddler>tagging[]tag[government]tags[]tag<currentTiddler>category[location]] [tag<currentTiddler>tagging[]tag[government]tags[]tag<currentTiddler>!title[government]category[organization]] +[sort[title]]">
<$list filter="[<currentTiddler>tag[government]]" emptyMessage="""<li>{{!!article}}<$link overrideClass="graylink"/></li>""" variable="noop">
<li>{{!!article}}<$link/></li></$list>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
!! Other Tags Under "Government" Umbrella
<$list filter="[list{!!title}sort[title]]">
<$macrocall $name="tag" text={{!!title}}/>
</$list>
Another of the theaters in [[Upper Menthis]], the Grand Stage generally produces a more
conservative and traditional repertoire than the others, including a mixture of classic works and more
modern plays echoing the style and conventions of the
classics. The well-beloved //The Changeling's Prophecy//, by the
ancient playwright Duthic Olan, appears on the Grand
Stage's docket every two to three years. This is not the
place to see avant-garde productions that wrestle with
existential concerns in the wake of the [[Last War]], but
rather the Grand Stage presents a constant selection
of the great cultural heritage of [[Galifar]].
''District Type:'' Shops<br/>
''Buildings:'' Temple ([[Arawai]]), shrine ([[Kol Korran]]),
average lodging (15), average food (40), exotic trades
(15), upscale trades (50), average trades (140), poor
trades (40), upscale services (10), average services
(40), poor services (8)<br/>
''First Impression:'' Quirky boutiques and art galleries
stand out among a host of more mundane shops.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Vallia Towers]] (north); [[Olladra's Kitchen]] (northeast); [[Forgelight Towers]] (bridge, southwest); [[Center Bridge]] (bridge, south); [[Torchfire]] (bridge, southeast); [[Dragon Towers]] (above)
Granite Halls is one of [[Lower Central]]'s two mercantile districts. Compared to [[North Towers]], it has more
art galleries and fewer bookstores, but otherwise the
two districts are very similar.
Granite Halls is home to Sava's Gallery, a trendy art gallery owned by city councilor [[Sava Kharisa]].
''District Type:'' Average residential, [[Karrn|Karrnath]]<br/>
''Buildings:'' Temple ([[Blood of Vol]]), upscale residences (40), average food (2), average lodging (2),
average residences (280), poor lodging (2), poor
residences (40)<br/>
''First Impression:'' The people of Grawand are somber
and serious, and outsiders receive a cold welcome. A
visitor with a good ear notes the predominance of
Karrn accents and spots Karrn features among the
inhabitants of the district.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Tavick's Market]] (northwest); [[Cornerstone]] (northeast); [[Dancing Shadows]] (south); [[Smoky Towers]] (bridge, southwest); [[Cogsgate]] (below); [[Twelve Pillars]] (above)
The culture of [[Karrnath]] existed long before the [[Last War]], and in [[Sharn]] it found a home in the Grawand
district. As Sharn grew and became an important
center for trade and commerce in the kingdom of
[[Galifar]], and as Karrn merchants and crafters settled
in the city, many made their home in Grawand.
Today Grawand is a quiet, close-knit community.
The local families know each other well, and they
dislike outsiders—with the notable exception of visitors from Karrnath, who receive a warm welcome and demands for the latest news from “the old country.”
In practice, the people of Grawand are unfriendly
toward most outsiders, but friendly toward anyone of Karrn descent. Due to prejudices and incidents
that occurred during the [[Last War]], anyone attached
to the [[Sharn City Watch|Sharn Watch]] (especially the [[Guardians of the Gate]]) are treated with near-hostility. In general, City Watch patrols avoid
Grawand; the people maintain a small local militia
that patrols the district and settles disputes.
For the most part, Grawand is a peaceful
district. Most of the inhabitants are honest, hardworking people. However, the people of the district share something besides Karrn descent, something
that sets them apart from the Karrn immigrants in
[[Middle Menthis]]—most of the people of Grawand
are devoted followers of the [[Blood of Vol]]. Sad to see the way in which their religion has
been suppressed even in their homeland, they
continue to carry on the old traditions. And even if
the people of Grawand won't actively assist the Order
of the [[Emerald Claw]], they certainly do provide agents
of the Claw with shelter and support.
!! Noteworthy Locations
* The [[Bloody Mug]]. This inn caters to visitors from [[Karrnath]].
* [[Slogar's]]. This modest restaurant serves traditional Karrnathi cuisine. The ambience is a bit gloomy, but the prices are reasonable, and the food is very filling.
* The [[House of Hazal]]. The largest estate in the district is also home to [[Sharn]]'s only temple to the [[Blood of Vol]].
A luxurious inn near the
pinnacle of the Tower of Gold, the Gray Dragon
offers elegant suites to visiting dignitaries and
others with wealth to spare.
This manor is one of the oldest in the district, and it has a few unusual features; most notably, it has no windows. The outlines of windows have been engraved into the outer walls, but the walls are solid; apparently the architect considered it to be some sort of artistic statement. The Gray House has passed through the hands of a number of [[Karrnath]]i nobles over the last three centuries. While the people of [[Ocean View]] generally distrust foreigners, the inhabitants of the Gray House are invariably charming and
charismatic—and [[vampire]]s. The Gray House has long
been used as a safe house for [[undead]] associated with
the Order of the [[Emerald Claw]]. The current lady of
the house is [[Jesel Tarra'az]]. She spends most of her time
tending to her “family investments,” but occasionally
appears at evening galas or other after-dark events.
A gray ooze is stone transmuted to semi-sapient liquid. When it moves, it slithers like a liquid snake, rising to strike. The ooze is very corrosive, particularly to metal; an ooze can eat through an inch of nonmagical metal in as few as three seconds.
Some gray oozes spontaneously develop heightened intelligence as well as [[psionic|psionics]] abilities such as telekinesis. It is not yet known what causes this transformation.
[[Changeling|changeling]]s have always been viewed with suspicion by most of the people of [[Khorvaire]], and occasionally that fear has boiled over into something worse. Thirteen hundred years ago, the lords of the nations now known as [[Karrnath]], [[Cyre]], and [[Thrane]] began a campaign of extermination against the changeling race. Many changelings fled to [[Breland]] or [[Aundair]], hiding among [[human]]ity. But one among them was not satisfied with survival. This changeling was named [[Kel]], and they had a vision of a changeling homeland: a realm on the edge of the world, where changelings could live away from the fearful scrutiny of humanity. They traveled the land, speaking to family after family, and slowly an exodus began—a journey that ended on the island of [[Lastpoint]]. There, staring into the haunting gray mist that lingers over the waters, Kel declared that they had found their home.
No outsider knows the full size of the Gray Tide principality. Some estimates say that there are over fifty thousand [[changeling]]s in the [[Lhazaar Principalities]], though it is impossible to know for certain. Changelings have spread out across the islands, and many of the brothels and theaters in the Principalities are run by changelings. [[Lastpoint]] changelings also serve as guides, interpreters, and mediators, serving as hirelings on ships of other princes. Some Lhazaarites fear that the changelings have spread far deeper into Lhazaar society than anyone knows. But most are willing to see the changelings as brothers on the sea, and they are more accepted in this region than anywhere else in [[Khorvaire]].
The Gray Tide principality is still ruled by Prince [[Kel]], or someone maintaining their persona, to this day. It is thought to have four ships, and common belief holds that it does participate in piracy. However, a host of rumors has circulated about the principality. Some say that the [[changeling]]s can enter the gray mists of [[Lastpoint]] without danger, and that they have a fleet hidden within it. Other tales claim that the changelings have developed ships that can shift appearance, so that their acts of piracy are blamed on others. The truth of these tales is in the hands of the DM.
The Gray Wood is a small forest in northern [[Aundair]], overlooking [[Stormhome]].
''District Type:'' Waterfront district<br/>
''Buildings:'' Other (20), temples ([[Kol Korran]],
[[Balinor]], [[Onatar]], [[Aureon]]), poor lodging (20), poor
food (36), poor trades (100), poor services (140), poor
residences (80)<br/>
''First Impression:'' Most of the traffic here consists of
sailors in search of entertainment. Bars, flophouses,
and small shops—many of which don't bother to
advertise the nature of their business—line the street,
which winds precariously along the edge of a steep
cliff overlooking the river.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Sharn's Welcome]] (southeast); [[Ship's Towers]] (south)
Grayflood, a seedy waterfront district, fills roughly the northern half of the docks and wharves running along the [[Dagger River]]. Gigantic cranes empowered by magic haul freight from ships at dock to the warehouse district of [[Precarious]], while the crews of those ships restock and recharge at the shops and taverns that line the bottom of the great cliffs.
Graystone, a [[Cross]] ward in [[Stormreach]], is the main corridor between the [[Marketplace]] and the [[Harbor]] district, and is dominated by the [[House Tharashk Refinery]] at its center. The ward has few residents, its main structures being the refinery and its storehouses and other support buildings, including dormitories for the refinery’s [[human]], [[orc]], [[half-orc]], and occasional [[hill giant]] workers.
[[Havulak Prospecting]] can also be found here, as well as the casino [[Big Bronau's Boat]].
Known as the Gateway to [[Droaam]], this city sits on the
border to [[Breland]]. Though dominated by monsters
and ruled by a [[mind flayer]], Graywall is both a center
for trade and a haven for deserters and fugitives. The
[[dragonmarked house]]s maintain outposts in Graywall,
and House [[Tharashk]] governs the Calabas, the foreign
quarter inhabited by [[human]]s and other people from
elsewhere in [[Khorvaire]].
This mountain range separates [[Breland]] from [[Droaam]]. The Graywalls are home to [[ettin]]s, [[ogre]]s, and [[harpies|harpy]]; many harpies reside in a hidden [[Irian]] [[manifest zone]] known as the [[Shining Valley]].
A significant number of [[Dhakaan]]i ruins along and below the mountain range, including a set of thousand-foot statues commemorate the [[six kings|Six Kings]] who came together to form the ancient Empire of Dhakaan.
The [[Droaam]] city of [[Graywall]] takes its name from its proximity to this mountain range.
Early in the [[Last War]], House
[[Deneith]] accepted a contract from [[Breland]] to guard a
key mountain pass in the [[Graywall Mountains]] between central Breland and what is now [[Droaam]]. In 987 YK, when King [[Boranel|Boranel ir'Wynarn]]’s armies retreated from the Graywalls, House Deneith remained in a stubborn effort to
hold up its end of the contract. For the next nine years,
the soldiers of the house were often near starvation, frequently under siege, and always surrounded, but they held the mountain pass. Even the war’s end couldn’t
dislodge House Deneith, and it has built a small but nearly impregnable keep. Although Droaam (for military reasons) and Breland (for political reasons) would like to see the outpost abandoned, House Deneith
shows no sign of leaving.
An artificial mountain raised
from the earth by [[dragon]] magic, this is the meeting
place of the [[Conclave]]. Built to hold a thousand dragons,
it towers over the landscape. Despite its imposing bulk,
it is often empty of dragons, inhabited only by the [[stone giant]]s and iron [[golem]]s that maintain it as they wait for their masters to return.
The Great Barrier of [[Argonnessen]] forms the northern rocky coastline of the continent, looming over [[Totem Beach]]. A few dominion lords have given the [[Totem Guardians]] permission to settle along the beach and in the mountains, and these tribes fiercely defend this territory from foreign invaders.
Built atop ancient [[goblin]] ruins, the Crag is the seat of the [[Daughters of Sora Kell]]. Few outsiders have seen this thriving city of monsters. Of the [[dragonmarked house]]s, only House [[Tharashk]] has a presence in the city.
!! The Shape of the Great Crag
At the heart of [[Droaam]], a vast mountain dominates an otherwise flat and fertile plain. According to legend, the Great Crag was torn from the earth during
the war between the [[Dhakaan]]i and the [[daelkyr]]. Today,
the ruins of a goblin city are scattered across the plain,
and ancient passages honeycomb the mountain.
For thousands of years, the crag was shunned by
the creatures of the region, but the [[Daughters of Sora Kell]] have made the mountain their seat of power, crafting a bizarre, sprawling city within the ruins.
The blocky stonework of [[ogre]]s stands next to perfectly restored [[Dhakaan]]i architecture. [[Harpies|harpy]] and [[gargoyle]]s roost in the heights, with [[goblin]]s and [[kobold]]s living beneath them in makeshift tents. A good
number of monsters prefer to serve the [[hag]]s rather
than their local [[warlord]]s, and the resultant influx of
population has seen the Great Crag become one of
the largest cities in [[Khorvaire]]. Population estimates vary widely, but most settle on around 160,000 inhabitants.
Despite its size, the Great Crag is a city of limited sophistication. Many services are difficult to find, and [[Tharashk]] is the only [[dragonmarked house]] that maintains an [[enclave]] in the city. Weapons are easy to come by, since the city’s smiths constantly churn out goods for [[Droaam]]’s mercenaries, and sport can be
found in the brutal arena where creatures that defy
the hags are sent to die. The city contains temples to
the [[Shadow]], the [[Mockery]], and other grim deities, but
shrines to the [[Sovereign Host]] and the [[Silver Flame]]
are unknown here.
The grand temple to the
god of knowledge at [[Morgrave University]], the Great
Hall of [[Aureon]] is an architectural marvel as well as a
sacred site often visited by pilgrims. Scholars, scientists and [[artificer]]s, and any others who seek knowledge have made a practice of spending the night in
the Great Hall. They believe that inspiration will
visit them while they sleep on the marble floor of the
majestic temple. Some of [[Breland]]'s greatest minds
through the ages have claimed that their greatest
breakthroughs came after a night in the temple.
[[Merrix d'Cannith]] (the grandfather of the current
head of House [[Cannith]] in [[Sharn]]) attributed the
invention of living [[construct]]s (the first [[warforged]])
to a stay in the Great Hall of Aureon.
The Great Hall also provides a place to find
experts in all fields. The temple staff represents the
broad spectrum of scientific study, and if they do
not know the answer to a question they can almost
certainly find someone who does. The ordained
clergy of the Great Hall include experts, [[wizard]]s,
loremasters, and [[bard]]s, as well as [[cleric]]s, and position in the hierarchy of the temple has nothing to
do with field of expertise.
You create the image of an object, a creature, or some other visible phenomenon that is no larger than a 20-foot cube. The image appears at a spot that you can see within 120 feet and lasts for up to 10 minutes, or until your concentration is broken. It seems completely real, including sounds, smells, and temperature appropriate to the thing depicted. You can't create sufficient heat or cold to cause damage, a sound loud enough to cause damage or deafen a creature, or a smell that might sicken a creature (like a [[troglodyte]]'s stench).
As long as you are within 120 feet of the illusion, you can choose to cause the image to move to any other spot within range. As the image changes location, you can alter its appearance so that its movements appear natural for the image. For example, if you create an image of a creature and move it, you can alter the image so that it appears to be walking. Similarly, you can cause the illusion to make different sounds at different times, even making it carry on a conversation, for example.
Physical interaction with the image reveals it to be an illusion, because things can pass through it. If a creature discerns the illusion for what it is, the creature can see through the image, and its other sensory qualities become faint to the creature.
If you are able to cast legendary-tier spells, you can cast this as such to make the spell last until dispelled, without requiring your concentration.
The most cunning of true [[dragon]]s, green dragons use misdirection and trickery to get the upper hand against their enemies.
A green dragon is recognized by its curved jawline and the crest that begins near its eyes and continues down its spine, reaching full height just behind the skull. A green dragon has no external ears, but bears leathery spiked plates that run down the sides of its neck.
A wyrmling green dragon's thin scales are a shade of green so dark as to appear nearly black. As a green dragon ages, its scales grow larger and lighter, turning shades of forest, emerald, and olive green to help it blend in with its wooded surroundings. Its wings have a dappled pattern, darker near the leading edges and lighter toward the trailing edges.
A green dragon's legs are longer in relation to its body than with any other dragon, enabling it to easily pass over underbrush and forest debris when it walks. With its equally long neck, an older green dragon can peer over the tops of trees without rearing up.
!! Magic and Breath Weapon
The green dragon can exhale a cloud of poisonous gas. As innate spellcasters, adult green dragons can cast spells such as [[cloudkill]], [[charm]], [[mislead]], and [[dimension door]].
{{DragonAgeCategories}}
The wretched and hateful green [[hag]]s dwell in dying forests, lonely swamps, and misty moors, making their homes in caves. Green hags love to manipulate other creatures into doing their bidding, masking their intentions behind layers of deception. They lure victims to them by mimicking voices calling out for help, or drive unwanted visitors away by imitating the cries of fierce beasts. They can cloak themselves in illusion at will, appearing as any creature of generally [[humanoid]] shape they choose.
Green hags revel in the failings and tragedies of other creatures. They derive joy from bringing people low and seeing hope turn into despair, not just for individuals but also for whole nations.
The most infamous green hag in [[Khorvaire]] is [[Sora Katra]].
The Greenhaunt is a forest in northern [[Breland]], near the [[Blackcap Mountains]]. The [[druid]]s of the Greenhaunt were the first to create [[goodberry]] wine, a strong drink that can accelerate healing.
Greenheart is home to the [[Wardens of the Wood]]
and the Great Druid [[Oalian]], and the town is the
center of the [[Eldeen Reaches]]’ authority and government. It is the only site in the [[Towering Wood]] that sees
significant numbers of travelers, and it is here that
those wishing to join the [[druid]]s first come to study and
train under the elders who govern the settlement. It is located on a [[manifest zone]] linked to [[Lamannia]].
Although Greenheart is small (around 6000 permanent residents) compared to [[Varna]]
in the east, the town’s population swells for ceremonies and sacred festivals. The folk of the forest are committed to defending Greenheart, and they can quickly
converge on the town in response to any threat.
The druids permit no commerce within Greenheart, and although visitors are welcome, the town has no marketplace or tavern. Shelter, comfort, and
healing are freely provided within private homes,
as long as outsiders show the proper deference and
respect for druidic customs.
//We, the Greensingers, celebrate the magic in the natural world, as well as the fey that embody that magic. We serve as ambassadors between the fey and mortals, protecting each from the other. //
The Greensingers believe the magic of the [[fey]]
to be integral to natural, complimenting and
enhancing its majesty, and encourage close ties
between [[Thelanis]] and [[Eberron]]. They work to
improve relations between mortals and the fey,
teaching people how to safely interact with the
fey, and serving as ambassadors to the faerie
realms. While the [[bard]]s and [[druid]]s draw the
most attention, many Greensingers are simply
people who learn the stories of the fey and follow
their traditions, seeking to live in harmony with
their fey neighbors.
While the Greensingers are united by core principles, many Greensingers serve an [[archfey]] patron with ties to their topographical region, and they might work to advance the specific agenda of their patron in the world. This favoritism can lead to feuds among Greensingers. Though the rivalries within the sect can range from harmless pranks to malicious obstruction, this behavior is expected, understood, and never fatal. Such behavior also leads to the perception of Greensingers as a source of mischief and chaos. To outsiders, their actions are wild and unpredictable, as they serve the agendas of many different fey.
Many Greensingers congregate and revel in the [[Twilight Demesne]] in the [[Towering Wood]].
Greentarn is an island in the [[Lhazaar Principalities]]. It is the home of [[Regalport]], the de facto capital of the Principalities, and seat of the [[Seadragons]]. The verdant island is blessed with strong trees ideal for shipbuilding.
Mere mention of the name “Greigur” on certain
streets in [[Stormreach]] elicits either a sharp turn of the
head or a suspicious furrowing of the brow from those
nearby—and for good reason. Greigur, a member of the feared [[Sentinel Marshals]], is the head of the House [[Deneith enclave|Deneith Enclave (Stormreach)]] and one of the most powerful men in [[Stormreach]]. A [[Karrnath]]i transplant, he
is a grizzled veteran of the [[Last War]] who delights in
the capricious nature of “justice” in his adopted
home. When a dangerous criminal is on the loose,
the [[Storm Lords]] eventually come to Greigur,
since they know that he will find the fugitive. What
becomes of the fugitive will doubtless prove a lesson
to others—all of which serves to make the city that
much more secure.
[[Stormreach]] lies outside the purview of the [[Korth Edicts]], and this fact gives Greigur’s operation an edge that other [[Deneith]] [[enclave]]s cannot match.
With the bevy of religious and cultural tensions
aflame in the city, only the longtime residents dare to
entrust the security of their homes and businesses to
the [[city guard|Stormreach Guard]], many of whom are former criminals.
House [[Deneith]] therefore does a booming business
in Stormreach, with the finer houses, shops, and
almost every building in the [[Temple District]] paying
out to Greigur for regular security assistance. Some
whisper that Greigur, with all his military might, must aim to wrest control of the city from the [[Storm Lords]] someday, but such speculation is idle. Greigur
is perfectly content to play both neutral party and dutiful house member, all the while amassing greater and greater wealth and—much more important—fear from the city’s residents.
Greigur’s tough exterior has one chink: He is in
love, or the closest thing to love a man like him can
hope to feel. Most of the city’s power players are aware
that Lady [[Paulo Omaren]], the [[Coin Lord|Storm Lords]] who oversees [[Forgelight]], is “in bed” with Greigur d’Deneith, but few suspect that this is the literal truth. The two
recently began a clandestine affair, one that has
resulted in the unforeseen development of genuine
affection in Greigur’s cold heart.
As a result of this distraction, Greigur leaves much of the day-to-day operation to his right-hand man, Captain [[Birne]].
The {{!!title}} is a [[Sharn]] street gang of
[[gnome]]s and [[halfling]]s who specialize in
[[illusion]] magic.
Griffons are ferocious avian carnivores with the muscular bodies of lions and the head, forelegs, and wings of eagles. When they attack, griffons are as swift and deadly as eagles, even as they strike with a lion's savage might and grace.
//''Horse Eaters.''// Griffons hunt in small prides, flying high over plains and forests near their rocky cliff-side aeries. Herd animals and horses are the prey they crave above all others, though they also hunt and kill [[hippogriff]]s. When it spots horses, a griffon screeches to alert its pride mates, which descend quickly toward their prey.
Those riding or herding horses dread the griffon's piercing cry, preparing themselves for the bloody fight that inevitably follows. A griffon ignores a horse's rider when possible, and a rider that abandons its mount, or a herder that releases one or two horses, can escape unharmed while the griffon targets its chosen prey. Riders who attempt to protect their horses attract the full fury of an attacking griffon.
//''Sky Dwellers.''// Griffons lair in high rocky clifftop aeries, building their nests from sticks, leaves, and the bones of their prey. Once griffons establish a territory, they remain in that area until the food supply has been exhausted.
Aggressive and territorial, griffons engage in brutal aerial combat to defend their aeries, tearing and shredding the wings of flying intruders to send them spiraling to the ground. Creatures that climb to a griffon's lair are plucked from the cliffs and eaten, or are knocked from the heights to go tumbling to their deaths.
//''Trained Mounts.''// A griffon raised from an egg can be trained to serve as a mount. However, such training is time consuming, expensive (mostly for the ample food the creature requires), and dangerous. Expert trainers well versed in the griffon's legendary ferocity are typically the only ones able to raise these creatures safely.
Once trained, a griffon is a fierce and loyal steed. It bonds with one master for life, fighting to the death to protect that rider. A griffon mount retains its ravenous appetite for horseflesh, and a wise master ensures that a griffon remains satiated with other prey when passing through civilized lands.
Much as [[Aerenal]] has its living [[Sibling Kings]] and the [[Undying Court]], [[Farlnen]] has a balance between the living and the dead. The Prince [[Shaen Tasil]] is the living ruler of the isle, and she represents her people in dealings with the other [[Lhazaar|Lhazaar Principalities]] princes. But the true power in Farlnen is an alliance of [[undead]] lords and ladies known collectively as the Grim. This shadow court watches the living from estates spread across the Fingerbone Mountains. Only the most accomplished individuals can rise to join the Grim. One must display talent and charisma, learning all that life has to offer before passing to the other side. Although these traditions are similar to those of the [[Undying Court]], the members of the Grim are not as tightly unified as the [[deathless]] and do not share any sort of mystical power.
The lords and ladies of the Grim live in mansions maintained by tithes from the living. Some use their ancient wisdom and mystical power to help their people; others wish to be left to their arcane studies and private pursuits. However, the Grim aren’t the only [[undead]] in [[Farlnen]]. The members decide who is worthy to join their ranks, but any [[Bloodsail|Bloodsails]] can earn lesser undead immortality by amassing sufficient wealth. This is the reason the Bloodsails take to the seas as pirates, privateers, or merchants. The price of immortality is paid over time, credited to the accounts of sailors even as it fills the vaults of the Grim.
!! Notable Members
<<list-links-article "[tag{!!title}category[entity]] [tag{!!title}category[person]] +[sort[title]]">>
Grimlocks are gray-skinned, hunched, disease-ridden [[humanoid]]s that dwell in the tunnels of [[Khyber]] or other dark places. They are completely blind, with a membrane of skin covering their empty eye sockets. For most creatures, blindness is an enormous hindrance. For a grimlock with its other heightened senses, sightlessness is a boon. A grimlock isn't fooled by visual illusions or misperceptions. It is fearless as it stalks prey.
A grimlock's ears prick up at the faintest footfall or whisper echoing down stone passageways. It can speak in tones too low for most other humanoids to hear. The odors of sweat, flesh, and blood awaken its hunger, and it can track by such scents like a bloodhound.
This fortress marks the seat of the [[gargoyle]] [[warlord]] [[Cairngorm]]'s fiefdom in [[Droaam]]. Its population consists mostly of [[goblin]]s and [[orc]]s.
Grindstone is the heart of the [[Karrnath]]i influence over the district of [[Southwatch]]. Festivals and holidays from the homeland are celebrated here with exuberance, and the ward’s Karrnathi residents regard themselves as separate from the city’s other citizens. The [[militia]] known as the [[Swords of Karrn]] enforces order, and between Karrnathi pride and what amounts to martial law, Grindstone is essentially a city within the city of [[Stormreach]].
!! Noteworthy Locations
* the [[Black Freighter]]
* the [[Temple of Vol]]
The [[Daughters of Sora Kell]] provide the laborers of [[Droaam]]
with basic sustenance, which is served at dining halls
known as “grist mills.” This name is drawn from the
primary dish—a form of ground meat called //grist//,
prepared in stew, pie, or sausage form. Grist is
tough and has a sour taste, but it is filling and the mills have
a seemingly endless supply. Few laborers have any
idea where grist comes from, and of those who do,
few care; however, it might disturb visitors. Grist
is ground [[troll]] meat. Each mill includes a stable of
imprisoned trolls. Some have been bred for this
purpose; others are being punished for incompetence; and some have chosen to make this sacrifice for their nation. Flesh is stripped away, slowly enough
to ensure that the troll can regenerate from the loss
without serious harm (though the pain is agonizing).
On its own, troll meat is highly toxic and carcinogenic, but the Daughters have devised
a magical mixture of herbs and spices that's blended with the ground meat and makes it edible.
The form of grist served in a mill changes daily—stew,
sausage, meat broth—but the substance remains the same, and
most easterners find it unpleasant. The one saving grace of grist is that it's free. So, enjoy a bowl of grist stew—there's plenty more where it came from!
The Grithic River in [[Khorvaire]] flows from the [[Byeshk Mountains]] into [[Crescent Bay]]. It forms part of the border between the [[Eldeen Reaches]] and the [[Shadow Marches]]. Due to the river's proximity to the [[Twilight Demesne]], aquatic [[fey]] known as [[naiad|nymph]]s can be found frolicking in this river.
This heavy belt is made of iron and leather. Two chains hang down the back and drag along the ground.
While wearing this belt, you are highly resistant to electricity and lightning-based magic.
The Group of Eleven was an [[Age of Giants]] alliance of eleven
[[giant]] city-states, each led by a powerful mage. Their
diverse culture valued internal and external competition,
believing it drove evolution. Each city-state studied a different [[plane]] of existence (leaving [[Fernia]] to the [[Sulat League]] and [[Dal Quor]] to the [[Cul'sir]]).
The [[Eldeen Reaches]] are
preternaturally fertile. Deep within the [[Towering Wood]], a region exists where
growth is truly phenomenal: the grove of the
Guardian Trees. The Guardian Trees dwarf the greatest
redwoods, and a wide variety of [[dire beast]]s inhabit the
realm beneath the dizzying heights of the canopy. The
Guardian Trees extend for thirty miles in all directions
and shelter a number of [[druid]] and [[shifter]] communities,
including [[Greenheart]]. Many [[druid]]s seek solace and meditate within the shelter of these giant trees.
Some say that the Guardian Trees are not only [[awaken]]ed
like the Great Druid [[Oalian]] but were once the elder [[druid]]s
of the [[Age of Monsters]]. Others believe that the place and
its trees are simply ancient growths from the time before
time began, when the world was different and new. Whatever the truth, the place teems
with old magic and ancient life.
//“You set your doom in motion. We will mark your passing, and hold it to this one place.”//
<div align="right">—[[Gaulronak]], rushem’dal of [[Stormreach]]</div>
//“So these snakes are almost upon us when this brown [[giant]] with green hair bursts out of the trees, moving faster than you can imagine. There’s a [[halfling]] in a basket around her neck, and he’s singing. Fight’s over before I can blink. The [[yuan-ti]] are dead, the giant’s gone, and there’s not even a trace of her passage.”//
<div align="right">—Durl’Aashta, [[Tharashk]] prospector</div>
When the pirate lords established their outpost in
[[Stormreach]], an old [[hill giant]] came to them. She
called herself [[Rushemé]], and she warned them of
an ancient curse upon the land. When the captains
dismissed her tales, the crone departed peacefully
and never approached the pirates again. A group of
[[giant]]s was camped nearby, and the trade goods they
offered were a boon to the [[human]] settlers. This tent
city remained as the new Stormreach took shape, and
it came to be known as the [[Tents of Rushemé]]. The
giants of this place are peaceful folk, and the majority
of them are hill giants; the lords of Stormreach doubt
that these dim-witted creatures could be hiding any
great secrets.
They are mistaken.
[[Rushemé]] was not the name of a woman. It is a
concept: the peaceful spirit of the land, the resting
soul of [[Xen'drik]]. The wandering nomads who carry
the name seek to live in harmony with the land and to
avoid the horrors unleashed in the past. For most, this
is a matter of holding to the simple nomadic lifestyle.
But a few take on greater duties. They are shamans
and storytellers, who tend to restless spirits and record
the rise and fall of the unwise. And a few among them
are champions who ensure that when doom rises once
more, it is confined to those who set it in motion.
These are the Guardians of Rushemé.
Most of the Guardians of Rushemé are [[giant]]s, but a few among the little people have been brought onto the path. For all their strength, the giants are a
simple folk and rarely reach the heights of skill that a
player character can attain. The elder known as [[Gaulronak]] has a keen eye for the potential that lies within the smaller races. When he sees someone who is truly worthy, Gaulronak shows them the way to Rushemé.
!! Joining the Guardians
Those who have a bond to the natural world or to the
realm of spirits are most welcome among the Guardians of Rushemé. Wielders of [[primal magic]] are respected for their gifts. Preservation of knowledge and the telling of tales are equally important, and [[bard]]s have a role to play in the order.
[[Wizard|wizard]]s and [[artificer]]s are rarely accepted, since dabbling into the [[arcane|arcane magic]] has brought great tragedy to Xen’drik.
Although anyone can seek membership in the Guardians of Rushemé, not even a rushem’dal can grant
this status. The initiate must find a connection with
[[Rushemé]] itself by way of an adventure that leads the
character into the wilds of [[Xen'drik]]. A seeker could
be tasked to overcome a lingering [[fiend]] from the [[Age of Demons]], to speak with the [[roc]] [[Kraa'ark Lors]] and obtain his blessing, to earn the trust of one of
the oldest [[drow]] priests of [[Vulkoor]], or to face any challenge the DM deems appropriate. A rushem’dal can set an adventurer on this path.
!! Playing a Guardian
For a Guardian of Rushemé, it is important to understand the concept of [[Rushemé]] itself. The rushem’dal say that the land has a soul, and that all lesser creatures
are manifestations of that greater spirit. When mortals die, they return to the land to be reborn. Some concepts are strong enough to exist as independent
spirits; in the eyes of Rushemé, the [[drow]] deity [[Vulkoor]]
is simply one of these lesser spirits, the essence of the Scorpion. The [[Qaltiar]] drow share this belief. As a Guardian, you must come to recognize and respect these powers, from the land itself to the minor spirits that guide your comrades.
But darkness covers the land. The soul of [[Xen'drik]]
is riddled with cancers, horrors produced by epic
magic and the wars of the elder [[giant]]s. These ancient
curses and twisted spirits cannot be destroyed, and
it’s not always possible to prevent the foolish from
unleashing this darkness. In such cases, all that can
be done is to record their folly and ensure that a small
disaster does not spread into a greater cataclysm. So
it is with [[Stormreach]]. The rushem’dal know that it is
only a matter of time before the city falls. You might
disagree, and the elders will not fault you for trying to save your people; perhaps you will postpone their doom for a few more decades. But ultimately your
duty lies beyond [[Stormreach]], ensuring that when it is
destroyed, the terrors unleashed do not spread to the
world outside.
In choosing this path, you have become a bridge between two worlds. You are an adventurer from a civilized nation, a force that seeks to expand and explore.
But you are also a guardian of ancient traditions, aware
of the fact that there are things best left unknown and
that progress isn’t always for the best.
If you are a [[humanoid]] in a society of [[giant]]s, you
might feel like an interloper. However, the other
Guardians look to your spirit, not your body, and they
consider you a younger sibling. As a young Guardian, it is your duty to learn as much about the land as possible. You must find out which spirits can be placated and which must be opposed, memorize the tales of the past, and come to terms with the many threats of the shattered land.
!!! Missions
The Guardians of Rushemé watch troubled areas, recording the fate of those who are drawn to the darkness and refuse to see the risks. They perform rituals that they believe hold these forces at bay, limiting the impact of the [[Du'rashka Tul]] and similar
disasters. These might just be superstitions, but the Guardians believe that these patient measures, gathering knowledge and following tradition, are vital to the protection of the world. A ritual mission might involve transporting a stone idol a thousand miles,
following as precise a path as is possible considering
the [[Traveler's Curse]]. Although the act might seem meaningless, the elders believe that it reinforces the lifeline of [[Xen'drik]] itself.
Sometimes, however, more direct action is required. In the recent past, the Guardians gathered en masse to oppose the [[Battalion of the Basalt Towers]]. But the giants of Rushemé are peaceful folk, ill prepared for such battles. This is where you come in.
You are a child of a violent and chaotic world, a world
of metal and magic. Your people have upset the balance of things, and that makes it your role to set things right. You might have to face the binders of the Basalt
Towers or other natives of [[Xen'drik]]. But you are more likely to deal with the actions of foreigners—[[dwarves|dwarf]] who have dug too deep, [[human]]s who have pressed too
far, even [[yuan-ti]] or [[dragon]]s who have come from afar and upset the balance. In the eyes of the elders, this is what has brought you to Xen’drik. You are the agent
of balance, the force that will undo the damage caused by others of your kind.
On rare occasions [[spirits of the land|spirit of the land]], elemental beings that advise and empower through divine channeling, choose to speak to a Guardian of Rushemé. This is a great honor, and the manifestation of such a spirit is typically the beginning of a long and dangerous struggle.
!! Notable Guardians
<<list-links-article "[tag{!!title}category[person]sort[title]]">>
The Guardians of the Gate is a special division of the [[Sharn Watch]], established during the [[Last War]] to monitor the activities of foreign nationals and immigrants. Their duties have expanded since
the surge of refugees into [[Sharn]] following the [[Mourning]], and the Guardians of the Gate closely supervise the
district of [[High Walls]]. The Guardians are chosen from among the best soldiers of the Watch and are devoted to their city. Many of them, however, place the safety of the
city ahead of strict adherence to the law, and complaints
are raised against them from time to time for unnecessary violence against refugees.
If this spell is cast by someone without the [[Mark of Warding]], increase the tier to "legendary".
You create a ward that protects up to 2,500 square feet of floor space for 24 hours. The warded area can be up to 20 feet tall, and shaped as you desire. You can ward several stories of a stronghold by dividing the area among them, as long as you can walk into each contiguous area while you are casting the spell.
When you cast this spell, you can specify individuals that are unaffected by any or all of the effects that you choose. You can also specify a password that, when spoken aloud, makes the speaker immune to these effects.
Guards and wards creates the following effects within the warded area.
//''Corridors.''// Fog fills all the warded corridors, making them heavily obscured. In addition, at each intersection or branching passage offering a choice of direction, there is a 50% chance that a creature other than you will believe it is going in the opposite direction from the one it chooses.
//''Doors.''// All doors in the warded area are magically locked, as if sealed by an [[arcane lock]] spell. In addition, you can cover up to ten doors with an illusion (equivalent to the illusory object function of the [[lesser illusion]] spell) to make them appear as plain sections of wall.
//''Stairs.''// Webs fill all stairs in the warded area from top to bottom, as the [[web]] spell. These strands regrow in 10 minutes if they are burned or torn away while //guards and wards// lasts.
//''Other Spell Effect.''// You can place your choice of one of the following magical effects within the warded area of the stronghold.
* Place torch-sized, hovering, glowing orbs in four corridors. You can designate a simple program that the lights repeat as long as //guards and wards// lasts.
* Place [[magic mouth]] in two locations.
* Place [[stinking cloud]] in two locations. The vapors appear in the places you designate; they return within 10 minutes if dispersed by wind while //guards and wards// lasts.
* Place a constant line of strong wind in one corridor or room.
* Place a [[suggestion]] in one location. You select an area of up to 5 feet square, and any creature that enters or passes through the area receives the suggestion mentally.
The whole warded area radiates magic. A [[dispel magic]] cast on a specific effect, if successful, removes only that effect.
You can create a permanently guarded and warded structure by casting this spell there every day for one year.
''Sovereign:'' [[Boldrei]]
The guide of the weak is a [[draconic|dragon]] [[Sovereign archetype]] who acts as a shepherd of the lesser creatures, moving among them and shaping their cultures. Although some are gentle beings who simply wish to help others, a guide can also be a ruthless tyrant who believes that imposing harsh order on his subjects is best for them.
A flash of light streaks toward a creature of the caster's choice within 120 feet. On a hit, the target is burned by radiant light, and a mystical dim light glitters on the target for 10-20 seconds, making it much more visible.
This branch of the [[Unity]] of [[Riedra]] oversees education and
[[religion|Path of Inspiration]]. It is responsible for raising children, a task that
involves equal parts education and indoctrination. When
a youth becomes an adult, the pathfinders choose his
trade and his pairing. The Guiding Path is led by Lord
[[Surasek]] ([[kalaraq]] [[Inspired]]) from the city
of [[Durat Tal]].
Said to be the first true [[wizard’s circle|arcane order]] in [[Khorvaire]], the Guild of Moonlight and Whispers was founded in ancient [[Thaliost]] by Margana Lain. The guild was dedicated to finding ways to replicating the mystical powers of the [[fey]] through [[arcane|arcane magic]] science. Members specialize in [[illusion]], [[enchantment]], [[divination]], and magic related directly to [[Thelanis]], and the Guild is an exceptional source of knowledge regarding fey and [[archfey]].
Moonlight isn’t a large circle, in part because of its extremely high standards. However, it is the most widely respected circle in [[Aundair]], in part because Princess [[Aundair|Aundair ir'Wynarn]] was herself a member of Moonlight and Whispers. While its members are devoted to their nation, they believe that the [[Arcane Order of Aureon]]’s obsession with laws and political power undermines the pure pursuit of arcane knowledge. When someone challenges Aureon in the [[Arcane Congress]], it usually takes the support of Moonlight to have a chance to succeed. [[Breland]]’s [[Guild of Starlight and Shadows]] was founded by members of Moonlight, and the two are generally friendly; while Starlight has less of an interest in the [[fey]], both circles have a common interest in [[illusion]] and [[enchantment]]. Members of one of these circles will usually be admitted to the halls of the other, though not accorded the privileges of full members.
Most members of the circle are [[wizard]]s, but the guild does accept [[warlock]]s with [[archfey]] patrons as long as they are scholars of the arcane; the circle is devoted to understanding fey magic, not simply using it.
The Guild of Starlight and Shadows is a [[Brelish|Breland]] [[arcane order]] that encourages independence and innovation, qualities that contribute to a mutually uncomfortable relationship between the Guild of Starlight and Shadows and the [[Sharn Watch]]. The schools of [[conjuration]],
[[enchantment]], and [[illusion]] are favored by this group.
[[Warlocks|warlock]], especially those of the [[archfey]], are generally
welcome. Members of the larger [[Esoteric Order of Aureon]] often look down
on Starlight [[wizard]]s, and in turn the guild members
often mock the wizards of the Esoteric Order and play
pranks on them. In [[Sharn]], the Guild of Starlight and Shadows
has its hall in the [[Deathsgate]] district in [[Middle Tavick's Landing]].
The Guild of Starlight and Shadows has its roots in the [[Guild of Moonlight and Whispers]], the oldest wizard's circle in [[Khorvaire]].
Guin Silverblood is a templar of the [[Silver Flame]] and a priest of the [[Keep of the Silver Flame]] in [[Stormreach]]. He is a master archer who trains members of the congregation int the use of the longbow.
He only speaks of it to his most trusted parishioners, but Guin Silverblood practices the traditions of an ancient [[serpent cult|Serpent Cults]], passed down to Guin’s father
by a "feathered [[yuan-ti]]" (a [[shulassakar]]). Although the values are similar
to those of the modern church, this faith teaches that
the [[Silver Flame]] was kindled by the sacrifice of the
[[couatl]]s in the [[Age of Demons]]; [[Tira Miron]] and the [[Keeper of the Flame]] are stewards who bring the light of the Flame to [[human]]s too limited to see the ancient force
on their own. Guin has served as an intermediary for the [[shulassakar]] in the past, and this could serve as the basis for an adventure.
[[Aurum]] Platinum Concordian Guldan [[Soldorak]] is a gold baron from the [[Mror Holds]]
who settled in [[Stormreach]] to indulge his fascination
with the [[sahuagin]]. Guldan is an expert on sahuagin
history and has amassed a fascinating collection of
relics from the depths. Recently he has joined the Cult
of the [[Devourer]] and attends [[Shargon's Talon]]; if a [[malenti]] were to take the
place of the Platinum Concordian, it would give the
sahuagin an influential voice on land.
The Gulf of Ingjald lies off the coast of mainland [[Lhazaar Principalities]], near the town of [[Skairn]]. It connects to the [[Eel Bay]].
The Gulf of the Moon is a body of water off the northwest coast of [[Aerenal]]. It is fed by a river that flows from further inland, originating near the capital city of [[Shae Cairdal]].
A thick-skinned beast that resembles a
bison with the hide of a rhinoceros, the gurk’ash is used
as a beast of burden and raised as livestock in [[Xen'drik]]. Like [[long corn]], it is imbued with a supernatural quality that slows the decomposition of its meat and milk.
This former [[masquer]] for the [[Thousand Eyes]] now serves as
the face of the [[Dream Merchants]] in [[Dar Jin]]. He is the
contact any PCs eventually reach when searching for the Merchants, and most likely the only Dream Merchant they'll ever see (it's up to the DM to decide who else
is lurking in the shadows or if, in fact, Gusan is still working for the [[Thousand Eyes]]). Gusan enjoys playing
psychological games, and he always investigates clients
before he deals with them, searching for something he
can use as a handle.
This item appears to be a scimitar hilt. While grasping the hilt, you can cause a blade of twisting eddies of pure elemental wind to spring into existence, or make the blade disappear.
When attacking with the scimitar, you can extend the range of your attacks up to 30 feet.
The Gyrderi are a legend of the [[Tairnadal]] elves. The
[[Keepers of the Past|Spirits of the Past]] say that when the [[giant]]s enslaved
the ancestors of the Tairnadal, a few wise and stealthy
elves escaped by making powerful alliances with the
forces of nature. Over the course of centuries these
elves, now called Gyrderi, developed a [[druid]]ic tradition, becoming direct vessels of the power of the wild. When the elf uprising began, the Gyrderi aided
the first of the Tairnadal and were instrumental in
their earliest victories. However, the giants of the
[[Sulat League]] studied the Gyrderi and found a way to
counter the druids: the giants enacted a terrible curse
that forever bound them in the wild shapes they were
wearing, trapping them and their descendants in the
forms of animals.
According to the tales, the Gyrderi continued to
fight alongside the [[Tairnadal]], and the first ancestors
of the famed [[Valenar warhorse|Valenar beast]]s were in fact Gyrderi
[[druid]]s. These mystical creatures are also the source of
the Tairnadal tradition of natural magic, especially the
strong ranger tradition found within the culture. Over the course of generations, the Gyrderi animals the Tairnadal brought out of [[Valenar]] lost the full intelligence of
their ancestors. However, some believe that true Gyrderi
still exist in the depths of [[Xen'drik]] as sapient animals
possessing powerful [[druidic magic|primal magic]]. Perhaps adventurers
can find the truth of these legends.
Haara is a [[guul’dar|bugbear]] hunter of the [[Kech Ruuska]]. She can be
found in the wild, putting the latest generation of [[magebred|magebreeding]]
beasts through their paces. Is she hunting a [[monstrosity]]
that attacks the adventurers, or are the heroes themselves
her prey? It’s possible that Haara is a [[lycanthrope]]—the
result of Ruuska experiments with the curse. She is fierce
and joyful, and respects both skilled hunters and [[druid]]s.
Haftak ir'Clarn ([[human]]) runs this bookstore and bindery, and uses its facilities to
publish the [[Sharn Inquisitive]], the city's local chronicle.
A minor member of one of [[Breland]]'s noble families,
Haftak has a prominent [[cousin|Ruken ir'Clarn]] in the [[parliament|Breland Parliament]]
and a significant fortune at his disposal, which
allowed him to start the //Inquisitive// as a sideline to his
marginally profitable main business.
Hags are terrifying creatures whose origins go back to the beginnings of [[Eberron]]; the [[night hag]]s were among the children of [[Khyber|Progenitor Dragons]] and ruled the world alongside the [[rakshasa]] during the [[Age of Demons]]. The mortal hags of Eberron are the descendents of the night hags.
Although different hags are unique in appearance and mannerism, they have many things in common. All take the form of crones whose bent shapes belie their fierce power and swiftness. Despite faces cracked by wrinkles and heavy with cruelty, their eyes shine with cunning. Their long nails have the strength of steel and are keen as any knife. And finally, all hags possess innate magic and are extremely long-lived, but with the exception of [[night hag]]s, are not [[immortal]].
The most prominent hags on [[Khorvaire]] are the [[Daughters of Sora Kell]].
!! Types of Hag
<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
A [[hag]] coven can craft a magic item called a hag eye, which is made from a real eye coated in varnish and often fitted to a pendant or other wearable item. The hag eye is usually entrusted to a minion for safekeeping and transport. A hag in the coven can see what the hag eye sees if the hag eye is on the same plane of existence. A hag eye has darkvision with a radius of 60 feet. If it is destroyed, each coven member takes psychic damage and is blinded for 24 hours.
A hag coven can have only one hag eye at a time, and creating a new one requires all three members of the coven to perform a ritual. The ritual takes 1 hour, and the hags can't perform it while blinded. During the ritual, if the hags take any action other than performing the ritual, they must start over.
The Hailana Islands are a set of three islands off the coast of [[Khunan]], [[Syrkarn]] in [[Sarlona]]. Ruins of [[shulassakar]] and [[yuan-ti]] cities and outposts are very common on these islands; it is said that this was the site from which the yuan-ti launched their desperate voyage to [[Argonnessen]] and left their homeland behind during the [[Sundering]].
This silver hair pin has a bright sapphire eye set into its center. While the pin is activated, you can close one of your eyes to see through the hair pin's eye until you move more than 10 feet away from the hair pin or you choose to end this effect.
Carved into a volcanic mountainside, a fiendish citadel stands surrounded by jungle, fields of shining obsidian, and caustic geothermal vents. Powerful magic shields the city from the threat of an eruption, but smoke still rises from the caldera high above the ruins. The [[dragonborn]] and [[lizardfolk]] of [[Q'barra]] call this place
Haka’torvhak, or “Throne of the Holy Dragons.” They speak with awe and dread of the fortress’s immortal guardian, the great [[black dragon]] [[Rhashaak]].
In the [[Age of Demons]], Haka’torvhak was a great bastion of the [[fiend]]s, and the site
of a major battle with the [[couatl]]s and [[dragon]]s. The dragons bound the great fiend [[Masvirik]] beneath the volcano and established a line of dragons and [[dragonborn]] as guardians of its resting place. Appearing much as it did millennia ago, ancient Haka’torvhak is rumored to contain treasures from the earliest days of Eberron. But today, the citadel is inhabited by [[blackscale]] [[lizardfolk]] and other champions of the [[Poison Dusk]], as well as [[fiend]]s that wield darkness, disease, and frost.
The [[Eternal Dominion]] city of Hal’daan, built on and around the [[kar'lassa]] tied to the [[plane]] of [[Daanvi]], is the administrative heart of the Dominion. Here, the [[sahuagin]] leaders of the [[Su'har]] develop the civic models used throughout the Dominion. This city also holds the bureaucratic archives of the Dominion.
The smallest of the great [[Eternal Dominion]] cities, Hal’dol is built on and around the [[kar'lassa]] tied to the [[plane]] of [[Dolurrh]], and is a center for [[necromantic|necromancy]] research. The skulls of great leaders
and priests from across the Dominion are preserved in the
Bone Library, where [[sahuagin]] mediums can use speak with
dead to consult with them.
Hal'fer is the [[Eternal Dominion]] city built on and around the [[kar'lassa]] tied to the [[plane]] of [[Fernia]]. This region has an abundance of geothermal
vents, and due to Fernia’s influence, it’s also a source of pure
elemental flame that burns underwater. Hal’fer is an industrial
center working with heat and steam; it’s the primary source of
metal goods, and mints the currency used with surface dwellers.
The steam-breath of Hal’fer
is an extremely powerful catalyst for [[evocation]] magic.
The [[Eternal Dominion]] city of Hal'iri is built on and around the [[kar'lassa]] tied to the [[plane]] of [[Irian]]. This is a stronghold of the [[Ta'har]], driving
mystical research and holding the largest temples in the
Dominion—both in reality and in the kar’lassa’s dream. Many
priests train in Hal’iri, and its people have grand dreams of
what the Dominion can become. It’s a center for exploring lofty
goals, such as defeating the [[Valraean Protectorate]], consuming
the [[overlord]]s to gain their power, and perhaps even conquering
the [[plane]]s.
In the dream of Hal’iri, the spirits of the
Or’lassa (the First Dreamers, permanently comatose [[sahuagin]] priests) meet to coordinate the actions of the Dominion as the //Sha’lassa//, the Council of Dreams.
The [[Eternal Dominion]] city of Hal'kyth is built on and around the [[kar'lassa]] tied to the [[plane]] of [[Kythri]]. The influence of the Churning Chaos supports magic tied to change and [[transmutation]], and these are vital to the society of the Dominion. Hal’kyth is the heart of the [[alchemical|alchemist]] industry. While all great [[sahuagin]] cities harvest the blood of the [[kar'lassa]], it is Hal’kyth that has the greatest capacity for refining it. Though the Dominion is slow to innovate, the [[artificer]]s of Hal’kyth are an exception, and they
continue to develop new techniques; the [[plasmid]]s were first [[magebred|magebreeding]] in Hal’kyth.
Hal'laman is the [[Eternal Dominion]] city built on and around the [[kar'lassa]] tied to the [[plane]] of [[Lamannia]]. The flora and fauna of this region
are unnaturally fertile. Hal’laman is a center for all forms of
animal husbandry, and also holds the largest [[sahuagin]] spawning pools of
the Dominion. When [[Lamannia]] is coterminous, growth rates
spike dramatically; it’s always a struggle to keep the city safe
during these times, with aggressive beasts swept into frenzies
and vegetation becoming [[shambling mound]]s.
The [[Eternal Dominion]] city of Hal’shavar, built on and around the [[kar'lassa]] tied to the [[plane]] of [[Shavarath]], is the military seat of the Dominion, where the finest [[sahuagin]] barons and strategists are trained. Here, the [[Ra'har]] of Hal’shavar establish the military traditions used throughout the Dominion. Mock battles and other grand
spectacles are carried out in the grand arena of Hal’shavar.
The scales of the Hal’shavar [[kar'lassa]] can be forged into powerful armor and weapons.
The inhabitants of Hal'shavar dream in the plane of [[Shavarath]], the Eternal Battleground; as a result, they are the most aggressive of the [[sahuagin]].
The [[Eternal Dominion]] city of Hal'syra, built on and around the [[kar'lassa]] tied to the [[plane]] of [[Syrania]], is the center for commerce and
trade with other cultures. Hal’syra even has a rarely-used
quadrant enchanted so surface dwellers can breathe within
it. This city is the source of the [[sahuagin]] ambassadors, envoys, and
merchants who deal with surface dwellers and other cultures,
and it’s here that the scholars of the [[Ta'har]] study surface
dwellers and debate the best ways to deal with them.
The inhabitants of Hal'syra dream in [[Syrania]], the [[plane]] of Absolute Peace; as a result, they are the most conciliatory of the [[sahuagin]].
Hal'thela is the [[kar'lassa]] tied to the [[plane]] of [[Thelanis]], on the floor of the [[Thunder Sea]]. The [[sahuagin]] of the [[Eternal Dominion]] shun this dreamer.
Halak Boromar is the family's chief enforcer. The [[Boromar Clan]] still exists in the [[Talenta Plains]], and Halak is a recent immigrant. As a result, he has more of a
taste for blood than his city-bred kinfolk, and he
likes nothing better than tracking and killing [[Daask]]
[[goblin]]s and [[gnoll]]s. He is illiterate and not the brightest [[halfling]] at the best of times, but he is quick, strong, and surprisingly deadly. Halak commands the Clawfoots, the family's personal guard; there are 15 Clawfoot warriors, all of whom are fierce halfling barbarians.
1400 years ago, the [[dragonmarked house]]s launched an inquisition against bearers of [[aberrant dragonmark]]s, a conflict which came to be known as the [[War of the Mark]]. The houses had the advantage of greater numbers, but the aberrant marks of the time carried tremendous destructive power.
In the third year of the war, Lord Halas Tarkanan organized those with aberrant marks, as well as other oppressed peoples such as [[goblin]]s, into a proper military force to oppose the dragonmarked houses. Tarkanan, known as
“The Earthshaker,” carried an [[aberrant mark|aberrant dragonmark]] that gave him
great influence over the elemental forces of earth and fire,
but his strategic brilliance was even more important to the
course of the war. His consort was an enigmatic woman
called the [[Lady of the Plague]]. Though she is commonly seen
as a monster, the records of the war suggest that she was
loath to use her power unless forced to, and might even
have despised the aberrant mark she carried.
Though Tarkanan's efforts extended the conflict, the
aberrants fell in the end. Tarkanan himself was trapped
in the siege of [[Sharn]], which he had made his stronghold
and base of operations. When it became clear that he and
his followers were doomed, he and the [[Lady of the Plague]]
unleashed the full power of their marks—power sufficient
to destroy the city. Terrible quakes caused parts of the
city to collapse, and rivers of lava flowed up from the fiery
lake deep below. Swarms of vermin and deadly plagues
ravaged the invaders and defenders alike. Some claim that
the Lady of the Plague's death-curse still lingers in the depths
of [[Old Sharn]].
Halas Tarkanan was a [[Karrnath]]i officer before he developed his mark, a brilliant soldier who learned the arts of war at [[Rekkenmark|Rekkenmark Academy]] and the ways of House [[Deneith]] from his mother.
//I'm not half anything. You [[human]]s come from [[Sarlona]]. [[Elves|elf]] are from [[Aerenal]]. Me? I'm a true child of [[Khorvaire]].//
<div align="right">—Nandon Tam, Khoravar activist </div>
From the Towering Woods of the [[Eldeen Reaches]] to
the slums of [[Sharn]], half-elves are found across [[Khorvaire]]. New half-elves are born in every generation from
pairings between [[human]]s, [[elves|elf]], and other half-elves,
with children typically clinging to a parent's culture.
Over centuries, though, half-elves have developed their
own communities and traditions, giving them an identity strengthened by the rise of House [[Lyrandar]] and
House [[Medani]]. Members of these communities generally dislike the term "half-elf," instead calling themselves Khoravar, an Elvish term meaning "children of
Khorvaire."
The [[elves|Aereni]] of [[Aerenal]] have never allowed a half-elf into
the Undying Court, and the [[Valenar]] [[elves|Tairnadal]] don't consider
half-elves capable of channeling a Valenar ancestral
spirit. Among humans, though, half-elves don't experience any more prejudice or bias than members of other
races, and some half-elves could easily be mistaken
for human.
In making a half-elf character, consider whether you
were born in a Khoravar community, or if your parents
were members of different races. Is your half-elf identity
a source of pride, a simple fact of life, or something that
has been difficult for you?
!! Appearance and Longevity
To humans, half-elves look like elves, and to elves, they
look human. In height, they're on par with both parents,
though they're neither as slender as elves nor as broad
as humans. They range from under 5 feet to about 6 feet
tall, and from 100 to 180 pounds, with men only slightly
taller and heavier than women. Half-elf men do have
facial hair, and sometimes grow beards to mask their
elven ancestry. They tend to have the eyes
of their elven parents.
Half-elves mature at the same rate humans do and reach adulthood around the age of 20. They live much longer than humans, however, often exceeding 180 years.
!! Khoravar
The culture that has developed among [[Khorvaire]]'s native half-elves places a strong emphasis on hospitality
toward other Khoravar. They don't expect each other to
put themselves in danger for strangers' sake, but when
possible, half-elves do what they can to help others with
information, shelter, and the like. Khoravar communities have weekly unity dinners where local news and
events are shared; these meals are a great chance to
hear about local events and opportunities.
Many Khoravar espouse the idea of "the bridge
between," the notion that the Khoravar are called to
facilitate communication and cooperation between
members of different cultures or species. Khoravar who
follow this philosophy often become [[bard]]s, diplomats,
mediators, or translators. Others are fascinated by their
distant connection to the [[fey]] and seek to build bridges
between the Material Plane and the Feywild of [[Thelanis]]. These Khoravar often become [[Greensinger|Greensingers]] [[druid]]s
or [[warlock]]s with [[archfey]] patrons.
Khoravar speak both Common and Elvish, and among
themselves they often blend these two together. This
pidgin makes perfect sense to anyone who speaks both
languages, but someone who speaks only one of them
will miss some words and subtlety of meaning.
As you create a Khoravar character, you have a wide
range of options to describe your backstory. The table below can provide inspiration for it.
| !<<dr d10>> |!Origin |
| 1 |You're the linchpin of a Khoravar community in a major city, hosting unity meals and maintaining connections with every half-elf in the city. |
| 2 |You grew up in a small town dominated by [[human]]s. You didn't know any other half-elves, and you did your best to fit in. |
| 3 |You lived in the [[Eldeen Reaches]] as part of a small Khoravar community, trying to be a bridge between the [[human]] farmers in the east and the [[druid]]s and wilder folk in the west. |
| 4 |Your small Khoravar community has only survived in the slums of [[Sharn]] through the close, family-like support you show each other. |
| 5 |You're part of a community in [[Thrane]] whose devotion to the [[Silver Flame]] has led you to extend your unity meals to non-Khoravar. |
| 6 |Your Khoravar community is the crew of a [[Lhazaar|Lhazaar Principalities]] ship. |
| 7 |You're part of a tiny Khoravar community in [[Karrnath]] that's fascinated with death and the practices of your [[Aereni]] ancestors, transforming your unity meals into grim celebrations of death. |
| 8 |You're part of a tiny community of Khoravar living in an unexpected place, such as [[Droaam]], [[Darguun]], or even the [[Demon Wastes]]. Your people strive to find common ground with the native population. |
| 9 |You are associated with House [[Lyrandar]] or House [[Medani]], but you're more interested in the role the house plays in supporting Khoravar communities than in the work of its guilds. |
| 10 |You ride with the [[Valenar]], hoping one day to prove that you are worthy of taking on a patron ancestor. |
!! Half-Elves and Dragonmarks
Two [[dragonmark]]s appear among half-elf families: the
[[Mark of Detection]] is found in House [[Medani]] and the
[[Mark of Storm]] in House [[Lyrandar]]. Both houses were established families among the Khoravar by the time their
dragonmarks appeared, and they remain pillars of the
Khoravar's diverse culture. The Khoravar ideal of building bridges supports the work of both houses.
With the Mark of Storm, House Lyrandar operates
sailing ships and flying vessels, as well as bringing rain
to farmlands. House Medani uses the Mark of Detection
to offer services of personal protection.
//We are hunters in a world of sheep.//
<div align="right">—Kalaash'arna, Tharashk inquisitive </div>
With the rise of the [[dragonmarked House|dragonmarked house]] [[Tharashk]],
[[orc]]s and half-orcs have spread through the [[Five Nations]]
and beyond. In general, the people of the Five Nations
know little about half-orcs. When people imagine a half-orc, they usually think of a Tharashk bounty hunter or
dogged inquisitive, but a few ignorant sorts might still
hold the stereotype of a "simpleton from the swamps."
See "[[orc]]" for information about half-orc communities in the [[Shadow Marches]].
!! Appearance and Longevity
Half-orcs' grayish pigmentation, sloping foreheads,
jutting jaws, prominent teeth, and towering builds make
their [[orc]]ish heritage plain for all to see. Half-orcs stand
between 5 and 7 feet tall and usually weigh between
180 and 250 pounds.
Half-orcs mature a little faster than [[human]]s,
reaching adulthood around age 14. They age
noticeably faster and rarely live longer than 75 years.
!! Half-Orcs and Dragonmarks
The [[Mark of Finding]] appears among half-orcs of House
[[Tharashk]]. Strangely, both pure [[orc]]s and [[human]]s associated
with the house cannot develop this mark. As a result,
[[dragonmark]]ed half-orcs work extensively with humans,
orcs, and unmarked half-orcs in pursuit of the house's
mission of bounty hunting, [[inquisitive]] work, and prospecting. Across [[Khorvaire]], anyone who wants to find something or someone turns to House Tharashk.
These leather boots with wooden soles are heavy and uncomfortable. Once worn, these boots can only be removed by speaking a command word. The wearer becomes incapable of running. If the wearer attempts to run, the boots immediately cause them to trip.
This simple belt has a dozen leather hoops. Anything hung from one of these loops, such as weapons or pouches, weighs half as much.
//Zombies? Minotaurs? They don't scare me a bit. But a howling halfling warrior charging in on a [[clawfoot]] raptor? Most terrifying thing I've ever seen. //
<div align="right">—Sir Danton ir'Lain, Brelish knight</div>
The diminutive halflings of [[Eberron]] originate from eastern [[Khorvaire]], and many nomadic tribes of halflings still travel
the [[Talenta Plains]]. The appearance of [[dragonmark]]s
among the halflings spurred their slow migration across
Khorvaire, spreading their services of healing and hospitality along with the migration of the earliest humans
across the continent. Now they are found in every part of
Khorvaire, putting their distinctive talents to use.
[[Lightfoot|lightfoot]] halflings are the more widespread halfling
subrace, especially in the Talenta Plains, but [[stout]] halflings are found within nearly every halfling community.
!! Appearance
Halflings are inclined to be short and stout, standing about 3 feet tall, and weighing
between 40 and 45 pounds.
Halflings' skin ranges from tan to pale with a ruddy
cast, and their hair is usually brown or sandy brown
and wavy. They have brown or hazel eyes. Halfling men
often sport long sideburns, but beards are rare among
them and mustaches even more so. They like to wear
simple, comfortable, and practical clothes, favoring
bright colors.
!! Talenta Halflings
The halflings who migrated across Khorvaire in the
company of humans ended up looking very [[human]] in
dress, manners, and customs. Their cousins who remain in the [[Talenta Plains]] could hardly appear more different. In their homeland, halflings are nomads who ride
domesticated [[dinosaur]]s across the wide plains. Those
few Talenta halflings who journey across Khorvaire are
visibly out of place, both attracting curious stares and
expressing plenty of curiosity of their own about the
strange ways of Khorvaire's cities and towns.
As you make a Talenta halfling character, give some
thought to why your character left the open plains. Perhaps you served as a mercenary scout in the [[Last War]],
and you've remained with the comrades you met in the
conflict. Maybe your tribe was wiped out by a foreign
enemy, spurring you to travel the wider world in search
of information and revenge. You might be guided by the
spirits, who send you whispers and visions that lead you
on your adventures. You could be an official envoy of
your tribe seeking allies in the world, or simply sent to
learn more about the lands beyond the plains.
Also, consider your relationship to the [[dinosaur]]s that
play a central role in the life of the Talenta halflings.
You might flavor your spells and class features as dinosaur-related: you could have a [[clawfoot]] companion, take
on a [[fastieth]] form, name your combat styles and maneuvers after dinosaur attacks, or take inspiration from a [[glidewing]] (pteranodon) totem spirit. Or you could simply
wear a dinosaur mask (as many Talenta halflings do),
adorn yourself with claws and teeth from past dinosaur
companions, or adopt dinosaur-like mannerisms. Wherever you travel, your connection to the dinosaurs of your
home remains strong.
Finally, it can be helpful to decide on a couple of behavioral quirks that reflect your culture. The table below can provide some inspiration.
| !<<dr d10>> |!Halfling Quirk |
| 1 |You are constantly amazed by things the people of the [[Five Nations]] take for granted. |
| 2 |You pattern your behavior on a species of dinosaur. |
| 3 |You are extremely curious, and you're always searching for new experiences. |
| 4 |You love to boast, and you're always tel ling exaggerated stories of your amazing adventures. |
| 5 |You wear a mask that you believe holds the spirit of your former dinosaur mount. You like to talk to it. |
| 6 |You don't understand the concept of "facts." To you, everything is a story, and truth is in how you tell it. |
| 7 |You are annoyed by buildings and tools designed without consideration for small people. |
| 8 |You seek vengeance for a wrong done to your people. |
| 9 |You never forget an insult or injury. |
| 10 |You ascribe everything to the work of spirits. |
!! Halflings of the Five Nations
Quick and charming, many halflings put their natural
talents to use as [[bard]]s, barristers, merchants, and politicians throughout [[Khorvaire]]. Of course, these same
talents prove equally useful for burglars, grifters, and
other criminals.
Of particular note is the halfling-run criminal enterprise of the [[Boromar Clan]], the most powerful crime syndicate in [[Breland]]. The Boromars are based in [[Sharn]],
but their influence reaches across the nation and even
to the distant city of [[Stormreach]]. If you decide to play a
halfling rogue, or a character with a criminal or charlatan background, consider (with your DM) whether you
have a connection to the Boromar Clan. You could be a
freelance operative who occasionally gets jobs from a
Boromar underboss. You might have a cousin in the syndicate, who occasionally pulls you in to criminal affairs.
Or you could even be the reluctant heir of a Boromar
leader; perhaps you've gone on the run rather than take
your appointed place in the criminal empire, but your
past may yet catch up with you. You could also be the
point of contact who has made the Boromar Clan your
party's group patron.
!! Halflings and Dragonmarks
Two [[dragonmark]]s appear among the halflings of
[[Khorvaire]], the [[Mark of Healing]] in House [[Jorasco]] and
House [[Ghallanda]]'s [[Mark of Hospitality]]. Both marks are
ancient, first manifesting among the halflings about the
same time that the [[elves|elf]] of [[Aerenal]] received their first
marks—centuries before the arrival of [[human]]s on Khorvaire. Sometimes halflings of House Ghallanda joke that
their mark prepared them for the arrival of humans by
allowing them to make their new guests comfortable in
Khorvaire. There's actually some truth in the humor: the
services provided by both halfling houses helped enable
the spread of humanity across the continent.
With its powers related to food and shelter, the Mark
of Hospitality was a boon to the early halfling nomads,
but now it allows House Ghallanda to run the best inns,
hostels, and taverns in the land. Similarly, the Mark of
Healing has always been a boon to both nomads and
settlers facing dangerous wilds, and House Jorasco still
employs both magical and mundane healing techniques
to tend to the well-being of patients across Khorvaire.
In the jungles northeast of the [[Q'barra]]n city of [[Newthrone]] is a
House [[Jorasco]] [[enclave]] built on ancient ruins of
uncertain origin. The [[halfling]]s of the enclave maintain their distance from but are not overtly hostile to the [[dragonborn]], the [[Cyran|Cyre]] settlers, and the [[lizardfolk]]
living nearby. They are cautious about unexpected
visitors, however, because their enclave is built atop
ancient ruins that contain powerful magic.
The Hall of a Thousand Mirrors is accurately
named. Below the stone and wood of the [[enclave]] is
a maze of corridors; a full-length mirror stands at
each junction, making navigation difficult. For most,
walking through the Hall of a Thousand Mirrors is
merely unnerving. But those suffering from magical
curses or madness find that the mirrors somehow
display their afflictions—and then their nightmares
walk out of the mirrors. If a cursed or maddened
visitor can somehow fight off the images and walk through the Hall of a Thousand Mirrors, then the last mirror shows a normal reflection, and sanity and
normal life return.
The headquarters of the [[Cairdal Blades]] takes up an entire great tree within the fortress of the [[Sibling Kings]] in [[Shae Cairdal]]. Here, the Blades train and
prepare for missions that take them across [[Aerenal]]
and to other lands. They also watch the population
for those who manifest the [[Mark of Shadow]], so that
such individuals can be inducted into their order.
The [[Hall of Justice]] is an immense complex containing an
impossible number of courts and chambers of inquiry. In
smaller chambers, [[immortal]]s debate the actions of the beings
observed in the [[Panopticon]]. There are [[angel]]s discussing
the [[Treaty of Thronehold]], while [[inevitable]]s dissect the latest
actions in the endless wars of [[Shavarath]]. These debates are
pro forma; while a judgment is made and recorded in the
[[Infinite Archive]], no action is ever taken. The weightier matters
are resolved before an [[inevitable]] tribunal, led by a Kolyarut,
an inevitable representative of the great arbiter of impartial
justice whose spirit permeates the hall itself. The tribunal
is typically filled out with a [[planetar]] and an [[amnizu]], each
working to sway the Kolyarut's deciding vote to their side.
Adventurers who violate the laws of [[Daanvi]] are brought
before an immortal tribunal. Usually this is a straightforward
matter; the judges question the accused. The accused is
granted an Advocate and opposed by a Voice of Justice;
typically one of these is an [[angel]], the other a [[devil]]. Both
of these immortals may conjure images from the lives of
the accused, drawing on the records gathered from the
Panopticon. Such a case could be resolved quickly, but
depending on protocols invoked or evidence sought (“Your
honors, I'd like to show you three years of the defendant's
childhood”), a case can take quite a long time. Luckily for
the accused, the //Flowing Time// property of Daanvi ensures
that when—or if—they return to the Material Plane, time has
passed for their friends and foes much more slowly.
Once a case is resolved, the inevitable tribunal enacts
their judgment; this ruling is final, and can't be questioned
or appealed. The “Daanvian Judgment” section under [[Daanvi]] presents
ideas for penalties that might be imposed on a wrongdoer.
The secret center of the [[Skullborn]] cabal festers under the
city of [[Pylas Talaear]]. Here, the Skullborn induct new members and
perform vile experiments. Experienced members of
the group help their fellow cabalists alter themselves,
sometimes permanently, to appear [[undead]].
The Hammer is an island in the [[Lhazaar Principalities]]. Amazingly, this "island" isn't a natural island at all; it's actually a gigantic earth [[elemental]] from [[Lamannia]]! It never ventures far from its position off the coast of [[Lorghalan]] and [[Dreadwood Isle]], but it tends to swat at any sailing vessels that make their way into its bay.
Across the square from the [[Riedran consulate|Riedran Consulate (Stormreach)]], the
Hammer and Chain is a capable armor and weapon
shop. Locals go to [[Three-Fingered Thad]] for cheap
repairs and reclaimed goods, but the Hammer and
Chain provides more upscale services, including
masterwork armor and weapons.
Hammersmith’s Inn in [[Stormreach]] is favored by the [[Forgelight]] district’s mercenaries, ex-soldiers, and adventurers. Despite being rough and ready, the inn is hospitable and, like the rest of the district, has a sober atmosphere. Veterans of the [[Last War]] come here to drink away their sorrows and commiserate with friends, and enemies, made during that conflict.
(Ankylosaurus)
Thick armor plating covers the body of the plant-eating hammertail, which defends itself against predators with a knobbed tail that delivers a devastating strike. Some varieties of hammertail have spiked tails.
The massive monoliths of [[Riedra]] serve many purposes.
They draw on the emotions of the nearby populace and
transform these thoughts into psychic energy, which is
used to power many systems in nearby communities. More
importantly, they allow the [[quori]] to shape the dreams of
masses of humans, and in so doing, to prevent change in
[[Dal Quor]]. Most importantly, the hanbalani are slowly bringing [[Dal Quor]] into alignment with [[Eberron]], repairing the damage inflicted by the [[giant]]s [[ages ago|Age of Giants]]. Already, the [[quori]] are able to possess willing humans. As more monoliths are built, quori might be able to possess other willing creatures, and [[manifest zone]]s tied to [[Dal Quor]] could appear across the world. Eventually, the quori should be able to
physically manifest on [[Eberron]].
Along with the functions detailed in the Monolith Features section below, these are the known functions of the hanbalani, but they could just be the beginning. The
monoliths might be physically transforming Eberron
into a replica of [[Dal Quor]] or granting [[quori]] the ability
to rapidly regenerate their [[psionic|psionics]] power.
''Getting the PCs Involved:'' The [[Arcane Congress]]
and the [[Twelve]] know of the hanbalani, but they have little
idea what these massive structures do. Explorers might
be sent to study a monolith, to try determine what its
purpose is. Once this information is known, PCs might
find that shutting down a monolith is a vital step in any
sort of plan involving a [[Riedra]]n city. Alternatively, PCs
could join a group of [[Akiak]] or [[kalashtar]] commandos on
a mission to destroy as many hanbalani as possible.
!! Monolith Features
!!! Shell
Monoliths vary in size and shape, but they are usually
egg-like, approximately 300 feet tall and 100 feet wide.
When hanbalani are in close proximity to one another,
such as within a major bastion, they tend to be smaller.
They are constructed of psionically reinforced steel and
[[crysteel]]. A monolith shell has apertures at the base, and
these doorways are up to 15 feet wide.
The "floor" of a monolith is open to the terrain on
which it's built. Inside, a monolith is cavernous. It has
no features aside from the interior wall, the core, and a
small aperture at the top that leads to the controls.
The shape and reflective interior of a monolith,
as well as the design, the crystal core, and the control
crystals, link each hanbalan to [[Dal Quor]]. Beings on Dal
Quor can contact a particular monolith from a specific
corresponding area in a [[quori]] enclave on Dal Quor. Doing so
works the same as accessing a monolith from the control
crystals on Eberron.
Monolith shells are designed to contain the blast of
a detonating core. The shell's two inner and outer layers
have 3 feet of space between them. Each layer is nearly 2
feet thick, and nearly as hard as [[adamantine]].
!!! Core
A 10-foot-diameter pillar of pure crystal, the core of an
active monolith is warm to the touch. Its greenish light
illuminates the entire interior of the shell and creates
shadowy illumination within 300 feet of the apertures.
A monolith core acts as a giant [[cognizance crystal]], storing a great deal of [[psionic|psionics]] energy that can used by any psionic creature touching it. If expended, the energy slowly replenishes over 12-24 hours. This reserve is accessible from Dal Quor, so a monolith usually has <<dr "2d8">> hours of psionic energy at any given time.
Many monoliths enhance psionics used within 600 feet of them. Some are even more powerful, and can increase the area of their effect up to many miles.
Specific monoliths are often tied to powering other functions used to maintain order and provide comfort in [[Riedra]]. These include [[dreamshaping]], the [[Soothing Voice]], [[climate control|Riedran climate control]], [[crystal illumination]], and [[scry shielding|psionic scry shielding]]. In these cases, the psionic empowering effect is suppressed unless the core's function is changed (see Controls below).
If a monolith's core is broken or shut down, the monolith and all its subsidiary utilities cease functioning. When a core is improperly tampered with, it can explode. It
might also explode 10-60 seconds after it suffers heavy damage. Creatures
outside the shell and not near an aperture are unharmed.
Shutting down or destroying a monolith core
immediately alerts any [[quori]] tapped into the monolith
from [[Dal Quor]]. Otherwise, the authorities are notified within a few minutes (or longer if the area is not heavily settled).
!!! Controls
At the top of a monolith's interior, a cluster of small crystals
and Siberys [[dragonshard]]s pulse and glow with multiple
colors, regulating the power of the monolith core. Here,
the monolith's functions can be altered and accessed.
A creature that possesses [[psionics]] can attempt to
manipulate a monolith's functioning. By touching the control crystals and making a successful attempt representing 1 minute of effort, the creature bonds with the monolith's control crystals. Failing the attempt causes the monolith to store the user's identity and description (mental picture), giving that information to
any [[Inspired]] or [[quori]] who contact the monolith within the
next few hours. Once a bond with the control crystals has
been established, additional attempts can alter the
monolith's function:
* ''Easy''
** Lure psionic creatures to the monolith.
** Activate dormant monolith safely.
* ''Moderate''
** Shut down active monolith safely.
** Sever connection to public utilities.
** Recharge the core's psionic reserve.
* ''Difficult''
** Sever connection to [[Dal Quor]].
** Set the core to explode in 10 minutes.
** Shut down a self-destruct sequence.
Trading [[position]] for [[effect]] allows the user to perform the action in half the time, but at a higher risk. A failure might mean that contact with the controls has been disrupted and must be reestablished. A [[desperate effect]] failure when controlling the monolith sends the monolith into
a psionic feedback loop, negating all further attempts at
control and causing the monolith's core to explode in 10-60 seconds.
In any case, a monolith's secondary functions
require power. Powering utilities with a monolith
requires it to be at full psionic reserve. While a
monolith is performing a secondary function, its power
can't be redirected or siphoned, so a saboteur must disconnect a monolith to siphon off its power. Then the monolith can't be reconnected to the utility until it
has fully recharged.
!! Special Situations
Here are a couple of special situations involving monoliths.
!!! Creatures
Because the core of a monolith radiates light and heat, as well as psionic power, a monolith built in a remote location attracts psionic creatures from
miles around. Tribes that travel on foot in [[Syrkarn]] and
the [[Tashana Tundra]] sometimes use monoliths as shelter.
Normal creatures living within a mile of a monolith can
have phrenic or psionically gifted offspring, but such
an occurrence is extremely unusual and more so if the
monolith is used to power a subsidiary function. If a
remote monolith ceases working, [[Inspired]] agents come
and wipe out any creatures in the vicinity, so inhabitants
are likely to oppose intruders looking to harm a wilderness monolith.
As indicated in the "Controls" section above, a character can use the controls to lure psionic creatures to a monolith. This call has a range of 1 mile, but it is not
a compulsion—non-sapient creatures usually respond, but cleverer creatures can choose not to. This tool is often useful to the [[Inspired]] or [[quori]]. If the call is not expected or
planned, they send troops to investigate.
!!! Under Construction
If a monolith is still under construction, it has as many as three hundred workers
living in and around it, plus a squad of twenty Riedran soldiers (usually [[Stone|Stone Soldiers]]) led by a sergeant. After a
monolith is activated, the soldiers and a trained engineer remain stationed there for up to a week.
The interior of an uncompleted monolith is filled
with wooden scaffolding that rises up to 400 feet off the
ground. Workers use this scaffolding to hoist sections
of the shell into position during the building process.
While holding this silver hand mirror, you can press a button on its side to cause it to record
everything reflected on its surface for the next minute.
Thereafter, you can press a second button and cause the mirror to replay everything it
captured.
Once the events have played, the mirror forgets what it
recorded.
The Handlers Guild of House [[Vadalis]] oversees
research into the breeding, sale, care, and training of
animals. In addition to managing the Vadalis
ranches, licensed handlers can be found working with
farming communities, stables, and caravans across
Khorvaire, seeing to the care and training of animals.
Although [[magebreeders|magebreeding]] might have the higher public
profile, guild members also serve as drovers, shepherds, and stable hands. Anything tied to the care of
animals is within the purview of the Handlers Guild.
The [[Black Wrack]] tavern in [[Locksmith Square]] in [[Stormreach]] is owned and operated by a no-nonsense but good-natured fellow named Handlon the
Brick. Called "Brick" by his regular customers, Handlon arrived alone
in the city aboard a cargo ship in late 976 YK. By the start
of 978, he had designed and completed initial construction on the tavern. Within days of its grand opening, the
Black Wrack had become one of the city’s most popular
watering holes. There are many reasons for this, but chief
among them—aside from the wide selection of affordable drinks—is Handlon’s one rule: All are welcome to his hospitality, regardless of race or cultural heritage. If
a squabble erupts, it gets taken outside immediately, or
Handlon puts an end to it, often abruptly and painfully.
Everyone’s gold is good at the Black Wrack.
Handlon’s animal companion is an enormous mastiff (essentially a riding dog), which spends most of its time either sprawled out on the floor by the bar or tracing a lazy perimeter around the tavern’s interior. Its name is Sascha, and no matter how drunk or rowdy the Wrack’s patrons get, they know not to involve the dog in their shenanigans, lest they rouse the animal’s ire or that of its owner.
This small, spring-loaded metal tube attaches to a belt.
The interior of the tube is an extradimensional space that
can hold a up to 50 total coins (crowns, sovereigns or galifars). The vault weighs ½
pound, regardless of its contents.
While wearing or holding the vault, you can speak an amount you wish to draw from the vault and press the lever on its side. If the vault contains at least that
many coins, it dispenses them.
Placing a handy coin vault inside an extradimensional space created by a [[handy haversack]], [[portable hole]], or similar item instantly destroys both items.
This backpack has a central pouch and two side pouches, each of which is an extradimensional space. Each side pouch can hold up to 20 pounds of material, not exceeding a volume of 2 cubic feet. The large central pouch can hold up to 8 cubic feet or 80 pounds of material. The backpack always weighs 5 pounds, regardless of its contents. When you reach into the haversack for a specific item, the item is always magically on top.
If the haversack is overloaded, pierced, or torn, it ruptures and is destroyed, and its contents are scattered in the cosmos. If the bag is turned inside out, its contents spill forth, unharmed, but the bag must be put right before it can be used again. Breathing creatures inside the bag will begin to suffocate after a few minutes.
Placing a handy haversack inside an extradimensional space created by a [[bag of holding]], [[portable hole]], or similar item instantly destroys both items.
This small leather pouch appears empty, though sifting sand can be heard from within when shaken. While holding the sandbag, you can turn over the pouch and cause up to 1 pound of sand to pour from it.
Once a total of 1 pound of sand has been produced, the
magic ceases to function until the next dawn.
Certain hemp ropes used in the execution of final justice can affect those beyond the reach of normal magics. While holding this noose, three times per day, you may cast [[hold]] on an [[undead]].
Hanra d'Jorasco rose through the ranks of the [[Medics Guild]] and was instrumental
to [[Breland]]’s victory at the siege of [[Orcbone]] in 989
YK, using the power of her [[dragonmark]] to keep the
entire garrison in fighting shape throughout months
of [[Droaam]] onslaughts. After the war, King [[Boranel|Boranel ir'Wynarn]]
made Hanra an honorary member of his royal guard
in recognition of her heroism—and was more than a
little surprised when she reported to work the next
day in full uniform. Since then, she has become the
king’s personal physician and one of his trusted diplomatic advisors.
The name of this tribal tradition translates to “Blood Hunters,” and its members
worship [[Vulkoor]] the Cunning. The [[drow]] of the Hantar’kul believe that it is the destiny of their people to rule over all [[Xen'drik]]. They despise the [[giant]]s and other creatures of the shattered land, but they believe that dominance over these creatures is assured; it is foreigners that they see as a threat. As such, the Hantar’kul actively prey on explorers who venture into the depths of Xen’drik. They have been responsible for the destruction of a number of mining and farming settlements, and the Hantar’kul present an ongoing threat to House [[Tharashk]] and House [[Vadalis]] operations. Although they hate all foreigners, the Hantar’kul have a special vendetta against the [[elves|elf]] of [[Aerenal]] and [[Valenar]] and the drow and half-drow who live within [[Stormreach]].
As with many other [[drow]] traditions, the Hantar’kul
mantle is borne by a number of different drow tribes.
These tribes respect one another but rarely work
together, and each has slightly different traditions. The
tribe that poses the greatest threat to [[Stormreach]] is the
Qar Hantar’kul, which uses a curved double-bladed
dagger as its emblem. The Qar tribe has recently set up
camp in the tunnels below Stormreach; the drow hope
to find powerful weapons in the deep dungeons and to
establish a strong foothold from which to strike at the
foreigners in the world above.
Most Hantar’kul fit the traditional image of the [[Vulkoor]]i drow, including the pale tattoos and chitin armor. However, the Blood Hunters recognize the power of the past, and they constantly search for [[magic item]]s and weapons they can use. As students of
[[Vulkoor]] the Cunning, their numbers include assassins and [[arcane trickster]]s. A Hantar’kul tribe might include swordsages specializing in the Shadow Hand, Diamond Mind, and Setting Sun disciplines—ancient traditions dating back to the elf–giant war.
Haras Kant is a wealthy [[Brelish|Breland]] [[human]] aristocrat and a member of the [[Aurum]]. Like most members of the Aurum, he is interested in
increasing his personal power and wealth, whatever
the cost. Kant has a special interest in fabulous and
magic gems, and adventurers that obtain unusual
gemstones may attract his interest—which can be a
dangerous thing.
Kant resides in [[Crystal Bridge]] in [[Upper Northedge]], [[Sharn]].
Harash, a male [[medusa]], is [[Cavallah]]'s right hand. He is a specialist in diplomacy and intimidation whom Cavallah trusts to monitor the [[Sharn]] members of [[Daask]] and maintain morale.
''Population:'' [[Human|human]]s and [[half-elves|half-elf]], who are
outnumbered by visitors of other races.<br/>
''Character:'' Bustling and dangerous.<br/>
''Businesses:'' Shipping, crime, taverns, and fishing. <br/>
''Key Personalities:'' [[Berrigan Enge]], [[Harbormaster Zin|Harbormaster's House]], Lord [[Katanavash]], [[Maeran Mendyrian]], [[Mazrath the Maker]], [[Thaera]], and [[Three-Fingered Thad]].<br/>
''Overseer:'' Lord [[Jonas Wylkes]].
//It stinks here. All harbors stink, but this—this is something special.//
//All of [[Stormreach]]’s great sewers, pipes, and drains lead, ultimately, to the harbor. The effluent doesn’t seem to worry the wildlife; there’s plenty of fish on sale for a hungry traveler. You’re just not sure that you’d want to eat them.//
//Away from the chaos and business of the harbor, the city rises uphill
and in from the shore. From down here it looks as if toy soldiers have come to
life and settled in a ruined city, and above it all stands a great statue, staring
out to sea, a beam of light shining up from its outstretched hands.//
Like every other part of [[Stormreach]], the Harbor
district is built on the bones of the past. The city ever
was and ever will be a port, and time and tides have
pushed the harbor farther and farther into the city, as
neighborhoods have sunk or been washed away.
The harbor is Stormreach’s lifeblood, for the
city relies on trade and its status as a free port, where
rules are lax as long as you have enough coin. Without the harbor, Stormreach would be stranded and quickly die. Aside from taverns and a few shops, most
of the district’s businesses concentrate on loading and
unloading vessels and storing cargo.
For the visitor, the Harbor district is a cold plunge into
[[Stormreach]]. The city’s corruption, competing powers, and
ancient mysteries all have examples here. Some travelers
disembark and then book passage back to [[Khorvaire]]
as quickly as they can. Some never leave, thrilled at the
city’s liveliness and danger, while some disappear—until
fishers pull their bodies from the harbor.
!! Noteworthy Locations
* the [[Crypt of the Guard]]
* [[Dagoward's Apothecary]]
* the [[Emperor]]
* the [[Hammer and Chain]]
* the [[Harbormaster's House]]
* the [[Leaky Dinghy]]
* the [[Lighthouse]]
* the [[Riedran Consulate|Riedran Consulate (Stormreach)]]
* [[Shargon's Talon]]
* [[Thaendyr's Rest]]
* the [[Underharbor]]
* the [[Waterworks]]
* the [[Wavecrest Tavern]]
* the [[Wayward Lobster]]
!! Adventure Hooks
* [[Baudry Cartamon]] is onto the scam of the century. While he was drunk in the [[Wayward Lobster]] one night, he is sure he overheard some smugglers whispering about sneaking out of the city with some rare artifacts gathered from the jungle. What if those artifacts were intercepted? Baudry remembers the warehouse the smugglers mentioned. Now he just needs some muscle to collect the goods.
* Someone has done something to deeply upset the [[sahuagin]], who are making dangerous noises about “the return of that which was taken.” Only they seem reluctant to mention what that thing is, due to religious taboo. Until the dispute is sorted out, ships dare not leave or enter the harbor. And sahuagin are seen at night, stalking Stormreach’s streets. A bounty on the thing in question is set by the [[Storm Lords]] as they prepare for the worst.
* The [[Waterworks]] have ceased working. Only a trickle comes out of the main drainage pipe, and the sewers in the rest of the city are backed up. As unglamorous as it might seem, the sewers need exploring, and something down there is hungry.
!! Overheard in the Harbor district
//“Hello, sailor. Fresh off the boat, are you? Why not
come with me and spend some of that hard-earned
coin? You look like you need a rest, and I know just
the place, right down this alley...”//
//“You so much as look at [[Aida]] again, and the next time
we take you for a little dip in the harbor, you’ll be
wearing iron shackles chained to a rock. Are we clear?
Good lad.”//
[[Dar Jin]] in [[Riedra]] maintains a specific harbor for all foreign ships. Outlander vessels
are met and escorted in by small [[Harmonious Sail]] warships. Anyone who wants to enter the [[foreign quarter|Jhodra]] must pass through a customs inspection. [[Clairsentience|clairsentience]] is used to detect magic, and inspectors confiscate any [[magic item]]s that has an aura of the [[conjuration]], [[enchantment]], [[evocation]], or [[necromancy]] school; confiscated items can be reclaimed upon departure.
The customs inspection is relatively brief, however,
compared to the interrogation process required to gain a
transit visa beyond the [[Jhodra]]. The visitor is questioned
about their reasons for coming to [[Riedra]], their occupation,
and whether they are carrying dangerous goods or has any
criminal intent. A typical customs agent specializes in sensing motives of those they question.
Harbormaster Zin oversees the day-to-day minutiae of
running the [[harbor|Harbor]] of [[Stormreach]] for the [[Harbor Lord|Jonas Wylkes]]. Everything
that is beneath the lord’s notice is run through Zin, a
middle-aged and overworked [[halfling]].
Zin’s house is large and is partly a public building, where captains pay their dues, get charts, or make arrangements for their cargo. The house commands a
good view of the harbor, allowing the harbormaster to
keep an eye on the docks.
[[Berrigan Enge]] is often seen here.
''District Type:'' Tavern district<br/>
''Buildings:'' Temple ([[Onatar]]), average lodging (12),
poor lodging (80), average food (24), poor food
(120), poor trades (40), poor services (40), poor
residences (80), sporting arena<br/>
''First Impression:'' The buildings of this district
are a bizarre mishmash of architectural styles and
materials. Narrow spires stand across from squat
brick keeps and densewood halls. In addition to the
bridges connecting the great towers of the district, a
maze of suspended rope, wood, and stone roads connect the upper levels within the towers, creating the
impression of a mad spider web. Music and song can
be heard echoing from various towers, and people
laugh and run through the streets.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Tumbledown]] (north); [[Broken Arch]] (northwest); the [[Bazaar]] (southwest); [[Gate of Gold]] (below); [[Hope's Peak]] (above)
Today, common opinion believes that the architect
Hareth ir'Talan was mad. He should never have
been allowed to work on a project as important as the
construction of a [[Sharn]] district, but gold and family
connections gave him his chance. The result was
the district now known as Hareth's Folly. At first,
Hareth sought to include buildings in the styles of
all the contemporary cultures of the kingdom, so
that visitors from all parts of [[Galifar]] would feel at
home. As construction continued, he began to add
new designs, based on his visions of the architecture
of [[Syrania]], [[Thelanis]], and the other divine realms.
As a result, all manner of different buildings can
be found in Hareth's Folly, including some of the
strangest structures in Khorvaire. While most
believe that Hareth was mad, a minority feel that he
was driven by divine inspiration.
Hareth's Folly focuses on entertainment. Inexpensive inns, pubs, restaurants, and taverns fill the district. While there is less criminal activity here
than in [[Callestan]] or the [[Bazaar]], a great deal of gambling occurs in the back rooms of Hareth's Folly. In
particular, the district serves as a center for aerial
sports, including windchasing and [[skyblade]] matches.
Hareth's Folly is not represented in the [[Race of Eight Winds]]; instead, it provides a neutral position from
which the race begins and ends.
!! Noteworthy Locations
* The [[Hollow Tower]]. A vertically oriented arena used for aerial jousting and other unusual sporting events.
* The [[King of Fire]]. A comfortable tavern and gambling hall, known as one of the safest places to bet on the Race of Eight Winds and the events at the Hollow Tower.
The [[Riedra]]n navy transports
soldiers and patrols the coasts in search of smugglers and
would-be infiltrators.
The Harmonious Shield is the army that stands between
[[Riedra]] and the countless dangers of the outside world.
Whether they're fighting the "treacherous" [[kalashtar]] on
the [[Adar]]an front, combating [[dromite]] forays, hunting
[[dwarves|dwarf]] in [[Dor Maleer]], or battling [[skulk]]s in the ruins
of [[Ohr Kaluun]], the soldiers of the Harmonious Shield
serve the [[Inspired]] on the field of battle.
The Harmonious Shield maintains garrisons in the
bastion cities, and it has independent fortresses spread
along the borders and in areas deemed to be especially
dangerous. The largest fortresses are called ''kintams''. They are connected by permanent psionic [[teleportation circle]]s, which allow swift transportation of troops and supplies. Kintams can be the size of cities, and new recruits are usually dispatched to a kintam to learn their trade.
Years of psychic indoctrination teach soldiers that
honorable death in battle is the surest path to advancement
in the next life. Discipline within the ranks is strict, and
looting and stealing are serious offenses. A soldier needs
nothing that isn't given to him by the [[Inspired]]. The same
training burns mercy and empathy from the minds of
Riedran soldiers, so a servant of the Shield feels nothing
for the people he kills. This conditioning doesn't always
take hold, however, and a few recruits find themselves
horrified by the brutal actions they must perform. Such a
warrior must either suppress these emotions or find a way
to escape before their "weakness" is discovered.
Riedran warriors believe they are fighting for a holy cause against monsters and those corrupted by evil spirits. Fiercely devoted to their nation, they are no more evil than the typical [[Brelish|Breland]] conscript or knight of [[Thrane]].
Harmonious Shield troops
are commanded by [[Chosen]]
and [[Inspired]]. The High Minister is the legendary
Lord [[Zoratesh]].
The Harmonious Shield trains and equips troops for
a variety of roles. In addition to the formal divisions listed below, the Harmonious Shield sometimes utilizes uncategorized specialists. For example, the Shield has access to a small corps of [[cleric]]s of the [[Path of Inspiration]].
These holy warriors are
reserved for the most
dangerous and crucial
operations.
!! Divisions of the Harmonious Shield
<<list-links-article "[tag{!!title}sort[title]]">>
This magical shortbow has many strings, allowing it to be played as a harp. Arrows loosed from it whistle musically through the air.
A harpy combines the body, legs, and wings of a vulture with the torso, arms, and head of a human. Its wicked talons and bone club make it a formidable threat in combat, but its most potent weapon is its voice. To hear a harpy's song is to hear music more beautiful than anything else in the world. A traveler that succumbs to the entrancing effect of that singing is compelled to blunder toward its source.
Harpies in Eberron mostly live in the [[Byeshk Mountains]] in [[Droaam]], with small communities dwelling in the [[Graywall Mountains]] as well as the cities of Droaam. Some harpies also live in [[Sharn]], serving as House [[Tharashk]] mercenaries or agents of [[Daask]]. There are ten major flights (clans) living in the Byeshk Mountains: the Brass Talon, the Carrion Caller, the Crimson Wind, the Forgotten Choir, the Haunting Song, the Last Chant, the Last Dirge, the Rotwing, the Stormsinger, and the Wind Howler flights. Only four of these flights (Carrion Callers, Last Dirge, Rotwings, Stormsingers) have pledged loyalty to the [[Daughters of Sora Kell]]; these harpies who left the mountains
to “sing Katra's song” have embraced her vision and are thrilled
to be building a nation with their voices. The other flights are in varying degrees of opposition.
There is no singular god that all harpies worship. Each harpy flight worships their own god or goddess, though many scholars hold that these gods and goddesses are, in fact, aspects of the [[Dark Six]]. For instance, the harpies of the Last Dirge revere the Song of Passion and Rage, which is said to be an interpretation of the [[Fury]], while the Stormsinger harpies venerate the Stormsong, an aspect of the [[Devourer]].
Harpies of [[Droaam]] have very fine control of their supernatural voices,
being capable of inspiring a range of emotions. Harpies call the
hour and summon workers; they also help with crowd control,
serve as town criers, and entertain the people (see [[Culture of Droaam]], "Entertainment").
In representing a harpy character or interacting with one,
highlight their passion. Harpies //love// what they do; if they
don't, they won't do it. Singing isn't merely a magical tool; it's a
joyful act, a communion with the [[Fury]] and a work of art woven
together. Whether singing weary [[goblin]]s to sleep in a [[grist]] mill or
acting as a courier in [[Sharn]], harpies embrace life with absolute
zeal. But harpies hate just as strongly as they love—and there are
harpies who hate the Daughters and the entire idea of Droaam.
The dark wood on the northern shore of [[Lake Brey]] in [[Thrane]]
is called the Harrowcrowns. At the birth of [[Galifar]],
one great forest stretched from the [[Blackcaps|Blackcap Mountains]] to
[[Scions Sound]], including the woods now called the
[[Greenhaunt]], the [[Imistil Forest]], and the [[Thornwood]]
as well as the Harrowcrowns. Settlers through the ages have cleared most of the land for farming, and several small [[Thrane]] villages now surround the Harrowcrowns, despite the monsters that periodically seem to erupt from the forest and ravage the countryside for miles around.
Savage [[goblin]]s raided out from the Harrowcrowns in 465 YK, leading eventually to the discovery of an ancient [[Dhakaan]]i ruin in the heart of the forest. A team of scholars from [[Flamekeep]] never returned from its exploration of the ruins, and the ruins’ location has since been lost.
[[Ettercap|ettercap]]s and giant spiders, crazed [[dryad]]s and [[treant]]s, bloodthirsty [[gnoll]]s, and twisted [[foulspawn]] are among the monsters that have emerged from the forest to ravage the surrounding villages. Some have speculated that a planar connection—to [[Thelanis]], or perhaps the mad realm of [[Xoriat]]—is responsible for the plague of monsters, but it seems more likely that these creatures are native to the forest itself.
Lhesh Haruuc Shaarat'kor ("High Warlord of the Crimson Blade"), is the chieftain of the [[Ghaal'dar]] tribes and leader of the nation of [[Darguun]]. In 969 YK, Lhesh Haruuc led an uprising that claimed southern [[Cyre]], a region which was recognized as an independent nation with the [[Treaty of Thronehold]]. Today, he is an aging king, and some worry his nation will collapse after his death.
The Harvest Monarch is an [[archfey]] tied to the land they govern.
When their people suffer, they're sickly. In prosperous
times, they're strong and vital. Sometimes they're
deposed and forced to walk their land in hiding; during
these times, they're known as the Long Wanderer or
the Exile. But they're the rightful ruler and are always
restored, and those who aid them are rewarded.
This blasted wasteland is
littered with immense bones and the stench of rotting
flesh. Here an army of [[dragon]]s faced the forces of
[[Katashka]] the Gatekeeper, an [[overlord]] and mighty
[[necromancer|necromancy]]. Katashka trapped the souls of his foes,
binding them to the land in a gruesome parody of the
rite of the draconic guardian. The entire region is
considered to be coterminous with both [[Dolurrh]] and
[[Shavarath]], and is suffused with unhallow energy.
Dragon [[ghost]]s prowl the region, driven mad by their
torment; these spirits attack anything unfortunate
enough to cross their paths.
Harysh is the proprietor of the popular [[Stormreach]] inn, the [[Ship's Cat]], and has a reputation for honor, hospitality, fairness, and discretion. The woman appears to be is a good-natured [[shifter]] with a genuine, if strangely obsessive, love for street cats. And that’s precisely what she is—or, rather, what she //was//.
The "real" Harysh has been incapacitated, her soul trapped in a [[Khyber shard|dragonshard]]. The Harysh visible today is actually the [[rakshasa]] [[Lorishto]].
Hashalaq [[quori]] are loremasters and judges, and are commonly known as dreamstealers. In their natural form, hashalaqs are composed of hundreds of translucent tendrils. They can compress and configure these tendrils to form a wide range of simple shapes. A point of blue light suspended within its tendrils serves as the hashalaq's sensory organ, which can be moved around to suit the creature's current shape.
//''The Power of Pleasure.''// Hashalaq quori have studied their mortal prey for centuries. Inhabiting human bodies as [[Inspired]] has granted the hashalaq a deep understanding of the hedonistic urges of humanity. As a result, they have developed numerous ways to control humanoids through pleasure—even as they have developed a taste for such things themselves.
//''The Learned of Dal Quor.''// Hashalaq quori are the loremasters of [[Dal Quor]]. Even those hashalaqs who don't make use of [[Inspired]] vessels dedicate themselves to studying [[Eberron]] and the planes, and they are among the few quori castes whose members understand the ways of magic. In Dal Quor, the hashalaq quori are typically found as advisors to the [[kalaraq]]. They also serve as judges, policing the quori and ensuring that the rivalries of the [[tsucora]] never threaten the greater plans of the [[Dreaming Dark]].
[[Celyria|Celyria ir'Tain]]'s eldest son Hass is the heir apparent to the [[ir'Tain|ir'Tain family]] fortune.
Hass is a member of the [[Breland]] Parliament and
spends most of his time in [[Wroat]], but returns on
occasion to visit his mother and siblings. Hass ir'Tain
is an ardent supporter of Lord [[Ruken ir'Clarn]] and
his plan to abolish the Brelish monarchy after the
death of King [[Boranel|Boranel ir'Wynarn]]; while he believes that members of the aristocracy are inherently better equipped
to lead than commoners, he firmly believes that the
blood of King [[Jarot|Jarot ir'Wynarn]] is weak and that the time has come
to set the monarchy aside.
While Duken is willing to wait for Boranel to die of natural causes, Hass is less
patient. Working with other members of the conspiracy at court, Hass has been considering various ways to embarrass the monarchy or even to hasten
the demise of King Boranel. Hass is not hungry for
power, and he believes that Duken should be the
prime minister after the fall of the monarchy; he is
actually pleased that Duken does not stoop to such
methods and feels that it shows his worthiness to rule.
But he is prepared to perform these questionable acts
in the service of the country—and he occasionally
hires adventures to do his dirty work.
Quite a few powerful spellcasters live in [[Stormreach]].
The [[Dragonhawk]] of the [[Ninth Wands]] and Lady [[Miravella d'Thuranni|Miravella Uruvai d'Thuranni]] have skills to rival any [[wizard]] in [[Sharn]].
But it’s said that the greatest mage in Stormreach isn’t
a [[human]], [[elf]], or [[gnome]]. The [[bard]]s of Stormreach sing
of a mighty [[sorcerer]] who lives in a hidden lair deep in the [[Undercity]] below [[Stormreach]], surrounded by gold and ancient
treasures. Tales are told of the heroes and thieves who
sought to match wits with the Prince of Dragons, and
of the corpses they left behind. These stories are tributes to the mightiest mage of Stormreach—the [[kobold]] who calls himself Hassalac Chaar.
Hassalac claims that the blood of [[dragon]]s flows through his veins, empowering his magic. Perhaps this is the truth. He might be a remarkably skilled kobold sorcerer. Or he could be a half-dragon, a disguised dragon, or even a [[rakshasa]] who enjoys the deception. Even his level of skill is a mystery. From the stories it’s clear that
he possesses an incredible mastery of [[arcane magic]]. At the end of
the day, Hassalac is a plot device. If it suits the needs of
the story, he might be the most powerful mortal sorcerer
on [[Eberron]]. On the other hand, he could be running
an elaborate hoax, using his isolation and the artifacts
in his hoard to mimic magic and convince people that
he has far greater powers than he actually does.
Whatever the truth about Hassalac’s powers, a few solid facts have been established. His lair is hidden somewhere beneath [[Stormreach]]. The only way to reach it is through a teleportation gate located in [[Locksmith Square]]—and only Hassalac can open this gate. He lives in a maze of tunnels protected with deadly wards and patrolled by magically enhanced [[lizardfolk]] and [[bound|elemental binding]] [[elemental]]s. Hassalac is fascinated with dragons, and he has amassed a vast assortment of relics dating back to the [[dragon–giant conflict|Age of Giants]] and even to the [[dragon]]s’
war against the [[overlord]]s of the [[Age of Demons]].
Hassalac jealously guards his hoard and rarely
leaves his lair. He might employ adventurers to help
him expand his hoard. Alternatively, Hassalac might
already possess an artifact the party needs: Can they
bargain with the prince, or will they risk their lives to
try to rob him?
Other adventures could turn on the true nature of the Prince of Dragons. When the PCs learn that both the [[Chamber]] and the [[Lords of Dust]] want Hassalac dead,
will they choose a side and help with the assassination? Or will they try to find out what makes the [[kobold]] such an important target?
When this tattered grey [[wizard]]'s hat is worn, the user gains a thorough knowledge of the [[arcane|arcane magic]] arts.
This black wide-brimmed hat with red silk band always casts a dark shadow over the wearer's eyes, completely and subtly concealing their face at all times.
While wearing this hat, you can cast the [[disguise self]] spell at will. The spell ends if the hat is removed.
<<<
{{disguise self}}
<<<
While wearing this hat, you can cause it to summon a small illusory raincloud above your
head for 1 minute. The illusion creates the image and sound of pouring rain, accompanied by thunder and lightning.
This soft, slouchy knitted wool cap can hold up to 200 pounds, not exceeding a volume of 25 cubic feet. The hat weighs 1 pound, regardless of its contents. Retrieving an item from the hat requires some time to shuffle around and find what you're looking for.
If the hat is overloaded, pierced, or torn, it ruptures and is destroyed, and its contents are scattered in the cosmos. If the hat is turned inside out, its contents spill forth, unharmed, but the hat must be put right before it can be used again. Breathing creatures inside the hat will begin to suffocate after a few minutes.
Placing a hat of holding inside an extradimensional space created by a [[bag of holding]], [[portable hole]], or similar item instantly destroys both items.
While wearing this hat, you can change the style, color, and apparent quality of the
material. The weight of the hat doesn't change and when removed, the hat becomes a plain, brown cap.
This wide-brimmed hat of felted wool will never fall off the wearer's head, even in the most extreme of circumstances.
This wide-brimmed hat of cream-colored wool grows into a three-person tent when the command word is spoken.
Speaking the command word again causes the tent to
transform back into a hat, provided that no creatures are
inside. Any objects inside the tent when it collapses are
ejected and remain outside the tent as it folds.
This loose-fitting canvas hat is studded with fishing lures. When the command word is spoken, this hat grows into a decent 15ft dingy with oars and an anchor. The boat can hold up to five human-sized creatures comfortably.
When transformed back into a hat, any objects or creatures onboard the boat are gently ejected.
While wearing this brightly colored hat, you can speak its command word and cause both the hat and your head to become invisible until the hat is removed.
This cheap-looking black bowler hat was designed by mischievous students of [[Arcanix]] to prank their teachers. The hat changes the hair color of the wearer to something obnoxiously bright for up to six hours.
Three times per day, while holding the hat, you can speak a command word to summon your choice of a bat, a frog, or a rat. The summoned creature magically appears in the hat and tries to get away from you as quickly as possible. The creature is neither friendly nor hostile, and it isn't under your control. It behaves as an ordinary creature of its kind and disappears after 1 hour or when it is incapacitated.
The hathil plant grows in the swamps of the [[Shadow Marches]], and is useful for the casting of [[transmutation]] spells and the brewing of certain [[potion]]s.
Havenglen is a small village in the [[Eldeen Reaches]], located between the [[Wolfwood]] and [[Lake Galifar]].
A few blocks from the [[House Tharashk Refinery]]
in [[Graystone]], Havulak Prospecting has catered to
explorers and prospectors for years. The shop stocks
clothing, guidebooks, and tools, and the crotchety
proprietor, a [[human]] named Havulak, has no end of
opinions about the best paths through the jungle.
Havulak Prospecting sells guidebooks outlining hazards in different regions of [[Xen'drik]], but they aren't cheap. Havulak himself writes bits and pieces of the books. Foiled too many times by the [[Traveler's Curse]], he gave up his dream of mapping the continent years ago, now focusing his attention on survival tips that are usually valid regardless of the land’s strange shifts.
Havulak Prospecting competes with the [[Thrifty Traveler]] in [[Summerfield]], [[Southwatch]].
//“It came over the hill and straight at us. I can’t remember exactly how it looked, only its size, and the gray haze that came with it. We lost Drugor. I hope he died quick. I never saw anything that horrific before, and I don’t expect to ever again.”//
<div align="right">—[[Ikar]] the Black, [[Mournland]] salvager</div>
Perhaps a few dragons recall Haze-of-Death’s true name, but he himself forgot it on the Day of [[Mourning]].
Once a [[Chamber]] agent, Haze-of-Death left the organization to throw his lot in with the lesser races of [[Khorvaire]]. The great [[white dragon]] saw potential in humanity
and admired [[Vvaraak]]’s example. He wanted to teach the lesser races and help them achieve greatness, seeing them as worthy individuals in their own right, not merely pawns in the [[Draconic Prophecy]]. The Chamber tried to discourage him,
but Haze-of-Death ignored their entreaties.
During his work for the [[Chamber]], Haze-of-Death had forged a friendship with a [[Cyran|Cyre]] professor. He traveled to Cyre to offer his services as a negotiator and a teacher, hoping to help end the [[Last War]] and usher in a new era of enlightenment.
Perhaps Haze-of-Death’s age and power saved him
from the cataclysm on the Day of [[Mourning]]. Perhaps
it was random chance, or a cruel twist of fate. In any
event, the dragon who clawed his way out of the [[Glowing Chasm]] after the devastation was very different from the one who’d come to [[Cyre]]. The rampant arcane energies
crippled Haze-of-Death, then mutated him, and either
the severity of his injuries or his terrible change drove
him hopelessly mad. He is convinced that enemies lurk
on all sides, waiting for a moment of weakness to steal
his possessions.
Now Haze-of-Death lurks deep within the [[Mournland]], scouting far and wide for treasures to add to his “hoard” and devouring anyone unlucky enough to cross his path.
!! Description
Haze-of-Death’s body, once snow-white, now reflects
the dismal gray that permeates the [[Mournland]]. Many
of his scales have broken off to leave jagged, raw patches
on his hide. Bony growths jut from his joints and his
brow, weighing down his already massive head. Rents in
his wings have healed unevenly, leaving a patchwork of
scar tissue across their span and giving Haze-of-Death a
drunken tilt when he flies.
Worse still, the [[dead-gray mists]] that enclose the [[Mournland]] also surround Haze-of-Death. The horrid vapor seeps from bloodless wounds on his flanks and hisses from his nostrils when he breathes.
!! Lair
On an ordinary battlefield, Haze-of-Death would
undoubtedly make his lair in a cavern of bones. The
weird properties of the [[Mournland]], though, have
instead created a horrific den of dead flesh. Out of
the slick earth of the [[dragon]]’s cavern jut the corpses of
soldiers, most clad in armor and some still clutching
weapons. Torsos hang from the ceiling or protrude from
walls, their limbs dangling to brush against creatures
that move past.
Haze-of-Death's lair is defended by an icy [[living breath weapon|living spell]].
//"This land is alive. It moves and multiplies, breathes and eats, sleeps
and dreams, wakes and watches, defends and attacks. It is a dance of
the manifested and unmanifested. It is in balance. We, its guardians,
should be likewise."//
<div align="right">—Bhimaani, Haztaratain</div>
Ancient and watchful, the Haztaratain order has been
around in some form almost as long as the land of
refuge has been called [[Adar]]. These mystics set body
and mind in balance. They use the strange dichotomies of Adar's landscape as metaphors for their martial
and spiritual training, becoming masters of earth and
sky. Although the order existed before the [[kalashtar]]'s
arrival, the revered founder of the sect, Hazgaal, is the
very monk who welcomed [[Taratai]] from [[Dal Quor]] to
Adar, whereupon he became Haztaratai. Since then, the
Haztaratain, popularly known as the summit sentinels
(or //parahdri// in [[Quori|quori]]), have been integral to the defense
of Adar.
The ascetic nature of the Haztaratain order appeals to
those who focus on self-mastery; its martial spirit draws
those who concentrate on might rather than mysticism.
Still, experience with the supernatural is a must for
those who become parahdri. A desire to defend Adar is
paramount. These [[monk]]s are seldom religious—yet they
are attuned to the spiritual and internal worlds.
To train as a Haztaratain, aspirants must visit the
[[Haztaratain Monastery]], gain approval and guidance from
the masters there, and undertake a pilgrimage to [[Ahdryatmin]]. The spirit's token is required as proof of success.
!! Playing a Haztaratain
As a Haztaratain, you are a fierce guardian of [[Adar]].
After taking time to blend body and spirit, you have
honed yourself into a weapon to destroy invaders. Like
many forces in Adar, you and your fellows are irregulars, each able to travel freely as personal desires and
the needs of the land of refuge dictate. Able to endure
where the weather takes the weak, you travel through
what others find impassable and fight in ways no one expects. What you cannot defeat, the mountains help you
elude. As you master yourself, you become the perfect
guerrilla warrior, mobile and reliant on neither weapons nor supplies.
Although the [[Haztaratain Monastery]] is an established stronghold, it does not contain only members of this order. It is named for an honored master.
This monastic fortress might be an anchor for you, or
it might be a site for a once-in-a-lifetime pilgrimage.
Haztaratains often greet one another as family, and all
Haztaratains are welcome at the monastery of the same
name. No one serves as leader or guru, unless such a
relationship is created by mutual consent.
!! Haztaratains in the World
//"The wind came howling down the valley, and it was dumping buckets
of rain before they appeared. Four of them came against over forty of
us. I don't know why or how I survived, my lord. I do know that you are
right—the people of Adar are monsters."//
<div align="right">—Riedran sergeant's report</div>
Haztaratains are for martial artists who want a little
spell or psionic flavor mixed into their repertoire.
This order focuses on the thematic elements relating
the monk to Adar rather than on spellcasting ability or psionic power. These monks are ferocious, but they're also distinctly [[Adaran|Adarans]]. Haztaratains make great
guerrillas and guardians, but an evil one can be a terror
across [[Adar]].
Haztaratain Monastery is famous among [[Adarans]]
for its role in the birth of the [[kalashtar]] race—it was here
that [[Taratai]] and her followers first found respite from
their flight. From here, Taratai made her pilgrimage
across [[Adar]]. Many adherents of the [[Path of Light]] see
Haztaratain Monastery as a holy site, and some even make
the treacherous journey to the place. For some, this is a
religious pilgrimage; for others, it's a step on the path to
becoming a [[Haztaratain]] monk.
Carved into a mountainside, the monastery rests on an escarpment above a fertile valley. From the watchtowers chiseled into the living rock of the high coastal peaks, the guardians can look onto the coast of [[Riedra]] less than 50 miles away. ([[Riedrans]] avoid this stretch of water, known for its sudden squalls and disdained for its nearness to [[Adar]].) Adaran settlements are also within a day's journey of the fortress. Villagers in these places regularly supply the Haztaratain Monastery's inhabitants with goods and services, counting themselves lucky to live so near the sacred site.
Nothing fills House [[Jorasco]]’s
coffers as capably as its network of hospitals and
healing houses devoted to the treatment of minor diseases and traumas. Using a combination of magic, [[alchemy|alchemist]], herbalism, and conventional medicine, members of the Healers Guild will treat anyone who can pay for
the privilege. Healers Guild facilities can be found in
almost any town across [[Khorvaire]].
Most members of the Healers Guild are accomplished at healing but don’t concern themselves overmuch with house politics or the [[Draconic Prophecy]]. But because every [[Jorasco]] from Baron [[Ulara|Ulara d'Jorasco]] on down must devote at least a few days a year to assisting the Healers Guild, PCs convalescing in a guild hospital might come into contact with influential members of the house.
Overseeing the health of the [[Riedra]]n people,
servants of the Hand, a branch of the [[Unity]], rely largely on their medicinal skill to care
for their charges. Bastions include multiple halls of the
Hand. Most people receive mundane healing, but bastion
halls might have access to more powerful tools, such as a
[[cradle of healing]].
Although the Healing Hand is generally benevolent,
it has its darker side. Euthanasia is perfectly acceptable in
Riedran society, and the needs of the nation always come
before those of the individual. If someone who has a genetic
condition, a grievous injury, or a serious contagious disease
cannot be easily cured, he is killed. The Healing Hand also
disposes of the dead, typically through cremation.
Lady Xushila ([[usvapna]] [[Inspired]]) leads the Healing Hand from the bastion of [[Dar Ilash]].
!! The Healing Hand In Dar Jin
The Healing Hand maintains a large infirmary in the [[Jhodra]] of [[Dar Jin]] that provides mundane healing to those in need. In addition, the overseer Taan ([[Chosen]] [[ardent]]) can perform [[psionic|psionics]] healing. He usually reserves this power for [[Riedrans]] in need, but could help foreigners who have somehow earned his
respect. At the DM's discretion, Taan could be a member
of the [[Unchained]].
The spellcaster proclaims a holy word of recovery. A creature of their choice within 60 feet rapidly recovers from injuries. This spell has no effect on [[undead]] or [[construct]]s (but does affect [[deathless]] and [[warforged]]).
The Heart is the original center of the city of [[Zarash'ak]], supported by the trunks of massive murk oaks. This area is dominated by the [[Tharashk]] enclave and its associated businesses and barracks. The [[dragonshard]]
refineries are deeper in the Marches, but at any given
time the vaults of the Heart hold a fortune in shards
waiting to be shipped to the east. The [[enclave]] of
Zarash’ak is the home of the [[Tharashk triumvirate]],
which sets the overall vision for the house. It is also
the seat of the [[Finders Guild]], and many Tharashk
heirs learn to harness their mystical gifts in the Heart
of Zarash’ak.
Also in the Heart of [[Zarash'ak]]:
* A [[Lyrandar]] [[airship]] tower
* A [[Sivis]] [[message station|speaking stone]]
* A [[Gold Dragon Inn]]
* A small [[Riedra]]n outpost, helmed by [[Inspired]] Ambassador Sosharani
The Heart of Zarash'ak is surrounded by the [[Ring]].
This ranch and House [[Vadalis]] [[enclave]] is located near the city of [[Wroat]]. Since the destruction of [[Cyre]] in the [[Mourning]], the Hearth has become the new home of the
[[Feral Heart]].
The chief [[magebreeder|magebreeding]] of the Hearth is [[Mazina d'Vadalis]].
Touching this lustrous black gem will cure any disease. A [[night hag]] can also use a heartstone to physically enter [[Dal Quor]]. Only night hags possess the secrets and arcane abilities to create this item.
The Heavenly Fleet is the smallest of the [[Lhazaar Principalities]], though it is growing—in defiance of all predictions. Led by the winged Prince [[Lorrister]], the Heavenly Fleet is dedicated to bringing justice to the [[Lhazaar Sea]] and the rule of law to all its settlements. The [[paladin]] prince holds his crews to high ideals and hopes to impose those same ideals on the people of the Principalities. Currently, the Fleet consists of only three ships, and they primarily target lone pirates near their home port on [[Seventh]] island rather than antagonizing larger forces such as the mighty [[Cloudreavers]].
Even though the Lhazaarites greet [[Lorrister]]’s principles with scorn, people outside the Principalities who share his philosophy are attracted to his cause, and Lorrister
claims a large number of foreign supporters and suppliers. This influx of aid from such places as [[Thrane]], the Martial Temple of [[Dol Arrah]] in [[Starilaskur]], and numerous private benefactors translates into the finest gear and supplies for the Heavenly Fleet's ships and crews.
This stately ward of [[Io'lokar]] is a hub of academic and scholarly tradition, and is thus the virtual heart of the city. The city’s [[four great colleges|Colleges of Io'lokar]] are here, as are the apartments of their [[wizard]]s, sages, and loremasters. More so than in the lower wards, the architecture here reflects the soaring stone and crystalline style seen in the [[draconic observatories|planar observatory]] of [[Argonnessen]].
!! Noteworthy Locations
<<list-links-article "[tag{!!title}category[location]sort[title]]">>
//''Raat shi anaa:'' The story continues. //
War drums are sounding in the depths beneath [[Darguun]]. [[Bugbear|bugbear]] champions hone their [[adamantine]] greatswords, and [[hobgoblin]] [[dirge singer]]s call the legions to battle. The warriors of Dhakaan are preparing to reclaim their stolen lands, and the nations of [[Khorvaire]] have no idea what's coming.
During the struggle with the [[daelkyr]], some [[Dhakaan]]i leaders saw the madness spreading among their people and knew it would destroy their civilization. They led
their forces into deep subterranean chambers and severed all contact with the outside world. In recent years these ancient clans—who call themselves the Kech
Dhakaan ("bearers of [the traditions of] Dhakaan", or "Keepers of the Empire")—have finally returned to the surface.
The Dhakaani are utterly devoted to war, matched
only by the [[Valenar]] [[elves|elf]] in their devotion to the martial
arts. Their weaponsmiths and armorers know techniques that even the artificers of House [[Cannith]] cannot
duplicate. Throughout the [[Last War]], no nation faced any
other force that had the skill and resources of the resurgent Dhakaani.
But there is one obstacle to their rise: the Heirs of
Dhakaan have no emperor. The [[goblinoid]]s are divided
into clans, and each clan, or kech, believes its leader has
the right to control all the others. And so the champions
of Dhakaan continuously compete with each other to
prove their right to rule. The [[Kech Shaarat]] (Bladebearers) believe that leadership is best achieved through force of arms. The [[Kech Volaar]] (Wordbearers) believe that knowledge is the greater weapon, and they seek to recover artifacts and weapons that were lost when the empire fell. These and several less influential clans are competing for overall leadership, while the spies and assassins of the [[Khesh'dar]] (Silent Folk) remain neutral in the struggle, gathering information on the modern world and serving every clan.
At the moment, the Heirs of Dhakaan are maintaining
a low profile. They fight most of their battles underground, and occasionally dispatch small squads to carry
out missions on the surface. Humans usually don't know
enough about goblins to tell the difference between the
Dhakaani and the people of [[Darguun]]. The truth of the
matter is gradually spreading within Darguun, but no
one yet realizes the power of the force that lies beneath
their nation.
!! The Heirs and the War
The [[Last War]] caused the Heirs of Dhakaan to finally
stir and emerge from their deep vaults. They recognize
that humanity has been weakened by its self-inflicted
wounds. The rise of [[Darguun]] and the proliferation
of that nation's [[Ghaal'dar]] mercenaries enables the
Dhakaani to move around [[Khorvaire]] without drawing
undue attention. And the [[Mourning]], ultimately, demonstrated that the races of the [[Five Nations]] could not be trusted with ruling Khorvaire. It was time for the
Dhakaani to return and subjugate the other races to
their firm hand once again.
The Heirs of Dhakaan are devoted to war, with an
unmatched focus on sheer martial skill. Their weaponry and artillery are of the highest quality, and they
place their trust in strength of arms, not on magic. The
Dhakaani don't worship gods, and no [[cleric]]s or [[paladin]]s
are among them. The [[Kech Volaar]] have picked up some
of the elven traditions of [[wizard]]ry, and all clans have
bards known as //duur'kala// ([[dirge singer]]s), but in general
the Dhakaani don't rely on magic on the battlefield.
!! The Uul Dhakaan
Long ago, before the rise of the Empire, six [[hobgoblin]] kings fought over ancient [[Khorvaire]]. [[Jhazaal Dhakaan]], the greatest [[duur'kala|dirge singer]] of the age, called them together and sang "the song of the dar", reminding the kings that they were all one people. If the legend is to be believed, she crafted the dream of an empire and bound the goblinoids of the time to this dream. This [[Uul Dhakaan]]—Dream of Dhakaan—gave
the ancient goblins oneness of culture and purpose, uniting them under Jhazaal Dhakaan as the first //marhu//—emperor of Dhakaan.
But this vision that bound the Six Kings together isn't just a metaphor. When mortals sleep, their spirits touch
[[Dal Quor]] and create temporary dreamscapes. Jhazaal Dhakaan
bound the spirits of the dar together, creating a vast, permanent
dreamscape within Dal Quor—a vision of the ideal empire.
With the spirit of every dar tied to this place, when one of them
sleeps, they dream of the empire and their place within it.
!! The Emperor Yet To Come
For the Kech Dhakaan emerging from their vaults, the modern
world is a waking nightmare. Modern [[goblinoid]]s are hollow
mockeries of the true dar. Foul //chaat'oor//—defilers—hold the lands of the
empire and pillage the treasures of the People. But the dar still
have their dream. They know what the world should be, and
know that together, somehow, they can defy the chaat'oor and
restore the eternal empire. However, a long path lies ahead. The
dar are badly outnumbered, and can't take on all of the [[Five Nations]] in open combat. They don't yet understand the enemy or know what they're capable of. The [[Kech Volaar]], in particular, realize the power of the wide magic of the Five Nations and the
[[dragonmarked house]]s, and recognize they need to know more. There's also the question of whether there's any hope for the modern goblinoids. Can they be instilled with Dhakaani values? Or are they no better than chaat'oor?
Only a new emperor can make this decision. But the last
emperor was lost to the //[[Kapaa'vola]]//—the "Treacherous Whisper", the psychic contagion created by [[Dyrrn]] that drove dar to madness—before the Kech Dhakaan
descended into the depths, and no single kech has the power to
create a new emperor. The [[duur'kala|dirge singer]] speak of the Emperor Yet
To Come, with the belief that once all the Keepers rise, a single
emperor will somehow win universal acclaim, uniting them all
against the chaat'oor. But whether they be warlord, [[dirge singer]], or
[[artificer]], it's unclear what will bring this to pass. The [[Kech Uul]]
believe that when a single dar has the support of the majority,
the [[Uul Dhakaan]] will reveal them—that the emperor will be
proclaimed and crowned within the universal dream. But even
if true, what will trigger this?
The [[Kech Shaarat]] believe that power will determine the
emperor. They have already absorbed the Kech Nozhii and are
pressuring the [[Kech Ruuska]], using a combination of force and
fear to convince the smaller clans that the path to victory lies
through uniting under a single clan. The Kech Shaarat would
prefer not to kill other dar, but Ruus Dhakaan is willing to take
steps to prove his power and right to lead, and Shaarat and
Volaar agents have clashed in the field.
Tuura Dhakaan of the [[Kech Volaar]] is following a different
path as she pursues the crown. She seeks to recover lost
artifacts, reminding the dar of their glory while also amassing
powerful tools. There are a few she is especially keen to
find: //Ur'taash//, the First Crown; //Guulen//, the Rod of Kings;
and [[Ghaal'duur]], the horn of [[Jhazaal Dhakaan]]. Ur'taash is
currently in the possession of the [[Kech Ghaalrac]], though its
authenticity is in question. The whereabouts of Guulen and
Ghaal'duur remain unknown. Beyond this, Tuura is evaluating
the modern world, working to see if others could be useful
allies. So while the Kech Shaarat remain convinced that this
conflict is solely based on dominance within the dar, the Kech
Volaar believe that knowledge of the modern world is vital to
any long-term success.
Other Keepers may devise their own paths to winning allies
or the throne, and there may be Keeper clans that have yet
to be revealed. For now, the Kech Dhakaan are focused on
gathering information and competing among themselves.
Once they unite behind a single leader, they'll have to decide
how to deal with the [[Darguuls|Darguun]], the [[dragonmarked house]]s, and
the [[Five Nations]].
!! The Kech Dhakaan
As the [[Kapaa'vola]] spread and the Empire of [[Dhakaan]] quickly
unraveled, many of its greatest leaders sealed their followers
in deep vaults. Each of these units took responsibility for
preserving one of the pillars of the empire. Together, they
called themselves the ''Kech Dhakaan''—the Keepers of the
Empire. The name of each individual clan was given based
on their chosen ideal; thus the [[Kech Volaar]] are Keepers of
the Word, and the [[Kech Shaarat]] are Keepers of the Sword.
[[Uul'kala|Uul Dhakaan]]—"dream singers"—helped to coordinate this effort and to maintain communication between the isolated vaults over time, but
there are [[kech]] vaults that never had uul'kala, and others
who lost their uul'kala over time.
Below is a list of keches, including descriptions of some
Keeper clans that are known or active. This isn't intended to
be a complete list, and DMs should feel free to add additional
kech—whether they have been in communication with the
others or have been in isolation—or to remove kech from
this list if they don't fit the story of a campaign.
Of these clans, both the [[Kech Shaarat]] and the [[Kech Volaar]]
have made their presence known in [[Darguun]]. But while the
Darguuls have heard of these clans, they don't fully understand
their origins. The other clans are currently obscure and
mysterious, though dramatic action could quickly bring
them fame—or infamy.
<<list-links-article "[tag[kech]sort[title]]">>
!! Dhakaani NPCs
Characters who approach the Heirs of Dhakaan expecting a ragtag band of [[goblinoid]]s are in for a rude awakening. The Heirs of Dhakaan are well equipped and fight with precision and efficiency, coordinating their efforts to eliminate spellcasters and other obvious threats. Dhakaani squads are utterly devoted to their kech leaders and their empire. All are bound by the principles of //muut// and //atcha// (honor and duty), but they believe that humans and their kin don't deserve to be treated with honor. All the goblinoid races work together among the Dhakaani, and all are convinced of the superiority of their culture. When forced to fight other Dhakaani, they will usually spare the lives of their opponents, but against all other adversaries—including other goblinoids—they are ruthless.
| !<<dr d8>> |!NPC |
| 1 |A [[hobgoblin]] [[bard]] of the [[Kech Volaar]] leads an elite team of dungeon delvers to recover Dhakaani artifacts from ancient ruins. |
| 2 |A remarkably intelligent [[goblin]] studying at [[Arcanix]] or [[Morgrave|Morgrave University]] is actually a [[Khesh'dar]] spy identifying tomes of arcane knowledge worth stealing. |
| 3 |A Dhakaani strike force assaults a museum or a noble's private holdings, reclaiming goblin artifacts "pillaged" from ruins. These relics could be part of an [[eldritch machine]], or could simply have important ceremonial value. |
| 4 |A goblin spy stirs up trouble among the city goblins in a major city, using tales of their former glory to incite them to violence. |
| 5 |A string of mysterious bombings are actually the work of Dhakaani sappers testing the strength of modern fortifications. |
| 6 |A Dhakaani strike force attacks a [[Deneith]] outpost built atop a goblin ruin. Are the goblins just angry about the desecration, or is something hidden beneath the outpost? |
| 7 |A [[bugbear]] of the [[Kech Shaarat]], to test the mettle of the adventurers, engages them in a series of guerrilla attacks as they are traveling through the wilderness. |
| 8 |A [[hobgoblin]] [[warlock]] seeks to harness the power of the [[daelkyr]] or the fiendish [[overlord]]s to win the imperial crown for her kech. |
!! Dhakaani Campaign Themes
The Heirs of Dhakaan are a substantial military threat. The goblins can clash with adventurers while they are exploring ancient ruins, or they can launch strikes against outposts or vaults the adventurers are guarding. Whatever the Dhakaani do, it should be part of a mission objective. Is the goal to strengthen their kech? Gather information about the enemy? Recover Dhakaani relics?
Initially the Dhakaani should be mysterious: remarkably skilled goblins that fight to the death or disappear into the shadows. The characters might logically assume that they are [[Darguul|Darguun]] mercenaries. Over time, the
adventurers should learn more about them and realize
that they are the advance force of a great army.
The Heirs of Dhakaan can remain an enigmatic
foe, encountered only when they attack. But a group
of adventurers could come to earn the respect of their
Dhakaani foes and learn more about the enemy. Perhaps a group of adventurers chooses to respect the Dhakaani's claim to an artifact, surrendering it willingly.
If they do so, they could find out more about the goblins
and the struggle for leadership among the clans. Of all
the goblins, the [[Kech Volaar]] are the most interested in understanding the people of [[Khorvaire]]; if there's any chance to negotiate a peace with Dhakaan, it would be
with this clan.
As far as the goblins are concerned, [[human]]s stole
their lands, pillaged their tombs, and enslaved their
descendants. The Dhakaani aren't evil, but they believe
humanity to be brutal and cruel, people without //muut// or
//atcha//. Faced with an adventurer wielding a magic sword
taken from a Dhakaani ruin, the Heirs of Dhakaan are
rightfully angry and violent in their response to this
tomb robber.
!! Heirs of Dhakaan Adventure Hooks
The table below offers some options for kicking off stories that involve the Dhakaani.
| !<<dr d12>> |!Dhakaan Adventure Hook |
| 1 |A scout patrol has gone missing near the border of [[Darguun]]. |
| 2 |A mining tunnel has collapsed, revealing a network of caverns leading into [[Khyber]]. The Heirs of Dhakaan are waiting in the darkness and decide to strike first. |
| 3 |A squad of goblins attempts to steal back spoils of a recent adventure, cursing the characters for being grave robbers. |
| 4 |A lone [[hobgoblin]] warrior stands at the gates of a town, intent on dueling the mercenary captain who slew their brother. The warrior has already killed ten soldiers that tried to remove them. |
| 5 |Race against a Dhakaani force to recover an ancient artifact from a ruin. |
| 6 |Defend a series of temples against Dhakaani raiders targeting these "houses of false gods." |
| 7 |Explorers discover a fragment of an ancient Dhakaani song that seems to tell of the true heir of Dhakaan. The complete lyrics might settle the question of succession. |
| 8 |The Dhakaani begin kidnapping [[warforged]] so that their [[artificer]]s can learn how to make their own [[construct]] soldiers. |
| 9 |In a sacked human settlement, a battle between two opposing forces of goblinoids breaks out. Which side was the cause of the destruction? |
| 10 |The [[Kech Shaarat]] send emissaries to a nearby city with a simple message: abandon the town within one week, or die. |
| 11 |Goblin scouts have been spotted far from Darguun, moving with uncharacteristic coordination and precision. |
| 12 |A representative of the [[Kech Volaar]] approaches the characters to request their help in confronting their rivals to maintain the balance of power among the Dhakaani. |
//''Raat shan gath'kal dor:'' the story stops but never ends.//
If any force in [[Riedra]] actually frightens the [[Inspired]], it is
the dissident group known as the Heirs of Ohr Kaluun.
Long ago, the nation of [[Ohr Kaluun]] was a center for sinister magic. Its priests performed terrible rituals invoking the [[Dark Six]], and its [[wizard]]s trafficked with [[fiend]]s in their quests for mystic power. In the [[Sundering]], the
people of this land were almost completely obliterated.
Some of the few who remain are [[skulk]]s or [[tiefling]]s, transformed by
foul spells and [[warlock]] pacts.
All loyal [[Riedrans]] know that the ruins of Ohr Kaluun are the haunts of //altavars//, and that the magic hidden within the war mazes is deadly and damning.
Still, some don't care. The Heirs of Ohr Kaluun knowingly embrace this darkness, hoping to gain power to raise themselves above the [[Inspired]]. [[Human|human]]s, [[tiefling]]s, [[skulk]]s, [[oni]], [[dwarves|dwarf]]—what binds these people together is a thirst for mystic knowledge and a hatred for the
[[Inspired]]. Like the first [[wizard]]s of Ohr Kaluun, they
are willing to sacrifice anything—or anyone—to gain the
power they seek. They oppose the Inspired, but anyone
who allies with the Heirs of Ohr Kaluun soon learns that
the enemy of an enemy is not always a friend.
Like the [[Cults of the Dragon Below]], the Heirs of
Ohr Kaluun are not a unified force. The [[Harmonious Shield]] and the [[Thousand Eyes]] are always hunting these foul wizards, and kill those they discover without hesitation. But new sects always rise from the ashes, innocents
corrupted by the promises of the darkness.
Despite their name, the Heirs of Ohr Kaluun are not
confined to the islands. A Kaluunite [[wizard]] could easily
take an interest in the forbidden lore of the [[yuan-ti]] or
the lost magics of the [[aventi]].
''Getting the PCs Involved:'' The Heirs of Ohr Kaluun are [[Riedra]]'s answer to the Order of the [[Emerald Claw]]—they're the people who are unquestionably up to no good. These people willingly accept damnation (or so they believe) in exchange for power and vengeance. They can be disturbing allies or unexpected foes for those exploring Riedra—a surprise for those who think the [[Inspired]] are the greatest evil in the land. The Inspired have conquered [[Riedra]], but they at least take care of the
people. If the Heirs of Ohr Kaluun took power, horror
would be the replacement for stability and oppression.
Lord Helkadesh is the [[gatekeeper|Iron Gate]] of the [[Jhodra]], the foreign quarter of [[Dar Jin]]. Tall and thin, Helkadesh is charming and witty—but iron lurks beneath
the velvet, and anyone who wants to obtain an entry visa is
personally questioned and [[mind probe|detect thoughts]]d by Lord Helkadesh.
Helkadesh is an [[usvapna]] [[Inspired]] inquisitor and powerful telepath, capable of [[truesight]], and even possesses the ability to shatter a [[mind blank]].
Helkashtai, a powerful [[Inspired]] telepath, is ambassador [[Jorasesh]]’s aide-de-camp in [[Sharn]]. In addition to her administrative duties, she has become a fixture
in the social scene of Sharn, and can be found at
most of the major gatherings of the rich and powerful. She is beautiful and charming, and many of the aristocrats have come to value her skills as a mediator. A few young nobles have even sought her hand
in marriage, although she has rejected all offers.
Like Jorasesh, her warm and friendly demeanor
is a mask—a carefully crafted tool to help her gain
influence within the upper classes. The Inspired are
ruthless manipulators, and human lives and emotions are simply toys for their amusement.
While this burnished sallet-style helm is worn, the user's head can be freely, easily, and painlessly detached from the user's body. The user retains total control over both the head and the body.
If the helmet is removed, the head will act as if it has been severed and cannot be reattached.
See also [[ring of detachment]].
While wearing this helm, you can cast the [[detect thoughts]] spell from it. As long as you maintain concentration on the spell, you can send a telepathic message to a creature you are focused on. It can reply while your focus on it continues.
While focusing on a creature with detect thoughts, you can cast the [[suggestion]] spell from the helm on that creature. Once used, the suggestion property can't be used again until the next dawn.
To use this helm, you must have the [[Mark of Sentinel]].
This helm has 3 charges for the following properties. It regains
all expended charges daily at dawn.
//''Counterspell.''// You can expend 1 charge and
establish a defensive ward with a contingent [[counterspell]] spell.
The next time you can see an unfriendly creature within 60 feet of you casting any spell that targets you, the counterspell spell immediately takes effect whether or not you want it to, as if you had cast it. The ward ends immediately after counterspell takes effect or at dawn.
<<<
{{counterspell}}
<<<
//''Protection.''// You can expend 1 charge and cast the [[protection from energy]] spell on yourself.
<<<
{{protection from energy}}
<<<
''//Deflection Field//''. You can expend 1 charge after you suffer a consequence involving being attacked by a weapon. Downgrade the severity of the consequence by 1.
This simple helmet of [[bronzewood]] is crowned with two-foot-long elk antlers. It is enchanted with the [[fey]] magic of the [[Endless Weald]] in [[Thelanis]]. The wearer has greatly enhanced sense of smell and hearing, and can move freely and quickly through rough natural terrain. In addition, the wearer can never be lost in a forest; they always know the direction of a safe path, and they know which paths lead out.
These magical effects are suppressed if the wearer wields weapons or armor made of metal. If the wearer of this helm ever harms a [[fey]] of the forest, kills a natural beast with magic or for sport, or otherwise offends the [[Forest Queen]], the magic of the helm ceases to function until the wearer has redeemed themselves with the Queen.
Hezhaal is a [[hobgoblin]] [[dirge singer]] of the [[Kech Nasaar]]. She appears to be a young woman, but is much older than she seems. She can be an unexpected ally for adventurers
battling the [[Emerald Claw]], and is interested in destroying their “monstrous” [[undead]]. She's a skilled [[necromancer|necromancy]]
herself, and is studying the techniques of the non-dar; she's
particularly interested in the [[Odakyr Rites]] used to create
[[Karrnathi undead]].
''District Type:'' Temple district<br/>
''Buildings:'' Temples ([[Silver Flame]], [[Sovereign Host]],
[[Onatar]]), shrines ([[Aureon]], [[Boldrei]], [[Kol Korran]],
The [[Undying Court]]), upscale lodging (5), average
lodging (15), upscale food (15), average food (30),
exotic trades (23), upscale trades (26), average trades
(40), upscale services (40), average services (100),
upscale residences (20), average residences (80)<br/>
''First Impression:'' Shrines and temples line the suspended streets of High Hope. Compared to the gaudy trappings of [[Sovereign Towers]], High Hope appears
plain and functional. However, the temples are large
and well maintained, and throngs of devotees fill
the streets.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Oakbridge]] (southeast); [[Longstairs]] (below); [[Shae Lias]] (above)
The most impressive temples in [[Sharn]] are found in
the [[Sovereign Towers]] district of [[Middle Central]].
But the glory of these monuments is tarnished by the
corruption within the churches themselves. High Hope lacks the gilt trappings of [[Sovereign Towers]], but
what it lacks in pomp it makes up for with faith and
sincerity. In addition to the three primary temples
and the three large shrines, there are a wide range
of smaller monuments dedicated to other deities and
to religious heroes and martyrs. The people who live
in the district or who come to High Hope to pray are
typically quiet and serious in their devotions.
The councilor of [[Middle Northedge]] lives in
High Hope. [[Doran Cantar]] comes from a long
line of advocates and mediators. In addition to inheriting the wealth and talents of his family, Doran has a strong faith in the [[Sovereign|Sovereign Host]] Lady [[Boldrei]]; while
he does not serve as a priest, he draws strength and
minor mystical abilities from his faith. Doran often
consults with [[Daca]].
!! Noteworthy Locations
* [[Coldflame Keep]]. A garrison temple of the [[Silver Flame]], this place once housed a hundred templars dedicated to protecting [[Sharn]] from supernatural threats. It has largely been abandoned; only a dozen devoted templars and adepts remain in residence.
* [[Daca's Watch]]. A [[gnome]] named [[Daca]] has been sitting on a pillar in [[Northedge]] for over a century, offering advice and encouragement. Though she doesn't claim to be a priest, many believe that Daca is blessed and guided by [[Boldrei]].
''District Type:'' Refugee slum<br/>
''Buildings:'' Temple ([[Sovereign Host]]), shrines
([[Dragon Below|Cults of the Dragon Below]], [[radiant idol]]s), poor lodging (2),
poor food (10), poor trades (50), poor services (30),
poor residences (440)<br/>
''First Impression:'' Many of the buildings in this
district are in a state of disrepair or have been vandalized. The people on the streets are haggard and
worn, watching everything with suspicious eyes.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Dragoneyes]] (southwest); [[Cogsgate]] (north); [[Torchfire]] (bridge, west); [[Blackbones]] (below); [[Dancing Shadows]] (above)
The [[Last War]] continued for over a century, and alliances shifted many times in its long course. After the [[destruction of the Glass Tower|Crystalfall]], the [[city council|Sharn Council]] became gravely concerned with the threat of sabotage and terrorism. High Walls, a former residential district, was
converted into a ghetto for suspicious residents or
travelers—a virtual prison camp where foreign nationals could be kept away from the rest of [[Sharn]]. All of the bridges to other districts of Sharn were sealed by
massive spellbound gates and fortified guard stations.
When the war ended, High Walls was converted to a home for the many refugees of the war—mostly the surviving [[Cyrans|Cyre]] who no longer have a country, but also people whose villages or homes were
destroyed, and those who were held captive in High
Walls during the war and developed roots there.
The gates are generally open, but the guard posts
remain. The war may be over for the moment, but
the city council still has its suspicions and fears.
High Walls is a self-sufficient community. The
trades and services are all refugees putting their skills
to work and selling their talents. But there is still a
lot of tension and anger in this district. A growing
number of Cyrans have embraced the nihilistic beliefs
of the [[Dragon Below|Cults of the Dragon Below]] or turned to the worship of [[radiant idol]]s, refusing to respect gods who would allow their nation to be destroyed. Former [[Brelish|Breland]] soldiers may receive an unfriendly welcome in this district,
and would be well advised to tread lightly.
''District Type:'' Civic district <br/>
''Buildings:'' Council hall, bureaucratic offices,
monument/memorial, guard post, temple ([[Boldrei]]), upscale lodging (15), upscale food (25), exotic trades (40), upscale trades (60), average trades (60),
upscale services (75)<br/>
''First Impression:'' The lofty and ornate towers of
this district offer panoramic views of the surrounding city. People stride along well-lit streets and gracefully arcing bridges with an air of importance
and the smell of great wealth.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Mithral Tower]] (north); [[Skysedge Park]] (northeast); [[Ivy Towers]] (bridge, southwest); [[University District]] (bridge, south); [[Den'iyas]] (bridge, southeast); [[Dragon Towers]] (below)
Highest Towers is the seat of [[Sharn]]'s government
and includes all the city offices, the council hall, and
other civic features.
!! Noteworthy Locations
* [[City Archive]]. This enormous edifice holds the historical and legal records of Sharn and the surrounding regions.
* [[Council Hall]]. The seat of city government and the site of [[City Council|Sharn Council]] meetings. The council meets weekly, and visitors can watch from the gallery.
* [[Lyrandar Tower]]. All [[airship]] travel to and from Sharn passes through the docking spires of Lyrandar Tower, the [[house|Lyrandar]]'s primary [[enclave]] in Sharn.
''District Type:'' Dwarf neighborhood<br/>
''Buildings:'' Temple, average lodging (10), upscale
food (5), average food (40), poor food (10), exotic
trades (10), upscale trades (24), average trades (60),
poor trades (25), upscale services (10), average services (40), poor services (20), upscale residences (20), average residences (180)<br/>
''First Impression:'' The architecture is sturdy, functional stone, though the scale is slightly too small for most humans. While there is luxury to be found
here, the citizens of Highhold put work before play.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Daggerwatch]] (north); [[Sunrise]] (southeast); [[Ivy Towers]] (bridge, northeast); [[Seventh Tower]] (bridge, east); [[Rattlestone]] (below)
When House [[Kundarak]] first established itself in
[[Sharn]], the [[dwarf]] immigrants who came with the
house sought to make their mark on the city. While
dwarf engineers had played a significant role in
the construction of [[Sharn]], the city was designed
for [[human]]s. Highhold is the first district to be built
by dwarves for dwarves, and their touch is evident
throughout the district. While the dwarves appreciate luxury and comfort, they are also concerned with
defense and durability, and the buildings of Highhold are among of the strongest and most defensible
in the city.
Dwarves make up the majority of the population in Highhold—both recent immigrants from the
[[Mror Holds]] and those whose families have lived
in [[Sharn]] for generations. The inns and taverns
serve strong Mror ale and stonebreaker mead, and
most of the buildings and furnishings are built to
dwarven proportions. Beyond the dwarves, there are
a considerable number of [[gnome]]s in the district, reflecting the strong economic ties between House [[Sivis]] and House [[Kundarak]].
Businesses in Highhold include a branch of the
Kundarak Bank and a Sivis [[message station|speaking stone]]. There
are also restaurants serving Mror food (an acquired
taste for most humans) and a variety of other crafters,
including master masons, architects, and armorers.
Many of the inhabitants work for one of the branches
of the Kundarak Bank, while others work in the
[[Cog|Cogs]] foundries but have positions allowing them to
afford to live above the surface.
!! Noteworthy Locations
* [[Clebdecher's Loom]]. A high-end clothing store specializing in [[glamerweave]].
* [[Moraggan's]]. A posh tavern specializing in strong [[Mror|Mror Holds]] spirits. Food and drink are wealthy in quality and cost.
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Quiet streets wind around townhouse towers in a relatively safe environment.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Clifftop]] (northeast); [[Hope's Peak]] (southeast); [[Overlook]] (southwest); [[Broken Arch]] (below)
Highwater is the finest residential district in
[[Dura]], thought the accommodations are considerably smaller and plainer than those of [[Middle Northedge]], let alone any of the other [[upper ward]]s.
But the prices are reasonable, the stonework is
solid, the views are exceptional, and the streets are
fairly safe—for Dura.
!! Noteworthy Locations
* [[Pegasus Spire]]. The seat of House [[Vadalis]] in [[Sharn]] is one of the few [[enclave]]s where [[pegasi|pegasus]] are raised and trained. Native to [[Syrania]], these celestial beasts can become stranded in Sharn; Vadalis heirs care for them and match them with virtuous companions.
Hidden away in the shadows of
one of the gray towers, the Hilatashka restaurant
serves [[Adaran|Adarans]] cuisine. Meals are reasonably priced, but the quality is exceptional. Providing vegetarian fare that mostly consists of cold dishes and soups prepared with a range
of subtle spices. [[Kalashtar|kalashtar]] have an exceptionally
well-developed sense of taste, and it can take some
time for members of other races to learn to appreciate the delicate blends of spices and herbs used in
Adaran meals.
Hill [[giant]]s are brutes that hunt, forage, and raid in constant search of food. They resemble huge, squat [[human]]s or [[half-orc]]s, and have a reputation for being selfish and dim-witted. Average height: 16 ft.
A variety of hill giant known as a ''jungle giant'' inhabits the [[Jungles of Xen'drik]]. Pale green hair grows in short tufts over its barklike scalp and down its back and arms. They tend to be reclusive, and have a knack for [[primal magic]].
The Hinterlands are the outer edge of [[Mabar]], the collection
of planar fragments that are currently being consumed and
integrated into the Endless Night. Here, the //Hunger of Mabar//
property has not yet taken hold, which generally makes
them safer to visit than other layers of Mabar. The Mabaran
properties a fragment reflects vary depending on its nature
and how close it is to complete integration with Mabar.
There can be infinite variety in the fragments within the
Hinterlands. This largely depends on what plane a fragment
is from. Is it a verdant forest of [[Lamannia]]? A floating tower
of [[Syrania]]? Or is it a piece of the Material Plane—a fortress
plucked out of the [[Last War]] or a [[Riedra]]n village? The second
question is how long the fragment has been under siege. To
what degree does it retain its original flavor, and how much has the influence of Mabar overtaken it? The final question
is which of the [[Dark Power]]s has claimed it—and why? What
is it about this region that draws it toward a Dark Power's
domain? The [[Empress of Shadows]] looks for places that shine
too brightly—places that bask in their achievements, sure their
glory will never fade. The [[Bone King]] claims fragments where
commoners suffer or where rulers turn to tyranny; there are a
few [[Karrnath]]i fragments in his domain, though it can be hard
to tell how close they are to being subsumed. The [[Queen of All Tears]] seeks the places where terrible tragedies have occurred, forcing the inhabitants to forever dwell in these moments of misery. With fragments of the outer planes, it's more a question
of reshaping the plane to fit these stories. By contrast, when it
comes to the Material Plane, it's the story itself that often draws
the dire hand of [[Mabar]].
A beastlike [[monstrosity]] whose magical origins are lost to history, a hippogriff possesses the wings and forelimbs of an eagle, the hindquarters of a horse, and a head that combines the features of both animals.
Reclusive and omnivorous, hippogriffs mate for life and seldom venture more than a few miles from their nest. When defending its mate or its young, a hippogriff fights to the death. Hippogriffs don't lay eggs but give birth to live young.
[[Dragon|dragon]]s, [[griffon]]s, and [[wyvern]]s have a taste for hippogriff meat and frequently prey on these creatures.
//''Flying Mounts.''// A hippogriff raised in captivity can be trained to be a faithful companion and mount. Of all the creatures that can serve as flying mounts, hippogriffs are among the easiest to train and the most loyal once trained properly.
[[Stormreach]] is relatively small—its population could live
in a single ward within [[Sharn]]—but it is a free city; for all
intents and purposes, it is an independent nation with its
own customs and traditions. The [[Code of Galifar]] does not
apply here, and the rulers of Stormreach consider themselves the equals of any king in [[Khorvaire]]. To understand
the [[culture of Stormreach|Culture of Stormreach]], one must look to its history.
Stormreach is haunted by its past. Born in the [[Modern Age]], the city is a [[human]] creation, but the region’s history stretches back long before the rise of human civilization. The [[giants of Rushemé|Guardians of Rushemé]] say that the region is cursed and point to the ruins of a half-dozen civilizations as proof. Scholars from the [[Library of Korranberg]] and [[Morgrave University]] have studied these ruins for decades and have created a simple map of the region. But many of the greatest secrets remain. Uncovering the truth is a challenge for adventurers—and a task that has already claimed the lives of hundreds.
!! The Age of Demons
Much about this [[age|Age of Demons]] eludes modern scholars. The
dominion of the demon [[overlord]]s stretched across
the face of [[Eberron]]. There’s no question that archfiends ruled domains in [[Xen'drik]] and that the [[dragon]]s and [[couatl]]s opposed them and might have drawn the titans, the [[giant]]s’ mythic ancestors, into the struggle. But where were those battles fought? What remains of that epic conflict? Explorers have occasionally found traces of the past: the [[magic blade|Ramethene Sword]] of a [[rakshasa]] warrior or a brass spire in the style of [[Ashtakala]], citadel of the [[Lords of Dust]]. According to the storytellers of [[Rushemé]], it was in this age that a curse was placed upon the land near the northern ocean. Some scholars believe that a terrible secret is hidden deep beneath Stormreach, below the most ancient ruins of the giants.
!! The Age of Giants
Although some believe this land to be cursed, others have always been drawn to it. The titan [[Cul'sir]] made this region the center of his empire during the [[Age of Giants]]. Many sages believe that the [[Emperor]], the statue towering over the harbor, is a representation of Cul’sir himself, set to guard the city against the [[demon]]s of the past.
Researchers are still struggling to reconstruct
the events leading up to the devastation of the primal
giant cultures. It’s clear that [[elves|elf]] lived among the
Cul'sir [[giant]]s, most likely as slaves; many tools and
structures from this period are designed for use by
the smaller elves. What records have been recovered
emphasize that the city played a critical role during
the [[quori]] incursion and was a focal point for mystical
research. The historical records are obscure about
what the city’s [[wizard]]s were researching but hint at a
tremendous power source beneath the city. Whether it
was a creation of the giants or a force they were trying
to tap into is unknown.
The defeat of the [[quori]] set the stage for the [[elf]] rebellion. Relics found in the jungles around [[Stormreach]] suggest a campaign of guerilla warfare lasting for centuries. This quiet struggle was punctuated by pitched battles. According to [[Tairnadal]] tales, the great hero Dyrael Morain led an attack on Stormreach in an
effort to “destroy the greatest evil in this dark land.” Dyrael and his forces, the largest elf army ever seen, were annihilated, but the Tairnadal still honor his bravery and sacrifice. Many [[Valenar]] have searched for Dyrael’s bones and his legendary blade in the fields south of Stormreach.
The [[Age of Giants]] came to an end in a wave of epic magic and [[dragon]]fire. Compared to much of [[Xen'drik]], the ruins of [[Stormreach]] are well preserved; the [[colossal watchman|Emperor]] is almost untouched. Other sections of the city were partially buried but otherwise left intact. The [[giant]] inhabitants were slaughtered, but some sages believe the [[dragon]]s held back in dealing with Stormreach itself—that for some reason they were afraid to unleash their full power against the city.
This period can be the source of many adventures. The [[Cul'sir]] giants were master [[wizard]]s and [[artificer]]s, capable of producing artifacts and [[eldritch machine]]s.
Many wonders are hidden beneath the city, along with terrible tools that must be kept out of villains’ hands. [[Valenar]] warriors can search for ancestral relics, while [[kalashtar]] hunt for the defenses crafted during the [[quori]] incursion.
!! The Shifting City
The devastation of [[Xen'drik]] left a continent in chaos. The archaeological record suggests that a number of cultures found footholds in the region around [[Stormreach]]. But each of these settlements collapsed, and by the time [[human]]s came to the area, all that was left were ghosts and shattered stone. Scholars have confirmed that the following groups inhabited Stormreach in the past thirty thousand years.
The first group to return to Stormreach was the
[[giant]]s, the ancestors of the modern [[giants of Rushemé|Guardians of Rushemé]]. The loremasters of [[Rushemé]] say that their ancestors were gripped by the
[[Du'rashka Tul]], a homicidal madness that forced them to turn on one another and destroyed their nation.
Thousands of years later, the [[sahuagin]] of the [[Thunder Sea]] came to Stormreach. The sea devils constructed an amphibious community in the flooded sewers of the
original city. Modern sahuagin will not speak of this fallen culture. Some scholars believe this silence is due to shame—that the old sahuagin were corrupted by a
dark force below the city. Others assert that the sahuagin
civilization was destroyed so long ago that the modern
sahuagin simply know nothing about it.
The [[sahuagin]] were ultimately driven from the city
by a group of [[giant]]s called the Fallen Stone. Evidence suggests they were either [[storm giant]]s or some sort of amphibious [[stone giant]]—a missing link between the two species. The Fallen Stone was short-lived; following
their victory over the sahuagin, they apparently fell prey
to a plague that resisted all forms of magical treatment.
Within a century, the region was abandoned again.
The next society that left a clear mark on the region
was the [[thri-kreen]]. In the [[Modern Age]], the mantisfolk
are few in number and largely avoid [[human]] contact. But
there was a time when tens of thousands of thri-kreen
inhabited the region, carving twisting tunnels into the
[[giant]]s’ foundations and sculpting strange monuments
beneath the city. The fate of the thri-kreen remains one
of the region’s greatest mysteries. The other cultures
fell to battle or plague. As far as researchers have
been able to tell, the thri-kreen culture came to an
end instantaneously, as if the bulk of the thri-kreen
population simply vanished. The thri-kreen refuse
to discuss their history with humans, but the answer
might be found in Stormreach’s depths.
These four cultures left clear marks on Stormreach, while others passed through with barely a trace. The [[Library of Korranberg]] has records of a [[gnome]] effort to build an outpost in [[Stormreach]] sixteen hundred years ago. After mere months, a handful of survivors returned to Zilargo. They blamed their failure on hostile giants, but in recent years the scholar Hegan Del Dorian has advanced the theory that this was a cover story hiding what really happened; he points to the written testimony of a sailor who speaks of a “darkness that gripped both body and soul.”
!! The Age of Piracy
The first [[Khorvairian|Khorvaire]] [[human]]s to make landfall were
pirates. They wanted an outpost to repair and resupply their ships, and the crumbling docks of [[Stormreach]] seemed a good foundation for such a hideout. They found
a city in ruins, marked by the civilizations that had come before. The pirates clashed with [[giant]]s, [[drow]], and [[sahuagin]], but they were mysteriously spared the horrors that
befell previous settlers. A century passed without plague or warfare, and the pirates prospered. They began searching for opportunities on the continent and discovered both
relics in the interior and the power of [[kuryeva]].
Some claim it was [[Delera Omaren]], pirate queen of the
[[Thunder Sea]], who laid the first stones of [[Stormreach]].
Others say it was [[Kolis Sel Shadra]], the wily smuggler said
to have a fleet of spectral ships. Whoever began the project, it soon became a joint venture, with many captains contributing resources in exchange for sanctuary. The
walls of the giant ruins provided simple fortifications,
and jungle predators seemed to shun the city.
Over the years, piracy became an increasing problem in the [[Thunder Sea]]. Both this and opportunities in [[Xen'drik]] caught the attention of the [[dragonmarked house]]s. House [[Tharashk]] saw the shiploads of [[dragonshard]]s the pirates were capturing from the [[Riedra]]ns and wanted to establish their own prospecting operations in
the shattered land. Scholars and [[artificer]]s seized the
relics retrieved from the interior and wanted more. But
between harsh weather, the [[sahuagin]], and the constant
threat of piracy, travel was simply too dangerous. In 800 YK, representatives of the [[Twelve]] appealed to [[Galifar]] to bring an end to the pirates’ depredations and establish a port in Xen’drik. As Galifar turned its power toward the south, five of the pirate lords, now called [[Storm Lords]], chose to work with the kingdom in exchange for
amnesty and authority within the new city. Though it
pained the king to work with pirates, the Storm Lords
had invaluable knowledge and influence, and defeating
the pirates would have been a costly campaign. The
king agreed to the offer, and the Stormreach Compact
paved the way for Stormreach as it is today.
!! The City is Born
By the terms of the Stormreach Compact, [[Galifar]] recognized the pirate lords’ right to hold their current lands. As a result, the [[dragonmarked house]]s had to work with
the [[Storm Lords]] to establish a foothold in [[Xen'drik]].
Over time, these forces worked together to transform
the pirate haven into the city of today. There have been times of trouble—the [[Omaren Revolt]] in 890 YK and the "[[Fire Storm|Battalion of the Basalt Towers]]" in
946 YK—but the city perseveres. Today, with the great
[[war|Last War]] over, Stormreach is stronger than ever.
Hlal, the Keeper of Tales, is the [[Dragon God|Dragon Gods]] of Humor and Inspiration. She is also a goddess of Freedom, and her priests and [[bard]]s teach that one must be free of restraint, both physical and psychological, in order to express one's true self.
These tiny scavengers of [[Xen'drik]] are much like the
rats they resemble. However, the fur of a hliska shifts
in color to match its surroundings. Hliska are pests infamous for eating
adventurers’ rations.
The Hoard is the [[Immeasurable Market]] storefront of the ancient [[gold dragon]]
Halazaryx, who settled in [[Syrania]] after some differences
of opinion with the [[Conclave]] of [[Argonnessen]]. Hal has a
collection of interesting relics tied to historical figures in
[[Khorvaire]], and is always interested in trading for items
that have fascinating stories.
Hobgoblins are [[goblinoid]]s with sizes and lifespans similar to [[human]]s. They have dark orange or red-orange skin, and hair ranging from dark red-brown to dark gray. Yellow or dark brown eyes peer out beneath their beetling brows, and their wide mouths sport sharp and yellowed teeth. A male hobgoblin might have a large blue or red nose, which symbolizes virility and power among goblinkin. When surrounded by allies, they can achieve greater feats than when alone; the pressure to never show weakness drives a hobgoblin to reach the pinnacle of their abilities.
The [[Dhakaan]]i word for hobgoblins is //ghaal'dar//, meaning "mighty people" or "influential people". The word was co-opted by the [[Ghaal'dar]], the federation of hobgoblin tribes in modern [[Darguun]] that are not connected to the [[Kech Dhakaan|Heirs of Dhakaan]].
Choose a [[humanoid]] that you can see within 90 feet. If the target cannot resist your enchantment, it is paralyzed for up to 1 minute, or until your concentration is broken. While paralyzed, the creature freezes in place and cannot move or speak.
If you are able to cast rare-tier spells, you can cast this as such to target a non-humanoid creature. Alternatively, you can target up to three humanoids with this spell simultaneously; the targets must be within 30 feet of each other when you target them.
''District Type:'' [[Dwarf|dwarf]] neighborhood<br/>
''Buildings:'' Shrine ([[Sovereign Host]]), average lodging
(10), upscale food (5), average food (40), poor food
(10), exotic trades (10), upscale trades (24), average
trades (60), poor trades (20), upscale services (20),
average services (40), poor services (20), upscale
residences (20), average residences (180)<br/>
''First Impression:'' Dwarves fill streets of Holdfast,
though few have the accent or wear the clothing of
the [[Mror Holds]]. The ringing of anvils and song of
steel on steel can be heard rising from the smithies in the center to the district, and masons pass by with cartloads of stone. The people seem to be very
industrious, and reasonably well off.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Oakbridge]] (northwest); [[Cornerstone]] (bridge, southeast); [[Tavick's Market]] (bridge, south); [[Sovereign Towers]] (bridge, southwest); [[North Market]] (below); [[Crystal Bridge]] (above)
When King [[Galifar I|Galifar ir'Wynarn]]'s son, [[Karrn|Karrn ir'Wynarn]], invaded the
[[Mror Holds]], the [[dwarf]] nation was in a state of anarchy and constant [[clan|Mror clan]] warfare. Despite the barbaric
state of their realm, the dwarves were natural miners
and stone masons with an innate talent for building fortifications. When King Galifar decided to rebuild
the city of [[Sharn]], he brought in a force of dwarf engineers and laborers from the Mror Holds. Dwarf hands
played an important role in the rebirth of Sharn, and
as the city grew it developed a sizeable dwarf population. Over the centuries, many dwarves spread across
the city, abandoning their ancient roots. But other
families remained together, forming a strong dwarf
community. In time, they settled in the district they
named Holdfast.
Dwarves comprise almost 90% of the population
of Holdfast; the rest of the population is fairly evenly
divided between [[gnome]]s, [[human]]s, and [[halfling]]s.
Most recent immigrants from the [[Mror Holds]] live
in [[Highhold]] in [[Upper Dura]]; the dwarves of Holdfast
are descended from the dwarves that came to rebuild
[[Sharn]] in the earliest days of King Galifar's rule, and
they have no strong attachment to the Mror Holds
or its traditions. They are, however, extremely
loyal to one another. A [[dwarf]] born in Holdfast has
a thousand friends, and can always find shelter or a
meal. Of course, this is a double-edged sword, and
old friends or family may ask for help with gambling
debts, the [[Boromar Clan]], or any number of other
possible reasons.
The people of Holdfast are comfortably middle
class. Some serve as overseers in the vast foundries
down in the [[Cogs]], while others are architects or
stonemasons. Holdfast also contains smithies of
all sorts. Most of the arms and armor of the [[Sharn Watch]] are produced in Holdfast, and anyone looking for masterwork armor can find it in this
district. The smiths also look after their own, and
dwarves of [[Brelish|Breland]] descent can get a 10% discount on any weapons or armor purchased in Holdfast.
//“Darion! Look what I just picked up down in [[Cross]]! Watch this. You might want step back a bit ... Ready?// Thundrak! //... huh? ...// THUNDRAK! //I don’t get it, this stupid wand worked perfectly when the merchant showed it to me.”//
<div align="right">—Delgard ir’Dashan, sucker</div>
Not everything is what it seems in [[Stormreach]], and
that speaks to how the Hollow Shards make their
living. Illusionists, crackpot [[artificer]]s, confidence artists, and base rogues to the last, the Shards offer customers a wide variety of goods, from “official” [[Sivis]]
documents, to “ancient” relics of the [[titan kings|Age of Giants]]. The only catch: Not one bit of it is authentic.
The premier tricksters in a city where everyone is running a scam, the Hollow Shards are unparalleled masters of deceit. The most successful of the Shards are the forgers, crafters so skilled that their handiwork is often more impressive to behold than authentic
relics, artwork, or [[magic item]]s. The Shards churn out old frayed-edged pirate treasure maps, realistically water-damaged and decaying journals of famous long-dead explorers (in their exact handwriting) that describe the secrets they used to find and plumb the
depths of distant ruined vaults, and even stone tablets in old Giant telling wild (and fallacious) tales of the ancient titan kingdoms.
!! Becoming a Hollow Shard
To join the Shards is to draw back the veil on the relic
trade in the city, and new members are dumbfounded
to learn just how significant a portion of the items sold
in the [[Marketplace]] are nothing more than worthless
knock-offs. Older members love to regale novices
with lists of their classic work on display in magically
warded exhibits in [[Morgrave University]] as priceless
relics and landmark discoveries “intrinsic to weaving the complex tapestry of [[Xen'drik]]’s long history.”
Herein lies the key to the Shards’ tremendous power. It is one thing to sell a fake wand to a fool of a [[wizard]], but to create history itself and hoodwink an entire continent of scholars and researchers into buying your own personal version of the past’s most
important moments... that is power beyond that of any [[dragon]] or [[rakshasa]]. The Shards erase gods and raise meager civilizations from obscurity to be memorialized as gloried kingdoms of a continent’s golden era... and this prodigious power is wielded by a ragtag collective of forgers, con artists, and thieves.
!! Playing a Hollow Shard
Lies are your living, and you live for a good scam. Don’t ever tell the whole truth, it’s sacrilege. Chicanery and legerdemain are constants in your life. Lying is like any other skill, so if you don’t practice all the time, you get rusty.
The Shards are a loose-knit bunch. Too many con artists spoil the scam, as they say. Members’ chaotic proclivities preclude them from working together for lengthy periods of time. Most Shards wander between “consortiums.” Each consortium is a short-term alliance of Shards brought together to enact a dubious moneymaking scheme or engage in a rampant campaign of misinformation to some end or another. A consortium could be the spark for any number of adventures.
Switch jobs in particular are dangerous missions, but lucrative. A group of Shards infiltrates a museum, a wealthy collector’s estate, or a [[dragonmarked|dragonmarked house]] [[enclave]] and steals an authentic relic/prototype [[magic item]]/ancient tome of power/objet d’ art and replaces it with a fake of such impressive craftsmanship that the former owners are none the wiser they’ve been robbed.
Imagination goes a long way, but to create consistently convincing fakes of [[Xen'drik]] relics, sometimes the Shards send lesser members to get an eyeball on the
real things, or even procure true artifacts from hidden
tombs and trapped treasure vaults.
!! Twenty Shards of Wisdom
# Deception isn’t wrong, getting caught is.
# The boy who cried [[worg]]? Love that story. Wonderful moral: Don’t ever tell the same the lie twice.
# A lie is a lie only if you can’t think of a better lie to explain it.
# Tell a little truth when you lie. It backs up the deceptions with concrete, provable facts, and that earns you a man’s trust. Once you have a man’s trust, his purse isn’t far behind.
# Lie little, lie vague. Weave too big a web of deceit and it becomes easy to poke holes in it. The more details you offer the easier it is to find one that doesn’t fit. A few good casual details go a lot farther than a wildly conjectured epic.
# Don’t lie, imply. Suggest an untruth and let others come to its conclusion on their own. That way if it comes out as hogwash, in all honesty you can say: “I never said that—you did!”
# They’re all white lies.
# Truth is for philosophers, the rest of us deal in interpretation.
# What you don’t know can’t hurt you.
# What they don’t know can’t hurt them.
# What they don’t know they can’t hurt you for.
# The truth hurts. Most likely you. So don’t tell it.
# Remember, juggling lies is like juggling knives... it’s not entirely safe, so you might not to want to juggle too many at once.
# Power perceived is power achieved.
# If you get caught lying, pretend you’re crazy. Then people just feel sorry for you.
# Every now and then, admit that you lied about something inconsequential. Apologize profusely and swear ardently, “But I would never lie about anything important, of course.” Suckers eat this up like kids eat candy.
# There is no seventeen.
# Believe your own lies. If you do, everyone else will too.
# Truth is overrated, lies are much more fun.
# Everyone lies, we’re just better at it. Here endeth the lesson.
# Every one of these is a lie.
Hareth ir'Talan constructed
Sharn's first aerial arena, and over the centuries this
odd structure has brought a great deal of silver into
the district. While most windchases occur outside
the towers, [[skyblade]] matches and many other aerial
sports are played in an enclosed space. The Hollow
Tower provides that space—multiple levels of one of
the great towers converted into an enormous domed
arena, lined with [[everbright lantern]]s to provide illumination at all hours. Today, many of the more prestigious events take place at [[Cornerstone]] in [[Middle Tavick's Landing]], but the Hollow Tower still does a
brisk business, and many of the other districts use
the tower as a training ground.
The blade of this sword appears to be a stained-glass
depiction of sacred events. The sword can be used as a
[[spellcasting focus|magical implement]] for [[paladin]] magic.
Holy Uldra is the //lath// of a small [[halfling]] tribe, but her powers of oratory and persuasion have made her one of the most important leaders in the [[Talenta Plains]].
Characters who meet the young priest are hard-pressed to guess that she is the single
most powerful religious figure in the Plains. Holy Uldra speaks of herself as a simple [[cleric]], but she makes no attempt to hide the devoted following she
has acquired. Although she does not covet power for
her own gain, she is deadly earnest in her belief that
the path she espouses is the best one for her people.
Holy Uldra believes that the mere act of creating a nation encompassing the Talenta Plains is an affront to [[halfling]] culture and the will of [[Balinor]]. Land is a gift of the gods, and to claim ownership over it is a senseless desecration of the kind practiced
by [[human]]s and other races. She believes that if these new ways are allowed to continue, emotional bankruptcy and spiritual genocide can be the only results.
Uldra's contempt for House [[Ghallanda]], House [[Jorasco]], and [[Lathon Halpum]] is well known, as is her belief that the actions of the [[halfling]] [[house|dragonmarked house]]s and the tribal council threaten to debase the Plains’ traditional culture and the spiritual core of halfling life. Her often strident followers share these beliefs. While she gives her followers no specific mandate or orders, militant halfling tribes have used her teachings as motivation for attacks against the [[dragonmarked house]]s and even the tribal council.
A homunculus is a [[construct]] servant created by [[artificer]]s or [[wizard]]s for certain tasks. Each kind of homunculus has a body constructed from different kinds of materials, including clay, iron, mandrake root, and bits of hair and feathers. The process that creates a homunculus sees those materials mixed with the creator's blood and animated through an extended magical ritual. The most common homunculi are squirrel-sized winged creatures with ashen skin.
A homunculus acts as an extension of its creator, with the two sharing thoughts, senses, and language through a mystical bond. A master can have only one homunculus at a time, and when its master dies, the homunculus also dies.
A homunculus knows everything its creator knows, including all the languages the creator can speak and read. Likewise, everything the construct senses is known to its master, even over great distances, provided both are on the same [[plane]]. Functioning as a spy, a scout, an emissary, or a messenger, a homunculus is an invaluable servant for a spellcaster engaged in secret experimentation or adventuring.
!! Types of Specialized Homunculus
<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
This captain in the [[Spear|Union of the Spear]] is one of the best [[wyvern]] riders in the
city of [[Io'lokar]]. He is commonly sought out as a guide by foreign adventurers; he has a reputation in the [[Freeward]] taverns for being more easily convinced than most that a
party’s mission might have some benefit for the city. In truth, Honar simply loves the thrill of adventuring for its own sake, and his recklessness has gotten him (and the parties who hire him) into trouble on more than one occasion.
This pair of silver honeycomb-shaped earrings are set with drops of amber and dangle from silver hooks. They allow the wearer to communicate fluently with bees. The bees are more likely to act amicably towards the wearer, and may perform small favors for them.
Hope is the younger of the two colonized territories of [[Q'barra]], consisting of rapidly-constructed towns in the foothills of the [[Endworld Mountains]] built by those fleeing the [[Five Nations]] during the final years of the [[Last War]]. While [[New Galifar]] under King [[Sebastes|Sebastes ir'Kesslan]] is ruled as a feudal monarchy, the law in Hope varies widely from place to place—when it exists at all.
The largest settlement in Hope, [[Wyrmwatch]], was founded only three years ago. But many of the villages built in Hope don't survive a year, succumbing to attacks from [[kobold]]s or [[lizardfolk]], only to be rebuilt with a new name a few months later.
!! Shard Rush
A swarm of explorers, including expeditions from House [[Tharashk]], have begun to flood Hope and elsewhere in [[Q'barra]] in search of Eberron [[dragonshard]]s. Ramshackle prospecting communities have begun to spring up in the jungle with the discovery of shard caches close by, and such places often become boomtowns overnight. However, more than a few such settlements have encroached on ancient [[lizardfolk]] and [[dragonborn]] holy sites, and the frontier war to end them all is brewing in the Q’barra jungles.
!! Hope Sweet Home
In a handful of frontier villages, [[scales]] and settlers
live side by side. This can be an excellent starting
point for a new group of adventurers. A [[dragonborn]]
might be here trying to learn the ways of the softskins.
A [[Cyran|Cyre]] soldier could be searching for a new home.
A [[Valenar]] [[elf]] might have abandoned her people after
their betrayal of [[Cyre]]. A wandering [[Talentan|Talenta Plains]] [[bard]]
could be collecting the stories of the jungle. A priest
of the [[Silver Flame]] might feel a strange draw to this
place. These are just a few examples; anyone could
have a reason to leave the west and start anew. Think
about the roles the characters might play in a small
community. A [[cleric]] adventurer could be the village priest. A [[Sivis]] [[gnome]] might be in charge of the [[speaking stone]]. A [[bard]] could be a beloved source of
entertainment. How could the skills and abilities of
the other characters be put to use in a small town?
As adventurers work their way through early adventures,
they must establish their village and help it grow.
The [[Q'barra]]n frontier is a lawless place, and the
adventurers have to help maintain the peace. They
might have to repel [[Poison Dusk]] attacks, maintain
the uneasy peace with the [[dragonborn]] clans, and
expose [[human]] bandits trying to pin their crimes on the [[scales]]. [[Riedra]]ns or House [[Tharashk]] might want to establish an outpost in the village—do the
adventurers approve of these things? And what about
the nearby [[demon]] ruins? When [[demon]]s or [[undead]]
menace the village, can the adventurers find the
source and cleanse the corruption?
Moving into later adventures, the adventurers could be
faced with full-scale war. When King [[Sebastes|Sebastes ir'Kesslan]] gives
[[Tharashk]] a free rein, the house moves into the region
with a full force of monstrous mercenaries. The [[dragonborn]] respond to this invasion with full fury. Can the village survive the conflict? The culmination of the campaign can
bring in the ancient history of the region: the [[dragon]] [[Rhashaak]] and the [[overlord]] [[Masvirik]]. When the Cold Sun rises once more, can the adventurers overcome
the ancient evil? If [[Newthrone]] falls, could the humble
village the characters helped found become the heart
of the new kingdom?
Although a Hope village could serve as an
anchor point for a campaign, this doesn’t mean that
the entire campaign would take place in [[Q'barra]].
Adventurers might go to the [[Five Nations]] to negotiate
with patriarchs of the [[dragonmarked house]]s. They could
venture east to [[Sarlona]] to pursue [[Riedra]]n criminals,
or up to [[Lhazaar|Lhazaar Principalities]] as a result of pirate raids. Marauding
[[aberration]]s could draw them down into the depths of
[[Khyber]], revealing horrors far beneath their village. A
character’s former life could come back to haunt them, and perhaps they need to return home to settle debts. When [[Masvirik]] is rising, the key to
facing the [[overlord]] could lie in the [[Demon Wastes]] or
distant [[Argonnessen]]. The village might be the heart
of the campaign, but adventures could span the world
and the [[plane]]s.
Hope is Lord [[Katanavash]]'s personal assistant and bodyguard. She has served the [[Thousand Eyes]] of [[Riedra]] all her life, and she is fanatically devoted to her master.
She is a brilliant negotiator and often assumes Lord Katanavash’s identity to deal with engagements he wishes to avoid. Only a dozen other people serve at the [[Riedran consulate|Riedran Consulate (Stormreach)]] in [[Stormreach]]—four guards, six servants, and two administrative assistants—and all of them are aware of this practice. They believe that Hope has been blessed by the consul and that in her next life she will be one of the [[Chosen]] hosts.
''District Type:'' Temple district<br/>
''Buildings:'' Temples ([[Sovereign Host]], [[Silver Flame]],
[[Dol Arrah]]), shrines ([[Aureon]], [[Boldrei]], [[Olladra]]),
upscale lodging (5), average lodging (15), upscale
food (15), average food (30), exotic trades (23),
upscale trades (26), average trades (40), upscale services (40), average services (100), upscale residences
(20), average residences (80)<br/>
''First Impression:'' Many of the towers in this district are built from blocks of white stone flecked with spots of gold, and when the sunlight falls on Hope's Peak it seems to glow and burn.<br/>
''Social Class: ''Middle class<br/>
''Neighbors:'' [[Clifftop]] (north); [[Highwater]] (northwest); [[Redstone]] (southwest); [[Hareth's Folly]] (below)
Hope's Peak is the most recent temple district constructed in [[Sharn]], and many of the shrines were
relocated from the [[lower levels|Lower Dura]] of [[Dura]]. The most
important building is the [[Citadel of the Sun]], but
the main temples of the [[Sovereign Host]] and the
[[Silver Flame]] draw worshippers from the depths
of Dura. While most of the priests of the region
are devout enough, this is Dura, and pragmatism
abounds. If a party of adventurers knows who to
talk to and how to approach them, divine miracles
can be bought outright.
!! Noteworthy Locations
* The [[Citadel of the Sun]]. A temple devoted to [[Dol Arrah]], noteworthy for the three blessed [[griffon]]s that reside there.
* [[Olladra's Arms]]. One of the finest restaurants in [[Sharn]], with a different menu each night.
When you blow this horn, it emits a thunderous blast in a 30-foot cone that is audible 600 feet away. Each creature in the cone that can't resist the blast suffers damage and is deafened for 1 minute. Creatures and objects made of glass or crystal are prone to shatter.
Each use of the horn's magic has a small chance of causing the horn to explode.
Three times per day, you can blow this horn, and one hearing creature of your choice within 600 ft can hear it (but no other creatures can).
This elite division of the [[Harmonious Shield]] of [[Riedra]] is a corps of [[oni]], indoctrinated into service as one of the most
powerful weapons at the [[Inspired]]'s disposal. They are forbidden from shapeshifting, and are taught that changing their shape allows the demon within to strengthen their hold on them.
!! Notable Members
<<list-links-article "[tag{!!title}sort[title]]">>
The Horned Shadow in [[Sarlona]] is a young alliance of [[ogre]]s, [[oni]], and [[eneko]] working to forge a new destiny for the ogre races. Within [[Riedra]], these efforts are masterminded by oni who have overcome their indoctrination.
This is a dangerous game, and the [[Thousand Eyes]] swiftly
kill any ogre found to be working with the Shadow. But [[ogre mage|oni]]s are powerful and cunning—thanks to their shapeshifting powers and natural resistance to magic and
telepathy, many oni of the Horned Shadow have been
able to avoid the gaze of the [[Thousand Eyes]].
The Horned Shadow has spent the last few years
building support. As the organization grows, the
masterminds of the Shadow debate the best course of
action. Some advocate a mass exodus from [[Riedra]] and
the establishment of a new ogre kingdom in [[Syrkarn]].
Others insist on reclaiming [[Borunan]] itself, even if this
means the utter destruction of the ogre race in battle
with the Inspired.
All is complicated by the fact that some of the followers of the Horned Shadow have less than noble intentions. A few oni simply want power for themselves.
While they speak of ogre freedom, these mad mages are
interested only in bringing chaos and destruction to the
world, spilling as much blood as possible. Other members
of the organization could be noble rebels or bloodthirsty
killers whose love of battle comes before any ideals. Members of the Horned Shadow can be solid allies, but they can just as easily be disturbing adversaries.
''Getting the PCs Involved:'' [[Oni|oni]] are powerful
and intelligent creatures, and their shapeshifting abilities make it easy for them to slip in and out of [[Riedra]].
An ogre mage could come to the PCs in search of assistance or seek an alliance with the party's patron, such as a [[dragonmarked house]]. [[Ogre|ogre]] warriors aligned with the Shadow could come to the rescue when the PCs are about
to be captured by the [[Thousand Eyes]]. Oni could use their powers to trick the PCs into conflict with the [[Inspired]], or they could steal the characters' identities to
perform an act of terrorism. For a darker twist, a party
aligned with the Horned Shadow could seek a powerful
artifact hidden in [[Ohr Kaluun]] or [[Xen'drik]]—an ancient
weapon designed to kill [[humanoid]]s by the thousands,
allowing the [[ogre]]s to decisively shift the balance.
Travelers looking for food, drink, and shelter can find it all at the Horse &
Hearth, a large inn and tavern maintained by House
[[Ghallanda]]'s [[Hostelers Guild]]. The food and lodging are both of average quality, but extremely reliable. While it doesn't have the colorful atmosphere of the local [[shifter]]
establishments, the Horse & Hearth has the reputation of House Ghallanda behind it, and provides
all the standard services the house is known for.
Gaidan d'Ghallanda operates the inn. Gaidan possesses the [[Mark of Hospitality]], as do two of his daughters (though their [[dragonmark]]s are weaker).
These iron horseshoes, created by [[Orien]] and [[Cannith]] [[artificer]]s, come in a set of four. While all four shoes are affixed to the hooves of a horse or similar creature, they increase the creature's walking speed by 50%.
Many of the inns and restaurants across [[Khorvaire]] are run by the Hostelers
Guild—and most of the rest have (or are seeking)
licenses from the house. Displaying a House [[Ghallanda]] license in one’s establishment adds a certain
cachet and is an implicit promise of quality.
House [[Kundarak]]’s arrangement with the [[Storm Lords]]
transferred all undeveloped land on [[Stormreach]]’s [[eastern edge|Coasthold]] to the house. Even though the [[dwarves|dwarf]] have taken
advantage of this, much of the land to the north and south
of the [[Kundarak enclave|Kundarak Enclave (Stormreach)]] remains undeveloped. Not
ones to let a business opportunity slip by, the Kundarak
dwarves offered to lease a strip of land on the harbor to
House [[Lyrandar]] so that a shipyard could be built. House
Lyrandar happily agreed to the deal. The shipyard is still
under construction, but already a few ships have been
completed there. The arrangement has been profitable
for both houses and has served to increase the overall
standing of House Lyrandar within the city.
The largest estate in the district belongs to the Hazal family. The Hazals made
their fortune investing in the smelting industry, and Hazal caravans still bring in ore from the family's northern holdings on a regular basis. But while the Hazals have always been community leaders, they have also been religious leaders. Beyond a façade large enough to entertain guests and outsiders, the house of Hazal holds [[Sharn]]'s only temple to the [[Blood of Vol]]. Every [[Zol|Khorvaire calendar]] the
faithful come in shifts to give blood and hear the word
of Vol. During the holiest days—such as the [[Tanarath]],
when the moon Aryth is eclipsed by Sypheros—almost
all of the faithful gather at once.
The current master of the house and priest of
the Blood is [[Lan Hazal]]. Lan's wife died recently, and
there is a great deal of interest in the community as
to who might become the next Lady Hazal.
The house of Hazal also contains the stores of blood
donated by the members of the church, which are used
to sustain Lady [[Tarra'az|Jesel Tarra'az]] and visiting [[vampire]]s.
This enclave of [[Io'lokari]] healers is one of many spread throughout the city, its members studying together and spreading well-being among their fellow citizens. Healing is just another part of the overall system of barter in place within the city. However, members of this house freely cast [[heal]], greater [[restoration]], [[raise dead]], or even [[resurrection]] for strangers if convinced that a party can ultimately offer something to [[Io'lokar]] in return.
The [[elves|elf]] of [[Aerenal]]
know more about caring for the dead than any other
culture on [[Eberron]], and the embalmers and crypt
builders of the House of Repose have served many of
the wealthiest families in [[Sharn]]. Many of the crypts,
tombs, and shrines in the [[City of the Dead]] are the
work of these elf artisans.
A few doors down from [[Empty Handed]] in [[Respite]], this magic
shop is crowded, filled with [[gnome]]s and [[halfling]]s
offering spellcasting services and [[magic item]]s to the
highest bidder. Every nook and cranny hosts a [[magewright]] or minor [[wizard]]. More an indoor market than a shop, the sellers often find themselves competing
with one another. The selection of spells available on
any given day is up to the DM, but can include cantrips or [[common-tier|spell tier]] [[spell]]s.
A smoky, dangerous, and loud world unto itself, the
House [[Tharashk]] refinery looms over [[Graystone]] in [[Stormreach]]. The
[[orc]] [[Durgran Torrn]] oversees the refinery’s workers, who
process [[dragonshard]]s extracted from [[Xen'drik]]’s interior.
From the small [[Tharashk]] [[enclave]] attached to the refinery, [[Kurn Velderan]] leads the house’s operations in the city: directing Durgran, hiring out [[inquisitive]]s, and
running mining camps beyond the city’s borders.
!! House Tharashk in Stormreach
House [[Tharashk]] makes far more money from
prospecting than it does from its [[inquisitive]]s, and
over the last two centuries, the House of [[Finding|Mark of Finding]] has taken the
lead in exploiting the hidden resources of [[Xen'drik]].
Tharashk has established a number of mining camps
beyond [[Stormreach]]. [[Dragonshards|dragonshard]] are the common
quarry, but Tharashk miners also sell iron ore and
other precious metals to the [[Stormreach Forge]]. It’s
dangerous working a mine in Xen’drik, and many a
crew has disappeared without a trace. But the money is
good, and the flow of goods from Xen’drik has helped
the young house prosper over the last century.
Within [[Stormreach]], House [[Tharashk]] dominates
the [[Graystone]] ward in [[Cross]]. Even though a steady
stream of traffic passes from the [[Harbor]] district to
the [[Marketplace]], the ward itself is almost entirely
dedicated to House Tharashk. The massive refinery is
one of the largest employers in Stormreach, processing
shipments of [[dragonshard]]s and other goods brought
up the [[Koronoo River]]. Many of the refinery workers
are unmarked members of House Tharashk, but the
refinery also employs locals and immigrants from the
[[Shadow Marches]], providing lodging in dormitories
in Graystone itself; most of the five thousand [[orc]]s
and [[half-orc]]s found in [[Stormreach]] live in [[Graystone]].
Thanks to canteens spread around the dormitories, workers never need to leave the ward; however, many enjoy drinking at the [[Harbor]] district taverns or watching the fights in the [[Red Ring]], and things can get rowdy when a shift lets out at the refinery.
Viceroy [[Kurn Velderan]] makes his home in the
[[Tharashk]] [[enclave]] and oversees the business of the house. The enclave is also where people can go to hire [[inquisitive]]s. Four bound Tharashk inquisitives work in Stormreach, including the peerless [[Shurya Velderan]], and their services are often called on by those frustrated by the corruption within the [[Stormreach Guard]].
This engraved block of lead, approximately 1 cubic foot in size,
holds an embedded Siberys [[dragonshard]]. The houseward
provides state-of-the-art magical security, and is typically
embedded into the floor of the building it is supposed to
protect. If any creature with the [[Mark of Warding]] spends 10 minutes touching the houseward, it can cast [[guards and wards]] using its stored magical energy. The area protected by the spell is determined by the rarity of the houseward (see table below). The duration of the spell is 24 days, but the effect ends early if the houseward is used again to cast the spell, if a creature with the Mark of Warding spends 10 minutes
touching the houseward to end its effects, or if a houseward is
removed from the area it is currently protecting. After being
used to cast the spell, the houseward can't do so again until
dawn the next day.
|!Houseward Rarity |!Warding Area |
|uncommon |2,500 sq ft |
|rare |5,000 sq ft |
|very rare |7,500 sq ft |
|legendary |10,000 sq ft |
The Howling Peaks form part of the border between [[Breland]] and [[Zilargo]]. Hidden in these mountains is [[Silent Keep]], the main training ground of the [[King's Dark Lanterns]].
The Howling River in [[Breland]] is a tributary of the [[Dagger River]]. It flows through the capital city of [[Wroat]].
Two teams of seven [[shifter]]s play hrazhak on a field
with a goal at each end. Each team starts out carrying a
wooden idol. To score, a team must steal its opponent's
idol and place both idols in its own goal. Obstacles such
as trees, streams, and piles of rubble can be present on
a hrazhak field, requiring the competitors to make full
use of their jumping and climbing abilities. Idols can be
thrown or carried, and there are no limits on contact
between participants, although only natural weapons
are allowed. Typically, a medic is on hand to provide healing if needed—but any competitor
who receives aid is removed from play for the remainder
of the match. Competitors aren't allowed to use spells or
similar abilities.
The only formal hrazhak arena in [[Sharn]] is located in
the [[Stone Trees|Cornerstone (arena)]], part of the [[Cornerstone]] district, where
the matches serve as both a spectator sport and a reason for gambling. Shifters created temporary hrazhak
fields in the slums and warehouse districts of the city
from time to time, and shifter youths often play impromptu games in the parks.
Hruitt (councilor for [[Middle Dura]]) is a mysterious figure on the Council, keeping his own counsel and advancing his own agenda. He is an intelligent [[giant owl]] who can assume a [[human]] form (or perhaps a human [[druid]] who prefers to stay in the form of a giant owl; no one is quite sure). He once was an aerial racer, representing the [[Bazaar]] of [[Dura]] in the [[Race of Eight Winds]]. Hruitt's primary responsibility is to the merchants of the Bazaar, protecting their interests from the [[Boromar|Boromar Clan]] councilors and the councilors who represent the other market wards.
[[Black Iron]] in the [[Marketplace]] of [[Stormreach]] is run by the [[eneko]] smith Hular, one of the best in the city. He runs the smithy efficiently, but age is taking its toll. He is preparing his children to take over the business, but his youngest daughter,
Solarca, is eager to live a more adventure-filled life. She might seek to join a group investigating the ruins of the [[giant]]s, or strike out on her own in a quest to steal a husband from the [[eneko]] of [[Dar Qat]]. If her ambitions lack an outlet, she might turn to the [[Titans]].
//[[Dwarves|dwarf]] are stoic. [[Elves|elf]] are wise. [[Gnomes|gnome]] are cunning. And humans? They can't make up their mind, so they try to be all of these things at once.//
<div align="right">—[[Kessler]], [[bard]] of [[Sharn]]</div>
The first human settlers came to [[Khorvaire]] from [[Sarlona]] about
3,000 years ago, landing in the area now known as the
[[Lhazaar Principalities]]. From there, they began a slow
but inexorable spread across the continent, disrupting
the placid elven empire of [[Aerenal]] and leaving further
ruined remnants of fallen [[Dhakaan]]i [[goblinoid]] kingdoms
in their wake. During this migration, they founded the
settlements that would grow into the [[Five Nations]]. Even
today humans make up the majority of the population
in these countries. Despite their relatively short lifespans—or perhaps because of them—humans are innovative, adaptable, and aggressive, always pushing their
limits and pursuing new ideas.
Humans prove extremely diverse; a barbarian from
the [[Demon Wastes]] has little in common with a [[Brelish|Breland]]
rogue. When creating a human character, consider
where you're from and how that's reflected in your class
and background. [[Aundair]] is a logical place of origin for a
[[wizard]] character, but your wizard could be a down-and-out arcanist from the alleys of [[Sharn]] or a [[Lhazaar|Lhazaar Principalities]] pirate
with a knack for the mystic arts.
If you want to jump-start your ideas for a human character's origins, you can roll on the table below.
| !<<dr d10>> |!Origin |
| 1 |An impoverished wizard from [[Aundair]], striving to prove you're as intelligent as any other Aundairian |
| 2 |A streetwise rogue from [[Breland]] who wants nothing more than to escape the bustle of [[Sharn]] forever |
| 3 |A displaced Cyran fighter who was engaged in war outside [[Cyre]] at the time of the [[Mourning]] and is now stranded with no home |
| 4 |A barbarian from the [[Demon Wastes]] who repented from a life of cruelty and hopes to atone for past evils |
| 5 |A kindly [[druid]] from the [[Eldeen Reaches]] who wants to learn about the flora and fauna of the rest of [[Khorvaire]] and beyond |
| 6 |A [[cleric]] from [[Karrnath]] who aspires to learn the arts of [[necromancy]]—for the noblest aims, of course]] |
| 7 |A piratical bard from the [[Lhazaar Principalities]] who loves sea shanties but also wants to immortalize the deeds of great heroes in song |
| 8 |A ranger trained to hunt the jungles of [[Q'barra]] who harbors a grudge against [[dragon]]s |
| 9 |A [[warlock]] from the [[Shadow Marches]], teetering on the edge of sanity while contemplating the [[daelkyr]] |
| 10 |A [[Thrane]] [[paladin]] of the [[Silver Flame]] who's looking for something to prove the truth underpinning belief |
!! Humans and Dragonmarks
Five different [[dragonmark]]s appear among humans,
reflecting their dominant status among the races of
[[Khorvaire]]:
* The [[Mark of Making]] is found in House [[Cannith]], which has used it to become one of the most powerful houses, creating an abundance of both magical and technological wonders.
* The [[Mark of Passage]] aids the humans of House [[Orien]] in operating the lightning rail and trade caravans running across the continent.
* The [[Mark of Sentinel]] makes the bodyguards, mercenaries, and [[Sentinel Marshals]] of House [[Deneith]] widely respected across [[Khorvaire]].
* The [[Mark of Handling]] appears in House [[Vadalis]], which uses it to breed fine mounts and other creatures.
* Humans also number among House [[Tharashk]] and manifest the [[Mark of Finding]] with their [[half-orc]] kin, though they need to have at least some [[orc]] blood in their ancestry.
Humanoids are the main peoples of Eberron, both civilized and savage, including [[human]]s and a tremendous variety of other species. They have language and culture, few if any innate magical abilities (though most humanoids can learn spellcasting), and a bipedal form.
<<list-links-article "[tag{!!title}category[creature]] -[tag{!!title}tagging[]category[creature]] +[sort[title]]">>
A hungry weapon, a creation of the [[daelkyr]], is formed from
muscle and bone. It may moan, growl, or wail, and it twists
in your grip if it doesn't like you. If any creature attempts to
wield this weapon while not attuned to it, it has disadvantage
to attack using the weapon. Additionally, if you are
attuned to this weapon when another creature tries to wield it,
the weapon's hilt extrudes sharp thorns.
While attuned to and wielding this weapon, you choose to bond to it, causing tendrils from the hilt of the weapon to burrow into your flesh. While bonded to it, you gain
the following benefits:
* The weapon is bound to your hand and can't be removed from your grasp, voluntarily or involuntarily. If it's a two-handed weapon, only one of your hands is bound to the weapon.
* When you hit a creature with this weapon, you can choose to suffer one stress to drain the life from your foes. A successful attack deals additional necrotic damage with the attack, and and you recover from an equal amount of harm.
You can end the weapon's bond at will, causing the tendrils
to retract so you can release the weapon. You can remain attuned
to the weapon regardless of whether you're bonded to it.
''Date: '' [[4 Barrakas|Khorvaire calendar]]
While followers of [[Balinor]] are taught to live in harmony
with nature, this festival celebrates his role as Lord of Horn and Hunt, the hunter who protects his people from marauding predators. Both rural communities and in greatest cities of [[Khorvaire]] observe the Hunt. In [[Sharn]] (and many other metropolises), the
priests of Balinor arrange to have a dangerous beast transported to the city and released into an isolated section of [[Old Sharn]]. Anyone who wishes can participate in the Hunt by making a donation of 1 crown. Hunters receive the blessing of Balinor, and enter the depths to track down the beast. The hunter (or group) who brings down the beast
wins a prize of 100c, fame throughout the city, and the blessing of Balinor.
While the quarry of the Hunt is generally
referred to as “the beast,” over the years the Hunt
has taken different forms. In some years, multiple beasts are released, and the
hunter who catches the most of them is the victor. During the [[Last War]],
rumors persist that a city in [[Karrnath]] used prisoners of war as the quarry in the Hunt.
In any case, it often turns out that the other competitors are a greater threat to hunters than the beasts they stalk.
Husks are harmless [[shade]]s in [[Dolurrh]] that have been overcome by
ennui and possess only the vaguest memories of their mortal
existence. Most retain a semblance of their mortal shape, but
they continue to fade over decades, eventually merging with
other husks to form masses of moaning mist. Having no true
consciousness of their own, husks are immune to ennui's
effects. Occasionally, a group of husks cluster around a strong
memory, forming an ectoplasmic mass that prowls in search of
more scraps of memory, absorbing other husks. Such a creature
is called a [[meld]].
Husksteel is the fused essence of faded souls. The [[Smith of Shadows|Crucible]] in [[Dolurrh]] refines this substance from the lingering scraps of memory and emotion, and then uses it to create a variety of artifacts. Despite the name, husksteel can appear not only as dark metal, but also as slick black leather, dark iridescent cloth, or
other substances. Such an object could be crafted from a single
spirit—a dagger whose edge is forged from a single moment of
pain—or from the emotional residue of multiple [[husk]]s.
The hydra is a reptilian horror with a crocodilian body and multiple heads on long, serpentine necks. Although its heads can be severed, the hydra magically regrows them in short order. A typical specimen has five heads. When a hydra sleeps, at least one of its heads remains awake and alert, making the creature difficult to catch by surprise. These creatures can be found on the continent of [[Xen'drik]], particularly in the [[Marsh of Desolation]].
According to [[Thir]] mythology, during the wars of the [[Age of Demons]], the demonic [[overlord]] known as the [[Daughter of Khyber|Tiamat]] slew a [[dragon]] hero named Lernaea and cast her blood across the Material Plane. Each drop that fell upon a world spawned a multi-headed fiend-touched hydra consumed by a hunger as great as the fallen champion's anger.
The Hydra River is a massive river basin in central [[Xen'drik]], with hundreds of tributaries from the [[Fangs of Argarak]] and elsewhere throughout the continent. Water taxis from [[Stormreach]] navigate the coast to the mouth of the Hydra where river barges creep downriver into Xen'drik's wilds.
The I.W. Society is spread across [[Khorvaire]]. Its outposts are taverns and inns, and its ‘Socialites’ are a loose alliance of artists, storytellers, and
sometimes vigilantes. As clandestine as some of
the [[elven|elf]] [[houses|dragonmarked house]], one might know a member for
decades but only realize this is the case when an
invitation is extended as a sponsor. The meaning
of the society’s I.W. abbreviation is known only
to its members and some outsiders believe it to
be a form of password linked to its founders. The
organization seeks to use its talents to make the
world a better place through the power gained
in celebration and collaboration of story. In the
past, this largely abstract goal has urged its
membership to primarily seize the opportunity to
collaborate with peers, to compare techniques,
and afford bookings or haven to struggling
artists. Today, the I.W. Society takes it mission
more seriously as a whole in the wake of the
[[Mourning]], and a member might be given tasks
that counter the despair and ennui following the
aftermath of the war.
Society members can almost always find food
and shelter from fellow Socialites, though they’ll
be expected to sing for their supper, or provide
other discrete services for the good of the local
populous. Socialites can be a useful source of
information, even to non-members, and might
be willing to exchange a favor in the present
for a promise of future aid. Transactions of this
sort one might usually expect to see in dramas
recounting wartime espionage, where a hopeful
client makes a request through a network of
barkeeps or tavern workers and hopes for an
agent to make contact. Socialites come from all
walks of life, and many of its [[bard]]s aren’t refined
enough to find a place in the Five [[Demesnes]] but
teach each other the techniques of any college
they’ve learned along their travels.
Resembling a giant bipedal insect, an ice [[devil]] (also known as a gelugon) has clawed hands and feet, powerful mandibles, and a long tail covered in razor-sharp spikes. Some carry barbed spears whose icy touch can render a foe all but helpless in combat.
This long blade appears to be made of solid [[Risian ice]].
When you get a critical on an attack roll with this weapon, you can choose to have it shatter into a thousand fragments, dealing much more damage.
Ice Shear Island is an island in the [[Lhazaar Principalities]].
A hail of rock-hard ice pounds to the ground in a 20-foot-radius, 40-foot-high cylinder centered on a point within 200 feet. Each creature in the cylinder must dodge or be pummeled by the hailstones. The hail covers the ground in slick ice.
This spell can be upgraded to legendary-tier for an even more destructive effect.
The nomadic [[frost giant]]s of the [[Eska Mountains]] known collectively as the Icebinders also follow mysterious internal rhythms. Their migrations do not correspond to any seasonal pattern, nor do they trail any of the great herding animals of the Tashana. Some have suggested that the Icebinders move according to some intricate plotting of the [[aukarak|reality storm]]s that
sweep across the Tundra. Others say the Icebinders actually
control the aukaraks, somehow herding the storms like great
planar beasts. In any case, each nomadic Icebinder group
is apparently self-governed and independent.
The Iceflow River in [[Karrnath]] flows from the [[Icetop Mountains]] into the [[Karrn Bay]]. It is also fed by the [[Dark River]].
Icegaunt Channel passes between the [[Wayfinder Tundra]] in [[Frostfell]] and [[Icewhite Island]].
Icegaunt Island lies between [[Icewhite Island]] and the mainland of the [[Frostfell]]. It is notable for being the largest among very few known habitats of the small [[fey]] known as [[uldra]]s.
Icehaven Sound lies between [[Icewhite Island]] and [[Tlalusk|Tlalusk Island]]/[[Qorrashi Island]].
Along with the [[Shadowcrags]], these frigid mountains form part of the border between the [[Demon Wastes]] and the [[Eldeen Reaches]].
The Icemaw Sea, also known as the Iceflow Sea, lies between [[Xen'drik]] and [[Everice]]. It is studded with islands and icebergs.
The Iceneedle Forest is a small forest in the mainland [[Lhazaar Principalities]].
The Icetop Mountains in [[Karrnath]] are an offshoot of the [[Ironroot Mountains]] to the east. It is the source of the [[Iceflow River]].
Icewhite Island lies to the northwest of [[Khorvaire]], between the [[Demon Wastes]] and the [[Frostfell]] mainland, and separating the [[Bitter Sea]] and the [[Barren Sea]]. It is sparsely populated tundra. Clans of [[darfellan]]s, [[humanoid]]s unique to this area, dwell along the coast of Icewhite and in [[Icehaven Sound]]. Once far more widespread, their numbers have significantly dwindled due to clashes with [[fiend]]-worshipping [[sahuagin]].
Icehammer Palace is a skyberg that floats above Icewhite Island, a fortress that holds a relic from the [[Age of Demons]].
Icewild, or //muqqa//, is a blood-red rock lichen and stimulant that produces a feeling of energy and euphoria lasting
up to 6 hours. Consumption of one dose confers immunity
to the effects of fatigue or exhaustion for its duration.
Icewild can be purchased in the less reputable sections of [[Whitetooth]] and [[Winterstead]].
The Icewood is a large forest in northern [[Karrnath]] in the foothills of the [[Ironroot Mountains]].
Deep in the Icewood stands a strange
and terrible growth, a pulsing mound of white crystal. Those familiar with the wood know to keep away from the Madstone—it’s said that those who touch
it lose their souls. Elders tell any who are willing to
listen that more than a few people have been lost in
that area of the woods over the years. Some of the
old folk claim that, during their time and the time of
their ancestors, the dead-white crystal has steadily
grown larger. They urge everyone to ignore the alluring whispers that draw the young and ambitious to the Icewood.
You choose one object that you must touch throughout the 1-minute casting of the spell. If it is a [[magic item]] or some other magic-imbued object, you learn its properties and how to use them, and any other details in the item's description. You learn whether any [[spell]]s or curses are affecting the item and what they are. If the item was created by a spell, you learn which spell created it.
If you instead touch a creature throughout the casting, you learn what spells, if any, are currently affecting it.
The [[Mokush]] village priest of [[Inspiration|Path of Inspiration]] is thoroughly corrupted by the
[[Horned Shadow]] and is [[Yrnuxi]]'s devoted lackey. Worshiping [[fiend]]s has sparked Ignra's spirit, and she can now actually cast [[spell]]s for the first time in her life. She's
careful to keep her wicked talent a secret.
Ikar the Black is an imposing [[half-orc]] who was a decorated [[Karrnath]]i officer in the
[[Last War]]. He leads a [[team|Ikar's Salvage]] of professionals and hardy laborers, mostly [[warforged]] and [[Karrnathi undead]], searching for lost treasures in the [[Mournland]]. He and his dozen or so employees use high-quality tools
and vehicles, such as [[elemental]]-powered barges and
land carts.
Ikar prefers to work in previously settled areas,
and makes regular forays into the outskirts of [[Metrol]].
The group’s base of operations is a temporary camp
that Ikar moves up and down the the [[Cyre River]] as
needed. The salvagers avoid going too far inland or
too far south.
Ikar has contracts in the [[Karrnath]]i government
and with Prince [[Oargev|Oargev ir'Wynarn]] of [[New Cyre]]. He has well-placed friends, and some consider him a hero for his actions in the [[Last War]]; he was wounded during the Karrnathi defense against a [[Cyran|Cyre]] push for [[Atur]] near the end of the war. If he were to be killed, more than a few people would look into his passing.
!! Secret Alliances
Ikar might have contracts with [[Karrnath]] and [[New Cyre]], but he shuffles the choicest relics to his masters in the Order of the [[Emerald Claw]]. He also pays homage to "Empress" [[Donata]], an alliance which grants him and his [[band|Ikar's Salvage]] access to the city of [[Metrol]].
The largest band of scavengers operating in the [[Mournland]], [[Ikar]]’s Salvage has a mobile base of operations that wanders the western edge of the [[Cyre River]],
using barges to cross the river and [[elemental]]-powered land carts to cross the Mournland wastes. Despite their capable and professional appearance, [[Ikar]]’s team is ruthless and deadly, without regard for life—[[human]] or otherwise.
The gang's forays into [[Metrol]] are
far more successful than those of others. It has been
said that [[Ikar]] knows some secret related to the city.
The dark heart of [[Dal Quor]], il-Lashtavar, is the current
incarnation of the Dream of the Age. This vast dreamscape, orbited by
the [[Ocean of Dreams]], is the source and home of the [[quori]]. It's
a menagerie of nightmares, a showcase of terrors that haunt
the dreams of mortals. On the edges of il-Lashtavar, corpses
dangle from the trees of a haunted orchard. Blood drips from
the leaves of a terrifying topiary maze. While the basic form of
these nightmares is stable, they feed on the psyches of nearby
mortals. Adventurers walking through the orchard see the
hanging corpses as the people they most care about, or even as
themselves—whatever is most disturbing to each intruder.
Those who press through this outer ring of nightmares find
the great fortress-city of the [[Devourer of Dreams]], the [[kalaraq]]
quori who coordinates the actions of the [[Dreaming Dark]] on
Eberron. The quori spirits tied to agents of the Dreaming
Dark and the [[Inspired]] can return here whenever they choose,
reporting to the Devourer and coordinating with other [[quori]].
The flowing time works to their advantage, as an hour in [[Dal Quor]] is just a few minutes on Eberron. The fortress itself is ever shifting; it might be formed from black twisted roots, or the walls could be blood-soaked spiderwebs. At the very center is a pool of shadows. It's here that newborn quori emerge when they're reincarnated, and here that the Devourer of Dreams descends into the pool to commune with the Great Darkness.
Il-Lashtavar is the most dangerous place in Dal Quor. At any
given time, there are hundreds or even thousands of quori here.
The Great Darkness doesn't act directly, but its presence can be
felt in how the environment shifts to showcase the nightmares
of intruders. Dreamers who die in this place can be trapped the
same way [[kalaraq]] bind the souls of their victims. Only the most
powerful and prepared adventurers should enter il-Lashtavar.
In those regions of il-Lashtavar that appear to be outdoors,
adventurers may notice a dark, nearly invisible moon in the
sky. A sage with considerable skill in history or arcana may
recognize this as the moon [[Crya]], thought to be destroyed in the
[[Age of Giants]]. Perhaps it was thrown into Dal Quor and could
somehow be returned, restoring the plane to its proper orbit—
or perhaps this is only il-Lashtavar dreaming of the lost moon.
Though only a child, Ilaan has an innate connection
to [[dreamspace]]—a gift that has given him wisdom beyond
his years and hardened his mind against the indoctrination of the Inspired. He can't control his dreaming, and
he rarely grasps the cryptic images he sees, but occasionally he wakes with a vital insight about the present or the
future, and he always feels obliged to act. These oracular
visions guided him to a local cell of the [[Unchained]], and
they might guide him to the PCs. In this way, if the characters are in desperate need of direction, this strangely
mature boy might approach them. Once the PCs have
encountered Ilaan, he might reach them in the future
using a [[dream of contact]].
It might be that Ilaan's youth has shielded him
from the eyes of the [[Inspired]]. Or it could be that his
"visions" are in fact dreams sent by one of [[Riedra]]'s
overlords, who is using the boy to guide the party down
a particular path.
Ilia Merith, a member of [[Sharn]]'s upper crust, is a noted
philanthropist and a strong supporter of the arts, particularly song and poetry. Ilia might become a patron for a [[bard]], or she could employ the party to recover
a rare book of poetry that has been lost or stolen.
Kant resides in [[Crystal Bridge]] in [[Upper Northedge]], [[Sharn]].
Illusion spells deceive the senses or minds of others. They cause people to see things that are not there, to miss things that are there, to hear phantom noises, or to remember things that never happened. Some illusions create phantom images that any creature can see, but the most insidious illusions plant an image directly in the mind of a creature.
!!! <<showspells-school {{!!title}}>>
Ilsa Boromar is the [[Boromar Clan]] leader in [[Callestan]], headquartered in the Westbridge section of the district. She despises needless cruelty but is ruthless in protecting her family's interests.
[[Bestan ir'Tonn]], [[Thurik Davandi]], and [[Caskar Halavik]] all have ties to the [[Boromar Clan]]. But Ilyra Boromar ([[halfling]] councilor for [[Lower Dura]]) is the Boromar Clan's personal representative on the Council. She reports directly to her father [[Saidan Boromar]], and she has the authority to make executive decisions on behalf of the clan. Her allegiance is obvious, but the other council members generally politely overlook it; the Boromars are one of the [[Sixty]] families of [[Sharn]], and she does have the
skills, credentials, and lineage to compete with any
of the other councilors.
Of all of the members of the council, Ilyra is the most ruthless and dangerous. The [[Boromar Clan]] prefers to avoid violence, but councilors who oppose Ilyra have disappeared in the past. However, the recent war with [[Daask]] has shaken her grip on the
council. The Boromar Clan is no longer seen as an infallible, omnipotent force—and so far the majority councilors have refused to devote city resources to battling the [[Droaam]]ites setting up shop in Sharn. Most are quite pleased with the turn of events, and
are waiting for the Boromars to be weakened further
before they take any action.
[[Thurik Davandi]], [[Bestan ir'Tonn]], and [[Caskar Halavik]] are Ilyra's allies, although Thurik and Bestan have been known to pursue their own agendas behind Ilyra's back. Her greatest enemies on the council are [[Borian Haldorak]], [[Sava Kharisa]], [[Kilk]],
and [[Hruitt]]; these four are either unconcerned with the danger represented by the [[Boromar Clan]] or feel that their supporters are powerful enough to protect them from retribution.
Ilyra's daughter, [[Tig|Tig Boromar]], is a professor of economics at [[Morgrave University]].
An //imbued wood focus// is a rod, staff, or wand cut from a tree infused with extraplanar energy, usually one found growing in a [[manifest zone]]. When the wielder uses this focus to cast cantrips, they can channel properties associated with the [[plane]] the focus is imbued with.
The Imistil Forest is a small forest in [[Thrane]], located near the nation's borders with [[Aundair]] and [[Breland]].
While most [[plane]]s are isolated from others and it's difficult
to move from one plane to another, commerce and peaceful
interaction are defining aspects of [[Syrania]]. Most planes have
back doors that lead to the Immeasurable Market. The crystal
spire in the [[Open Sky]] is merely a gateway leading to an open
marketplace that extends as far as the eye can see. To one side, a
[[slaad]]i haggles with a [[modron]] over the price of [[hippogriff]] eggs; to
the other, a sly [[dao]] shows a [[Shavaran|Shavarath]] [[balor]] a selection of [[Fernia]]-forged blades. It's said that anything you can imagine—and many
things you can't—can be found in the Immeasurable Market.
The Immeasurable Market includes customers and
merchants from across the [[plane]]s, including the Material Plane; there are a few back doors to the Market hidden on [[Eberron]], and those who find them can make a healthy profit trading in exotic goods. It also includes a significant number
of native [[immortal]]s. Lesser [[angel]]s work as servers and porters, while
[[virtue]]s of commerce run small stands and shops. [[Dominion|dominion]]s
of commerce run the largest and most reliable businesses,
while the [[Throne|throne]] of Commerce monitors the entire Market and
banishes troublemakers. Violence is forbidden in the Market, and thieves and other
criminals are generally deported to [[Daanvi]] for judgment and
punishment.
There are countless merchants in the Market. Most have
temporary stands or tents, but there are a few permanent
structures scattered about; the [[Last Resort]] is the most beloved
watering hole in the planes. Below are a few examples of merchants and shops adventurers could discover.
!! Immeasurable Merchants
* the [[Last Resort]]
* [[Jabra]]
* [[Sar Saeran]]
* [[Mazalene]]
* the [[Hoard]]
* [[Lady Ash]]
* [[Bor'ob]]
* [[Slade]]
!! Immeasurable Currencies
While merchants always try to get the best deal,
when dealing with immortal customers, your reputation is
everything. Beyond this, oaths made in the Market carry great
weight, and can be enforced in the courts of [[Daanvi]]; in the
Immeasurable Market, your word truly is your bond. This is
important, because most of the merchants aren't interested
in gold, and goods and services usually involve barter. The table below gives a few examples of things that can be used in trade, but this is just a starting point; the
DM should feel free to come up with other offers.
| !<<dr d8>> |!Currency |
| 1 |''Angel Tears.'' These translucent coins are one of the only active currencies in the Immeasurable Market. They're produced by the [[Throne|throne]] of Commerce and honored by most [[dominion]]s and virtues. For simplicity's sake, they could be assigned a value in gold pieces, so a dominion might pay adventurers 10 c in angel tears for a minor service. These are useful when you want to buy a drink at the tavern without selling your soul. |
| 2 |''Dragonshards.'' [[Dragonshard|dragonshard]]s are unique to [[Eberron]], and there are merchants who take a great interest in them—especially Khyber dragonshards, which can be used to bind spirits. |
| 3 |''Luck.'' Some merchants literally let you spend your fortune. Luck is measured in “dice.” Each die you spend allows the DM to give you disadvantage on a future roll of their choosing. So if you spend five dice to acquire an item, that's five difficult rolls in your future. |
| 4 |''Trade Goods.'' Many merchants are primarily interested in things they can resell. What's valuable to an [[immortal]] may not seem valuable to a mortal; an item that is unique or has emotional significance may have value to an Immeasurable merchant even if it doesn't do anything. So it's possible a treasured trinket holds more trade value than a legendary [[magic item]]. |
| 5 |''Odd Organs.'' Some merchants like to deal in the body parts of unusual creatures—unicorn horns, a dragon's heart, a demon's eye. They may be willing to sell something on the promise of future delivery, but there's usually a fixed time to complete the transaction. |
| 6 |''Services.'' Merchants may well barter goods in exchange for a promise of service, either immediately or to be performed in the future. Remember that oaths sworn in the Market carry great weight; those who break a vow can end up facing a tribunal in [[Daanvi]]. |
| 7 |''A Song.'' This doesn't have to literally be a song, but there are merchants who trade goods in exchange for a performance of some sort. Usually this is about quality; they'll sell you the dagger for a song, but it needs to be an epic performance. |
| 8 |''A Soul.'' These aren't a common form of currency, but some [[immortal]]s trade in souls... if not your own, this is usually about promising to kill someone! A soul traded in this way becomes the possession of the immortal upon death instead of it going to [[Dolurrh]]; this eliminates any possibility of resurrection unless the soul is reclaimed. |
Flames wreathe one creature you can see within 90 feet. If the target can't dodge, it is ignited for up to 1 minute. The burning target sheds bright light in a 30-foot radius and dim light for an additional 30 feet, and continues to burn for the duration. These magical flames can't be extinguished by nonmagical means.
Immortal beings are an integral part of their
native [[plane]], each expressing a particular aspect of its
core ideas. For example, in [[Shavarath]], [[devil]]s embody the
concept of war fought in pursuit of tyranny, while [[angel]]s
are living symbols of the endless fight for justice. The name
“immortal” doesn't mean “unkillable”—they can indeed be
killed (though this is a temporary solution). While
immortals don't show the effects of age, some have a limited
lifespan and can die a natural death as well. However, their
//essence// is immortal and their numbers remain constant.
Most immortals don't care about [[Eberron]]. Many consider
Eberron to be an unfinished experiment, while their realm is
the finished, perfected work of the [[Progenitors|Progenitor Dragons]]. Others simply believe in their purpose to the exclusion of all other things; to
the angel of Shavarath, the eternal battle is the single most
important struggle in the multiverse, and leaving their post
for even an instant could give the enemy an advantage. So
most immortals aren't concerned with the fates of mortals
or their civilizations; of course mortals may die, that's their
most defining feature. An angel has seen many human
civilizations rise and fall—what's one more? While there are
a few exceptions—immortals who chose to dwell on Eberron,
whether to prey on mortals, observe them, or assist them—immortals are generally bound to their planes, and your problems are not their problems.
Immortals don't reproduce as mortal creatures do; if they're
killed, their spiritual essence is instead reabsorbed into the
plane and eventually reassembled. For example, in [[Shavarath]],
[[angel]]s and [[devil]]s are constantly being killed, but they're just as
quickly being reborn to fight again. Immortals are each born as
embodiments of specific ideas and don't choose their path;
they're already mature, possessing their full abilities and
knowledge, and imbued with an absolute understanding of
their purpose. So while immortals possess great power, they
lack the potential of mortals to grow and evolve, and find the
idea of questioning their beliefs or straying from their purpose
to be inconceivable.
There are exceptions to all rules, of course. The [[kalashtar]]
exist because a handful of [[quori]] turned against [[il-Lashtavar]].
Likewise, [[radiant idol]]s are angels of [[Syrania]] that were
corrupted by their time on the Material Plane and desired
mortal adoration. But these examples are vanishingly
rare. Sometimes it's because the unusual immortal is born
embodying a unique perspective on the usual concept; this is
essentially a mutation, as opposed to a choice. In other cases,
an outside force might change or corrupt the immortal's
fundamental nature. And rarely, an immortal might have an
unusual sense of identity and the ability to choose.
If an immortal changes in a way that alters its core concept,
this is often accompanied by a physical transformation, such
as a corrupted angel becoming a radiant idol, thus losing its
ability to fly. Immortals may be able to increase their abilities
by absorbing other immortals, acquiring artifacts, or through
other means unique to their plane. They simply don't grow
or gain experience through time alone; after all, some of
them are as old as the universe itself, and in the absence of a
dramatic cause, they're utterly unchanging.
!! Types of Immortal
<<list-links-article "[tag{!!title}category[creature]] -[tag{!!title}tagging[]category[creature]] +[sort[title]]">>
This lightweight cuirass of hardened leather has been imbued with the magic of an [[immovable rod]]. When a small button on the right shoulder is pressed, the armor becomes magically fixed in place. Until the button is pressed again, the armor doesn't move, even if it is defying gravity. The cuirass can hold up to 8,000 pounds of weight. More weight causes the cuirass to deactivate and fall.
This flat iron rod has a button on one end. You can press the button, which causes the rod to become magically fixed in place. Until you or another creature pushes the button again, the rod doesn't move, even if it is defying gravity. The rod can hold up to 8,000 pounds of weight. More weight causes the rod to deactivate and fall.
Imps are minor [[devil]]s found throughout [[Fernia]], [[Shavarath]], and the [[Iron Ward]] in [[Daanvi]], either running errands for their infernal masters, spying on rivals, or misleading and waylaying mortals.
An imp can assume animal form at will (rat, raven, or spider), but in its natural state it resembles a diminutive red-skinned humanoid with a barbed tail, small horns, and leathery wings. It strikes while invisible, attacking with its poison stinger.
This cloak of dark, waxed canvas is fireproof, waterproof, and windproof, keeping the user at a dry, comfortable temperature at all times.
This spell requires a few minutes to cast, and up to 2500c worth of ritual components, which are expended. The value of the ritual components are contingent on the power of the target.
You create a magical restraint to hold a creature that you can see within 30 feet. If you fail the attempt, the target is immune to this spell if you cast it again. Otherwise, the target is bound, and the binding lasts until it is dispelled. While affected by this spell, the creature doesn't need to breathe, eat, or drink, and it doesn't age. [[Divination|divination]] spells can't locate or perceive the target.
When you cast the spell, you choose one of the following forms of imprisonment.
<<<
//''Burial.''// The target is entombed far beneath the earth in a sphere of magical force that is just large enough to contain the target. Nothing can pass through the sphere, nor can any creature teleport or use planar travel to get into or out of it.
The special component for this version of the spell is a small mithral orb.
//''Chaining.''// Heavy chains, firmly rooted in the ground, hold the target in place. The target is restrained until the spell ends, and it can't move or be moved by any means until then.
The special component for this version of the spell is a fine chain of precious metal.
//''Hedged Prison.''// The spell transports the target into a tiny [[demiplane]] of [[Khyber]] that is warded against teleportation and planar travel. The demiplane can be a labyrinth, a cage, a tower, or any similar confined structure or area of your choice.
The special component for this version of the spell is a miniature representation of the prison made from jade.
//''Minimus Containment.''// The target shrinks to a height of 1 inch and is imprisoned inside a gemstone or similar object. Light can pass through the gemstone normally (allowing the target to see out and other creatures to see in), but nothing else can pass through, even by means of teleportation or planar travel. The gemstone can't be cut or broken while the spell remains in effect.
The special component for this version of the spell is a large, transparent gemstone, such as a corundum, diamond, or ruby.
//''Slumber.''// The target falls asleep and can't be awoken.
The special component for this version of the spell consists of rare soporific herbs.
<<<
//''Ending the Spell.''// During the casting of the spell, in any of its versions, you can specify a condition that will cause the spell to end and release the target. The condition can be as specific or as elaborate as you choose, but the DM must agree that the condition is reasonable and has a likelihood of coming to pass. The conditions can be based on a creature's name, identity, or deity but otherwise must be based on observable actions or qualities and not based on intangibles such as level, class, or other game mechanic.
A [[dispel magic]] spell can end the spell only if it is cast as a mythical-tier spell, targeting either the prison or the special component used to create it.
You can use a particular special component to create only one prison at a time. If you cast the spell again using the same component, the target of the first casting is immediately freed from its binding.
What little is known of the Inana
[[maenad]]s suggests that they maintain a radically simple,
almost deliberately primitive society in the remote [[Tashyvar Islands]]. Separate and distinct coastal villages are designed
to be entirely self-sufficient, and there is no indication of
any centralized government. Inana colonists have in recent
generations established a series of fishing villages on the
western seaboard of Tashana, as well as the port community
of [[Winterstead]], trading peaceably with the native [[Saartuk]]
[[shifter]] tribes. As a people, the Inana apparently follow some
kind of seasonal rhythm, with active periods of exploration
and colonization in the summer, offset by almost hibernation-like episodes in the long dark of winter. In fact,
visitors to Inanan villages in the dead of winter report
entire colonies seemingly abandoned.
While wearing this innocuous hat, you magically blend into the hustle and bustle of crowds. Enemies searching for you in cities have a much harder time spotting you, and you have advantage when going unnoticed, such as trying to slip past guards in a crowd.
Succubi and incubi are lascivious dark-winged [[fiend]]s that can be found in service to more powerful entities, especially the [[Dark Power]]s of [[Mabar]]. Though legend speaks of them separately, any succubus can become an incubus, and vice versa. Most of these fiends do have a preference for one form or the other. Mortals only rarely see a succubus or incubus in its true form, however, for the fiend typically begins its corruption in veiled, insidious ways.
This branch of the [[Unity]] of [[Riedra]] manages industry, from the acquisition of raw supplies to the production and distribution of finished goods. Lord Malukath ([[hashalaq]] [[Inspired]] [[shaper|psion]]) guides the Forge from the massive bastion of [[Dul Kalent]].
Maintained by [[devil]]s, this oppressive layer is the embodiment
of prison—the inevitable consequence of challenging the law.
With the full power of [[Daanvi]] behind it, the Inescapable Prison
makes [[Dreadhold]] look like a cell in the local sheriff's office. It's
designed to hold [[celestial]]s, [[elemental]]s, and other beings with
vast power; there are convicts here from a half-dozen [[plane]]s of
existence. Mortals can also be imprisoned here; their biological
processes are put in suspension, so they don't need to eat or
drink, and they don't age. It's rare for mortals to end up here, but
there may be a few legendary historical figures, long thought
dead, who have instead been held in the Inescapable Prison!
The nigh-unstoppable inevitables are [[construct]]s native to [[Daanvi]], the Perfect Order. They are dedicated to enforcing the law in all its aspects, and are often assigned to enforce specific contracts. They possess the ability to teleport creatures to the [[Hall of Justice]] to await judgement.
Uttering a dark incantation and sacrificing a ruby or other valuable item worth at least 100c, you summon a [[devil]] from a [[demiplane]] of [[Khyber]] or another [[plane]] of existence. You choose the devil's type, which must be one of [[tier 2|creature tier]] or lower, such as a [[barbed devil]] or a [[bearded devil]]. The devil appears in an unoccupied space that you can see within 90 feet. The devil disappears when it is incapacitated or when the spell ends up to 1 hour later (or if your concentration breaks).
The [[devil]] is unfriendly toward you and your companions. It is under the DM's control and acts according to its nature, which might result in its attacking you if it thinks it can prevail, or trying to tempt you to undertake an evil act in exchange for limited service.
For as long as the spell lasts, you can try to issue a verbal command to the devil. It obeys the command if the likely outcome is in accordance with its desires, especially if the result would draw you toward evil. Otherwise, you must make a Persuade attempt to command it. Gain an advantage if you say the devil's true name. If your attempt fails, the devil becomes immune to your verbal commands for the duration of the spell, though it can still carry out your commands if it chooses. If your attempt succeeds, the devil carries out your command—such as "attack my enemies," "explore the room ahead," or "bear this message to the queen"—until it completes the activity, at which point it returns to you to report having done so.
If your concentration ends before the spell reaches its full duration, the devil doesn't disappear if it has become immune to your verbal commands. Instead, it acts in whatever manner it chooses for up to 20 minutes, and then it disappears.
Some say if you possess an individual devil's talisman, you have wield complete control over that devil when you summon it.
If you are able to cast legendary-tier spells, you can cast this spell as such to summon a [[tier 3|creature tier]] devil.
While wearing these beautiful scaled gauntlets, you can [[push yourself]] to ignite them for up to one minute, scorching anything you strike. In addition, you can cast the [[burning hands]] spell.
Infernos are isolated [[layer]]s of [[Fernia]] that showcase a particular act of
destruction by fire. One inferno is a burning city, where [[devil]]s
direct bombardment and [[demon]]s dance about, spreading
the flames within. In another layer, a lone [[balor]] oversees the
devastation of an ancient forest. These fires never end; parts
of the layer are rebuilt even as others are consumed, and the
inferno continues forever.
[[Dolurrh]]'s [[Library]] merely contains records of every mortal soul
that's passed through it. By contrast, [[Daanvi]]'s Infinite Archive
contains records on every being that's ever existed. Here, the
data gathered by the [[Panopticon]] and the rulings of the [[Hall of Justice]] are recorded and efficiently preserved. Records focus on
each individual's deeds, whether they've adhered to or violated
countless codes of legal and moral standards. Daanvi doesn't
generally do anything with this data; they have no jurisdiction
to act on it. So through your life, the immortals of Daanvi have
watched and judged your every action. You aren't rewarded or
punished for your deeds, but they know what you've done, and
it's forever preserved on your permanent record.
Mortals must present an excellent reason—or bribe a [[devil]]—to get access to the Archive, but it's not as restricted as the
[[Panopticon]]. The Infinite Archive lives up to its name, and is
unknowably vast. If adventurers have a legitimate inquiry, a [[deva]]
sage can be quite helpful. Working with [[modron]]s is a long and
tedious process, while devils make it even more unpleasant.
When people think of
[[inquisitive]]s, House [[Tharashk]] usually springs to mind. Kalaash'arrna, a cunning man with the [[Mark of Finding]], runs Information Acquisition (Lhash'ta'raak in the [[orc]]ish tongue) for
the house. As the name implies, InAc specializes in
information gathering—shadowing people, digging
up dirt, and similar, often unsavory tasks.
Kalaash'arrna never betrays his clients; however, he is completely ruthless when it comes to fulfilling his contracts. Kalaash comes from one of the
poorer families of the house. The success of InAc
directly reflects on his family, and he is determined
to prove his value to the house.
While Kalaash serves as the primary [[inquisitive]] at InAc, he employs four lesser inquisitives, all unmarked members of House [[Tharashk]] (both
[[human]]s and [[half-orc]]s).
The //ingots arcanum// are artifacts crafted by the ancient [[giant]]s of [[Xen'drik]]. Each
has the appearance of a thick metal staff covered with runes, cumbersome for [[humanoid]] characters to hold but perfectly wand-sized for giants. Any creature of the [[giant]] type can activate an //ingot arcanum// even without spellcasting ability.
Each ingot bears sigils and runes along its length that hint at its function. An //ingot arcanum// measures up to 28 inches in length and 6 inches in diameter, and weighs
75 pounds.
A few //ingots arcanum// commonly mentioned in legend are detailed below.
* ''//Ingot Libertatis://'' During the war with the [[quori]], many [[giant]]s fell stricken with [[psionic|psionics]] curses and vile [[enchantment]]s. Ancestors of the [[storm giant]]s of the floating City of Indigo Shadows forged these silver ingots to tend to their brethren. Carved with sigils in the form of broken chains, an //ingot libertatis// allows the wielder to cast [[dispel magic]] with advantage to break any [[enchantment]] effect.
* ''//Ingot Aperintis://'' The great size that makes [[giant]]s so formidable in combat can sometimes be a drawback. These copper ingots shot through with holes were forged by the giants of the ruined city of Cordipal, allowing them passage into small places. An //ingot aperintis// allows the wielder to cast [[passwall]] at will, and to shrink themselves as a [[potion of diminution]].
* ''//Ingot Venenantis://'' The hardy [[Sulat|Sulat League]] giants who once made their homes in the Caldera of [[Fernia]]’s Heart forged these ingots to surprise enemies who prepared only against fire attacks. Each iron ingot bears wispy engravings that suggest clouds, and allows the user to cast [[cloudkill]] at will.
Formerly of the [[Library of Korranberg]] in [[Zilargo]],
Professor Ingrim Jod Jarell is a thin, bespectacled [[gnome]] with
rather severe facial features (and a temperament to match). A dedicated leader within the [[Crimson Codex]], she served for many years as one of [[Khorvaire]]’s
leading scholars on the history of magic in [[Xen'drik]] and [[Sarlona]].
Her identity as an operative of the Codex was compromised, however, when she risked an unwise collaboration with the [[Lords of Dust]] to secure a [[schema]] in the heart of the [[Mournland]]. Summarily dismissed from the Library and pursued by several wronged parties, Jarell fled to [[Stormreach]] where she was taken in and sheltered by her true colleagues.
Jarell now remains almost entirely underground,
literally and figuratively, protected by the [[Codex|Crimson Codex]]’s
intricate network of influence in [[Stormreach]]. She is
still a formidable scholar, and virtually every artifact
the Codex acquires in [[Xen'drik]] crosses her desk at
some point. Her knowledge of ancient magic is vast,
and anyone looking to obtain particularly obscure
information would do well to consult her.
Inquisitives put their keen minds and dogged determination to use unraveling mysteries. Inquisitive agencies run the gamut from private investigators to networks of
detectives supported by [[dragonmarked house]]s.
House [[Tharashk]]'s [[Finders Guild]], House [[Medani]]'s [[Warning Guild]], and House [[Deneith]]'s [[Sentinel Marshals]] all employ inquisitives with and without [[dragonmark]]s. The [[Sharn Watch]] and [[King's Citadel]] also include inquisitives devoted to solving crimes and tracking down the perpetrators.
!! People and Places Tagged "inquisitive"
<<list-links-article "[tag{!!title}sort[title]]">>
The rulers of distant [[Sarlona]] are known as the Inspired. These noble families are said to be bound to celestial spirits that guide and empower them, but the truth is far
darker. The Inspired are the mortal hosts of the nightmare spirits of [[Dal Quor]], and they carry out the foul
agenda of the [[Dreaming Dark]].
Any [[humanoid]] who can dream can volunteer to serve
as a [[quori]] vessel. But the Inspired of [[Sarlona]] are [[human]]s bred with traces of [[elf]] and [[fiend]] blood to be such vessels. These vessels (known as the [[Chosen]] before possession) have no choice in this destiny, since they can't resist quori possession.
Physically, Inspired resemble the [[kalashtar]], possessing
an almost supernatural beauty.
Most of the people of the [[Five Nations]] have heard
of the Inspired lords in [[Riedra]]—never realizing that
Inspired are spread throughout [[Khorvaire]] as well.
Beggars and generals, mayors and merchants might
all be secret servants of the [[Dreaming Dark]]. Such individuals have to willingly accept [[quori]] possession, but the Dreaming Dark has long experience in weaving dreams
that can convince mortals to surrender their bodies.
While you are playing this musical instrument, you can create harmless, illusory visual effects within a 5-foot-radius sphere centered on the instrument. If you are a [[bard]], the radius increases to 15 feet. Sample visual effects include luminous musical notes, a spectral dancer, butterflies, and gently falling snow. The magical effects have neither substance nor sound, and they are obviously illusory. The effects end when you stop playing.
An intellect devourer resembles a walking brain protected by a crusty covering and set on bestial clawed legs. This foul aberration feeds on the intelligence of sentient creatures, taking over a victim's body on behalf of its mind flayer masters.
[[Mind flayer|mind flayer]]s breed intellect devourers to serve as roaming hunters, taking the brain of a thrall and subjecting it to a disgusting ritual. As it sprouts legs, the brain becomes an intelligent predator as twisted and unknowable as its masters.
An intellect devourer consumes a creature's mind and memories, then turns the host body into a puppet under its control. An intellect devourer typically uses its puppet host to lure others into the domain of the mind flayers to be enthralled or consumed.
Intelligence agencies are often attached to governments or [[dragonmarked house]]s, gathering information on the activities and plans of rival nations, houses, and businesses. It's said the [[Last War]] was fought as much by spies as by armies. Espionage agencies in every nation sought secrets to bring military supremacy to their own lands and gain dominance over their neighbors. In the years since the end of the war, a clandestine struggle among these agencies (which the [[Korranberg Chronicle]] has dubbed the "Shadow War") has continued unabated, just outside of the public eye.
!! Nations
<ul>
<$list filter="[tag[intelligence agency]tags[]tag[nation]] [tag[intelligence agency]tags[]tags[]tag[nation]] +[sort[title]]">
<li>{{!!article}}<$link overrideClass="graylink"/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[intelligence agency]] [tag<currentTiddler>tagging[]tag[intelligence agency]tags[]tag<currentTiddler>category[location]] [tag<currentTiddler>tagging[]tag[intelligence agency]tags[]tag<currentTiddler>!title[intelligence agency]category[organization]] +[sort[title]]">
<$list filter="[<currentTiddler>tag[intelligence agency]]" emptyMessage="""<li>{{!!article}}<$link overrideClass="graylink"/></li>""" variable="noop">
<li>{{!!article}}<$link/></li></$list>
<ul>
<$list filter="[tag<currentTiddler>tag[intelligence agency]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[intelligence agency]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[intelligence agency]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
!! Dragonmarked Houses
<ul>
<$list filter="[tag[intelligence agency]tags[]tag[dragonmarked house]] +[sort[title]]">
<li>{{!!article}}<$link overrideClass="graylink"/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[intelligence agency]] [tag<currentTiddler>tagging[]tag[intelligence agency]tags[]tag<currentTiddler>category[location]] [tag<currentTiddler>tagging[]tag[intelligence agency]tags[]tag<currentTiddler>!title[intelligence agency]category[organization]] +[sort[title]]">
<$list filter="[<currentTiddler>tag[intelligence agency]]" emptyMessage="""<li>{{!!article}}<$link overrideClass="graylink"/></li>""" variable="noop">
<li>{{!!article}}<$link/></li></$list>
<ul>
<$list filter="[tag<currentTiddler>tag[intelligence agency]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[intelligence agency]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[intelligence agency]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
A creature you touch becomes invisible for up to 1 hour. Anything the target is wearing or carrying is invisible as long as it is on the target's person. The spell ends for a target that attacks or casts a spell.
If you are able to cast rare-tier spells, you can cast this as such to make the invisibility persist if the target attacks or casts a spell, but the duration is shortened to only a few minutes. Alternatively, you can target up to three creatures with this spell simultaneously.
You are immune to all damage for 10 minutes or until your concentration breaks.
Io is the Ninefold Dragon, the Concordant, the Great Eternal Wheel, Swallower of Shades, and Creator of Dragonkind. It was Io's hand that stirred the blood of [[Siberys]] as it rained onto [[Eberron]] and breathed life into the first [[dragon]]s thus spawned. Io subtly manipulates the destinies of all dragons, always acting for the benefit of dragonkind as a whole.
//From the moment it appears on the horizon, the city is a beacon against the darkening sky. Walls of white rise and twist against the highest reaches of the black peak, gleaming in the day’s dying light. From one of the great towers that ring those walls, dark shapes shoot up—wyvern riders, from the look of them, winging into flanking position to shadow your approach. Atop the closest tower, dragons are perched, watching you idly. Beside them stand giants armed with mighty greatswords, the nighttime city beyond them blazing with spell-light as you begin your descent.//
Even among the nondragons of [[Argonnessen]],
Io'lokar is often thought of as myth. Beyond the [[dragon]]
continent, many experienced adventurers have never
heard of it. Argonnessen is a land of high-level and
epic campaigns, and nowhere is this fact reflected more
than in the City of Knowledge. From the highest to the
lowest, the [[Io'lokari]] are unequaled warriors, brilliant
sages, powerful spellcasters, and masters of the arts of
a dozen races.
The [[Io'lokari]] are the masters of vocations both
great and mundane, and all reap the benefit of their
advanced society. A lowly clerk living in the [[Freeward]]
might well have accumulated knowledge would make a [[Morgrave|Morgrave University]] professor weep.
The people of Io’lokar do not have access to the
full power of [[dragon]] magic. The fate of the [[giant]]s of
[[Xen'drik]] has ensured that no nondraconic culture will
ever be granted such a boon again. Nonetheless, magic
permeates every corner of the city and every one of its
people, and a first visit to Io’lokar can induce awe in even
jaded explorers.
Io'lokar, the City of Knowledge, rose from the ashes of [[Io'vakas]] over a thousand years ago. Within the city, spell-light is infused into the air
itself, rising and falling according to the time of day
and the presence of passersby. Residents and visitors
alike within Io’lokar’s walls can access the powers of
flight and short-distance teleportation (as [[dimension door]]), though teleporting into or out of public spaces is considered somewhat rude. Magic tempers the
climate and the seasons, feeds the city’s people, and
hones the skills of its scholars, artisans, and workers to
unnatural levels.
The [[Io'lokari]] are not given to ostentation or casual
displays of power, however. The city has no floating
towers or wanton exhibitions of sorcerous might.
Though its walls and buildings are reinforced by arcane
power, they were raised one stone at a time. However,
within these nondescript apartments of multicolored
marble can be found collected lore rivaling that of [[Morgrave|Morgrave University]], [[Wynarn|University of Wynarn]], and [[Korranberg|Library of Korranberg]] combined—all the product of a humble working-class people whose lives more closely resemble those of lords and kings.
!! Life in Io'lokar
In the twelve hundred years since its founding, the City of Knowledge has grown from a mountainside fort (part of what is now the [[Freeward]]) to its present form. Within
its walls, scholars, crafters, and artisans from a dozen
non[[dragon]] races live side by side in common cause and
culture. Though the [[Warders]] long ago stepped back to
let the [[Io'lokari]] run their own affairs, the city remains dedicated to allowing nondragon culture to flourish on its own terms.
After observing the [[Warders]] for three thousand years, however, many
of the city’s sages believe that the Warders had a deeper
purpose in their creation of a nondragon city within the
[[dragon]] continent. In the same way that the dragons are
said to shun [[Sarlona]] because they have seen that land’s
destruction in the unfurling of the [[Draconic Prophecy]],
some suggest that the Prophecy predicts the eventual
destruction of all nondragon life on [[Eberron]]. Whether
this destruction will come at the hands of the [[quori]], some
unknown magical or natural disaster, or through the
actions of the lesser races themselves remains unknown.
Either way, Io'lokar (and [[Io'vakas]] before it) might have
been created as a safe haven for humanity—a place in
which the scions of [[Sarlona]], [[Xen'drik]], and [[Khorvaire]]
might live on.
Today, the city is home to the some of the finest crafters, artisans, and spellcasters in the world. However, mercantilism does not drive the art, craft, and magic of Io’lokar as it does in [[Khorvaire]]. Coin has no value here. Gems have use as currency only if they appeal to an individual Io’lokari’s eye. All Io’lokari work toward the continued survival of the city and the betterment of their own lives.
!!! Commerce
For the [[people of the City of Knowledge|Io'lokari]], wealth lies
in the life of learning and wonder that each new day
brings. Goods and services are traded on the basis of
effort alone—a day’s labor from a city street sweeper is
considered equal to a day’s labor from the highest-level
spellcaster, warrior, or sage.
Many high-level adventurers from [[Khorvaire]] have
trouble adjusting to the idea that wealth built up over a
lifetime is all but worthless in Io’lokar. In the taverns of
the city, the Io’lokari drink for free, trading their day’s
work for the labor of brewer and barkeep. Visitors to the
city have no such capital, though PCs can typically trade a first night on the town for tales or songs of the outside world. Characters staying longer in the city need to establish what goods or services they can offer that are worthy of barter.
The [[Io'lokari]] want for very little, but fine jewelry,
magic weapons, magic armor, and wondrous items usually retain their value in the city. This value is relative, however, and does not scale in the same way as gold piece
pricing. A tavernkeeper willing to barter a month’s lodging for a magic weapon makes no distinction between a [[blade of rime]] and a [[frost brand]]. Either option satisfies his desire for a magic blade, and is thus fair trade for the PCs’ need for a comfortable room and good food.
!!! Magic
Some speculate that [[sorcerous|sorcerer]] blood is one of the criteria originally used by the [[dragon]]s to select those who would live in [[Io'vakas]], but it seems just as likely that the [[Io'lokari]]’s advanced knowledge of magic simply allows them to fully develop even the slightest trace of spellcasting potential. Virtually all the citizens of Io’lokar have some spellcasting ability, and that ability far outshines the spellcasting talents of the workaday [[magewright]]s of [[Khorvaire]]. Io’lokar represents a good opportunity to introduce new and unusual [[spell]]s and [[magic item]]s from non-Eberron supplements into your game.
!! Getting There
As with any location in [[Argonnessen]], getting to Io'lokar
by ground can be a daunting task. Travel by air is easier,
whether on flying mounts or by magic. However, such
flights are almost guaranteed to attract the attention of
[[rogue dragon]]s and other predators.
Once characters have been to Io’lokar, teleportation becomes the easiest way to and from the city. This method is typically used by [[Io'lokari]] abroad, and such travelers often teleport parties of strangers back with them. However, it is not financial gain that drives Io’lokari altruism, but knowledge and the prosperity of the city as a whole. PCs must convince an Io’lokari that their need to visit the city warrants such a trip.
Though the city controls no territory, the area around the mountain is patrolled by [[dragon]]s loyal to the cause of the [[Warders]]. For the most part, Io’lokar’s immediate
neighbors are at least indifferent to the city’s existence, but holds in the [[Vast]] can change hands with little warning.
!! The City Wards
Io’lokar consists of five walled wards rising up the slope
of the mountain. Like the draconic culture on which it
was modeled, rank and respect for power are the heart
and soul of the city. Wards are defined by the work that goes on there and the relative power of their residents. In general terms, the higher the ward, the higher the level of the characters to be found there.
# the [[Freeward]]
# the [[Terrace]]
# the [[Sunward]]
# the [[Height]]
# the [[Bastion]]
!! Features of the City
Presented below are just a few of the sites of possible interest to PCs looking to use Io’lokar as a base of operations for an [[Argonnessen]] campaign. Io’lokar is unlike any [[Khorvairian|Khorvaire]] city, however, and traditional shops and places of business are all but unknown here. The difference between a tavern and a house with a large living room and a jovial host is often irrelevant to the [[Io'lokari]].
<<list-links-article "[category[location]tag{!!title}!tag[ward]sort[title]]">>
!! Notable Io'lokari
Io’lokar is home to some of the mightiest NPCs on
[[Eberron]]. The following are only a few examples of the
characters that might be found here.
<<list-links-article "[tag{!!title}category[person]] [tag{!!title}category[entity]] +[sort[title]]">>
With the exception of the [[kalashtar]], all the advanced
non[[dragon]] races of [[Eberron]] were present at the creation of [[Io'lokar]] in [[Argonnessen]], and they remain a part of the city to this day. The descendants of lesser races gathered by the dragons of old from across [[Eberron]], the Io’lokari
have long since developed a culture all their own.
Given names are a unique blend of Draconic and a
dozen other languages, while surnames are unknown
here. The folk of the city have an in-depth knowledge
of their own genealogy (a necessity in such a closed
population); an Io’lokari knows which of their fellow
citizens they are closely related to. Even so, they and their
relatives are considered full family to the [[elves|elf]],
[[orc]]s, [[changeling]]s, and all the other races they work
alongside. Likewise, the [[goblin]]s and [[dwarves|dwarf]] working side by side in the [[Freeward]] would be culturally unrecognizable to their distant kin in [[Darguun]] or the
[[Ironroot Mountains]].
Like their [[dragon]] patrons, the Io’lokari are an
insular society—many live their whole lives without ever
setting foot outside the city walls. Those who travel
typically do so for scholarly pursuits, journeying across
[[Argonnessen]] and beyond. [[Io'lokar]] is hardly a prison,
however, and powerful citizens often leave the city to
take up positions as advisors or scholars with benevolent
[[dragon]] lords or agents of the [[Chamber]].
Although the mightiest citizens of [[Io'lokar]]
would no doubt have little trouble establishing themselves as powerful lords in [[Khorvaire]] or [[Xen'drik]], those lands have little to offer. A high-level [[Khorvairian|Khorvaire]] might dream of wealth or power. A high-level
[[Sarlona]]n might dream of ending injustice. Io’lokari
dream of peace, friendship, and the pursuit of ever
greater knowledge. Their city is the best place to
achieve that.
Io’lokar’s population has been effectively stable
for nearly four hundred years, even with a steady
number of immigrants. The city has high standards,
and those unable to meet them usually have little
interest in embracing its philosophies in the first
place. Powerful NPCs sometimes flee here from the
holds of other dominion lords, typically infuriating
their former masters. Often, refugees from the [[Vast]]
come to Io’lokar in greater numbers than the city can
handle. Once such folk are returned to health, it is
thought that the Io’lokari quietly teleport them to
the holds of more benevolent lords, but this has never
been confirmed.
Of all those who seek the City of Knowledge, only
[[yuan-ti]] are denied entry. Although
the Io’lokari know that examples of nobility exist
even among the serpent folk, the dragons’ dedication to destroying these creatures
makes their presence in the city too great a risk.
No matter what their moral bent, the Io’lokari
take a decidedly neutral approach to the affairs of
[[Eberron]]. Like the [[Warders]] who first brought their
ancestors here from [[Io'vakas]], the folk of [[Io'lokar]] are emphatically
devoted to the [[Draconic Prophecy]]. However, unlike the [[dragon]]s
of the [[Chamber]], the Io’lokari are content to watch
history unfold on its own terms. A party seeking aid
in Io’lokar to prevent some [[Khorvaire]]-wide catastrophe and another group hunting the epic magic with which to cause that catastrophe would likely both be met with indifference.
This is not to say that Io’lokar is inhabited solely by distant aesthetes or self-obsessed scholars. The folk of the city are a rich and varied lot, and [[Chamber]] sympathizers, sages skimming secrets from their colleges, and adventurers who have developed a taste for profit can all be found here. The appearance of a band of Khorvairian
adventurers causing trouble might be all it takes to bring such characters out of the shadows.
Throughout their long history, the [[dragon]]s of [[Argonnessen]] have built no cities for their own kind. However, some thirty centuries ago, a great nondragon city
called Io’vakas was founded by the [[Warders]]—a group
of a dozen dragons dedicated to improving the lot of
Argonnessen’s lesser races. With dragon magic and
the labor of nondragon subjects collected from across
[[Eberron]], the Warders built a walled enclave deep in
the south of the [[Vast]]. Under the tutelage of their
draconic lieges, the citizens of Io’vakas—the Gate of
Knowledge—became enlightened dragon worshipers
with an advanced understanding of nature, science,
and magic.
Today, Io’vakas is a mass of shattered stone jutting up from ground made barren by dragon fire. Its nearby sister city, [[Io'lokar]], the City of Knowledge, rose from the ashes of Io’vakas just over a thousand years ago.
!! History
The creation of Io’vakas thirty centuries
ago was preceded by centuries of debate and
anger among the [[dragon]]s of [[Argonnessen]].
With the [[Chamber]] still in its infancy, most
dragons opposed the [[Warders]]’ plans for
empowering the lesser races. The idea of
sharing even a small amount of draconic
knowledge was anathema to many dragons,
the fate of [[Xen'drik]] still sharp in their
memories. In the end, though, the Warders
prevailed. Io’vakas was built in the [[Vast]] with
the tacit blessing of the [[Conclave]] and the
[[Eyes of Chronepsis]], and for two thousand
years, the city thrived. Then the [[yuan-ti]]
came from [[Sarlona]], and the doomsayers
proved correct.
When the serpent folk arrived in
exile, the best among them were invited
to Io’vakas. There, they joined the other
nondragons of the city in a bountiful
life that included worship of the fifteen ascended spirits of the [[Sovereigns|Sovereign Host]]—a gift of faith to the nondragons from their
[[dragon]] masters. However, at least one
sect of the Io’vakas yuan-ti sought more
power than the Sovereigns could grant.
In secret, this group claimed the direct
worship of the [[Dragon Gods]]—and the
deepest mysteries of dragon magic—for
themselves.
When this blasphemy was eventually
discovered, the [[dragon]]s who opposed the
Io’vakas experiment demanded a swift
and final response. Refusing to distinguish between those who transgressed
and the bulk of the loyal [[yuan-ti]], or even
the Io’vakas citizenry as a whole, draconic
might was unleashed. Under a storm of
lightning, frost, and fire, Io’vakas was
leveled. A dozen or so yuan-ti escaped to
the catacombs beneath the city; the rest of
the serpent race, including all the priests, was destroyed. From ruined Io’vakas, a pathetic few nondragon survivors fled to the plains beneath a sky darkened by gathering [[rogue|rogue dragon]]s, anxious to add these so-called scions of knowledge to their own herds.
Then [[Arnaarlasha]], a noble [[gold dragon]]
great wyrm of the [[Warders]], descended to the wasted plain. She and a dozen elder [[dragon]]s loyal to her formed a protective cordon around a thousand desperate survivors of the city. On foot, they shepherded their charges across hostile territory to the slopes of Mount Erishnak, a granite peak in the center of Arnaarlasha’s
own adjacent territory. To the assembled [[rogue|rogue dragon]]s and the
[[Soldiers of the Light|Light of Siberys]] who had pounded Io’vakas and her
inhabitants to rubble, Arnaarlasha declared the surviving nondragons free subjects of her dominion. Over the year that followed, high on the mountainside, [[Io'lokar]] was raised.
[[Arnaarlasha]] never spoke of what drove her actions
that day on the plains, nor will she ever do so. Four
hundred years ago, the great wyrm’s death marked the
city’s darkest hour, and a turning point. Within a day,
[[Io'lokar]] was besieged by a coordinated attack of [[rogue dragon]]s intent on claiming Arnaarlasha’s territory and razing the city. Beneath arcane defenses honed over
six centuries, the city’s mages stood fast. Alongside the
[[Warders]], flights of [[wyvern]] riders launched themselves
from the [[Moontowers]], harrying rogues in the air as they
rained arcane fury against their reinforcements on the
ground. After four days, the rogues retreated. Io’lokar
stood fast, and its victory in the Battle of Arnaarlasha’s
Fall is celebrated to this day.
Throughout the great battle, the [[Eyes of Chronepsis]] and the [[Light of Siberys]] were conspicuous by their absence, a display of indifference they maintain to this day. As long as the [[Io'lokari]] are careful to stay within the boundaries of behavior proscribed for them when [[Io'vakas]] was new, the [[Conclave]] seems content to leave the city be. However, both the Io’lokari and the [[Warders]] accept that the city exists at the Conclave’s whim. If any nondragons seek the forbidden lore of dragonkind once again, or should any [[yuan-ti]] presence be again tolerated, no force of will or lesser magic will be enough to save them.
!! Beneath the Ruins
A cabal of [[yuan-ti]] have secretly laired in the ruins of Io'vakas since the city's fall. Their [[pureblood|yuan-ti pureblood]] spy [[Sura]] operates from inside [[Io'lokar]].
The ir'Tains are the most powerful family in [[Sharn]]. An ir'Tain served as the first [[Lord Mayor of Sharn]], and the first towers were raised with ir'Tain gold. Today the [[half-elf]] family derives most of its income from its vast holdings throughout the city; many of the tenements and apartment complexes are ir'Tain property. The Tain Manor in [[Brilliant|Skyway]] is only the latest in a long line of mansions to hold that name, and many of the former Tain Manors are now owned by the wealthiest citizens of other districts.
Despite their wealth and power, the ir'Tains
have no connection to the [[Aurum]]. While the cabal
has approached members of the family, the ir'Tains
feel that an alliance with the Aurum would be an
insult to the pride and integrity of the clan.
!! Prominent Members
* [[Celyria ir'Tain]], matriarch of the [[Sharn]] branch
* [[Hass ir'Tain]], Celyria's eldest son
In descending order of age, the other members
of the core family are Cyra ir'Tain, Cariana ir'Tain, and Daral ir'Tain. Lord [[Dalian ir'Tain II]] is said to have perished in a shipwreck during the end of the [[Last War]]. The ship
supposedly went down deep in the territory of the
[[sahuagin]], but Lord ir'Tain's body was never recovered. Rumors abound that ir'Tain is still alive—that he is a pirate captain, a prisoner of the sahuagin, or the
prince of a lost kingdom in the jungles of [[Xen'drik]],
depending on which tale you believe.
The [[House Jorasco enclave|Jorasco Enclave (Stormreach)]] in [[Stormreach]] is managed by Iriakan d’Jorasco. A recent immigrant from the [[Talenta Plains]], Iriakan is eager to improve the house’s influence throughout [[Stormreach]] and offers bargains to adventurers who help him with this goal.
In Irian, birds sing in a fertile valley, while a group of settlers work together to raise their first home. Moving further in, you find the gleaming capital of a new empire, where cheering throngs celebrate in the streets. There are dozens of layers in Irian, and each one is a vision of life triumphant. Irian is the dawn that inevitably banishes even the darkest night, the promise of spring triumphing over the coldest winter. It's the bastion of hope, the promise that life always find a way.
In his Planar Codex, [[Dorius Alyre ir'Korran]] calls Irian the Plane of Light, and indeed, its light is so prevalent that there's no full darkness within Irian. But it's also the plane of life, the source of positive energy, the force that sustains life and underlies most healing magic.
!! Universal Properties
The light of the Eternal Dawn strengthens the living. Darkness
and disease have no place here, and minor injuries melt away.
Irian has the following universal properties.
* //''Radiant Power.''// Spells that restore health or deal radiant damage are magnified.
* //''Necrotic Void.''// In order to cast a spell that deals necrotic damage, any consequences to that roll include one additional stress from casting the spell.
* //''Pure Light.''// There is no darkness in Irian. Any spell, effect, or other situation that would usually create darkness only reduces the lighting to dim light.
* //''Life Triumphant.''// [[Undead|undead]] creatures are significantly enfeebled. This has no effect on undead creatures that are sustained by Irian, such as the [[deathless]] elves of [[Aerenal]].
* //''The Light of Life.''// The light of Irian restores vitality, granting the following benefits to all living (or deathless) creatures. These have no effect on [[Mabar]]an [[undead]] or [[construct]]s.
** Extremely rapid recovery of injuries.
** Resistance to poison, disease, and fear.
* ''Standard Time.'' Time passes at the same pace as on the Material Plane, and is consistent across its layers.
!! Planar Rebirth
Most of the planes are fixed in their form; for example,
every mortal brings new dreams to [[Dal Quor]], but the plane's
structure doesn't change. [[Mabar]] is an exception: the Endless Night steals and corrupts fragments of other planes, adding
them to its layers. Left unchecked, Mabar would consume
reality. But as the Endless Night consumes, the Eternal
Dawn creates. Whenever Mabar tears a fragment from
another plane, a new planar seed appears in Irian. Initially,
this is a small layer, populated by [[ember]]s and [[lumi]], that
has Irian's planar properties. Over time, the layer grows
and evolves, and the environment and its inhabitants take
on the appearance of the void it's to fill. Little by little, it
loses the properties of Irian and adopts the properties of
its destination plane; when it finally loses the //Light of Life//
property, its ties to Irian are severed and it fully becomes
part of the other plane, replacing the region lost to [[Mabar]].
The planar seed is rarely a perfect match for the fragment
that was lost. The [[ember]]s take the form of local life, but
especially for fragments torn from the Material Plane, a
planar seed doesn't replace sentient creatures or buildings; it
simply restores land and wildlife. If the [[Mourning]] had been
the work of Mabar—which is unlikely for many reasons, but
not impossible—Irian wouldn't restore the people killed in the
Mourning or the destroyed structures, but it would restore life
to the land and make it a welcoming environment.
In most planes, [[immortal]]s can't reproduce, but they're reborn
if they die, and their numbers remain constant. Irian breaks
that rule, because it creates new immortals to replace those
corrupted by [[Mabar]]. These begin as [[lumi]] and [[angel]]s, but as
the seed loses its properties, these immortals evolve into the
denizens of that plane, drawing their personalities from the
template for the new immortals. Irian makes no judgment about
the spaces it fills, and it may create a squad of bloodthirsty
[[demon]]s when it replaces a lost fragment of [[Shavarath]]. These
seed immortals can't leave their layer until it's fully bound to their
final plane, so they can't wreak havoc in Irian, but it would be
quite a surprise for nosy adventurers that stumble into that layer!
The creation of seeds is an important drive for the
inhabitants of Irian. Immortals monitor and guide the
formation of the seeds, while [[lumi]] tend the [[ember]]s and prepare
to become inhabitants of the new plane. Irian immortals rarely
interfere in other planes, because what they're already doing is
the most important task they could perform.
!! Denizens
Most inhabitants of Irian fall into one of the following categories.
!!! Embers and Lumi
[[Embers|ember]] are the [[manifestation]]s of Irian, each linked to an echo of a specific living mortal's brightest joys, deepest hopes, and greatest deeds. When a mortal dies, their light-shadow ember in Irian begins to fade, but sometimes, fading embers can merge into a [[lumi]], a truly conscious and living creature of positive energy.
!!! Celestials
Irian's [[immortal]]s are spirits of light and hope. Irian is noteworthy
for being the home of the [[ki-rin]]. These majestic creatures often
act as emissaries for the [[Architect]]s. Each planar seed has a ki-rin
assigned to monitor it, help the lumi, and ease transition.
Irian is also home to [[angel]]s. Not as violent as the angels of
[[Shavarath]] or as individualistic as the angels of [[Syrania]], the angels of Irian embody the general principles of hope and
compassion. Irian [[deva]]s assist the [[lumi]] and help sustain
the different [[layer]]s; they are the knights and scholars of the
[[Amaranthine City]]. Devas often change their form to play multiple
roles within a layer, and adventurers may think that they've
encountered multiple people, when in fact it's a single deva.
Meanwhile, [[planetar]]s act as champions and ministers, and each
of the [[Architect]]s has a single [[solar]] that serves as its right hand.
The angels of Irian have wings formed of light, which they
can conceal if they wish. In their true form, they're luminescent
humanoids of indeterminate species, but can choose to appear
to mortals as a generic member of the viewer's species. Devas
also possesses the ability to change into specific forms at will.
!!! The Architects
The [[Architect]]s are the most powerful spirits of Irian. Each
embodies an aspect of the plane, and oversees a region
within it, as discussed in the “Layers” section.
!! Layers
It's always morning in Irian; the skies are clear, the sun is
fixed in the sky, and the moon [[Barrakas]] is faintly visible. The
plane contains many [[layer]]s, and it's always growing new ones.
While the setting of a layer varies—a verdant valley, a growing
city, a newly established farm—the story is always about life,
growth, and hope. Things are growing, people are prosperous,
and the future is bright. While there are many natural
environments in Irian, it's this optimism that differentiates
them from those of [[Lamannia]]. Irian is a celebration of life;
Lamannia focuses on the untamable primordial power of
nature, and often feels more threatening and wild.
The layers are linked in realms, each of which is bound
to one of the [[Architect]]s. The denizens and themes of a layer
reflect the influence of that Architect, so all of the layers of
the [[Garden]] have a focus on rustic nature, while those tied to
the [[Amaranthine City]] reflect its rising imperial power. Some
layers are bounded by physical barriers, but most either loop
back on themselves or end in walls of warm mist—anyone
who wanders into the fog reemerges elsewhere in the layer.
Within realms, layers are often connected by physical portals
like a massive gate or a pool of light. Moving between realms
requires [[plane shift]] or a ritual tied to that realm. These rituals
may not be magical; they are simply secrets that have to be
learned. If you're in the [[Amaranthine City]] and you want to
travel to the [[Garden]], all you have to do is plant a flower and
reflect on its beauty; those thoughts will carry you there.
Planar seeds sprout from realms. Early on, they're small layers
with indistinct themes, but expand and gradually take on the
nature and properties of the plane they're to become. Thus, you
could stumble into a layer that replicates a piece of [[Dolurrh]]'s
[[Catacombs]] or represents conflict in [[Shavarath]]. However, these
layers aren't fully developed—once they are, they move onto
their destination plane—so Irian's seed of the Catacombs of
Dolurrh won't have the entrapping effect of Dolurrh itself.
Here are three examples of realms, but there are many more.
* the [[Amaranthine City]]: Growth
* the [[Garden]]: Life
* the [[Refuge]]: Hope
!! Planar Manifestations
Here are a few of the ways Irian can affect the Material Plane.
!!! Manifest Zones
[[Manifest zone|manifest zone]]s tied to Irian are wellsprings of positive energy.
Plants and animals thrive in these zones, while people are
less likely to dwell on negative emotions and find it easier to
embrace hope and joy. Irian zones often have one or more
of the plane's universal properties. Irian zones with the
//Radiant Power// property support spells of healing and may
enable rituals or support [[eldritch machine]]s that can't be built
anywhere else. In particular, the [[City of the Dead|Shae Mordai]] in [[Aerenal]]
is built on a strong Irian manifest zone, which sustains the
[[deathless|Undying Court]] councilors.
Irian zones rarely extend the full swift healing effect of Irian's
//Light of Life// property, but weaker versions of this property are
common when in an Irian zone. For this reason, these zones a valuable
natural resource, and often become the foundations of villages,
towns, or [[Jorasco]] healing houses. Irian manifest zones rarely
serve as gateways to the plane, and traveling to Irian usually
requires [[plane shift]] or similar magic.
!!! Coterminous and Remote
Life blossoms when Irian is coterminous. Health and fertility
are enhanced, positive energy flows freely, and living creatures
are infused with an abundant sense of hope. While Irian is
coterminous, the //Radiant Power// property applies across
[[Eberron]] and all creatures become more resistant to disease, poison, and fear.
When Irian is remote, colors seem to fade and a sense of
psychic numbness pervades the world. All creatures become more vulnerable to fear and resistant to radiant damage, and magical healing is less effective.
Traditionally, Irian is coterminous for ten days in the month
of [[Eyre|Khorvaire calendar]] and remote for ten days in the month of Sypheros.
These effects occur once every three years; the remote cycle
comes a year and a half after it is coterminous.
!!! Irian Artifacts
The [[Aereni]] harness Irian's energy, using it to create many of
their tools, but industry isn't one of the core concepts of Irian
and relics from the plane itself are relatively rare. Whether
from the plane itself or simply drawing on its power, items tie to
the effects of positive energy: healing, dealing radiant damage,
generating light, bringing hope, or overcoming fear. A scroll that
provides a single trip to the [[Refuge]] would be an invaluable boon.
Plants that grow in Irian [[manifest zone]]s can often have
remarkable properties. Many of of [[Aerenal]]'s exotic lumbers—notably [[livewood]]—only grow in Irian zones. [[Araam's crown]] and [[dawn's glory]] are flowers with useful medicinal and alchemical properties.
!! Irian Stories
At first glance, Irian can seem much too good to be true.
Its inhabitants are benevolent, and it heals you every round.
What's the catch?
At the most basic level, there isn't a catch. It's the literal
embodiment of light triumphing over darkness and the power
of hope. While certain diseases could be seen as tied to the
concept of growth, Irian doesn't have a dark side in the same
way as, for example, [[Daanvi]]. However, there are a few obvious
limitations. It's not an easy plane to reach, as its [[manifest zone]]s don't act as portals. So the [[Refuge]] is a perfect shelter for anyone who can reach it, but you have to find a way to get there. And with the Refuge in particular, you get one free visit,
but after that, [[Araam]] expects you to help someone else before
she'll welcome you again.
There are a few ideas you can explore. The first is that
unfounded hope can be dangerous. A [[lumi]] or [[deva]] might
spread hope because that's its nature—but in doing so, may
convince people they have a chance to defeat an enemy that
they should actually be fleeing from. You can also explore
mortal forces abusing the power of Irian—[[Jorasco]] seizing a
manifest zone to grow [[Araam's crown]] or criminals trafficking in
[[fool's hope|dawn's glory]].
//''A Wound That Will Not Heal.''// Perhaps a villain wields a
[[Mabar]]an scythe that deals wounds that can't be healed by
magic or rest, or a [[hag]] lays a terrible curse on an adventurer.
It's said that all wounds and woes can be cured in the [[Refuge]]
of Irian. But how will the adventurers reach the Eternal Dawn,
and what will [[Araam]] ask of them in return?
//''Beyond the Grave.''// When the adventurers cross paths with
a [[lumi]], it hails them. It holds the memory of a hero who once
saved the life of one of the characters, and that debt was never
repaid; the lumi asks them to honor that by helping with its
current quest. This could be a debt incurred during the party's
travels, or even something from a character's backstory; you
could ask a player to tell you about a time someone saved their
character's life, and let them add depth to the debt.
//''A New Realm.''// A barren region on the border of two nations
or rival clans suddenly becomes a wondrous, fertile oasis.
This is the result of a planar seed taking root. In addition to
whatever remarkable plants or resources it holds, it's become
an Irian [[manifest zone]]—a valuable resource. Dispute over
the territory could have disastrous consequences; can the
adventurers prevent bloodshed? And has the [[Architect]] hidden
any secrets or artifacts in this seed land?
The Iron Council is the conclave of [[dwarf]] lords of the [[clans|Mror clan]] of the [[Mror Holds]]. Issues that concern the entire nation go before the Iron Council, which meets in the [[Ferrous House]] in the city of [[Krona Peak]] in [[Mroranon]]hold.
An iron defender is a combat-focused [[homunculus]] that fights for its creator. They come in many shapes and are often crafted in the form of animals. More creative [[artificer]]s craft iron defenders in the shape of [[monstrosities|monstrosity]] or other fantastical creatures.
This branch of the [[Unity]] of [[Riedra]] deals with foreign affairs,
including trade and diplomacy. It oversees all traffic
between Riedra and other nations; any Riedran who
could come into contact with foreigners—from sailors
to servants—is carefully vetted. Eidolon [[Tureya]] oversees the Iron Gate from the port of [[Dar Jin]].
The Iron River in [[Karrnath]], also known as the Mror River, flows from the [[Ironroot Mountains]] into [[Lake Dark]].
The Iron Ward, a city of gray stone, embodies the worst aspects
of oppressive law. Councilor Alashta, a cruel [[amnizu]], wields
absolute power and can't be questioned or challenged. Most
of the [[subjects|manifestation]] of the ward are indentured servants, trapped in
inescapable contracts; visitors must be careful not to accept
any offers of work in the ward, lest they be similarly trapped.
There are regular displays of brutal “justice” in the grand
plaza. [[Imps|imp]] scurry in the shadows, watching outsiders and
carrying news of their actions to the [[chain devil]]s and [[erinyes]]
that serve as the brutal police force. While they can't punish
adventurers “unjustly,” they //can// tempt visitors into misconduct;
fiendish merchants and patrons have many appealing offers for
adventurers, but almost all would surely lead to breaking a law
of the ward, obscure and ridiculous as it may be.
While the Iron Ward symbolizes the evils of oppressive order,
it is driven by order. The police and councilors twist the law and
weaponize it, but ultimately even they must obey the laws—the
one advantage adventurers have in passing through this place.
And while the subjects of the Iron Ward are brutally oppressed,
they're largely symbolic; it's questionable if the subjects even
exist when no one's around to observe their suffering.
The [[warforged]] of [[Stormreach]]'s Iron Watch are soldiers, created for battle and hardened by war. The [[Stormreach Guard]] is the public face of the law in the city, but the guards are no match for bloodthirsty adventurers or raging [[giant]]s. When such threats appear, the call goes out for
the Iron Watch.
The Iron Watch is an army, but the leaders of the
Watch have loftier goals than simply maintaining order.
When they aren’t cracking heads, the members of the
Iron Watch work together to find their place in the
world. They don’t hate creatures of flesh as most followers of the [[Lord of Blades]] do, nor do they see themselves as servants of humanity. These warforged are a newborn
race bent on establishing an outpost in a land that
might hold the keys to their past and their future.
!! Storm Lords' Last Resort
//“I don’t like them [[Karrnath]]i wolves, not one bit. But at least they’re human. These iron men... it was a bad day when the first of them came to [[Stormreach]].”//
<div align="right">—Three-Tooth Cam, dockworker</div>
According to Adamant [[Smith]], the [[Storm Lords]] don’t like to rely on
the [[warforged]], afraid of appearing too dependent on them. But the [[Stormreach Guard]] is a flawed tool, and when things go bad, the Iron Watch can be
relied on to clean up the mess. Law enforcement is
the job of the Iron Watch, but its driving passion is
the evolution of the warforged, and trying to explore the place of
the warforged in the world. A team of Iron Watch
members could be encountered in a [[quori]] arsenal in
the jungle or a [[Cul'sir]] workshop deep below [[Stormreach]]. Depending on the choices the PCs make, the
Iron Watch could help the party unlock the mysteries
of the past.
The [[Storm Lords]] pay [[Steeljack]] for the services of
the Watch, but individual soldiers don’t receive wages;
instead, the gold is invested in expanding the unit’s
facilities. The leaders of the Watch have no interest in
replacing humanity, but they are building a [[warforged]]
community, and this effort requires sacrifice.
!!! Structure
The approximately 170-member Iron Watch is based
in [[Forgelight]]. Stone Guards serve in six-person
squads commanded by a member of the Iron Guard.
Squads are paired into platoons under the command
of a Steel Guard. In addition to these ten standard
platoons, [[Steeljack]] commands an elite platoon formed
of members of the Steel and Iron Guards. The
remaining members of the Watch focus on research and support. Warforged who can’t work on a team are quickly dismissed.
The Iron Watch is smooth and efficient, and its soldiers are among the best in [[Khorvaire]]. Most members of the Watch are fighters mixed with rangers and barbarians, and a handful of rogues, monks,
artificers, and sorcerers. The typical member of the Stone Guards and Iron Guards is [[creature tier]] ''2''; Steel Guards and Adamants are [[creature tier]] ''3''. At the moment the bulk of the corps are Stone Guards,
and only three members hold the title of Adamant;
however, this could easily change. The three current Adamants of the Iron Watch are
[[Steeljack]], [[Smith]], and [[Lathe]].
As far as most people know, the Adamants are the ruling body of the Iron Watch. But another force works within the Watch: the Docent Council, the name given to the twelve [[docent]]s the Watch has recovered. The Adamants each carry one of these docents, and the remaining nine are stored in the armory, attached to a relic that allows them to communicate with one another. These docents might simply be sources of information—advisors who have invaluable knowledge of the past that help guide the members of the Iron Watch as they explore [[Xen'drik]]. It’s also possible that the council has a more sinister agenda, and that it is using the Watch to accomplish its goals. Are these [[docent]]s simply intelligent [[magic item]]s? Or could they be possessed—vessels for [[quori]] spirits, phylacteries of ancient [[lich]]es, or something even stranger and more terrible?
!! Entry Requirements
All [[warforged]] are welcome to join the Iron Watch,
provided that they are aligned with the philosophical
goals of the group. The Iron Watch is a force for order
within [[Stormreach]], and members need to be comfortable with hierarchy and discipline.
Members of the Iron Watch are assigned roles based on
their body type. [[Skirmisher|skirmisher]]s and [[juggernaut]]s form the bulk of the Watch and are used to maintain order and counter simple disturbances.
[[Envoy|envoy]]s and other stealth specialists perform reconnaissance, monitoring activities in the city. And the few [[artificer]]s, [[sorcerer]]s, and other spellcasters in
the Watch serve as support, joining battle when their
powers are needed but otherwise devoting their time
to researching the warforged form.
Members of the Watch serve a set number of hours each week. Many
members of the Iron Watch are dedicated to the organization and never bother going off duty, but they see no shame in having interests beyond the organization. Even when a guard is off duty, their behavior reflects
on the Watch, and insubordination and criminal
behavior are not tolerated. The [[Stormreach Guard]] is
known for graft and corruption, but Iron Watch leader
[[Steeljack]] holds the warforged to a higher standard.
Members don’t have to keep the peace on their own
time, but they shouldn’t disrupt it or become as corrupt as the [[human]]s in the Guard.
!! Playing a Member of the Iron Watch
During the [[Last War]] you fought because you were told
to, because your makers convinced you that you had a
duty to the nation that had paid for your birth. Today
you fight because you realize that war is your true
nature. It is your purpose, and it is in battle that you
truly feel alive.
War is a comfort to you, but it is not the only reason
you serve in the Iron Watch. From listening to [[Lathe]],
one of the high-ranking Adamants, you have learned that your people
are more complex than you ever realized. You are a
living weapon—not just steel and stone, but a creature
of magic. Your potential and your past are equally mysterious. If you are to find the truth about yourself and the destiny of your people, it will be with the Watch.
The leaders of the Iron Watch don’t hate organic
beings, but there are certain things no creature of
flesh can understand. You stand awake each night
while your [[human]] friends sleep and dream. You watch
them eat and drink, laughing and enjoying physical
pleasures. You take pleasure in battle, in fulfilling
your function. But you find comfort in the company
of other [[warforged]], the only ones who understand the
nature of your life.
You have little need for shelter, but even so the
Watch house in [[Forgelight]] provides you with a place to
socialize with other warforged, and includes research
and training facilities. Thanks to the many weaponsmiths and armorsmiths in the Watch, you have access to repair spells based on your rank, and you can purchase enhanced weapons and shields at a discount.
The [[artificer]]s of the Iron Watch maintain an
armory equipped with [[oils of repair|oil of repair]] and [[wand|magical implement]]s holding a variety of defensive spells, along with a small selection of [[warforged components|warforged item]]—[[armblade]]s, [[essence disk]]s,
and others. These tools are never sold, but rather are distributed as necessary for specific assignments. If you are facing a rampaging fire [[elemental]], you might
be given a charge of [[protection from energy]]. The items in the armory
are never simply given away, and in the case of components, they must be returned after a mission.
!!! Advancement
The Iron Watch is organized like an army. Time served
and quality of service are critical to advancement.
As a member of the Watch, you are allowed to speak
your mind, but insubordination isn’t tolerated. You
can disagree with one of the Adamants or any other
member of the Watch, but if you must challenge a
superior, do it at a time and in a manner that will
not threaten morale or mission. If you disobey
orders and members of the Watch are hurt, there
will be consequences.
Military service is the primary path to advancement, and the main activity of the Watch within the city. But the Iron Watch also seeks to unlock the
mysteries of the [[warforged]], secrets that might be held
in [[Xen'drik]]. Bringing new knowledge to the Watch
is as good a way to earn advancement in the ranks as
stopping a riot at the [[Red Ring]]. On the other hand,
allowing secrets of the warforged to fall into enemy
hands—especially those of House [[Cannith]]—could have
serious consequences.
!!! Missions
The Iron Watch is rarely called into service, so most
of your time on duty is spent drilling, sparring, or
putting your craft skills to work. [[Smith]], the Adamant
who is also an [[artificer]], says that the [[Storm Lords]] are
afraid of appearing too dependent on the [[warforged]];
they call on the Watch against serious threats to their
power, but have yet to deploy the warforged against
groups such as the [[Titans]] or the [[Swords of Karrn]]. If
you’re skilled at stealth, you’ll be placed on reconnaissance duty, spying on the various gangs or power groups in the city. As far as you know, [[Steeljack]] sanctions these operations; the [[Storm Lords]] don’t even
know about them.
Higher-ranking members of the Watch coordinate military operations, but they serve in other roles as well. [[Artificer|artificer]]s and [[sorcerer]]s engage in mystical
research. The most capable members of the Watch
are sent into [[Xen'drik]] or the ruins beneath the city
in search of components and knowledge from the
past. Such operations sometimes involve full teams of
[[warforged]], but if you have adventuring companions
you enjoy working with, you might be given a goal
to accomplish together. If your companions earn
[[Steeljack]]’s trust, he might work with you openly;
otherwise, the mission is given in secret, and you have
to find a way to obtain a [[docent]] or hide a [[schema]] without
drawing attention.
Although the leaders of the Iron Watch don’t hate
humans the way the [[Lord of Blades]] does, they’re keenly
interested in protecting the warforged. You’ve heard
rumors about Steel Guards being sent on covert operations against House [[Cannith]]—though it’s possible these are just stories.
This realm's entire landscape is formed from metal. [[Adamantine|adamantine]]
trees grow razor-sharp leaves, and iron blades of grass cut
through soft shoes. This [[demiplane]], which has [[Shavarath]]'s
//Bloodletting// property, is home to bands of [[devil]]s and [[demon]]s
that engage in their own endless wars. These [[fiend]]s enjoy
fighting and oppressing mortals, but fortunately, they can't leave
their realm. The [[Ghaash'kala]] [[orc]]s of the [[Demon Wastes]] raid the
Ironlands, pillaging weapons from the warrior fiends. The [[Kech Shaarat]] have expanded their deep vault into the Ironlands; over many centuries, these dar have established an
alliance with one of the devil clans, allowing them to hold onto
this territory. It's up to the DM to decide on the foundation of this
alliance and whether the Shaarat can leverage it in other ways.
The [[dwarves|dwarf]] of the [[Mror Holds]] and the [[orc]]s of [[Jhorash'tar]] occupy this mountainous region that separates [[Karrnath]] from the [[Lhazaar Principalities]]. The Mror call the entire region //tra Mroreln//, the Iron Roots. When [[human]]s first came to [[Khorvaire]] and settled the [[Lhazaar Principalities]], they called the foreboding range to the west the Hoarfrost Mountains.
Today, the Mror and most others refer to the entire region as the Ironroot Mountains. However, the people of the Lhazaar Principalities still call them the Hoarfrost, and some people use this term to refer to the mountains east of [[Mirror Lake]].
The Ironroot Mountains hold some of the richest mineral deposits on [[Khorvaire]], making the [[Mror Holds]] a primary source for iron, copper, gold, platinum, and other vital ores.
Irontown is a mining town in [[Karrnath]], located near the shores of [[Lake Dark]].
It’s a common misconception that the [[Valaes Tairn]]
believe in honor in battle. Some do, but what matters
most to a [[Valenar]] warrior is emulating the deeds of
one’s patron ancestor. And while some of those heroes
were chivalrous, others were ruthless or cruel—and
their descendants are expected to follow in their mold.
Like many young [[Valaes Tairn]], Irristia Immiar
saw extensive action during the [[Last War]] but failed
to distinguish herself before the peace of [[Thronehold|Treaty of Thronehold]]
took her opportunities away. Now the leader of her
own warclan, she is among those disaffected [[elves|elf]]
who yearn to prove themselves on the frontier—and to
goad Valenar’s neighbors into an ongoing conflict that
will grant her the chance for glory.
So far, Irristia’s efforts have been in vain. Her clan’s attacks against [[Karrnath]]i fortresses and caravans in the northern [[Talenta Plains]], nomadic [[halfling]]
warriors on the southern frontier, and the [[human]]
militias of [[Q'barra]] have been easy victories. Aware of
the reputation of the [[Valaes Tairn]], the [[Karrnath]]i garrisons are eager to avoid full-scale conflict, choosing instead to maintain a defensive posture.
In her frustration, Irristia has begun attacking civilian targets along the border between [[Karrnath]] and the [[Plains|Talenta Plains]], raiding villages and burning cropland between [[Vulyar]] and [[Irontown]]. She has no enmity for the farmers and herders her clan has slain, but she means to have her glorious war no matter the cost in suffering.
<ul>
<$list filter="[tag[island]tags[]tag[continent]] [tag[island]tags[]tag[nation]] [tag[island]tags[]tag[sea]] +[sort[title]]">
<$list filter="[<currentTiddler>tag[island]]" emptyMessage="""<li>{{!!article}}<$link overrideClass="graylink"/></li>""" variable="noop">
<li>{{!!article}}<$link/></li></$list>
<ul>
<$list filter="[tag[island]tag<currentTiddler>] +[sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Orderly collections of townhouses
ring the towers of this quiet district. Children play in
the streets and couples stroll arm in arm.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[University District]] (southeast); [[Seventh Tower]] (south); [[Highhold]] (bridge, southwest); [[Daggerwatch]] (bridge, northwest); [[Highest Towers]] (bridge, north); [[Warden Towers]] (below)
Ivy Towers is a generally unremarkable residential
district, notable only because a significant number
of professors at [[Morgrave University]] make their
homes here.
Lord Commander Iyan ir'Talan is in charge of the [[Sharn Watch]]. As long as the city's
wealthy elite are content to keep Iyan in power, he
does little more than maintain the status quo.
Commander Iyanna ir'Talan commands the [[Black Arch]] garrison in [[Lower Tavick's Landing]]. The daughter of the [[Lord Commander|Iyan ir'Talan]], Iyanna is idealistic and honorable. She fights for the
good of the common people. If the adventurers need
an honest ally in the Watch, Iyanna is perhaps their
best hope. Despite her father's best efforts to keep her
from getting entangled in the criminal underworld,
her actions have won her no friends among [[Sharn]]'s
crime lords, and her life could be in danger despite
her parentage.
A [[goblin]] war mage who stayed loyal to House [[Deneith]] after the [[Darguun]] uprising of 969 YK, Izzardo was in the [[Cyran|Cyre]] village transported to [[Argonnessen]] before the Day of [[Mourning]]. Found wandering the [[Vast]] by a [[Spear|Union of the Spear]] flight, he was brought to [[Io'lokar]] and has lived here since. Though he has fully embraced the philosophy of Io’lokar, Izzardo covets portable wealth (usually gems
and jewelry) that he teleports back home to his extended family in [[Darguun]]. Unlike most of the city’s working spellcasters, he is happy to create items or cast
spells for hire. He spends much time in the [[Freeward]] taverns seeking foreign parties with which to do circumspect business.
A [[Darguun]] mercenary troop known as the Ja'khor (a [[goblin|goblinoid]] word translating to “Blackbloods”) uses the [[Bloodstone Inn]] in [[Malleon's Gate]] as a base of operations. The [[hobgoblin]] war leader, Margaash, is not a merchant, and he generally relies on House [[Deneith]] to negotiate contracts on his behalf. However, for the right price, he may be willing to provide information or even a [[goblin]] guide to help a party traveling to [[Darguun]]. Margaash only respects strength; fighters get better results than [[wizard]]s.
Jabra the [[night hag]] is an [[alchemist]] of exceptional skill.
She bottles stolen dreams and nightmares, and sells
unique potions with remarkable powers. She peddles her
goods from an eye-catching tent of red dragonhide, and
when she's not in the [[Immeasurable Market]] of [[Syrania]], she can often be found
selling her goods in [[Graywall]].
Jacques the Hook is the leader of the [[Golden Lions]] gang in [[Stormreach]]. His real name is Jacques Cantar; his father, [[Jaris Cantar]], is a powerful shipping
magnate. Jacques’s adolescent violent tendencies developed into psychotic rage. After the boy beat one of his tutors at [[Morgrave University]] to death, his father thought
some time off from formal studies and an education
in [[Stormreach]]’s underworld might temper Jacques.
Instead, the young man’s violent nature flourished, and
he rose quickly to the gang’s helm. Jacques’s moniker
comes from his penchant for torturing people with a
large silver hook.
Charismatic and willful, the [[duergar]] [[Akiak]] leader
known as Jade-Lin has proven to be an effective military
leader—and a significant problem for the [[Riedrans]]. She
has become an almost legendary figure among the Akiak
commoners, who view her as a savior of the people. Jade-Lin has led several recent guerrilla raids into the [[Paqaa Mountains]], defeating the [[Riedra]]n border garrisons and freeing captive Akiak working in mining facilities or
occupied clanhomes. She has also managed to target and
destroy at least one [[monolith|hanbalani alta]].
Jade-Lin deliberately keeps her identity, intentions,
and personal history shrouded in mystery. Actively
hunted by [[Riedra]]n death squads, she must constantly stay
on the move. The Akiak commander travels with a small
group of able comrades, and when she settles down for a
short time, she is surrounded by loyal Akiak dwarves.
On occasion, Jade-Lin does recruit mercenaries for
specific missions, using trusted lieutenant and go-betweens
for added security. She pays extremely well for these dangerous assignments, and it's rumored she has access to much of
the old [[Akiak]] wealth, through private sponsors and personal
stockpiles. Outsiders who work for Jade-Lin are wise to be
careful, for the Akiak leader isn't above sacrificing mercenaries for the good of her people.
Jaelarthal Orioth (the Moonsword Jungle) is a large forest that blankets central [[Aerenal]], spanning from the island's east to west coast.
Jamraal Ridgebreak is the leader of the [[Titans]] gang in [[Stormreach]]. He is a powerful [[psi warrior]] who claims to be of [[stone giant]] heritage due to his gray skin and bald head.
Jargret is a no-nonsense [[stone giant]] who acts as a [[Xen'drik]] guide only to expeditions seeking out lost [[giant]] ruins. She works for a meager fee compared to other
guides, but demands that any relics of historical note
the PCs uncover be turned over to her for study. She
is not interested in magical treasure, [[dragonshard]]s, or gemstones. She claims tablets, discs with ancient writing, tomes of lore, and the like; a conflict might
ensue if the PCs want to keep a valuable relic that she
deems worthy of study. Jargret is a longtime ally of
the [[Scriveners of the Sky]], an alliance of [[cloud giant]]s
that seeks the lost lore of the [[giant]] empire.
She offers the evidence of her findings to the order
of giants in the hope of aiding them in their quest to
chronicle the past ages of their people.
Jaris Cantar, a member of the [[Aurum]] Platinum Accord and shipping magnate who runs a trading fleet under license to [[Lyrandar]], owns the [[Aurum Lodge]] in [[Stormreach]]. He has a a twenty-frigate fleet, which moves everything from [[Karrnath]]i nightwood ale and bitter cheese to [[dream serpent]] hides and [[Aundair]]ian [[magic item]]s. Cantar has
a great interest in [[drow]] relics, especially those tied to
the [[Sulatar]] or [[Umbragen]] cultures, and pays a premium price—at least 10% more than an adventurer would get in the [[Marketplace]]—for such things. Cantar
has deep pockets, and he might be willing to finance
expeditions into the interior for a share of the goods
reclaimed on the trip.
Next to Cantar, the most influential voice in the [[Stormreach]] [[Aurum]] is that of [[Guldan Soldorak]].
Jaris Cantar is secretly the father of murderer and gang leader [[Jacques the Hook]].
King Jarot ir'Wynarn was the last ruler of united [[Galifar]]. He died on [[12 Therendor 894 YK|Khorvaire calendar]], sparking a succession crisis that led to the [[Last War]].
During his life, Jarot began the public works project that led to the network of [[lightning rail]]s connecting all of central [[Khorvaire]].
Jathara Bay lies off the coast of [[Syrkarn]] and [[Adar]] in [[Sarlona]]. It is part of the [[Sea of Lost Souls]], and is fed by the [[Jathara Sound]].
The [[Jathara Sound]] forms a natural boundary between [[Syrkarn]] and [[Adar]]. It is fed by many small rivers in Adar and flows into the [[Jathara Bay]]. The wide area near [[Ghoza]] is known as "Kasshta's Belly".
[[Riedra]] maintains a number of fortresses along
the Sound which serve as focal points for [[Inspired]]
operations within [[Adar]].
Jaunt is one of the few [[eladrin]] in House [[Orien]], a child of explorers who fell in love with [[Eberron]] and chose to abandon [[Shae Loralyndar]] two
centuries ago. Jaunt is one of the most respected
[[wizard]]s in the [[First Step]]; she is fascinated by teleportation, and has been exploring traditional ritual magic, her [[human]] housemates’ [[Mark of Passage]],
and her own fey abilities in her quest to unlock
greater secrets. She is brilliant, but overconfident and
impetuous.
Javan Tomollan ([[human]] councilor for [[Upper Central]]), a shrewd man and a tough bargainer, earned his fortune representing House [[Lyrandar]] making trade arrangements, although he has since parted ways with the house. He is a fair man and believes that hard work and dedication to a task should be rewarded. However, his greatest concern is protecting the interest of the people of [[Upper Central]]; the problems of the poor of [[Lower Dura]] hold little interest for him.
Javan remains one of [[Sharn]]'s wealthiest citizens, and
the [[Aurum]] actively seeks to recruit him for their
Platinum Concord—so far, unsuccessfully.
This javelin is a magic weapon. When you hurl it and speak its command word, it transforms into a bolt of lightning, forming a line 5 feet wide that extends out from you to a target within 120 feet. Each creature in the line excluding you is electrocuted. The lightning bolt turns back into a javelin when it reaches the target.
For internal security pertaining to House [[Thuranni]] dealings in [[Stormreach]], Lady [[Miravella|Miravella Uruvai d'Thuranni]] relies on her nephew, Jaye, a talented agent of the [[Shadow Network]] who is always on the lookout for the intrusive snoopings of House [[Phiarlan]]’s [[Serpentine Table]].
//This tall, thin woman has sharp [[Karrn|Karrnath]] features, red hair, and surprisingly blue eyes emphasized by her pale, soft skin. She wears a hunting outfit of black and purple silk, with loose pants tucked into boots of black leather. She moves with unconscious grace, and her voice is low, musical, and almost hypnotic.//
Lady Jesel Tarra'az is a spy for the Order of the
[[Emerald Claw]]. Raised and trained at the [[Crimson Monastery]], she is a deadly [[undead]] warrior. However, she rarely takes an active part in Order operations in
[[Sharn]]. Her role is to provide visiting operatives with
information and equipment; she takes no actions that
could compromise her position in Sharn, even if it
means that a particular operation fails. Jesel has concealed her true nature from the [[Karrnath embassy|Karrnath Embassy (Sharn)]], and does her best to avoid all contact with embassy
staff. She does deal with [[Lan Hazal]] of [[Grawand]],
who provides her with blood, potions, and magic
weapons for visiting agents of the Order. She resides in the [[Gray House]] in [[Upper Tavick's Landing]].
If Jesel is publicly exposed as a [[vampire]], she goes
to any length to take vengeance on those responsible
for her humiliation. She leaves Sharn, but continues
to serve the Order as a soldier and assassin.
The prominent priest of [[Inspiration|Path of Inspiration]] in the trades district
of [[Dar Myan]] is well loved, and she loves right back. Her
unswerving loyalty and dedication have allowed her to
come by and continue to possess a small amount of [[divine magic]]al power. She uses her spells only to aid the folk of
the district, and she is an enemy to any who infiltrate Dar
Myan or harm its people.
The [[line|Aereni noble line]] of Jhaelian governs the region around [[Taer Kalindal]]. Jhaelian has strong spiritual traditions; its members are deeply devoted to the [[Undying Court]] and to contemplating divine mysteries. This line produces many monks, [[cleric]]s, and [[paladin]]s, as well as many members of the [[Deathguard]]—the Aereni institution dedicated to hunting down [[Mabar]]an [[undead]]. Members of this line have a tradition of using [[cosmetic transmutation]] to adopt a desiccated appearance—not unlike that of the [[deathless]] themselves—though other Jhaelian Aereni prefer to wear masks.
Lord Jhakanath is the [[Inspired]] Ambassador to [[New Galifar]]. A powerful [[telepath|psion]], he recognizes that sometimes persuasion is more powerful than [[psionic|psionics]] domination.
The ambassador has provided King [[Sebastes|Sebastes ir'Kesslan]] with a garrison of troops to help defend his young nation, and a [[Riedra]]n quarter has sprung up in the city of [[Newthrone]]. Jhakanath is purchasing large quantities of [[dragonshard]]s from House [[Tharashk]], but the [[Inspired]] have also secured permission to start their own mining operations. Nonetheless, the richest shard deposits lie in the lands of the [[scales]], and Sebastes won’t let the Riedrans threaten his relationship with the [[lizardfolk]] or [[dragonborn]]... yet.
//Jhazaal Dhakaan called the six kings together, and none could resist her summons. She brought them to a field soaked with blood and strewn with blunted blades. Jhazaal Dhakaan sang the song of the dar, reminding the kings that they were all one people. She sang the song of muut, of the duty all dar share. She sang the song of atcha, of the glory awaiting the people, of the heroes of the past and of those yet to come. With her words, she wove a dream, and she gave that dream to the six kings and to all who followed them. It was with this song that the Empire of [[Dhakaan]] was born, and it is this dream that guides us still.//
<div align="right">—[[Kech Dhakaan|Heirs of Dhakaan]] legend</div>
Jhazaal Dhakaan was the greatest [[dirge singer]] [[bard]] in history, and was the founder and first emperor of the Empire of [[Dhakaan]]. According to tales, she could win a heart with a word, and sunder an army with a scream.
Approximately 16,000 years ago, Jhazaal bound the [[goblinoid]]s of her time together through an act of epic bardic magic: using the legendary horn [[Ghaal'duur]] which she herself crafted, she built the dream of the empire, the [[Uul Dhakaan]]. This united the ancient goblins under a common purpose, and they crowned Jhazaal Dhakaan the first //marhu//, or emperor, of [[Dhakaan]]. Over the next 10,000 years, the empire would expand to dominate all of central [[Khorvaire]].
A large section of the harbor ward of the [[Riedra]]n bastion city of [[Dar Jin]] has been transformed into a foreign quarter, called the Jhodra. [[Riedrans]] refer to
it as "tainted land" outside the hearing of foreigners. Most Riedrans are forbidden to enter the Jhodra; those who work and live in the area are carefully trained to
deal with foreigners. Likewise, there are only two ways
for foreigners to leave the ward—heading back to sea via the [[Harbor of Tranquility]], or
acquiring a transit visa from the [[Iron Gate]].
As in most [[Riedra]]n cities, the streets and buildings
beyond the Jhodra are not marked with legible signs. These
signs, however, have been embedded into the [[sentira]]
engravings; by concentrating on the pattern, a traveler
can feel the image as a faint memory in his mind. The
inhabitants of the outer wards avoid foreigners, while
[[Bastion Guard]]s challenge any foreigners found beyond
the Jhodra.
Much of the Jhodra is devoted to the shipping trade
and is taken up with warehouses, shipyards, and the customs and inspection facilities of the [[Iron Gate]]. There are only a few Riedran businesses that cater to foreigners.
However, the [[Inspired]] have leased property to each of the
[[dragonmarked house]]s. As such, adventurers who want a
familiar meal can dine at House [[Ghallanda]]'s [[Gold Dragon Inn]]. The Jhodra also contains a number of embassies. To date, [[Aundair]], [[Breland]], [[Karrnath]], the [[Mror Holds]], [[Q'barra]], and [[Zilargo]] have established consulates in [[Dar Jin]]. The [[Inspired]] have not yet extended an invitation
to the [[elves|elf]] of [[Aerenal]] or [[Valenar]]. The [[Thousand Eyes]]
keeps a very sharp watch on these embassies. As a result,
the ambassadors might turn to unfamiliar faces—such as
adventurers—if they need to engage in subterfuge.
Although violence is rare, the [[Inspired]] maintain a
strong military presence along the docks. Hundreds of
[[Bastion Guard]]s patrol the Jhodra, along with dozens of
[[Thousand Eyes]] guardians and a handful of [[masquer]]s.
Fifty [[Taskaan|Taskaan Legion]] [[shifter]]s are kept on alert, ready to respond
to any report of violence. Ten [[Horned Guard]]s are also
assigned to the Jhodra, with six on duty at any given
time. Four of these [[oni]] observe from the air, using invisibility to hide from the eyes of criminals. The other two wander the streets, providing an imposing
visual deterrent.
It is worth noting that the Jhodra has an unusually
high concentration of powerful [[Chosen]] ([[creature tier]] 3). The [[Inspired]] are rightfully afraid of foreign espionage in the Jhodra and have devoted considerable
resources to the district.
!! Features of the District
The Jhodra is separated from the rest of the Harbor Ward by hhigh walls; the only exit
is a massive iron-bound gate. Anyone who wants to leave
must obtain the approval of the aptly named [[Iron Gate]].
These diplomats process all requests for information
and transit visas, in addition to negotiating with ambassadors and influential merchants. Every two weeks the Gate hosts a meal for influential foreigners; this is a good
opportunity to meet the local ambassadors and [[dragonmarked|dragonmarked house]] barons. The gatekeeper of the Jhodra is Lord [[Helkadesh]].
* The [[Harbor of Tranquility]]
* The [[Healing Hand]]
* [[Gardens of Reflection]]
* The [[Mercantile Center]]
* The [[Song of Skin]]
* The [[Tower of Eyes]]
!! Dragonmarked Houses
[[Dragonmarked house|dragonmarked house]]s have almost no power in [[Riedra]].
The [[Inspired]] don't rely on house services, so they've made
few concessions to the barons. Further, the resources of
the houses are half a world away. The houses operate
under restrictions inside the port city of Dar Jin, and
they have no operations outside that city.
House [[Cannith]] cannot create or sell arms, armor,
or magic items of the [[conjuration]], [[enchantment]], [[evocation]], or [[necromancy]] schools. Baron Sien Vown d'Cannith represents
Cannith West in [[Dar Jin]], but adventurers are more likely
to deal with forge master and [[magewright]] Killian "Blacklion" d'Cannith, a jovial and eccentric man who demanded the Sarlonan post.
House [[Deneith]] is permitted to maintain a force
of only fifty soldiers. It has been warned of dire consequences should these troops cause trouble in the city.
House [[Jorasco]] is not permitted to raise the dead, and
the Jorasco [[enclave]] does not have an [[altar of resurrection]]. The baron of the enclave is Dorial d'Jorasco, a devout worshipper of the [[Sovereign Host]] who requested the post in the hopes of serving his faith.
House [[Kundarak]] has no outlets for its extradimensional vault network in Dar Jin. It would be all too easy to adapt this enterprise to smuggling.
House [[Lyrandar]] has not been allowed to construct
a docking tower, and [[airship]]s that cross the borders of
[[Riedra]] might come under attack. Lyrandar scions have
been warned not to interfere with the weather.
House [[Orien]] is forbidden from teleporting anyone into
or out of [[Riedra]], although this edict is difficult to enforce.
House [[Sivis]] has an [[enclave]] in the [[Jhodra]] with three [[speaking stone]]s, but it can take up to three days for a message to reach [[Khorvaire]]. Swifter communication can be purchased from Master Speaker Tesser Torralyn d'Sivis, who can use [[sending]]
twice per day at a cost of 25c per use. The [[Thousand Eyes]] keeps an especially close watch on the Sivis enclave. The [[gnome]]s fight to preserve the security of their communications, and they consider this war of espionage and counterintelligence to be a wonderful challenge.
Although no official restrictions are placed on
House [[Phiarlan]] and House [[Thuranni]]—since they theoretically only trade in entertainment—the [[Thousand Eyes]]
keeps a close watch on these enclaves, and the elves know
it. The houses of shadow are gathering information,
but they're keeping a low profile, accepting no tasks that
could jeopardize their standing in [[Dar Jin]].
The house [[enclave]]s are small, and they're not as
commercially oriented as those found in the major cities
in [[Khorvaire]]. They cater primarily to foreigners. This
situation is useful for the [[Inspired]]; the presence of [[Ghallanda]] hostels means that no [[Riedrans]] have to provide
hospitality for outlanders within Dar Jin. More important, the enclaves serve as embassies for their houses. As
the houses begin to define their role in [[Riedra]], strategic
alliances become ever more important.
The possibility lingers that the [[Inspired]] opened
[[Dar Jin]] as a trap, bringing foreign ambassadors and
dragonmarked scions into a controlled environment
where they can be subverted to the Riedran cause.
Regardless, the longer the Inspired observe the dignitaries, the more effective any future substitution or subversion will be.
Jhoraash is a [[golin’dar|goblin]] artillerist [[artificer]]. While exiled from the [[Kech Hashraac]] for his reckless experiments, he is devoted to his
clan and [[Dhakaan|Heirs of Dhakaan]]. He’s determined to create a weapon so
wondrous the Hashraac will take him back. He always has a
dangerous device to test, and could prove a serious threat to
adventurers without even meaning to.
The Jhorash'tar are an alliance of [[orc]] tribes that have dwelt in
the [[Ironroot Mountains]] since before the arrival of the [[dwarves|dwarf]].
The Jhorash'tar have no written records, but their tales suggest
they once held most of the Ironroots, and that many of their
tribes were annihilated in the early days of the [[Exile|Mror History]]. However,
others suggest that the orcs might have been eradicated by the civilization that built [[Sol Udar|Realm Below]]. Indeed, the existence of the //Face of Mror//—a mountain sculpted to resemble a dwarf king, a feat of engineering far beyond the capabilities of the modern Mror—implies the dwarves of Sol Udar were active on the surface of
the mountains at some point. Whatever the truth, by the time
of the rise of [[Galifar]], the bulk of the Jhorash'tar had been pushed to the
southwestern regions of the [[Ironroot Mountains]], where they
continued to clash with Clan [[Droranath]] and Clan [[Noldrun|Noldrunhold]].
The Jhorash'tar orcs have a distinct culture, with nothing in
common with the [[Ghaash'kala]] orcs of the [[Demon Wastes]] or
the [[Gatekeepers]] of the [[Shadow Marches]]. There are at least six distinct tribes, each split into smaller bands; the DM can add details to a particular tribe to suit the story. Some dwell on the surface of the mountains—often in caves along canyon walls—while others dwell underground, in the same layer the dwarves mined for centuries before breaking through into [[Sol Udar|Realm Below]]. The Jhorash'tar have never formed large communities, and usually split when a band has a hundred or more adult members, or
whenever a ''bonecaster''—their spiritual leader—advises it.
The primary spiritual tradition of the Jhorash'tar is called
the ''Path of Bones''. Bonecasters are their priests and diviners.
They can speak with the dead and temporarily conjure spirits
to produce magical effects, but traditionally they don't create
lasting [[undead]]. A player character following this path might
be a [[cleric]] with the Grave domain, though the typical bonecaster doesn't have access
to all the spells and features of a cleric. Bonesworn are elite
champions strengthened by spirits; a player character following
this path could be an Ancestral Guardian or Zealot barbarian. The Jhorash'tar believe
that the ghosts of the fallen linger, and continue to guide the
living through whispers and dreams. Tribes often decorate the
entrances of their dwellings with the bones of their own fallen
warriors, believing that the spirits of the fallen protect them.
The Jhorash'tar don't work metal, though some are willing
to use metal weapons and armor acquired from the [[Mror|Mror Holds]].
Bonecaster rituals allow them to shape and harden bone, and
they often incorporate bones in weapons and armor. While they
often use the bones of large creatures, it's also common for one
of the bonesworn to carry a weapon or token that incorporates
an ancestor's bone. The Jhorash'tar also work with other natural
materials, including wood and stone. They have no equivalent to
heavy armor, but can combine bone and leather to create armor
that offers similar protection to a breastplate or scale mail.
Many of the Jhorash'tar tribes wish for peace with the [[dwarves|dwarf]], and are working with the [[Frosthaven clans|Toldorath and Tordannon]] to reach an understanding. For the most part, these tribes don't want to live
alongside Mror in their cities, but wish for their own recognized
lands, and want the right to gather the bones of other [[orc]]s
from across the holds. However, there are also tribes hungry
for vengeance, driven by the cries of their fallen. Such tribes
continue to engage in guerilla war and to spread terror however
they can. As far as the Mror know, the orcs have had no contact
with the [[Realm Below]] or the forces of [[Dyrrn]]—but it's possible
that a tribe has been touched by the Corruptor, and could
emerge with unusual powers or even allied with [[aberration]]s.
It's up to the DM whether the Jhorash'tar were involved in
the destruction of [[Noldrunhold]]. Whatever the truth, Jhorash'tar
tribes live safely in Noldrun territory, though they shun its cities.
In the [[Webs]] of [[Zarash'ak]], a [[goblin]] named Jhugaar preaches
raving sermons promising the rise of the [[overlord]]
known as the [[Voice in the Darkness|Tul Oreshka]]. If true, this
prophecy could draw the [[Lords of Dust]] to Zarash’ak
(though, of course, it could be madness).
Jirian Zayne is the senior minister at the [[Keep of the Silver Flame]] in [[Stormreach]].
Like his fellows, he has come to accept the variations in the [[faith|Silver Flame]] of his flock, and he works to help all of them find the light. Jirian is kind and generous but frustrated by his inability to do more for the people of his [[ward|Embers]].
Professor of [[Galifar]]an History Hass Holan comes to [[Morgrave|Morgrave University]]
from the [[Library of Korranberg]]. He is widely respected for his work on the human settlement of [[Khorvaire]], and his book //Malleon’s Legacy// shed new light on a difficult time. He’s currently delving into the mysteries of the ancient [[goblin]]
civilizations, and looking for bold students
willing to do some practical exploration in the
semester ahead!
The inclusion of the [[Wylkes family]] among the [[Storm Lords]] of [[Stormreach]] was a concession to [[Galifar]]. As a [[sorcerer]] and sailor, Jolan Wylkes spent more time as a privateer than he did as a pirate, and the king of Galifar wanted someone he could trust to see that the Storm Lords lived up to their promises. Although many in the city despised Jolan Wylkes, they respected his prowess at sea and the talents of the Wylkes
shipwrights. It was clear that Jolan’s presence was
a necessary evil. He was made the fifth Storm Lord,
but he was not a lord of the city. In a compromise
between the demands of Galifar and the distaste
that the others felt for Wylkes, he was declared the
Harbor Lord—the gatekeeper of the city but always
on the outside.
[[Harbor Lord|Storm Lords]] Jonas [[Wylkes|Wylkes family]] is the least effective
individual—and the youngest—to ever hold the office.
Graden, the previous Harbor Lord who suddenly fell dead a few years ago, always believed his son would grow out of his
youthful indolence, and perhaps he would have, in
time. But responsibility has been thrust upon him
too soon. Lord Jonas has close ties to the [[Golden Lions]]; only a few years ago, he was an active member of this gang. Now he is a socialite, spending
more time at [[Shadows]] or the [[Red Ring]] than he does on
his familial duties. He is easily distracted by decadent
pleasures. In the meantime, the edifice carefully built
by his predecessors is beginning to crumble. House
[[Lyrandar]] (via Viceroy [[Calynden|Calynden d'Lyrandar]]) is already working on renegotiating its
arrangements with the city, and others are following
suit. The [[Aurum]] has extended an invitation to young
Jonas, though this is hardly public knowledge. Both
have offered to help him manage the family business, each hoping to turn the Harbor Lord’s domain into an extension of its own organization. For the
moment, the indecisive lord is stalling on any firm
alliance, but he is swiftly becoming overwhelmed by
the insistent proposals.
Lord Jonas’s mother, [[Tulea Wylkes]], is horrified by
what has become of her family, but she cannot bring
herself to turn on her son.
In order to attune to this magic item, you must possess the [[Mark of Healing]].
While you wear this pendant, you automatically stabilize whenever you are dying. In addition, whenever you use your [[dragonmark]] to heal yourself, you heal twice as fast.
''Leader:'' [[Ulara d'Jorasco]]<br/>
''Headquarters:'' [[Vedykar Enclave]] ([[Vedykar]], [[Karrnath]])<br/>
''Dragonmark:'' [[Mark of Healing]]
//What's the price of a life? Well, I've got a rate sheet right over here. I'd be happy to discuss it.//
<div align="right">—Bessi d'Jorasco, [[Fairhaven]] healer </div>
The [[Healers Guild]] provides a vital service to [[Khorvaire]], and the [[Last War]] ensured there was great need for healers. The leader of the guild, Baron [[Ulara d'Jorasco]], is much beloved in northwestern Khorvaire for
her instrumental role in combating an epidemic in that
region a decade ago, and Jorasco medics served in every
nation's army during the war.
The guild runs schools that teach medicine, as well as
houses of healing that provide both mundane and magical services. If it could save a life, it's probably marked by the House Jorasco [[griffon]] emblem, and it will come
with a cost. If you have the gold, Jorasco healers can
remove a disease instantly with [[restoration]]. If you
can't afford such a service, they will treat you with mundane techniques. House Jorasco is also the source of [[potions of healing|potion of healing]]. While many criticize Jorasco's demands for payment, the house maintains that it's not about
greed; it's about ensuring the prosperity of the house, so
they can continue to help future generations.
While the public face of Jorasco is that of the healer, there are rumors that the house engaged in disturbing experiments during the [[Last War]], working with House [[Vadalis]] to develop biological weapons and new creatures. A Jorasco heir has to decide if they want to investigate these rumors.
!! History of House {{!!title}}
Like House [[Ghallanda]], House Jorasco
has its roots among the nomadic
[[halfling]] tribes of the [[Talenta Plains]].
The [[Mark of Healing]] appeared on
the plains not long after the [[Mark of Hospitality]]. When [[Karrn the Conqueror]]
marched southeast, he—and by extension
the rest of central [[Khorvaire]]—made contact with
the Jorasco tribes and the Mark of Healing for the
first time. After lengthy negotiations with Karrn’s
governors and the barons of the other [[dragonmarked house]]s, Jorasco became a full-fledged house. Unlike the [[Ghallanda]]s, the Jorascos took pains to integrate
themselves into their new society as quickly and
completely as possible. In a great migration outward,
House Jorasco members established hospitals across
[[Khorvaire]], adopting Khorvairan customs and leaving much
of their tribal heritage behind.
!!! The Last War
When the [[Last War]] began,
House Jorasco immediately started fielding entreaties from the armies of the [[Five Nations]], each of which wanted medics who bore the [[Mark of Healing]] tending to their war casualties. House Jorasco quickly found itself with lucrative contracts with all
of the Five Nations—contracts that were extended
and renegotiated over the course of the next century.
Every major campaign of the war had a contingent
of House Jorasco healers on the march, and many campaigns had Jorasco healing behind the lines on both sides.
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
The [[Jorasco]] [[enclave]] in [[Respite]] always has a steady
stream of clients. [[Stormreach]] is a dangerous city,
and whether it’s magical mending or mundane treatment, there’s always work for healers. The enclave is well supplied for such a small city, including an [[altar of resurrection]] and the skilled healer [[Alhaura|Alhaura d'Jorasco]]. It is overseen by Viceroy [[Iriakan d'Jorasco]].
An ancient building renovated in recent decades, the [[enclave]] is built on the district’s highest point, looking down the slope toward the gate that
leads into [[Dannel's Pride]]. The building is filled with
plants and flowers, perfuming the air and giving the
rooms a feeling of life. At night, the enclave’s windows
glow with a soft blue light cast by [[everbright lantern]]s.
Ambassador Jorasesh is an [[Inspired]] who leads the [[Riedra]]n [[embassy|Riedra Embassy (Sharn)]] in [[Sharn]]. He spends most of his time in negotiations, discussing trade, the reconstruction of [[Khorvaire]], and the exploration of [[Xen'drik]]. However, he
is a philosopher and historian, and when he is not at
the embassy or attending a gala event, he often visits
[[Morgrave University]]. Jorasesh is slowly developing a
following at the University; he is brilliant and charismatic, and students and sages alike are intrigued
by the handsome Inspired lord.
Jorasesh and his entourage (including his bodyguard [[Maleshari]] and right-hand-woman [[Helkashtai]]) have no direct attachment to the [[Dreaming Dark]], and Jorasesh
knows nothing about the shadow agents the Dark
has placed throughout the city. However, Jorasesh
is required to obey the commands of any Inspired
member of the Dreaming Dark who comes to [[Sharn]],
and these agents often stay at the embassy under
some form of diplomatic cover.
The [[Ninth Wands]]’ greatest firepower is in the
hands of its commander. Jorian Thiel is one of the top
warmages to serve in the [[Aundair]]ian military, and he has even been
offered a place in the [[Knights Arcane]]. He preferred to
stay with his soldiers and in the service of Minister [[Adal|Adal ir'Wynarn]]. If
it comes to open battle, he can unleash terrible power.
The daughter of [[Starrin d'Cannith]]’s second wife, Elsabet, Jorlanna takes a diplomatic
approach to the struggle for control of House [[Cannith]].
[[Merrix|Merrix d'Cannith]] promises new creations; Jorlanna promises
better relations with the [[Five Nations]] and the other
[[dragonmarked house]]s. Her detractors say those
better relations are exactly the problem. In her youth,
Jorlanna fell in love with an heir of House [[Deneith]]
and might have borne a child. (Marriage and interbreeding between members of different houses has been forbidden since after the [[War of the Mark]], due to a belief it results in children with [[aberrant dragonmark]]s.)
Many scorn her for that romance, and find her too
accommodating of the other houses.
Both [[Zorlan|Zorlan d'Cannith]] and [[Merrix|Merrix d'Cannith]] remain unaware
that Jorlanna’s romantic indiscretions are
not entirely behind her. For a year now,
Jorlanna has been clandestinely involved with a young scion of House [[Orien]]—never realizing that her lover is actually a [[rakshasa]] agent of the [[Lords of Dust]]. The [[fiend]]’s immediate goal is to fracture House Cannith permanently, and he manipulates
Jorlanna to that end. The number of [[dragonmarked house]]s holds relevance to the [[Draconic Prophecy]], and if the number were to increase to 14 or 15, it's possible that could unlock a stanza in the prophecy that could lead to the release of an [[overlord]].
Most of the citizens of the "Kingdom of [[New Galifar]]" in [[Q'barra]] consider the people of the western lands to be corrupt warmongers. Q’barra
participated in the [[Treaty of Thronehold]], but it has
little interest in trade with [[Breland]]; the Q’barrans
primarily deal with the [[Mror Holds]], the [[Lhazaar|Lhazaar Principalities]]
Princes, and the [[Inspired]] lords of [[Riedra]]. As a result,
Q’barra does not maintain an official embassy or
consulate in [[Sharn]]. Unofficially, Q’barra’s interests
are represented by Joseth ir’Kalain.
Joseth is a clever negotiator and shrewd
judge of human nature, but he is an honorable man
who believes in the ideals of the old kingdom of [[Galifar]]. He
lacks the resources of an embassy, but Joseth is a
possible patron for a group of adventurers. While
he lives modestly in [[Ambassador Towers]], Joseth owns a [[dragonshard]] mine
in Q'barra, and can draw considerable funds from
the [[Kundarak Bank|Kundarak Bank of Sharn]]. The first Q’barrans fled east to
escape the [[Last War]], and Joseth may need to recover
family heirlooms, information, or other treasures
lost during this exodus. Joseth does not trust the
people of [[Sharn]], and he is far more likely to recruit
his own agents; if a party contains a character from
Q’barra, all the better.
Jotara is a [[copper|copper dragon]] [[rogue dragon]] in [[Xen'drik]]. When
Jotara was a wyrmling, her mother left to procure her a
meal. She never returned. Jotara fended for herself and
survived the harsh desert mesas of her birth. Now grown
fearsome, the copper dragon scours the nearby countryside for any trace of her vanished mother. She has found nothing, and her desperation grows with each passing year. Anyone who can offer Jotara information on her mother’s location (or details of her demise) earns a powerful ally. If [[Yulgrin]] is brought to Jotara, she lovingly raises the [[brass dragon]] as a surrogate mother, shielding him from harm.
House [[Orien]]’s base of operations is located in the
city of [[Passage]] in [[Aundair]]. This massive [[enclave]] takes up almost a third of
the city. [[Lightning rail|lightning rail]] coaches, [[conductor stone]]s, and many other goods are produced here. It is the heart of the house, and all Orien heirs
come to Journey’s Home at some point in their lives to
learn the ways of the house.
Warforged juggernauts are imposing war machines built for close combat and raw might. They tower over their comrades; juggernaut warforged stand between
6 and 7 feet in height and can weigh up to 450 pounds.
The {{!!title}}, a band of bloodthirsty brigands, hide within the [[King's Forest]]. The band is variously estimated to have anywhere from a dozen men to as many as a hundred brigands and a mock court of beggars, harlots, and other hangers-on. A half-orc outlaw known as Tree Viper leads the gang.
The band periodically raids the thorps, villages, and plantations that line the edge of the King's Forest, and sometimes it ambushes caravans and travelers as they move through the forest. The [[Knight Rangers|King's Shields]] have tangled with the Jungle Boys on more than one occasion, but they haven't been able to capture their leader or put an end to their marauding.
While [[Xen'drik]] is home to glaciers and
deserts, the majority of those who return from it speak
of its vast jungles and rain forests. [[Dark elves|drow]] lurk in the
boughs of enormous trees, and ancient ruins are hidden
beneath shrouds of choking vines. Bushes of blood thorns thrash violently when disturbed, while rot moss rapidly spoils the rations of ill-prepared explorers. Forests can encompass a vast range of environments, from chill woodlands where every tree seems to have a twisted human shape, to dense rain forests where the heat can be a threat as deadly
as the creatures that hide in the shadows.
Prince Jurian ir’Wynarn, Queen [[Aurala|Aurala ir'Wynarn]]’s second son, hasn’t spoken face to face with his mother in almost two years.
Shortly after signing the [[Treaty of Thronehold]], the queen issued a decree banning sword duels over matters of honor; “The crown cannot bear to see [[Aundair]]ian steel shedding Aundairian blood,” the decree read.
No sooner was the ink dry on the decree parchment than Prince Jurian found himself the winner of an honor duel over a woman—and his lordly foe was dead. Jurian immediately fled [[Aundair]], choosing exile over the embarrassment of forcing his mother’s hand.
In theory, Aundairian agents are supposed to be pursuing Jurian, but now he lives the life of a wealthy playboy-in-exile. The Aundairian wine he’s fond of has dulled neither his wits nor his reflexes, and some suspect that the prince is doing more than socializing as he moves from noble manor to [[dragonmarked|dragonmarked house]] villa across the [[Five Nations]]. Jurian served a stint in the Aundairian military and had the finest fencing instructors the royal court could provide, so his victory in his last duel was no accident.
Currently, Jurian enjoys the hospitality of the court of Lord [[Ruken ir'Clarn]] in [[Wroat]]. He sends coded messages to his mother on a regular basis; few outside Aurala’s inner circle know that her wayward son is actually one of her top agents in the [[Royal Eyes]].
Most of [[Shavarath]]'s [[celestial]]s serve the Legion of [[Justice]], which
embodies the concept of war fought for a just cause. Cohorts
and their component centuries represent specific concepts
within that broad ideal. The Century of Mercy shows kindness
to fallen foes, while the Century of the Innocent Guard
protects civilians—even if they're just [[manifestation]]s, the //idea// of
civilians—and avoids collateral damage. [[Angel|angel]]s won't conscript
adventurers, but also won't leave their duties to help them.
Justice's Century of the Sun asserts that Justice Command is the [[Sovereign|Sovereign Host]] [[Dol Arrah]] herself.
This dour [[stone giant]] is the captain of the [[Arnaaracaex]]. K’Naatha is an imposing figure, striding through the city in [[mithral]] chainmail, his greatsword slung across his shoulders. More than six hundred years old, K’Naatha was a young sergeant of
the [[Arnaaracaex]] during the bloody Battle of [[Arnaarlasha]]’s Fall. In the aftermath, he and his comrades claimed the skulls of the [[rogues|rogue dragon]] that had fallen to
their blades. Today, those [[Moontower|Moontowers]] skulls remain a grim warning to any who would threaten this place and its people.
As the oldest resident of the city, K’Naatha is an exceptional source of lore from [[Io'lokar]]’s middle period. He is also the only non[[dragon]] who knows [[Arnaarlasha]]’s and the [[Warders]]’ true motives for creating [[Io'vakas]] and [[Io'lokar]] after it, a secret passed down by his father. What those motives might be rests with the DM.
Where the [[Crimson River]] marks the frontier
between the [[dragonborn clanhold]]s in the southern
jungles and the [[Basira Swamp]], Ka’rhashan stands as
the largest [[dragonborn]] community in [[Khorvaire]]. The
settlement surrounds a plaza set with brass towers
and buildings of volcanic glass and stone—ruins from
the [[Age of Demons]].
Outsiders, including [[lizardfolk]] and [[kobold]]s, can
freely enter Ka’rhashan. However, creatures not of
reptilian or draconic descent must hire [[dragonborn]]
minders or risk running afoul of unfriendly natives.
Entering holy areas is strictly forbidden, and characters who do (most often in search of treasure) end up on the wrong side of the dragonborn’s severe justice.
The [[dragonborn]] clans of [[Q'barra]] fight a ritual war every five years to determine control of Ka’rhashan. Elders of the winning clan administer the town and its limited but exotic trade, and extend their influence across all the other clans. The [[Flamebrow clan|Flamebrow Clanhold]] currently rules Ka’rhashan, as it has for almost a century, led by High Elder [[Bhisma Na'kala Flamebrow]].
Kaius I was the governor-prince (and later, king) of [[Karrnath]] when King [[Jarot ir'Wynarn]] of [[Galifar]] died in 894 YK. He joined with his siblings, the rulers of [[Breland]] and [[Thrane]], in their rejection of the succession of Princess [[Mishann ir'Wynarn]] of [[Cyre]], thus sparking what would become the [[Last War]].
Kaius I was also responsible for embracing the [[Blood of Vol]] as [[Karrnath]]'s state religion, and establishing the Order of the [[Emerald Claw]] in 896 YK.
His son, [[Kaius II|Kaius ir'Wynarn II]], ascended to the throne after the mysterious and sudden death of Kaius I. But few know the terrible truth: Kaius I was transformed into a [[vampire]] against his will by a high-ranking member of the [[Emerald Claw]]. Kaius I faked his death and disappeared from the public eye, spending eighty years in hiding, practicing control over his sinister urges and developing techniques for hiding his true nature. Now, he has reclaimed his place has king of [[Karrnath]], assuming the identity of [[Kaius III|Kaius ir'Wynarn III]].
In 991 YK, Kaius III came of age, taking his place as the rightful ruler of [[Karrnath]] and succeeding the regent, his aunt Lady [[Moranna]]. Although he is famous for his part in initiating the [[Treaty of Thronehold]] which ended the [[Last War]], for ending the [[Blood of Vol]]'s status as official religion of Karrnath, and for efforts at rebuilding his land, few know much about him personally. He grants few private audiences and rarely makes public appearances; he seems content to let his wife, Queen [[Etrigani]], and his chief advisor, Lady [[Moranna]], attend to the daily tasks of governing the land.
Tall and thin, with striking eyes and a sharp mind, Kaius III cuts an impressive figure, the spitting image of his great-grandfather [[Kaius I|Kaius ir'Wynarn I]]. What few know about Kaius III is that he bears a terrible secret: The reason he looks so much like his ancestor is because he is the same person. Kaius is a [[vampire]] and has been one for nearly eighty years. Only his wife, his chief advisor, and the [[Minister of the Dead|Vedim ir'Omik]] know the truth about his nature.
With power once again in hand, he has done his best to undo what he sees as mistakes, ousting the [[Blood of Vol]] and restoring peace to the [[Five Nations]]. Despite the passage of years, he still seeks his original goal of a reunited [[Galifar]], with himself as king.
The [[real Kaius III|Deep Fourteen]], the king's great-grandson, still lives, held in the deepest reaches of the prison of [[Dreadhold]].
!! Challenge from Drago Thul
After his ascension to the throne, the warlord [[Drago Thul]] began proclaiming that Kaius was in fact a vampire, having no idea just how accurate his accusation was. This was a serious accusation; the [[undead]] have no rights under the [[Code of Galifar]] and cannot inherit titles or lands. Thul's challenge spread like wildfire, only to be crushed when Kaius III met the warlords under the midday sun and cut his palm to show his freely flowing blood. Drago Thul fled to [[Stormreach]] after the [[Last War]].
A new and formidable threat to the [[Tashana|Tashana Tundra]], the savage
[[human]] barbarians of the Kalaak swarmed from the area
of the [[Eska Mountains]] and laid waste to everything in
their path. Undiscriminating in their wanton destruction, the raids target [[shifter]], [[human]], and [[dwarf]] alike. The few survivors of these raids
describe returning to camps that are not just pillaged,
but utterly savaged and desecrated, with dark references
to torture and cannibalism. Some captives are cruelly
injured and released; those who can still speak tell of self-mutilating barbarians using hooks and knives to sculpt
their own flesh into nightmare visages.
The Kalaak are relentless in their insane killing.
Entire herds of caribou are found slaughtered and mutilated, left to rot on the taiga. This terrible waste goes
against the very nature of the Tashanan people, especially
the [[shifter tribes|Culture of the Tashana shifters]]. Recently, the [[Saartuk]] and [[Qiku]] tribes have organized scouts and sentries as the Kalaak raids
travel farther south into the heart of the Tashana. But it
is the northern [[Chuniigi]] who have borne the brunt of the
Kalaak aggression. Desperate, the Chuniigi have in turn
begun raiding [[Dorann|Dorann Holds]] [[dwarf]] clanholds and even other
southern tribes, bringing a dangerous instability to the
natural order of the Tundra.
One of the fearsome war chiefs of the Kalaak is [[Kunigaal]] the Desecrator.
''Getting PCs Involved:'' The Kalaak raiders represent
a grave threat to the order and balance of the Tundra, and a good opportunity to present truly terrifying villain for PCs. The PCs might need to cross the vast wilds
of the Tundra to reach a particular destination. Perhaps
they have been hired by [[Khorvairian|Khorvaire]] agents to find and
contact a remote [[shifter]] tribe in order to barter for the
Tashanan goods so valued in certain circles of Khorvaire. Simply making the journey is hazardous enough, but upon arrival, the PCs find the shifters under attack or already destroyed.
Or the PCs might take up the cause of the beleaguered shifter tribes directly. The Sky Tellers are deeply concerned about the presence of the Kalaak in the
Tashana. They might hire or otherwise compel the PCs
to journey to the [[Krertok Peninsula]], where the Kalaak
appear to be based. There the characters find a strange
and terrible relic from the [[Age of Demons]]—a gargantuan statue of an ancient [[overlord]], the physical remains of a [[demon]] long ago dispatched and bound. The
Kalaak worship this ancient evil, whose vague stirrings
of malevolent consciousness power their terrible savagery. Here PCs might uncover the true directors of the Kalaak terror—[[Sarlona]]n [[rakshasa]]s, whose machinations
endeavor to free the [[fiend]]s of ages past.
!! Kalaak vs Karrak
One may notice that the Kalaak who are influenced by the [[overlord]] of the [[Tashana Tundra]] share an almost identical name to the [[Karrak]]-worshipping [[eneko]], who are influenced by the [[overlord]] of [[Syrkarn]]. The nature of the [[demiplane]]s of [[Khyber]] is such that the prisons of overlords are not confined to one place on the surface. Could the two cults actually serve the same master?
The most powerful [[quori]] are the kalaraqs, also known as eyebinders—entities formed of pure shadow that is outlined by a nimbus of energy. A host of disembodied eyes whirl around a kalaraq, each reflecting a consciousness the creature has consumed.
Kalaraq quori guide the quori race, and the [[Devourer of Dreams]]—the personal emissary of the [[Dreaming Dark]]—is of this order. Although the kalaraqs never fight one another overtly, each has its own agenda, and each hopes to someday seize the throne of the Devourer of Dreams. Because of this internal conflict, it is unusual for a kalaraq to leave [[Dal Quor]] to inhabit a mortal vessel and become one of the [[Inspired]].
Kalaraqs are able to implant psionic [[mind seed]]s in [[humanoid]]s, which over time can turn the host into a thrall under the control of the kalaraq.
//I am kalashtar, born of two worlds. Over a thousand years ago, my ancestor bound her bloodline to the spirit Kashtai, and I am a child of that union. Kashtai moves within me. Her memories come to me in dreams, and at times her voice whispers in the silence of my mind. As long as at least one of my sisters is alive, Kashtai will survive—and as long as she lives, she will fight [[il-Lashtavar]]. //
<div align="right">—Lakashtai, servant of the light</div>
The kalashtar are a compound people, created from the
union of humanity and renegade spirits from the [[plane of dreams|Dal Quor]]—spirits called [[quori]]. Kalashtar are often seen as wise, spiritual people with great compassion
for others. There is an unmistakable alien quality to the
kalashtar, though, as they are haunted by the conflicts of
their otherworldly spirits.
!! Bound to Spirits
Every kalashtar has a connection to a spirit of light, a
bond shared by other members of their bloodline. Kalashtar appear [[human]], but their spiritual connection affects them in a variety of ways. Kalashtar have symmetrical, slightly angular features, and their eyes often glow
when they are focused or expressing strong emotions.
Kalashtar can't directly communicate with their [[quori]]
spirits. Rather, they might experience this relationship
as a sense of instinct and inspiration, drawing on the
memories of the spirit when they dream. This connection grants kalashtar minor [[psionic|psionics]] abilities, as well
as protection from psychic attacks. All of these quori
dream-spirits are virtuous, but some are warriors and
others are more contemplative. Work together with the
DM to determine the nature of your linked spirit. Typically, a kalashtar knows the name and nature of their
spirit, but some may know nothing of their spirit or the
source of their psychic gifts, such as an orphan kalashtar
raised among strangers.
The bond to the spirit can cause some kalashtar to
display unusual quirks. Consider rolling or selecting a
trait from the table below.
| !<<dr d10>> |!Quirk |
| 1 |You try to understand the motives and feelings of your enemies. |
| 2 |You prefer using telepathy over speaking aloud. |
| 3 |You feel a strong drive to protect the innocent. |
| 4 |You apply dream logic to mundane situations. |
| 5 |You discuss things out loud with your quori spirit. |
| 6 |You suppress your emotions and rely on logic. |
| 7 |You are strongly influenced by the emotions of those around you. |
| 8 |You prefer to find nonviolent solutions to problems whenever possible. |
| 9 |You are driven by a warrior spirit and will fight for any noble cause. |
| 10 |You are obsessed with [[Dreaming Dark]] conspiracies. |
!! Hunted by Nightmares
The virtuous spirits tied to the kalashtar fled from the
dream-realm of [[Dal Quor]] to escape evil spirits that dominate it. The rebel [[quori]] believe that through meditation
and devotion, they can change the fundamental nature
of Dal Quor, shifting the balance from darkness to light.
Most kalashtar communities focus on acts of devotion
known as the [[Path of Light]]. But the dark powers of Dal
Quor have their own plans for [[Eberron]]. Through the
force known as the [[Dreaming Dark]], these monsters
manipulate the folk of [[Khorvaire]] to eliminate kalashtar
whenever possible.
Many kalashtar defend themselves from the [[Dreaming Dark]] by focusing on devotion to the [[Path of Light]]. Others, though, seek out the agents of the Dreaming
Dark and oppose their plans, or protect the innocent
however they can. Still other kalashtar grow up isolated,
knowing nothing about Dal Quor or the Dreaming Dark.
Such orphans might use their abilities for personal gain
or otherwise act against the virtuous instincts of their
quori spirits; this can cause internal conflicts and violent
mood swings.
!! Kalashtar Names
A kalashtar name adds a personal prefix to the name of
the quori spirit within the kalashtar. Such names have
no relation to the kalashtar's gender.
Kalashtar orphans are unlikely to know the name of
their spirit and take names from another source.
//''Quori Names:''// Ashana, Ashtai, Ishara, Hareth, Khad, Kosh, Melk, Nari, Tana, Tari, Tash, Ulad, Vakri, Vash
//''Kalashtar Names:''// Coratash, Dalavash, Dolishara, Halakosh, Khoratari, Koratana, Lanhareth, Molavakri,
Nevitash, Sorashana, Torashtai, Valakhad, Vishara
!! Kalashtar Culture
The kalashtar were born in the mountains of [[Adar]]. Descended from the hosts of [[Taratai]] and the other sixty-six immortal [[quori]] she led out of [[Dal Quor]], kalashtar have endless patience and a firm conviction that their traditions will some day usher in a golden age for all creatures. They do not want to change in any way; they know what needs to be done to fight the [[Dreaming Dark]], and they will continue until they succeed or have been destroyed. This attitude is reflected in the rigid monastic lifestyle of the [[Adarans]], which has remained unchanged and uncontested for more than a thousand years.
Things are different on the continent of [[Khorvaire]]. The kalashtar of Khorvaire come from a variety of backgrounds. Some migrated before the [[Inspired]] arrived on [[Sarlona]], blending quietly into the [[human]]s of the [[Five Nations]] before [[Galifar]] united them. Others have been sent by kalashtar elders over the course of the last few centuries. Some came to study Khorvaire, while others were sent away to ensure that kalashtar society could not be eliminated in a single blow. The kalashtar of Khorvaire have more interaction with other cultures and don't have to deal with the constant distraction of war with the [[Dreaming Dark]].
As a result, the kalashtar of [[Khorvaire]] are generally more optimistic and innovative than their [[Adaran|Adarans]] counterparts, and they enjoy experimenting with new things. The most significant innovation has been the development of the path of the [[atavist]].
The kalashtar population of Khorvaire is split between a number of racial enclaves in the major cities of the continent, such as [[Overlook]] in [[Sharn]] and Stillstone Holt in [[Stormhome]]. This pattern has largely been driven by the war with the [[Dreaming Dark]]. They cluster together not because they are uncomfortable around members of other races, but because they need the sense of safety in numbers, and it's easier to spot the actions of the Dreaming Dark in a closed system.
An independent scion of House
[[Lyrandar]], Kaleena d’Lyrandar guides teams and cargo upriver on
the Watersnake, a unique [[elemental-bound|elemental vessel]] skiff. This
vessel was a personal project of Kaleena’s mother, and
she devoted her fortune to developing it. The [[soarwood]] craft is powered by a small water [[elemental]] and can carry up to 10 humanoids 15 miles per hour
upriver against a moderately strong river current, or
25 miles per hour through still waters. The [[artificer]]s built stealth magic into the raft as well; Keleena can activate magical darkness, mist, or silence a few times per day. The skiff requires the [[Mark of Storm]] to activate. Kaleena has little to do with the [[house enclave|Falconer's Spire]] in [[Stormreach]] and despises the current [[viceroy|Calynden d'Lyrandar]].
Kalryni, a young [[blue dragon]], recently left her family in
the [[Thousand]] to join the meeting of colors and minds in
[[Vorel'arux]]. Kalryni’s color is fresh and lovely, a pale blue
azure like the sky at dawn; her mind is less developed.
Innocent almost to the point of naivete, Kalryni annoyed
her contemporaries, who soon found her endless drone
of questions and tangential remarks grating. Patient
[[Tapestry]] members are helping Kalryni develop her natural intelligence, but the process is tedious. To expedite her learning (and give the Tapestry a break from her
chatter), Kalryni was sent to study an ancient [[rakshasa]]
ruin. What exactly she is supposed to study, Kalryni’s not sure, but she takes great pride in her comprehensive sketches of the ruin and her preservation of several pretty rocks found among the debris.
Kalryni has never seen [[humanoid]]s before, and she
finds any encounters with them fascinating. She asks
every question that pops into her head, from dietary
requirements to mating rituals, and seems delighted at
any response. Her attention is both flattering and dangerous, however; the curious dragon sees nothing wrong with slicing open a nondragon for dissection purposes if
his comments intrigue her. At best, she might snatch up
one “experimental subject” to bring back to [[Vorel'arux]],
certain that such a unique find will garner great respect
from the [[Tapestry]].
Lord Kaltaresh, Keeper of Seals, is a [[du'ulora]] [[Inspired]] and the supreme commander of the [[Edgewalkers]] of [[Riedra]]. He guides the Edgewalkers from the division headquarters in the bastion of [[Dar Mun]].
Kaltaresh (in a long-dead vessel) organized the soldiers who opposed the [[Nulakesh]] incursion in 390 Unity (88 YK). Thus, among the Edgewalkers, he is known as "the First."
The Keeper of Seals is especially powerful and cunning for a
[[du'ulora]]. Two thousand years ago, he was one of the commanders in the battle against the [[quori]] who eventually became the [[kalashtar]], and he learned much of
the [[plane]]s during this hunt. He hates the kalashtar and
believes that the followers of the [[Path of Light]] must be
destroyed. However, Kalataresh is one of the few [[quori]]
of the age who is not cruel by nature. He does what he must
to protect his people, but he does not savor violence. He is truly concerned with
the stability of [[Eberron]] and disturbed by the [[Mourning]],
believing the fate of the quori to be linked to Eberron.
For now Kaltaresh follows the guidance of the [[Dreaming Dark]], but he could ally with Lady [[Sharadhuna]] if she opposes the [[Devourer of Dreams]].
The //Kapaa'vola//, or "Treacherous Whisper", was the psychic contagion that destroyed the ancient [[goblinoid]] empire of [[Dhakaan]].
!! End of an Empire
The golden age of [[Dhakaan]] lasted over five millennia, with
[[goblin]]s ruling over the lands that would later be claimed by
[[Galifar]]. As the legend suggests, this prosperous era ended with
the [[Xoriat]] incursion, when the [[daelkyr]] led armies of [[aberration]]s
into [[Khorvaire]]. The daelkyr destroyed Dhakaani cities and
transformed [[goblinoid]]s into aberrations, such as [[dolgaunt]]s and
[[dolgrim]]s. After a long and bitter struggle, Dhakaani champions
turned the tide. The [[orc]] [[Gatekeeper|Gatekeepers]] [[druid]]s bound the daelkyr in
[[Khyber]], but it was Dhakaani warriors who scattered their armies
and hunted down the beasts that survived.
But as legend tells,
the [[daelkyr]] achieved victory even in defeat. [[Dyrrn]] the Corruptor
created a psychic contagion that severed [[goblinoid]]s from the [[Uul Dhakaan]], and further encouraged chaotic behavior and irrational
beliefs. Leaders among the [[duur'kala|dirge singer]] identified the threat but couldn't
find a way to stop it; isolation was the only answer. Determined
to preserve their culture, Dhakaani forces sealed themselves
in subterranean fortresses, vowing to return only after the
''Kapaa'vola''—the Treacherous Whisper—had faded. These armies
called themselves the [[Kech Dhakaan|Heirs of Dhakaan]], Keepers of the Empire—a term still used today to encompass all Dhakaani clans.
On the surface, the remnants of the empire fragmented
and collapsed. As far as the Kech Dhakaan are concerned,
the history of the Empire of [[Dhakaan]] came to an end the
moment [[Dyrrn]] the Corruptor unleashed the Kapaa'vola.
But in truth, the empire lingered for centuries after the
Keepers left; the wider world doesn't even know the term
Kapaa'vola, and history books consider the fall of Dhakaan
to be a long and ugly affair. Dyrrn's curse caused paranoia
and wild beliefs to flourish, further driving the survivors apart. The discipline and knowledge of Dhakaan were lost,
and the traditions of the daashor—[[artificer]]s of Dhakaan—
and the dirge singers were forgotten. New religions and cults
emerged. Some tribes embraced the [[Dark Six]], while others
revered a wider pantheon. Under [[Dhakaan]], the [[goblinoid]]
subspecies were united; in the wake of the Kapaa'vola, the
strong dominated the weak. Some tribes developed unusual
and complex traditions, while others were cruel and feral.
When [[human]] explorers found these warring tribes living in
the ruins of grand cities, many assumed that the goblinoids
had claimed the remnants of a human civilization they
destroyed.
Kapaerian Island in the [[Barren Sea]] forms part of the boundary of the [[Phoenix Basin]]. Its landscape is dominated by [[Mount Kapaerian]]. Two unique reptilian humanoids dwell on this island: [[skarn]]s and [[rilkan]]s.
The greatest wonders of the [[Thunder Sea]] lie deep below
the surface, all but unknown to the people of [[Khorvaire]]. The
kar’lassa are enormous beasts—miles in length—half-buried and
sleeping in the floor of the Thunder Sea. Not even the [[dragon]]s
of [[Argonnessen]] know the origin of the kar’lassa. They’ve slept
since the beginning of recorded history, and are immune to all
forms of [[divination]] magic. They could be creations of [[Khyber]]
trapped before they could rise to the surface, or they could’ve
been crafted by [[Eberron]] to guard against some future threat.
Perhaps they are young [[progenitor|Progenitor Dragons]]s, and when they finally
wake, they will create new worlds.
All that’s known for certain is that the kar’lassa are massive,
immortal [[monstrosities|monstrosity]]... and that each is bound to one of the
[[plane]]s. Each kar’lassa radiates the effects of a powerful
[[manifest zone]], extending up to 13 miles. The appearance of
each kar’lassa reflects the plane they’re tied to; the kar’lassa
of [[Shavarath]] is a massive draconic beast with steel scales,
while the kar’lassa of [[Fernia]] is a serpent of embers, water
forever boiling against its skin. But the strangest aspect of the
kar’lassa is their dreams. When mortals dream, their spirits are usually drawn into [[Dal Quor]]. However, when the kar’lassa dream, //they don’t dream in Dal Quor//. Instead, each kar’lassa dreams in the [[plane]] it’s tied to—and more wondrous yet, each great dreamer draws in the spirits of dreaming mortals. Any creature that dreams within
13 miles of a kar’lassa—including unwary sailors passing
above, if any are bold enough to go off the approved travel
routes—is pulled into the behemoth’s dream, instead of
dreaming in [[Dal Quor]]. So, for example, anyone who sleeps in
the [[Eternal Dominion]] city of [[Hal'iri]] dreams their dreams in [[Irian]]. While
dreaming in this way, a creature is only present as a spirit, and
is immune to the negative environmental effects of that plane;
so a mortal dreamer isn’t hurt by the extreme heat of [[Fernia]] or
the cold of [[Risia]]. Even if a dreamer dies in their dream from
other causes, they just wake up. This is still //dreaming//; unless
the dreamer is capable of lucid dreaming, they have little
control of their actions and will likely only remember fragments
of the experience. But if they do have tools or training that
allow lucid dreaming (as with the [[dream key]]s), this
can be an interesting way to explore the [[plane]]s.
Twelve kar’lassa have been discovered; one for each plane,
aside from Dal Quor. The [[sahuagin]] of the [[Eternal Dominion]]
have built their largest cities around eight of these great
dreamers, though they’ve shunned the kar'lassa associated
with [[Mabar]], [[Xoriat]], [[Thelanis]], and [[Risia]]. The sahuagin harvest
biomatter from the kar’lassa, and these substances are the fuel
that drives their industry.
The kar’lassa are a source of wonder, not monsters to
be fought. To all tests, they appear to be immortal, and
regenerate damage quickly. Spells such as [[disintegrate]] only work on a tiny sliver of the kar’lassa, and even that’s quickly restored. If one of these ancient slumbering
monstrosities were to rise, it would be an almost unstoppable
force of destruction, and destroy the Dominion city in the
process. If one of these vast creatures emerged onto land, it
could easily devastate cities without even meaning to.
It’s possible a small kar’lassa might be the first to wake—can the heroes who
oppose it find a way to return it to its slumber before the
others wake? If a DM chooses to explore this plotline, they’ll
have to decide the truth about the origins of the kar’lassa. If
they’re the children of Eberron, they might not want to destroy
innocent creatures; they could have an important purpose
as yet unfulfilled. On the other hand, if they’re tools of the
[[overlord]]s or the [[Devourer]], their rising will spell disaster.
!! The Great Dreamers
<<list-links-article "[tag{!!title}sort[title]]">>
Children of the [[Endless Ocean]] of [[Lamannia]], the [[merfolk]]
have been drawn into [[Eberron]] time and again during grand
convergences between the [[plane]]s. Merfolk can be found
across the seas of Eberron, and every //kara//—tribe—has its own
traditions and customs. The primary merfolk culture in the
[[Thunder Sea]] is Karakala, whose members call themselves
the Kalamer.
The [[Thunder Sea]] has many strong [[manifest zone]]s to
[[Lamannia]], the source of the endless storms that give the
region its name. Nearly two centuries ago, an unusually strong
convergence amplified the effects of the manifest zones. Both
the [[Valraean Protectorate]] and the [[Eternal Dominion]] were
lashed by the power of Lamannia, and there were fears that
the barrier between worlds could be permanently damaged.
At the height of this disaster, Kalamer [[merfolk]] were pulled
through from Lamannia; finding themselves without a means
to return home, they used their rites and rituals to contain
and repair the damage. These wild zones in the upper waters have always been a threat, and once it became clear that Karakala could mitigate the danger, both the [[sahuagin]] and [[sea elves|sea elf]] agreed to give them freedom to travel in the upper
waters, so long as they managed the [[manifest zone]]s. Today,
many Kalamer consider the [[Thunder Sea]] their new home, and
travel from zone to zone, practicing their [[primal|primal magic]] traditions. In
a sense, they’re nomadic gardeners, preserving the wild. As
they’re recognized as neutral by both the [[Dominion|Eternal Dominion]] and the
[[Protectorate|Valraean Protectorate]], they often serve as messengers, couriers, and
mediators, carrying news and negotiating on behalf of these
powers—an important role, as the [[sahuagin]] refuse to speak
directly to the [[sea elves|sea elf]]. The reach of Karakala extends along
the southern coast of [[Khorvaire]], and the arrival of a Kalamer
[[bard]] is often a celebrated event in small [[Brelish|Breland]] or [[Zil|Zilargo]] fishing
villages; more than once, they’ve managed to settle disputes between fisherfolk and the Dominion.
Overall, Karakala is a neutral force, concerned above all
with traveling between the [[manifest zone]]s—which they call
the roots—and performing the rituals that keep them stable.
However, there are Kalamer pods who quietly despise those
who bend nature for their own benefit—dryskin, [[sahuagin]],
and [[sea elf]] alike—and especially oppose the use of [[elemental binding]]; these have come to see House [[Lyrandar]] as their foes.
There are Kalamer who dream of someday cleansing the
oceans of all traces of industry, of unleashing the full power of
the [[manifest zone]]s instead of keeping them contained. To date,
Karakala has maintained its peaceful course, but it’s always
possible that their darker impulses will rise to the fore—that
they’ll show House [[Lyrandar]] and the nations of the world the
true power of the storm.
!! Culture
The Kalamer are a primal people, feeling the currents, tides,
and winds in a profound way; some say that the ocean sings a
song. Consider these philosophies when dealing with [[merfolk]]
of Karakala:
* //“The water is always moving; follow it, let the currents guide you.”// Kalamer prefer to remain in motion, and deeply rely on instinct and intuition.
* //“Flow around a problem or away from it.”// Kalamer value flexibility over pride and aggression.
* //“Keep only that which lifts you up, not what drags you down.”// Kalamer avoid anything that anchors them too strongly to one place or mood, including property and vendettas.
* //“Make no judgment until you know the story.”// Kalamer are naturally curious and seek to understand the people and things they encounter.
Karakala is a culture rather than a nation. There are
approximately ten thousand Kalamer spread across the
[[Thunder Sea]], but they claim no territory and have no single
leader. Most live in small pods, following a pattern of migration
between the [[manifest zone]]s of the upper water. When they
reach a manifest zone, they remain there for a week or so,
performing [[primal|primal magic]] rituals that stabilize the zone. They prize
manifest zones to [[Lamannia]], and time spent at a Lamannian
zone is a time of celebration. However, they travel to all
manifest zones, and their rituals can contain the harmful
effects of any [[manifest zone]].
The Kalamer don’t worship deities, but revere the forces of
nature and believe the world speaks to those who listen. While
outsiders might view this as worshiping [[Eberron]], the Kalamer
don’t need to anthropomorphize nature for it to be worthy of
reverence. The Kalamer value wisdom over strength, and the
leader of the pod holds that position because the others trust
their instincts; often they’re an elder, but age isn’t a requirement.
In general, Karakala is peaceful; this is one reason both the
[[Dominion|Eternal Dominion]] and [[Protectorate|Valraean Protectorate]] allow the Kalamer to move freely. Most [[merfolk]] seek to understand any threats they encounter,
to see if they can find a way to coexist—or failing that, to simply
move past the danger. However, they can be dangerous foes
when they’re forced to act or encounter a true threat to the
balance of nature.
Kalamer fashion is simple and functional. It’s rare for Kalamer
to wear anything heavier than leather armor, and most just wear
leather straps to hold their tools and personal possessions.
Many carry small tokens—shells, stones, bones—that remind
them of a place or moment. Sometimes [[human]]s describe
hearing the sound of the ocean in a shell; however, many
Kalamer truly receive primal impressions from natural objects.
Kalamer speak Aquan, their native tongue from [[Lamannia]].
Most of them also speak either Elvish, Common, or Sahuagin,
depending on where their route takes them, and [[merfolk]] [[bard]]s
may speak all of these. Any Kalamer capable of channeling [[primal magic]] can speak Druidic, which they consider to be the language of the wind and water.
!! Territory
The [[merfolk]] of Karakala can be found across the [[Thunder Sea]]; Kalamer pods follow migratory patterns, while wandering [[siren]]s let intuition guide them. The Kalamer remain in the upper waters where sunlight allows photosynthesis. There are
no Kalamer cities, but they establish simple outposts along
their migratory paths, often in masses of floating vegetation
(which are especially common in [[Lamannia]]n [[manifest zone]]s).
Many pods bond with a [[dragon turtle]], which serves as the
locus of the pod; the [[merfolk]] strap themselves to the turtle
when they sleep. Unlike the dragon turtles of the [[Eternal Dominion]], this is a symbiotic relationship; the merfolk help their companion find food and keep the dragon turtle
entertained. Other pods bond with gargantuan beasts that have
passed into [[Eberron]] from [[Lamannia]].
!! Tools and Traditions
Karakala has no tradition of [[wizard]]ry or [[artifice|artificer]]. However,
most Kalamer possess at least a touch of [[primal magic]], and
can shape water or strike a foe with a thunderclap; this can
be reflected by giving Kalamer [[merfolk]] a [[cantrip|spell tier]] or [[common|spell tier]] tier primal magic [[spell]]. Kalamer with greater gifts are called [[stormcaller]]s, and can summon lightning and wind. Kalamer champions could possess the abilities of rangers or [[druid]]s, and might be able to assume the forms of deadly sea creatures.
Other Kalamer hear music in the motion of wind and water
and become [[bard]]s. Kalamer [[siren]]s can weave [[illusion]]s with
their words, or cloud the minds of enemies. These sirens often
travel alone, sharing news and songs both with Kalamer pods
and with all other ships and communities they come across.
While most Kalamer bards seek to bring joy to everyone they
encounter, there are stories of sirens turned bitter after the
destruction of a pod or witnessing great cruelty; these merfolk
may turn their powers to punishing those they see as evil.
Kalamer bards generally rely on their voices as opposed to
using instruments, and can sing while submerged.
The people of Karakala create their tools from natural
materials—stone, shell, leather, bone. Their [[magic item]]s—
mostly potions, amulets, and charms—produce [[primal|primal magic]] effects.
!! Foreign Relations
Karakala is politically neutral, holding no nation or people
above any other. A [[siren]] or pod may have a strong bond to a
particular fishing village, but that affection doesn’t extend to the
dryskin nation that claims it. Generally, Karakala tries to ignore
the actions of nations, focusing on its never-ending pilgrimage,
though individual Kalamer—[[siren]]s, [[triton|merfolk]] champions—may
become more actively involved with a single nation.
While they maintain their neutrality and serve as messengers
and couriers between all the people of the sea, Karakala
doesn’t like the [[Eternal Dominion]] or the [[Valraean Protectorate]].
The Kalamer dislike seeing any creature held in bondage,
and they may help renegade [[locathah]] or smugglers sailing
beyond approved Dominion routes. However, while they may
help peaceful smugglers, they dislike cruelty and greed; violent
pirates can find that the [[merfolk]] are just as dangerous as
House [[Lyrandar]] or a Dominion patrol.
To date, Karakala has been a passive, mediating force,
trusted by all. But the fact remains that Kalamer dislike all
forms of industry in the sea. If it were an option, many Kalamer
would destroy all dryskin shipping and shatter the cities of
the [[Dominion|Eternal Dominion]] and [[Protectorate|Valraean Protectorate]] alike. Currently, they work to contain the [[manifest zone]]s of the [[Thunder Sea]] and to keep
peace; but if they chose, they could instead release the power
of these zones to terrible effect. Hostile Kalamer could begin
by calling [[elder tempest]]s and megafauna beasts from
[[Lamannia]] and unleashing them into shipping lanes, increasing
the dangers of the sea—with plausible deniability as to their
source. By coordinating rituals with coterminous periods, the
Kalamer could dramatically enhance the effects of [[manifest zone]]s. Using the [[Lamannia]] zones in this way, they could create devastating hurricanes and tsunamis. Could tidal waves devastate [[Stormreach]], or elemental hurricanes topple one of
the towers of [[Sharn]]? Karakala has no interest in conquest; if
the [[merfolk]] pursued this course of action, it would purely be to
drive commerce and civilization from the sea.
!! Story Hooks
The Kalamer aren’t conquerors. What could draw them into a
story? Consider the following ideas.
//''The Traveling Siren.''// As adventurers visit a coastal town,
they hear a beautiful, clear song rising from the harbor and
see people running towards the pier. Aside from being an interesting scene,
the [[siren]] could bring news that’s directly relevant to the
adventurers—perhaps news of a ship they were waiting for that
was sunk offshore, or perhaps they’ll share a story of a ruin
hidden off the coast. As sirens act as intermediaries, a bard
could also come carrying a message for the adventurers from
a powerful figure in the [[Dominion|Eternal Dominion]] or [[Protectorate|Valraean Protectorate]].
//''Salvation at Sea.''// Perhaps the characters’ ship leaves the
safe trade routes and runs afoul of an endless storm. Or maybe
they’re simply crippled by pirates, or by a forgotten weapon of
the [[Last War]]. A pod of Kalamer can save the characters, using
[[primal magic]] to allow the dryskins to breathe underwater, helping them to safety. But do the Kalamer need something in return? A powerful [[monstrosity]] could be lurking around a [[manifest zone]], preventing the pod from performing their rituals. Or an [[aboleth]] serving the [[Lurker in Shadow]] may have captured
members of their pod; they need help to defeat the beast.
//''The Vengeful Storm.''// Though Kalamer are peaceful, the
[[stormcaller]] Llaratala can no longer share the water with House
[[Lyrandar]] and its oppression of [[elemental]]s. She and her pod
are targeting [[elemental galleon]]s, shattering Lyrandar ships and
freeing the bound spirits. The house hires the adventurers to
find out who’s responsible for the destruction of their vessels.
How will the characters track the [[merfolk]] mastermind, and
what will they choose to do?
//''Druidic Allies.''// A Kalamer hails the [[druid]] of the party
while the adventurers are on the coast or on a ship. The
[[stormcaller]] addresses them in Druidic, as a fellow defender
of the natural world, asking them to help deal with an unnatural
threat. This could be an [[aboleth]] or [[aberration]], or a danger
posed by a [[manifest zone]]—such as [[Mabar]] or [[Fernia]]—that’s
experiencing a wild surge and steadily growing worse. Can the
[[druid]] and their companions help contain the threat?
//''Intermediaries.''// The Kalamer act as couriers and envoys
between the [[Valraean Protectorate]] and the [[Eternal Dominion]].
While sailing, the adventurers come upon a dead Kalamer. The
message it was carrying could be the key to stopping a new
outbreak of war between these two nations. Can the characters
find a way to deliver it?
Karklos ir’Ilsir became an overnight sensation in [[Sharn]]
when the production of his play //Throne of Angels// opened to
rave reviews. His plays continued to astound audiences
and draw standing-room-only crowds for two years following. Theater fanatics waited with bated breath for the release of each play and worshiped the playwright
as if he were the son of the god [[Olladra]] herself.
The worship bolstered Karklos’s urge to do more
than just satisfy his audiences, driving him to challenge them instead. By his third year as Sharn’s favorite playwright, his work took on a decidedly political
tone. At first, King [[Boranel ir'Wynarn]] and the [[Brelish|Breland]]
court turned a blind eye to treasonous underpinnings
in his work, in recognition of the playwright’s obvious
brilliance. However, when //Who Mourns?// opened at the
[[Sharn Opera House]] and riots broke out in the streets,
King Boranel exiled Karklos.
Karklos found a new home in [[Aundair]] under
the patronage of Queen [[Aurala ir'Wynarn]]. However,
when his play //Wine, Magic, and Moonlight// opened with
descriptions of the debauchery of “Queen Arielana’s”
exiled son “[[Jurianos|Jurian ir'Wynarn]],” Karklos found himself on the run again. The playwright eventually stumbled onto the
docks of [[Stormreach]].
No one patronizes his work now, and he toils in a
cramped room in [[Respite]], not far from the [[Drowning Sorrows Tavern]]. His plays see production on occasion but rarely draw a crowd.
In the past few months, a mysterious woman
named Sarquala has taken an interest in Karklos.
Her blazing red hair, cool emerald eyes, and elegance
immediately captured his heart, and the two are nigh
inseparable now. Sarquala whispers in the playwright’s
ear as he works. As a result, he has written obscure
plays about the wrongful imprisonment of a pantheon
of immortal kings and their glorious return. Perhaps
this is a harmless fancy of hers. Or perhaps she is an
agent of the [[Lords of Dust]] or a devotee of the [[Dragon Below|Cults of the Dragon Below]], and she is tailoring his works to glorify her fallen masters. Unfettered by mortal conceptions of time, [[rakshasa]] and [[illithid|mind flayer]] have both foreseen that
Karklos’s works will someday be the most performed
plays in human history.
Karr'Aashta runs a small agency whose members can find out anything a client wants to know—for a price. Karr'Aashta has
a reputation for taking on cases that the other [[Tharashk]] [[inquisitive]]s won't touch, and he specializes in
jobs dealing with the [[Cogs]]. However, ‘Aashta has a
secret—he is a follower of the Dragon Below. The [[Cults of the Dragon Below]] are a factious bunch, and often fight one another. As a result, ‘Aashta's allegiance
could help conceal the activities of a cult or lead them
to the adventurers—or he could provide the adventurers with information they need to locate a cult and upset its plans, to serve the ends of his own sect.
Karrak, the Final Guardian, is a mysterious deity worshiped by some [[eneko]] cults in [[Syrkarn]]. These cults can be found anywhere eneko are found in [[Sarlona]], but they camp in high concentrations around the ruined [[yuan-ti]] city of [[Sustrai Mor]], where some say an [[overlord]] from the [[Age of Demons]] is bound.
Karrak is thought to be an aspect of the [[Keeper]] by some scholars, and worship of this deity may have its origins in the [[Rushemé]] faith of the [[ancient titans|Age of Giants]] of [[Xen'drik]]. However, some claim the Karrak-worshippers are channeling ancient [[fiend]]ish powers and practicing dark magic.
!! Kalaak vs Karrak
One may notice that the [[Kalaak]] who are influenced by the [[overlord]] of the [[Tashana Tundra]] share an almost identical name to the Karrak-worshipping [[eneko]], who are influenced by the [[overlord]] of [[Syrkarn]]. The nature of the [[demiplane]]s of [[Khyber]] is such that the prisons of overlords are not confined to one place on the surface. Could the two cults actually serve the same master?
The sprawling city of Karrlakton, the second largest city in [[Karrnath]] (population: 300,000), is the birthplace of kings (both [[Karrn the Conqueror]] and [[Galifar I|Galifar ir'Wynarn]] were born
here) and is the center of power for House [[Deneith]]. The
house's headquarters, [[Sentinel Tower]], dominates the
city's skyline. Surrounding
the tower are training grounds, barracks, and smithies
to accommodate all of House Deneith's needs. Sentinel
Tower serves as the headquarters of the famed [[Sentinel Marshals]], though most of them are abroad.
The turbulent [[Cyre River]] separates this once-bustling port city from the
deathly [[Mournland]]. Karrlakton stands in full view of [[Cyre]]’s clouded devastation. Cyre’s shimmering misty curtain fills the horizon, casting a gloomy pall over Karrlakton’s citizens. The city draws unwanted attention from prophets, doomsayers, and
apocalyptic priests. These ranting oracles proclaim
the impending doom that awaits the world, pointing
across the river to support their dire predictions.
Since the [[Last War]]’s end,
a significant number of Karrlakton’s citizens have
drifted from the city to find new lives, but the city
struggles on, surviving through the manufacture of
arms and armor and from meager trade by way of
the occasional elemental [[airship]] or other vessel that
braves the river’s frothing waters.
The [[Aurum]] Concordian known as [[Loyal Daison]] owns a significant fraction of the buildings in Karrlakton.
The Karrn Bay lies the coast of [[Karrnath]] and the [[Mror Holds]].
Karrn ir'Wynarn was the eldest son of King [[Galifar I|Galifar ir'Wynarn]] and would have become the second ruler of the kingdom of [[Galifar]] had he outlived his father. He was named after his ancestor, [[Karrn the Conqueror]].
Prince Karrn led the military campaign to subjugate the [[Mror Holds]], a period of time the [[dwarves|dwarf]] refer to as the [[Great Sorrow|Mror History]].
Karrn, acting as governor-prince of the province of [[Karrnath]], also dedicated the facility that would eventually become the [[Rekkenmark Academy]].
The Karrn River in [[Khorvaire]] flows from the foothills of the [[Ashen Spires]] in [[Karrnath]], past [[Atur]] and [[Korth]], into [[Scions Sound]].
Karrn the Conqueror established the pre-[[Galifar]] nation of [[Karrnath]] about 2000 years ago, defeating the remaining [[goblinoid]] settlements in the area. He then attempted to conquer and unite the other four burgeoning [[human]] kingdoms of [[Khorvaire]], but was unsuccessful.
Other than forming [[Karrnath]], Karrn is also known for writing the [[Analects of War]], for establishing [[Dreadhold]], and possibly even creating the strategy game known as [[Conqueror]]. He is also one of the founders of the religious sect known as the [[Three Faces of War]].
''Capital:'' [[Korth]]<br/>
''Hallmarks:'' Ale, dairy, glass, livestock, lumber, martial discipline, paper, textiles, [[undead]]
In a nation of storms and long winters, the grim and
stoic Karrns are accustomed to enduring hardship without complaint.
First and foremost, Karrnath is known for its military
tradition. Strength, strategy, and discipline are the core
values of Karrnath. Karrnath's soldiers might be the
finest in [[Khorvaire]], but they lack the magical support
of [[Aundair]] or [[Thrane]], which evened the odds during
the [[Last War]]. Nonetheless, Karrns are proud of their
martial history, and most are convinced that they would
have eventually won the Last War.
Karrnath suffered a series of severe food shortages
and plagues early in the Last War. As a result, the king
embraced the Blood of Vol as the national religion. The
priests of this faith bolstered Karrnath's forces with [[undead]], developing the [[Odakyr Rites]] for creating tremendously efficient [[animated soldiers|Karrnathi undead]]. The current king, [[Kaius ir'Wynarn III]], broke ties
with the [[Blood of Vol]] and has stopped creating new [[undead]], but Karrnath still has a significant number of skeletons and [[zombie]]s in service. Many Karrns still believe
in the Blood of Vol and approve of the use of undead, but
just as many feel that this practice disgraces Karrnath's
proud military history and that the necromancers might
have been responsible for the famines and plagues.
The nation's name has not changed since the ancient days
before the founding of the [[Five Nations]], when [[Karrn the Conqueror]] not only established the country that still bears
his name but also tried to conquer and unite all of [[Khorvaire]] under his rule. Centuries later it was another [[Karrn|Karrn ir'Wynarn]],
one of King [[Galifar|Galifar ir'Wynarn]]'s sons, who rededicated the nation to
himself in 32 YK, the same year when the [[Five Nations]] officially adopted the names of Galifar's five eldest children.
!! Interesting Things About {{!!title}}
* [[Rekkenmark Academy]] is the premier military institute in Khorvaire; prior to the Last War, all of [[Galifar]]'s officers trained at Rekkenmark.
* The [[Sovereign Host]] has regained its place as the dominant religion of Karrnath, but the [[Blood of Vol]] retains a strong following. Communities that practice the faith still use skeletons and zombies as guards or laborers.
* The laws of Karrnath are harsher than those in other treaty nations, approaching a state of martial law.
!! Karrnathi Characters
Karrns are somber folk and disapprove of extravagance
or excessive shows of emotion. As you develop a Karrnathi character or NPC, consider the following:
* ''Military Service.'' Karrns have a strong tradition of military service, making soldier or sailor appropriate backgrounds for any character. Criminals and charlatans have a difficult time evading the harsh laws of Karrnath. The Martial Adept feat can give a character a strong sense of military experience.
* ''Martial Tradition.'' Karrnathi tradition emphasizes teamwork, focus, and force, and melee warriors prefer heavy armor and weapons. Fighters favor the Champion and Battle Master martial archetypes, and Karrnathi wizards choose the School of Evocation or Necromancy as their arcane tradition.
* ''The Dead.'' Undead soldiers have served in Karrnath's armies for decades. How do you feel about the undead? Are you a follower of the Blood of Vol who considers the undead to be a practical tool? Do you have a relative or friend currently serving? Or do you despise the Blood of Vol and the use of necromancy?
!! Cities and Sites
Sturdy walls surround Karrnathi communities, and
even the smallest village maintains a capable militia.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
Karrnath has always been a martial nation, and its
people remain vigilant. Early in the war, King [[Kaius I|Kaius ir'Wynarn I]] instituted the [[Code of Kaius]], a strict set of laws and
limits. Karrnath weathered a number of famines during
the war, and this privation led to an ongoing program of
rationing to ensure that the nation is prepared for whatever lies ahead. The war is over, but the Code of Kaius
and the rationing remains in place; the people of Karrnath willingly endure ongoing hardship to ensure that
their future is secure. The populace frowns on excess of
any sort, accepts limits on luxury items, and approves of
swift and harsh punishments for crime.
King [[Kaius III|Kaius ir'Wynarn III]] was one of the architects of the [[Treaty of Thronehold]] and remains committed to peace. However, many of the nation's warlords believe that Karrnath would have won the [[Last War]] and that Kaius denied the Karrnathi people their rightful destiny. Should these warlords gain sufficient support, they could push
for a military coup.
A second destabilizing factor is the tension between
the followers of the [[Blood of Vol]] and the Karrnathi traditionalists. The Seekers assert that the Blood of Vol
saved Karrnath and point to the power of its undead
troops. The traditionalists claim that the dark magic
of the Seekers caused famines and plagues, crippling
Karrnath and forcing it to rely on the undead. The Blood
of Vol could back an uprising in Karrnath, or those who
wish to drive out the Seekers could trigger a civil war.
The embassy of [[Karrnath]] is a brooding fortress in the midst of [[Ambassador Towers]]. The Karrns are always prepared for the worst, and the embassy is designed to endure a siege. The interior of the embassy is filled with [[glyphs of warding|glyph of warding]],
[[alarm]]s, and [[arcane seal]]s—one wrong step can prove deadly. The embassy contains
its own garrison of twenty elite soldiers, commanded by
Kanarr Talan, all prepared to die in the service of
Karrnath. Riots, thieves, spies—the Karrns are
ready to deal with them all.
Ambassador Syra ir’Tarrn is a brilliant diplomat, and she is
completely devoted to her nation and her [[king|Kaius ir'Wynarn III]]. She
has no ties to the Order of the [[Emerald Claw]], and
she doesn’t even know about the [[temple|House of Hazal]] of
the [[Blood of Vol]] in [[Grawand]]. Syra deals with the
legitimate diplomatic activities of the embassy, while
Malen Torr, a ruthless spymaster, handles espionage
and shadow work.
Malen Torr is loyal to [[Karrnath]], but he does not
approve of the king’s promotion of peace; Malen
believes that the only way to secure true peace is
to restore [[Galifar]] under Karrn rule. He has made
contact with a number of the warlords of Karrnath
who share his opinions, and in the future he may set
plots in motion to disrupt the peace process and to
weaken [[Breland]] or gain control of new weapons for
Karrnath. Depending on the political and ethical
alignment of a party of adventurers, Malen could be
a valuable patron or a deadly foe.
[[Undead|undead]] soldiers form the elite core of the army of [[Karrnath]]. Fearless and tireless, they are a terrifying sight on the battlefield. With the end of the [[Last War]], most Karrnathi undead have been sealed in vaults below the city of [[Atur]]. However, the Karrnathi army keeps numerous undead in its service, while others have been commandeered by the Order of the [[Emerald Claw]].
The Karrnathi undead are created using a set of magical rituals known as the [[Odakyr Rites]], and bear little resemblance to the people they were in life. They are imbued with what the Rites refer to as "malign intelligence", allowing them to make tactical decisions and operate without direct guidance. These undead are content to stand motionless and silent for days, and can see in perfect darkness. They show no emotion, and certainly no mercy or compassion. Undead soldiers kill any opposing forces—including civilians among those forces—unless given explicit instructions to the contrary.
A Karrnathi undead doesn't have the specific memories of the warrior who donated
his bones. The military specialty of the undead reflects
that of the fallen soldier, so only the bones of a bowman
can produce a skeletal archer. However, the precise
techniques of the skeleton aren't those of the living
soldiers. [[Rekkenmark|Rekkenmark Academy]] doesn't teach the bone dance or
the twin scimitar style common to the skeletal swordsmen. So where, then, do these styles come from?
A Karrnathi undead soldier's name is typically a combination of
name and number (e.g. “Aleph 12”) and the records of the
original identity of the body are hidden in the tomes of
the [[Corpse Collectors]] at [[Fort Bones]].
The distinctive armor of the Karrnathi skeletons
is forged for them and fitted to their fleshless bones.
[[Fort Bones]] operates a small forge for this purpose,
though most of this armor is created at the Night Forge
of [[Atur]].
The massive Karrnwood covers the northern portion of [[Karrnath]]. This dense forest is the source of much of the nation's booming timber and paper industry.
When [[Taer Syraen]] is in the Material Plane, it manifests in the Karrnwood. An unnatural chill spreads from the [[feyspire]] and covers several square miles of the forest in snow, even in summer months.
The [[rakshasa]] named Kashurashan has been monitoring [[Stormreach]] since before the
downfall of the [[giant]]s, reporting to the [[Bleak Congress]] of [[Ashtakala]]. Purely an observer, he might provide assistance to other Lords of Dust who come to the region,
but he rarely takes direct action. The [[fiend]] knows more about Stormreach than virtually any other living creature, having been watching the area in various forms for over fifty thousand years; though he rarely shares his knowledge with adventurers, he could be a valuable ally or deadly foe.
Kashurashan is masquerading as one of the [[Storm Lords]]. As a permanent resident and bored [[immortal]], Kashurashan has a number of little games afoot. Gangs, [[militia]]s, and individual criminals could all be pawns in Kashurashan’s schemes, and drawing adventurers
in just adds to the fun. If the true nature of the [[fiend]] is revealed, it could cause a power vacuum in the city; is there an heir to fill the void?
Recent reports he received suggested that a great power bound in the depths beneath [[Stormreach]] was finally stirring, so he sent for [[Lorishto]], a [[rakshasa]] of the powerful ak’chazar caste, to establish contact with that entity, known as the [[Scar That Abides|Sakinnirot]].
This fabled fortress, known even in [[Riedra]] and
[[Khorvaire]] as the home of the mysterious [[Keepers of the Word]], lies in northwestern [[Adar]]. All Adarans know it as the place where the [[kalashtar]] [[Taratai]] passed
from the world in her stand against the [[Inspired]], creating the [[Shroud]] that protects Adar to this day.
Carved from the heart of a mountain, the fortress
has an outer face set into a cliff thousands of feet
above the [[Kasshta River]], looking westward into
[[Syrkarn]]. Ships from the river can be ferried by magic
lifts to a magically maintained lake nearly a mile up
the cliff. From the east, overland routes converge to
form a trail that winds to Kasshta's great gate.
Unlike all other monasteries of [[Adar]], which lie concealed behind a blend of psychic and arcane techniques, Kasshta Keep refuses to hide from outsiders or the [[Inspired]]. This is a major reason it is considered the de facto capital of [[Adar]]. The keep is frequently engulfed by unnatural weather, such as violent storms or mists arcing with
lightning.
Most of the keep's inhabitants live in subterranean
chambers. To illuminate the depths, the [[Keepers of the Word]] created magic lights that nourish people and plants as sunlight does. Other magical effects
keep Kasshta's air fresh and pleasant.
!! Leadership
[[Chanaakar]], the current Speaker of the Word, lives and works in Kasshta Keep. He rarely leaves.
The [[Keepers|Keepers of the Word]]' Council of the Wise advises him, and some of these elders actually oversee the keep's functions as a settlement. Chanaakar lives in the highest rooms of Kasshta Keep not designed solely for military purposes. Directly beneath his living quarters are the Council Chambers and the Council Hall.
!! Notable Features
In nearly all areas of Kasshta Keep, water, heat, ventilation, and light are supplied by elemental magic.
!!! Council Chambers
In the highest sections of
Kasshta Keep, important elders and mystics live and
work. Not every elder takes a chamber in these hallowed
halls—many choose to remain among their families
(or lineage groups, if [[kalashtar]]). So, about half of the
Council Chambers are occupied by persons important to
the functioning of Kasshta Keep. All these rooms have
extensive passive magical defenses.
The most open and public room at this level is the
Council Hall. A hemispherical chamber, it is set up as an amphitheater with a central raised dais for speakers. The
Council of the Wise meets here. Part of the hall is often
set aside for citizens of Kasshta Keep to air grievances or
watch the proceedings.
Unknown to many in Kasshta Keep, the central platform is a [[magic item]]. Some of the elders, including the Speaker, can command the dais to produce [[calm emotions]], [[sleep]], [[dimensional anchor]] (more useful before the [[Shroud]]), [[hold]], [[tongues]], and [[zone of truth]] up to three times per day.
The area around the dais is also a complex magical diagram useful for other spells such as [[private sanctum]] or [[magic circle]].
!!! Asperi Rookeries
Kasshta has long had little [[asperi]]
"neighborhoods." The asperis who live in these places are
considered citizens. Though asperis are wild and free in
[[Adar]], the guardians of Kasshta watch over these rookeries to
protect them from harm. Given their openness, the rookeries form one of the few potential points of infiltration.
!!! Dujong
Below the Council Chambers is the Dujong,
the area where many of Kasshta Keep's warriors live and
train. Rooms similar in layout to the Council Hall provide wide training grounds, and ample ventilation keeps the area pleasant.
!!! The Hatta
On the lowest level of Kasshta is an open
courtyard filled with orderly buildings and stalls, a wide
lane passing through the middle. The whole arrangement
resembles a tiny village. Here, merchants sell common
goods and arrange deals. The Hatta, as Kasshtans call it, is
like the open markets in villages elsewhere in [[Adar]], but it
is unusual in the eight monastery-fortresses that guard the
land of refuge. Only [[Dvaarnava]] has anything similar.
In Kasshta Keep, and [[Adar]] as a whole, the goods
available are highly variable and the prices fluctuate based
on this reality. Much of what is available are basics needed
for comfortable living or engaging in craftsmanship. Further, while [[Adarans]] do use money, that too is highly variable, and merchants often weigh coins. Barter is common.
Assume any [[magic item]] or reagent is available in Kasshta Keep, up to a reasonable limit, and decide on its price based on how you want it to appear in your campaign.
The blue-green waters of the Kasshta River cut through the reddish stone cliffs of [[Adar]]. Upstream, the monastery fortress of [[Kasshta Keep]] overlooks the river thousands of feet below.
[[Riedra]] maintains a number of fortresses along
the Kasshta River and [[Jathara Sound]] between [[Syrkarn]]
and [[Adar]]. These serve as focal points for [[Inspired]]
operations within Adar.
The [[Riedra]]n consul to [[Stormreach]] is Lord Katanavash. Lord Katanavash can
read objects and gaze into the past. He is studying
[[Stormreach]], using his powers to discover facts about
the city’s past. Like most [[Inspired]] ambassadors, he has
no direct connection with the [[Dreaming Dark]], and
Dreaming Dark agents avoid any contact with him; however, if it is truly necessary, he can provide support to Dreaming Dark operations.
Lord Katanavash is a handsome and charismatic man, but he prefers his visions of the past to the present and avoids social contact whenever possible. Nonetheless, he has developed a reputation as a charming mediator and shrewd merchant and has hosted a few gatherings over the years. His assistant and guardian [[Hope|Hope (changeling)]] is primarily responsible for coordinating those events.
!! Adventure Hooks
* Lord Katanavash often walks about the city incognito to make full use of object reading and sensitivity to psychic impressions. During one of his strolls, he passes by the party at precisely the moment he triggers an ancient trap set during the [[quori]] incursion. The adventurers and the ambassador are caught in an extradimensional deathtrap—can they use their combined skills to escape the deadly maze?
* When adventurers return from an expedition, Lord Katanavash contacts them and asks if he can use object reading on relics they have recovered. He is willing to pay them for this service, or they can share in the knowledge he discovers.
* Any encounter with Lord Katanavash could turn out to be a meeting with [[Hope|Hope (changeling)]], who could become a rival or a romantic interest for a [[changeling]] PC.
//You cannot defeat me. You fear death, knowing your flesh will rot and your soul will shrivel away in [[Dolurrh]]. But I serve the Grim King, the Keeper of the Gate—and even if you kill me now, he will open the gate for my return.//
<div align="right">—A cultist of Katashka</div>
The [[overlord]] Katashka embodies the fears of both death
and the [[undead]]. People often assume that the followers of
the [[Blood of Vol]] want to become undead, but it is Katashka's
cultists who embrace this dark destiny. His loyalists dream of
a world where the dead reign over the living, reveling in the
power death holds over the rabble, secure in the belief that
Katashka will either grant them immortality through undeath
or raise them when they fall.
Katashka thrives both on the fear of death and fear of the
undead. As such, his cults might spread plagues or otherwise
cause mass death, or they might unleash [[ghoul]]s in the sewers
or trigger [[zombie]] outbreaks. His intent is not death itself—the Grim King draws strength from the fear of the living. As such, Katashka rarely seeks to kill people swiftly. The primary purpose of the lingering plague is to sow fear among those
fighting it, and the small pack of ghouls that causes long-term
terror is more effective than an army that wipes out a city in
a day. Likewise, Katashka's undead champions revel in their
unnatural condition; they want people to know what they are
and to fear them.
The Gatekeeper's cults are often transactional, with cultists
serving the Grim King in exchange for secrets of [[necromancy]]
or undead servants. Katashka's cults have no established territories, but are actually
rarer in [[Karrnath]] than elsewhere in the [[Five Nations]], as the
[[Blood of Vol]] presents a different path to necromantic magic
along with a more positive overall message for followers.
There are some obvious similarities between Katashka and
the [[Keeper]], and some scholars assert that they are one and the
same—that Katashka's actions in the [[Age of Demons]] inspired
the myths of the Keeper. A critical difference is Katashka's
focus on undeath. Priests of the Keeper also deal with general greed, offering deals that have nothing to do with death or undeath.
The agents of [[Katra|Sora Katra]]'s Voice in [[Droaam]] are envoys and entertainers,
diplomats and mediators. Their task is to maintain morale
and lines of communication, and to help resolve disputes
before they get out of hand. Most of the agents of Katra's
Voice are [[changeling]]s, but [[medusa]]s, [[tiefling]]s, and even
[[harpies|harpy]] can be found in this role. Many focus on their role
as entertainers, sharing stories with the common folk and
painting tales of the bright future that lies ahead. Others are
focused more on mediation and the administration of justice,
especially if there is unrest between the chib (chieftain) and laborers.
Kauverra, a [[copper|copper dragon]] [[rogue dragon]] in [[Khorvaire]], loves her beautiful form. She desires nothing more than to preserve her magnificence and, when possible, improve on it. Several years ago she broke off a fang and used magic to fuse a diamond surrogate in its place. Now she seeks out perfect diamonds, planning to replace all her teeth with the glittering trove.
An heir of House [[Tharashk]], Kava
makes her home in the [[Dragon Towers]] district of
[[Sharn]]. She runs the [[Globe Information Agency]], the
largest [[inquisitive]] service in the city. Kava is utterly
dedicated to her work, and once she takes on a case,
she will go to any length to see it through.
The grand auditorium near the [[University|Morgrave University]], Kavarrah Concert Hall
hosts the finest musical performances in [[Sharn]].
Residents of [[Upper Central]], [[Upper Northedge]], and
[[Upper Menthis]]'s [[Platinate]] district attend shows in
Kavarrah dressed in their finest [[glamerweave]] garments, often arriving by [[skycoach]] after dining in
[[Skyway]] restaurants.
This little restaurant is one of the well-kept secrets of [[Sharn]], and without a recommendation, a character only knows about it if they are familiar with this district. The Kavv family
emigrated from the city of [[Stormreach]] in [[Xen'drik]],
and the food is an intriguing blend of [[Khorvairian|Khorvaire]]
styles, using Xen'drik spices and vegetables most
people have never encountered. Kavv's is a small,
intimate establishment, and despite the extremely
high quality of the food, a typical meal averages 30
cp. Saza and Taji Kavv still have many friends and relatives in Stormreach, and if the party befriends the Kavvs these contacts could prove to be useful during
trips to Xen'drik.
Deriving from the [[Dhakaan]]i term meaning "Keepers", a //kech// is a clan within the [[Heirs of Dhakaan]] dedicated to preserving a pillar of their ancient empire.
<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of the City
While the [[Dhakaan]]i are renowned for their weaponcraft, it
may be surpassed by their skill with fortifications and civic
engineering. Many of the greatest cities of the [[Five Nations]] are
built on Dhakaani foundations, and ruins of other Dhakaani
fortresses still linger after many thousands of years. These
techniques are the treasure guarded by the Kech Draal, and
Draal [[artificer]]s specialize in the [[transmutation]] effects and
the shaping of earth and stone. Every [[kech]] has its architects,
just as the Draal have their soldiers and their [[dirge singer]]s—but
stonework and mining are the pride of the Kech Draal.
The Kech Draal have little interest in filling the throne of the
Emperor Yet to Come. While they look forward to building the
next empire, they have no interest in competing with the other
Keepers; they seek only the realization of the dream. They have
not yet made their presence felt in the world, and it is up to
the DM where their deep vault lies. It's possible that they are
beneath [[Wroat]] or [[Korth]], secretly dwelling below the deepest
foundations of a modern capital.
The [[golin'dar|goblin]] play a more central role in the Kech Draal than
in many clans. While the clan is formally led by the [[dirge singer]]
Kuula Dhakaan and the warlord Druun Dhakaan, the [[ghaal'dar|hobgoblin]]
consult with a golin'dar council on all major decisions. The
golin'dar Taala is the senior voice on this council, respected for
her wisdom and skill.
The neutrality of the Kech Draal can make them a good
choice for a [[Dhakaani|Heirs of Dhakaan]] character, as they can find a welcome
with any of the Keepers. A Draal character might be gathering
information about the world, seeking lost treasure, or even just
eager to survey the styles of architecture that have developed
over the past millennia.
! Clan of Heroes
When the [[kech]] sages identified the threat posed by the
[[Kapaa'vola]], some chose retreat, hiding in the deep vaults and waiting for the curse to pass. One of their leaders, Khaas
Dhakaan, had no interest in hiding. Gathering the greatest
heroes of the age—[[Dhakaan]]i champions, [[Khesh'dar]] assassins,
[[Gatekeeper|Gatekeepers]] [[orc]]s—Khaas led his army into the depths of [[Khyber]],
and into the [[demiplane]] that served as the [[prison|Palace of Sinew]] of [[Dyrrn]] the
Corruptor. Khaas swore to end the Treacherous Whisper and to
recover artifacts stolen by Dyrrn and its minions—artifacts that
Khaas believed could restore the splintering empire.
Khaas and his champions were never heard from again,
neither in the waking world or in the [[Uul Dhakaan]], and it was
assumed that they were lost. In truth, they were trapped within
[[Dyrrn]]'s [[demiplane]], the [[Palace of Sinew]], fighting an endless struggle against the
minions of the [[daelkyr]]. Time moves strangely in Dyrrn's realm,
and by the reckoning of the Ghaalrac, it has been less than
three centuries since they set out on their mission. Trapped
in a realm of madness, the Ghaalrac have blended [[Dhakaan]]i
and [[Gatekeeper|Gatekeepers]] techniques with the [[symbiont]]s of the [[daelkyr]],
with results that others might find horrifying. They have crafted
powerful living weapons and artifacts, along with [[magebred|magebreeding]]
champions with unnatural powers—armored [[bugbear]]s with the
regenerative abilities of [[troll]]s, [[goblin]] assassins with the ability
to slip through space. They have found ways to bind [[aberration]]s
to their will, and have forced [[beholder]]s and [[grell]]s to serve them.
The descendants of the [[Gatekeeper|Gatekeepers]] [[orc]]s that ventured into
[[Khyber]] with the Kech Ghaalrac remain to this day, having
found their own place in the clan's caste system as specialists
in [[druidic magic|primal magic]]. However, the traditions carried by these once-Gatekeepers vary greatly from their surface counterparts, in
part because they've been cut off from the natural world. While
still driven by the goal of fighting [[aberration]]s, after hundreds of years in an alien land, the orcs of the Kech Ghaalrac would
seem similarly alien to other [[Gatekeepers]].
Now, after centuries of struggle in [[Khyber]], the Kech Ghaalrac
have returned. The current leader—who also uses the name
Khaas—possesses what the Ghaalrac call //Ur'taash//, the “First
Crown.” It's said that this was the final creation of [[Jhazaal Dhakaan]], forged to unite the empire; it protects his mind, allows him to communicate with Ghaalrac squads across great distances, and possesses powerful coercive abilities. Khaas
claims to have torn this crown from [[Dyrrn]]'s grip as he dealt a
mortal blow to the Corruptor. He believes that it is the Ghaalrac
who broke the power of the Treacherous Whisper, and that only
they can restore the Empire of Dhakaan.
Khaas and the other leaders of the Kech Ghaalrac carry
the names of heroes of ancient Dhakaan: Torrm of the
Gatekeepers, the master assassin known only as Khesh, the
mighty [[guul'dar|bugbear]] Korrga. The original heroes are long dead,
but these dar claim to be their descendants and carry their
ancient weapons. They possess tremendous power, and they
intend to use it. But there are many questions about the Kech
Ghaalrac. Are they truly what they claim to be, or have they
been corrupted by [[Dyrrn]] and turned into tools of the [[daelkyr]],
whether they realize it or not? They aren't part of the [[Uul Dhakaan]] as experienced by the other Keepers, but they have their own version of the dream that sustained them through the long war, and believe that it is the other clans who have
lost sight of the dream. The other Keepers will know nothing
of the Kech Ghaalrac until the Clan of Heroes reveals itself; will they support Khaas Dhakaan of their own volition, or be compelled by the power of //Ur'taash//? Or will the [[Heirs of Dhakaan]] oppose these transformed heroes?
The Kech Ghaalrac can appear anywhere that suits the
needs of the campaign. When they appear, it should be
dramatic. One option is for them to seize the [[Gathering Stone]], House [[Deneith]]'s fortress in [[Darguun]]; this strikes a
dramatic blow against //chaat'oor// ("defilers") and gives the Ghaalrac an
opportunity to bend Darguuls to their will. Khaas Dhakaan
believes that dar and Darguul alike are all flawed—but
that all can be redeemed by the power of Ur'taash.
The Kech Ghaalrac is an unlikely origin for a player
character; their story works best when people don't know
if they have been corrupted or are righteous, despite their
unnatural tools and techniques. However, a Dhakaani character
from another kech could be determined to uncover the truth
about the Kech Ghaalrac. Or a character could be the distant
descendant of one of the Ghaalrac heroes, seeking to learn the
final fate of their ancestor and to recover a prized relic from the
Ghaalrac champion who carries it.
!! Notable Members
<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of Thunder
Siege warfare and combat engineering are the specialties of
the Kech Hashraac. The [[Dhakaan]]i don't employ [[siege staff]]s or
[[evoker|evocation]]s, and the Hashraac has spent generations developing
new weapons to dominate the battlefield. If the DM wishes
to add conventional muzzle-loading firearms and cannons to a campaign, the Kech
Hashraac could have developed these weapons during their
long isolation. Alternatively, the Hashraac could specialize
in the [[enhanced artillery|arcane artillery]], alchemical explosives, or an entirely new form of weapon.
The Kech Hashraac have yet to reveal their presence to the
world at large. While few in number, the force they command
could be vital in any conflict that lies ahead. Will they support
another [[kech]] claiming the imperial throne, or will they pursue
it themselves? The warlord Duul Hashraac leads the clan; he is
noteworthy both for being an [[artificer]] as opposed to a common warrior, and for using his clan name instead of “Dhakaan” as his sobriquet. Duul is proud of what his people have achieved; whether he seeks the throne or serves as kingmaker, he
believes the Kech Hashraac hold the keys to Dhakaani victory.
The Kech Hashraac are a logical choice for a Dhakaani
Artillerist [[artificer]]; the artificer's magic can be tied to the tools
the DM chooses to provide to these Keepers. A Hashraac
player character could be dispatched to study the battle magic
of the [[Five Nations]], to seek out rare components needed for
new weapons, or to investigate the [[Mournland]] and the theory
that the [[Mourning]] was caused by battle magic. Alternatively, a
Hashraac artificer could have left the clan to pursue their own
unorthodox weapons research, hoping to return in triumph
once they have perfected their techniques.
!! Notable Members
<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of Night
Long ago, interaction with the [[Aereni line|Aereni noble line]] of [[Vol]] led to the [[dirge singer]] Iraala becoming the first dar [[vampire]]. She shared this
gift with her lover, the warlord Muurat. In the centuries that
passed, the two were placed in charge of the covert operations
of the empire. Spying and assassination remained the domain
of the [[Khesh'dar]], but the Kech Nasaar served both as internal
security and as commandos specializing in guerilla tactics
and psychological warfare. It was the Kech Nasaar who first
recognized the threat of the [[Kapaa'vola]], and set the Keeper seclusion in motion.
Over their long seclusion, the Kech Nasaar have continued to study unconventional paths of warfare. Nasaar [[dirge singer]]s often train in the techniques of the [[bard]]ic College of Whispers, while elite soldiers of the Kech Nasaar might be [[gloom stalker]]s. Under the leadership of Iraala and Muurat, the Nasaar have also explored
the arts of [[necromancy]], though it's up to the DM to decide
just how far they've continued down this path. Do they have
squads of [[vampire]] commandos? Have they developed entirely
new forms of [[undead]]? Given their penchant for psychological
warfare, Nasaar agents could sow terror and confusion by
raising the bones of soldiers who died in the [[Last War]], making
it seem like the vengeful dead yearned to continue the battle. Or
perhaps the Nasaar have developed techniques allowing them
to seize control of undead raised by other necromancers—a
technique that could cause untold chaos in [[Karrnath]].
Iraala and Muurat continue to lead the clan, giving a direct
tie to the ancient empire. The edict of a long-dead emperor
asserted that no dead creature could wear the imperial crown;
while the services of the Nasaar were valued, the dead are
severed from the [[Uul Dhakaan]] and cannot draw on the wisdom
of the past or see [[Jhazaal|Jhazaal Dhakaan]]'s dream. The Nasaar could have
fallen into true darkness in their isolation, and now seek to
seize power for themselves. On the other hand, despite being
cut off from the Uul Dhakaan, Iraala and Muurat remember
the actual glory of the fallen empire, and could be the truest
devotees of the concepts of //muut// and //atcha//, placing the needs
of the empire above their personal ambitions. As in ancient
times, they might seek to guide the living emperor, and to
ensure the [[Dhakaan]]i Empire follows the proper course.
A player character from the Kech Nasaar could follow
unusual paths. A Nasaar dar might be gathering information
for the clan, or they could be tasked to monitor the activities
of the other Keepers, especially the [[Kech Ghaalrac]] and [[Kech Shaarat]]. Iraala may have hidden artifacts across [[Khorvaire]] before the fall; a Nasaar character could seek to recover these in her service, or could have gone rogue to pursue one of these treasures.
!! Notable Members
<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of the Tiger
Beasts served many important roles in the Empire of [[Dhakaan]].
The Ruuska dar fill much the same role that House [[Vadalis]] does
for the [[Five Nations]]: tending and training the many beasts of the
empire, while always searching for—or creating—new beasts to
fill a need. //Ruuska// is the Goblin word for “tiger,” and tigers and
dire tigers are often used as cavalry in the vanguard of Dhakaani
armies. But the Kech Ruuska breed all manner of beasts, from
fierce guardians to clever messengers and simple livestock.
Just as there are soldiers in every kech, there are tenders
in every vault who maintain the beasts of that vault. However,
the Kech Ruuska specialize in breeding and training them,
producing the finest beast masters, and keeping the
widest range of exotic creatures in their arsenals. The Ruuska
also work with [[magebreeding]] and may have produced entirely
new beasts or [[monstrosities|monstrosity]] previously unknown on the
surface. While the Ruuska don't have a spiritual bond to the
natural world, they might have developed a form of [[druid]], serving as a specialist in assuming animal forms and controlling beasts. The Ruuska have also experimented
with [[lycanthropy|lycanthrope]]. It's up to the DM to decide if they were able
to control and weaponize the curse, if their efforts ultimately
came to nothing, or if lycanthropy has spread throughout the
Ruuska—a secret they are concealing from the other clans.
The Kech Ruuska are led by the Beast Master warlord Lhaar
Dhakaan and the [[dirge singer]] Oruul. The [[Kech Shaarat]] are
putting considerable pressure on the Ruuska to support their
claim to the crown. It remains to be seen if Lhaar bows to these
threats, or whether the Ruuska seek an alliance that lets them
turn the tables on the powerful Shaarat.
The Kech Ruuska are a good option for a [[Dhakaan|Heirs of Dhakaan]]i ranger.
The clan can also be an interesting way to add new or exotic
beasts or monstrosities into the world, and could be an
intriguing foil for a storyline involving House [[Vadalis]].
!! Notable Members
<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of the Sword
The Kech Shaarat are the largest of the [[Keeper clans|kech]]. Founded
by the Warlord of the South in the final days of the empire of [[Dhakaan]], the
Shaarat possess an artifact known as //Skai Shaarat//—the Great
Blade—a sword handed down from warlord to warlord since
the days of the Six Kings. While they lack the exotic specialties
of the other clans, the Kech Shaarat excel at war. The deep
vault of the Kech Shaarat is tied to a [[demiplane]] in [[Khyber]]
known as the [[Ironlands]]. This provided them with access
to resources and space denied to the other clans, including
the [[byeshk]] ore the [[Dhakaan|Heirs of Dhakaan]]i prize for their weapons, while also keeping them on a constant war footing. Of all the Keepers, the Kech Shaarat have the
finest forge [[artificer]]s, as well as talented battlesmiths—though the
Dhakaani don't generally employ [[construct]]s, these artificers
have created innovative [[steel defender]]s. On the other hand, the
Kech Shaarat have not emphasized the role of the [[dirge singer]]s as
much as other clans, and have a weaker [[bard]]ic tradition.
The Kech Shaarat have emerged into the open and are the
most active of the Dhakaani tribes. The warlord Ruus Dhakaan
(no relation to the [[Kech Ruuska]], though his name does mean
“Tiger”) has reclaimed several ancient Dhakaani fortresses in
the [[Seawall Mountains]], and is working to refortify these ruins.
In the course of this expansion, the Kech Shaarat have already
absorbed a lesser clan—the //Kech Nozhii//, who maintained the
treasury of the empire—which has expanded their resources.
They are actively pressuring the [[Kech Ruuska]] to submit to an
alliance acknowledging Ruus as the Emperor Yet to Come, and
Shaarat warriors have a bitter rivalry with the [[Kech Volaar]].
Ruus has sent representatives to [[Rhukaan Draal]] and pledged
to support Lhesh [[Haruuc|Haruuc Shaarat'kor]], but this is a ruse designed to bide
time and to take the measure of an enemy. Ruus hasn't revealed
the true nature of his people or the full scale of his forces to the
[[Ghaal'dar]], and most Darguuls believe the Kech Shaarat are a
Ghaal'dar clan with strange traditions. House [[Deneith]] is keen
to gain the services of these mysterious warriors, but Ruus
Dhakaan refuses to have any dealings with the chaat'oor (defilers; an insulting way to say non-dar).
Ruus Dhakaan is a brilliant strategist and charismatic leader.
He earned //Skai Shaarat// with his courage and skill, and should
never be underestimated. While he's determined to claim the
imperial throne, he's also concerned with //muut// and the good of
the empire; he will pressure other Keepers to support his claim,
but won't butcher his own kind. However, he's ruthless when it
comes to dealing with chaat'oor, and doubts whether the modern
“[[goblin]]s” can be redeemed. They may be close enough to dar
that they could be worthy servants, but he's considering whether
it's simpler to slaughter the [[Darguul|Darguun]]s once the dar are united.
The Kech Shaarat are the most aggressive of the clans,
and this is an interesting option for an entire party of dar
adventurers. A lone Shaarat dar could be an exile from the
clan or a spy evaluating the strengths and fighting styles of the
chaat'oor. One option is for a Shaarat player character to have
challenged Ruus and been defeated; now they seek an ancient
artifact that would allow them to face Ruus again and claim
leadership over the clan.
!! Notable Members
<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of the Dream
The Kech Uul are a small [[clan|kech]] of the [[Heirs of Dhakaan]]. Their vault is a fortified monastery hidden deep in [[Khyber]]. This is the seat of the
//chot'uul//, the monks who watch over the [[Uul Dhakaan]] and
protect the dreams of the empire. This clan also has the largest
number of uul'kala (dream singer) bards, and knows the most about how to
produce [[dream key]]s and [[dreambound|kra'uul]] objects.
The Kech Uul have yet to return to the surface of [[Khorvaire]].
Its people spend much of their time within the [[Uul Dhakaan]]
itself, using drugs and meditation to enter the dream even while
waking. The monks of the Kech Uul are devoted to protecting
the dream from outside influences, but they're also experts in
navigating the dream itself; if a Dhakaani dreamer is searching
for a particular memory or wishes to speak with the dream-vestige of an ancient hero, a Kech Uul monk can be an invaluable
guide. Likewise, the uul'kala of the Dream Keepers are the
backbone of long-distance communication between clans; the
dream singers maintain message stations at various points within the
dream, and can pass a message from one dreamer to another.
There are several ways that the Kech Uul could fit into a
campaign. They can serve as a neutral resource supporting
all clans, maintaining communication and offering guidance
through the dream. However, it could be that they're not what
they seem. The Kech Uul have always worked to protect
[[Jhazaal|Jhazaal Dhakaan]]'s dream from outside influences, but it's possible the
clan has been partially or fully replaced by [[quori]] imposters,
who plan to influence the Emperor Yet to Come to serve the
ends of the [[Dreaming Dark]]. Or perhaps the Kech Uul was
destroyed long ago by the [[daelkyr]] or another threat; the Dream
Keepers continue to serve their function, but they're actually
long dead, and the chot'uul encountered in the Uul are simply
dream-vestiges, memories lingering in [[Dal Quor]].
The name of the Kech Uul's current leader is unknown outside
the clan. Uul dar often wear masks or veils; they do not seek
//atcha// (personal glory), and desire only to help others achieve Jhazaal's dream.
A player character tied to the Uul dar could be an uul'kala, a
bard pursuing a dream-vision or searching for dream-related artifacts. An exotic possibility is that the character believes it's possible to bring other species into the [[Uul Dhakaan]], allowing for a peaceful union; if this
is the case, is this goal supported by the clan elders, or is
the character an eccentric renegade? Alternatively, any dar
character could have a mentor from the Uul dar, who visits
them in their dreams offering guidance and inspiration.
!! Notable Members
<<list-links-article "[tag{!!title}sort[title]]">>
! Keepers of the Word
The Kech Volaar believe that knowledge is power. Their deep
vault holds scrolls and tablets recording thousands of years of
imperial history. While they have strong warriors and a proud
martial tradition, the Volaar value the song over the blade and
have the strongest [[dirge singer]]s of any clan.
While the Volaar weaponsmiths aren't a match for those
of the [[Kech Shaarat]], the clan leaders recognize the value of
arcane magic over pure mundane might. The Volaar have long
worked to push the limits of [[dirge singer]] magic, and to master
the techniques that created wonders such as the [[Uul Dhakaan]]
and the greatest artifacts of the old empire. The Volaar have
experimented with [[warlock]]s—working with supernatural
patrons under carefully controlled conditions—and sought to
cultivate [[sorcerer]]s when they have appeared among the dar
populace. Since their return to the surface, the Kech Volaar are
working both to recover the greatest artifacts and treasures of
the empire, and to study the arcane techniques of the modern
//gath'dar// (non-Dhakaani). Where the [[Kech Shaarat]] believe that [[Dhakaan]]i might
can sweep aside any enemy, the Volaar recognize the arcane
power wielded by the [[Five Nations]] and the [[dragonmarked house]]s, and are doing everything they can to study and
master this unfamiliar science.
Perhaps because of this, the Kech Volaar are also the most
conciliatory of the Keeper clans. They are the most willing to
interact with the gath'dar, both because they recognize the need
to understand these possible enemies, and in the hopes that
some form of coexistence may be possible. Like the [[Kech Uul]],
Volaar leader Tuura Dhakaan wonders if the Uul Dhakaan can
expand to incorporate other creatures—if the empire can unite
gath'dar as it does the dar.
Despite these hopes, the Kech Volaar are devoted to the dar
above all else. They are the Keepers of History, and they know
the sacrifices their ancestors had to make and the bitter wars
against the //chaat'oor// ("defilers") and the //taarn// ([[elves|elf]]). They are wise and
willing to seek all paths to prosperity, but will never surrender
the dream of the eternal empire.
Tuura Dhakaan has revealed herself to the world, and has
sent representatives to the court of Lhesh [[Haruuc|Haruuc Shaarat'kor]]. Like the
[[Kech Shaarat]], the Volaar have concealed their true history
and power. Volaar [[dirge singer]]s often travel among the [[Ghaal'dar]]
sharing stories, helping to educate them about their glorious
past and the traditions of //muut// and //atcha//; this ties to Tuura's
hopes that the “[[goblin]]s” can be redeemed and drawn back to
their past glory. Tuura is determined to claim the throne of the
Emperor Yet to Come; she hopes to find the strength needed to
compel the [[Kech Shaarat]] through reclaiming powerful artifacts
and building allies.
The Kech Volaar are one of the most active Dhakaani
clans. Adventurers could encounter Volaar reclaimers across
[[Khorvaire]] as they search for Dhakaani relics. A Volaar [[wizard]]
or [[artificer]] could be struggling to master the techniques of the
gath'dar, while a dirge singer could be an envoy sent to recover an
ancient treasure or to seek allies among the outsiders.
The stronghold of the Kech Volaar is the fortified city of [[Volaar Draal]].
!! Notable Members
<<list-links-article "[tag{!!title}sort[title]]">>
The Keep of the [[Silver Flame]] in [[Stormreach]] was intended to serve as a mighty ministry that would bring the light of the Flame to the savage land of [[Xen'drik]]. The Flamic architects showed their usual persistence in creating this stone building, sinking great pillars into the boggy ground and then topping it with a spire of stone and silver. The priests of the temple,
led by [[Jirian Zayne]], do not sell their services, though
they aid the faithful of the Flame at no charge.
!! The Silver Flame in Stormreach
The priests of the [[Silver Flame]] have always sought to
spread their faith, and when word reached [[Thrane]] of
the new city taking shape across the [[Thunder Sea]], the
[[cardinals|Council of Cardinals]] were quick to send ministers and templars
to the shattered land. A wave of Thrane immigrants helped establish the keep now found in the [[Temple District]]. [[Keeper|Keeper of the Flame]] Tzandra had a vision of a ministry that would bring the Flame to the [[drow]] and the [[giant]]s and a bastion that would hold back any darkness that might threaten the city.
Reality fell far short of the dream. [[Stormreach]] was founded by pirates and smugglers, and the priests of the [[Silver Flame]] received a cold welcome. Missionaries sent to spread the word to the dark elves rarely returned, and by the time King [[Thalin|Thalin ir'Wynarn]] of [[Thrane]] died, only a single minister and a handful of acolytes
were left at the keep. This proved to be another turning point for the Silver Flame in Stormreach. After long debate, they rejected the [[Keeper|Keeper of the Flame]]’s decision to assume control of Thrane. Both church and crown had roles to play, the priests explained, and it was a mistake for one to supplant the other; it would only lead the church away from its true purpose.
The [[Council of Cardinals]] was infuriated by this rebellion, but with the [[Last War]] in full swing, the Thranes couldn’t afford to send new forces to this distant post. Instead, the city was formally severed from [[Flamekeep]]. To this day, the keep receives no support from [[Thrane]], and the faithful are warned to beware
the words of these [[heretic|Silver Flame Heresy and Corruption]] priests. Now that the war is over, some believe that Flamekeep should reclaim the
keep. However, the people of [[Embers]] stand behind
their minister, and [[Keeper Jaela Daran|Keeper of the Flame]] is more willing
to accept diversity than her predecessors had been; for
the moment, [[Stormreach]] has been left on its own.
As a result, the [[Silver Flame]] has little power in [[Stormreach]]. Three priests serve at the keep: Minister [[Jirian Zayne]], Acolyte [[Myla Flamesworn]], and Templar [[Guin Silverblood]], a master archer who trains members of the congregation in the use
of the longbow. The keep is a sanctuary for the faithful of the Flame, and the priests of the temple are glad to work with traveling [[paladin]]s or [[cleric]]s. But they learned long ago that they lack the strength to fight the darkness within or below [[Stormreach]], and
they save their spells to protect those in true need
of sanctuary.
Opposition to the theocracy is only one of the
heretical beliefs found in [[Stormreach]]. A number
of the people who helped establish [[Embers]] came to
pursue their unconventional traditions without fear of
persecution. Others, including [[Guin Silverblood]], have adapted their faith over the
course of generations in Stormreach and exposure to
legends of the past. See [[Serpent Cults]].
Every Vassal knows they should never flaunt good fortune,
avoiding arrogance and pride. Those who crow too loudly may
catch the jealous eye of the Keeper. Even the mightiest hero can
be laid low by disease or ill fortune, as the Keeper has a vast
arsenal to bring down those that he desires. Once he pulls you
down into the darkness, he will snatch your soul before it can
reach [[Dolurrh]] and add you to his endless hoard, where he can
toy with you and torment you until the end of time.
The Keeper is the patron of those who put personal gain
above all else. He guides those who use guile to gain gold,
regardless of the cost to others. A rogue who invokes [[Olladra]]
sees themselves as the hero of the story; one who calls on the
Keeper has no compunctions about being the villain. Beyond
guiding those who place profit before all else, the Keeper is also
known for his willingness to make deals—though his bargains
are always slanted in his favor. Priests known as Talons make
these deals on behalf of the Keeper, though the terms are
often abstract and driven purely by faith. An entertainer could
bargain with a Talon, exchanging ten years of their life for
fame; even if the entertainer subsequently becomes famous,
there's no way to know if this is the result of the bargain, nor to
anticipate when the entertainer might suddenly die. This could
easily be a part of the backstory of a player character. Did your
entertainer make a bargain with the Keeper?
Another possible path for a player character or deadly NPC is that of being a bearer of a [[Keeper's Fang]]. These people receive visions of things that the Keeper wishes to add to his hoard; these are usually the souls of specific people, but they could also be
artifacts or other unique treasures.
The Keeper's symbols include a [[dragonshard]] in the shape of a fang or a [[dracolich]].
The Keeper of the Flame is the head of the Church of the [[Silver Flame]]. They serve as intermediary between the [[Voice of the Flame|Tira Miron]] and the [[Council of Cardinals]]. The Keeper is not elected, but rather "called" by the Voice, a mystical process understood by very few, and then confirmed by the Council. Historically, the Keeper is the only person capable of channeling the power of fountain of fire in the [[Grand Cathedral|Cathedral of the Silver Flame]] in [[Flamekeep]], performing miracles no [[cleric]] or [[paladin]] can match.
The Keeper wields secular as well as religous power. In 914 YK, the last king of [[Thrane]], [[Thalin ir'Wynarn]], died. The people rejected the claim of King Thalin's heir and installed a [[Silver Flame]] theocracy. Since then, the nation has been led by the Keeper of the Flame and the [[Council of Cardinals]].
The current Keeper is Jaela Daran, an eleven-year-old girl who was only six when she was confirmed in 993 YK.
These infamous weapons, prized by assassins, have a Khyber
[[dragonshard]] embedded into the pommel that channels the souls
of victims, but doesn't itself trap them. There's much debate over
the actual fate of the souls of those slain by a Keeper's Fang.
Common myth says that the souls of victims are trapped in the
[[Lair of the Keeper]], and heroes can seek to reclaim a soul from
the [[Sovereign of Death and Decay|Keeper]]. Another myth maintains that
these weapons channel souls to the [[overlord]] [[Katashka]], and that
one must deal with the [[Lords of Dust]] to restore a victim. The [[Shaarat'khesh|Khesh'dar]] assassins of the Empire of [[Dhakaan]] believe these blades utterly destroy the souls of their victims.
Whenever you use this magic dagger to incapacitate a creature, the creature immediately dies and its soul removed. A creature whose soul has been stolen in this way can be
restored to life only by means of a [[wish]] spell.
The Keeper's Maw is a bay off the coast of the [[Demon Wastes]], just north of the [[Lair of the Keeper]].
Most of the inhabitants of [[Adar]] follow the teachings of the [[kalashtar]], but some follow other paths. When the [[Inspired]] conquered [[Sarlona]], they purged society of all forms of [[arcane magic]]. Led by Speaker [[Chanaakar]], the [[Keepers of the Word]] are the descendants of the [[wizard]]s and [[sorcerer]]s of ancient Sarlona, who have preserved the mystical traditions of their ancestors for over a thousand years. While they are concentrated in [[Kasshta Keep]], they can be found in all the fortresses of Adar. In this way, the Keepers ensure that a single attack cannot destroy their traditions.
The Council of the Wise rules Keeper holdings. It
is made up of individuals who have the confidence of the
people they represent. Elders among the Keepers are
titled "venerable"; the elder [[Thatari]] is referred to as Venerable Thatari, for example. The council selects a person
as Speaker to guide discussion, focus on issues, and break
deadlocks. In all cases, an elder can be removed if he or
she loses the faith of the represented.
Knowledge and its preservation are most important,
so many Keepers are dispassionate about other pursuits.
However, the influence of [[Taratai]] and the [[kalashtar]] on
the organization has been significant. The Keepers respect the [[Path of Light]], and some practice it.
Many Keepers merely read, discuss, and teach the
lore already possessed by the order. To a person, they
are capable spellcasters. They preserve even techniques
thought harmful to the mind or soul, for the sake of
learning. Dangerous spells and objects are present within
[[Kasshta Keep]] and other places the Keepers call home.
As the corruption of [[Raadu Xeel]] shows, this policy can
prove troublesome.
In [[Adar]], the Keepers study the land, its strange
phenomena, and its planar connections. They aim to
someday connect with the [[Storm Guardians]] and gather
information on the draconic history of Adar. As much of
this work is for its own sake as it is for some higher purpose. However, [[Chanaakar]]'s time as Speaker has changed
this situation to some extent, and some grumbling about
this change might be heard behind closed doors.
''Getting the PCs Involved:'' The Keepers of the Word
can be the source for almost any new magic or [[spell]] you
want to introduce into your campaign. Keepers of the Word frown on the
actual practice of [[pact magic|warlock]] in their
midst, and the [[Shroud]] also makes such magic difficult
at best.
The Keepers require those who seek their teachings
to prove themselves worthy. Since the sages are cloistered
ascetics, they are more than willing to send teams to
remote sites in [[Adar]] and even other parts of [[Sarlona]] and
the world. On the other hand, a Keeper arcanist could
make a valuable addition to a party. Characters can always
find a market for items and spells among the Keepers,
even if the PCs don't work for the order directly.
The Keepers might hire the PCs (or merely send
duty-bound characters) to explore a [[Lamannia]] [[manifest zone]] deep in [[Adar]] and report back what they find. Alternatively, a small Keeper hold that seems to have gone
rogue might need dealing with. Perhaps this corruption
needs to be weeded out without alerting other Keepers
of the Word, or the party might be sent directly from
[[Kasshta Keep]] to investigate. Then again, the PCs could
be pawns of the Keepers' enemies, and just going to talk
to the hold's residents might be the best course.
The [[Gray Tide]] [[principality|Lhazaar Principalities]] is ruled by the mysterious Prince Kel, and it has been since its founding over a thousand years ago. Most outsiders believe that this is the work of one or more [[changeling]]s—a lineage that preserves Kel's image and persona.
Antos Keldoran ([[dwarf]]) runs a small smithy in [[Ashblack]], where he
produces high-quality metal arms and armor. If a character can win his affection (dwarf characters have advantage), Antos sells masterwork metal goods at a 10% discount.
Kelki is a reliable [[Summit Road]] guide, and
[[Murephan]] has taken a liking to the young and vivacious
[[dromite]]. When traveling with Murephan and those being
aided by the Summit Road, Kelki spends a lot of time
explaining what Murephan really meant with his harsh
words. In these "translations," Kelki is usually correct.
Fortunately for everyone involved, Kelki defers to the
elan's judgment in important matters. Kelki has nothing
resembling common sense, and the dromite is too fond
of fire.
//This old [[dwarf]] must be well into his second century. His long beard is white as marble, and his muscles are lean and weathered beneath his deeply wrinkled skin. He wears the dress uniform of a high-ranking officer in the Brelish Army of the East, and a ceremonial broadsword in a jeweled scabbard is slung across his back. He fixes you with a steely gaze, and for a moment he has the bearing of a mighty warrior; then he smiles widely, and the aura of menace and power melts away.//
The ir'Morans are an ancient family with a proud
tradition of military service. For the first 40 years of
the Last War, Lord Kellas served as the commander
of the [[Brelish|Breland]] Army of the East. Then came the Day
of Ashes. On 3 Dravago 943 YK, Kellas engaged the [[Valenar]] raiders and suffered a devastating defeat.
While his physical injuries were soon healed, Kellas
never truly recovered from the battle. He resigned his
commission and returned to [[Sharn]], and he remained
hidden in his family estate for decades.
With the end of the [[Last War]], Lord ir'Moran
has finally returned to public life. Most people have
forgotten the precise role he played in the war, and
he is simply known as “the General.” He cheerfully
exchanges war stories with other veterans and regales
youngsters with his exploits, but any mention of the
Day of Ashes produces an icy silence. Kellas has
never forgiven the [[Valenar]] for his defeat, and over
the years this mania has expanded to include all [[elves|elf]]
and [[Cyrans|Cyre]]. On the surface he seems like a kindly,
doddering old man, but he is still a brilliant tactician
and member of the [[Sixty]]. He has considerable wealth
and has retained his contacts in the Brelish military;
he may use this power to threaten elf characters or
to stir up trouble on the Day of Ashes.
Kelneluun is a large inland sea in central [[Sarlona]], located in the [[Riedra]]n province of [[Dor Maleer]] amidst the [[Frostwall Mountains]] and [[Paqaa Mountains]].
The Kelshak ("Broken Blade") Mountains in [[Borunan]], [[Riedra]], take their name from the same [[Sovereign Host]] myth that inspired the monastic Order of the [[Broken Blade]].
The Kennel is similar in appearance to the [[Catacombs]], but
contains the [[shade]]s and [[husk]]s of beasts and monstrosities,
along with the [[nalfeshnee]] and [[marut]]s that tend them. Here,
you'll hear the howls of fading wolf spirits, and see flocks of
spectral birds flying through grand halls, along with larger and
fiercer creatures. Beast spirits rarely linger long in [[Dolurrh]], as
most have fewer memories to erase. But all dogs go to Dolurrh!
The [[Queen of the Dead]] might have created special servants
that wander these halls, just as she made the [[shadar-kai]]. It's
possible adventurers could be questioned by a clever raven
with the soul of a poet.
''District Type:'' Apartment townhomes<br/>
''Buildings: ''Average residences (40), poor
residences (220)<br/>
''First Impression:'' Kenton is a working class district. The long halls surrounding the central towers
are divided into dozens of tiny apartments, home to
the laborers and commoners who keep the city running. The few people on the streets are generally in
a hurry, either heading to work or just to somewhere
more interesting than Kenton.<br/>
''Social Class: ''Lower class<br/>
''Neighbors:'' [[Rattlestone]] (northwest); [[Little Barrington]] (east); [[Cassan Bridge]] (bridge, north); [[Everbright]] (bridge, northeast); [[Foundation]] (below); [[Sunrise]] (above)
Kenton is an unremarkable residential district.
Apartments in Kenton are reasonably priced,
and it's not a bad place to live. The architecture is
functional and bland, and there are few comforts
to be found in a Kenton apartment besides four
walls and a roof. One notable feature of Kenton is its relatively high [[shifter]] population; Caine Spire and Helas Keep are two residential towers that are
almost entirely populated by shifters.
In the ruins of Ker Marquan, a titan king sits atop his throne on the path to the [[timeless fountain]], dreaming of the [[empire|Age of Giants]] he once ruled. This last king of [[Xen'drik]] possesses dreadful secrets, but remains bound to the fountain of immortality. So he waits for someone to come, to ask the question he must answer in order that he be freed.
Once an agent of the [[dragon]]s of [[Argonnessen]], the [[changeling]] Keshraa was [[mind seed]]ed by Lady [[Sharadhuna]] of the [[Thousand Eyes]]. Draconic discipline, an indomitable will, and the
innately slippery thoughts of the changeling were pitted
against [[quori]] power, and a new being arose in the aftermath, one who had the memories and cunning of the
[[kalaraq]] spirit but no loyalty to [[Dal Quor]] or [[Argonnessen]].
Now calling themself Keshraa, this changeling eluded his
captors and disappeared.
Keshraa is a mastermind engaged in a complex and
ruthless vendetta against the [[quori]] who created them.
Although they frequently work with rebels and dissidents,
they are utterly amoral and don't care what happens to
the [[Inspired]], [[Riedra]], or [[Khorvaire]]. Their only interest
is the game they are playing with Lady [[Sharadhuna]] and the
[[Thousand Eyes]]. They might help those who are working
against the [[Inspired]], but Keshraa does nothing out of
kindness. If they provide assistance, that help is serving
their purposes.
This rebel [[changeling]] could hold influential positions in any number of dissident groups, though they consider these groups to be nothing
more than tools. They might appear out of nowhere to help
PCs in their hour of need, wearing the face of a priest,
a soldier, or even one of the [[Inspired]]. They have absolutely
no regard for human life. Still, in [[Sarlona]], the help of a
villain might be the best one can hope for.
Keshraa has turned a number of [[Chosen]] against the
Inspired, and could serve as a mentor to a Chosen PC.
They claim to see a reflection of themself in the character—
the vessel turned against the Inspired. Do they truly have
an emotional bond with their protege, or is this one more
ruse intended to create a more effective weapon?
When dealing with Keshraa, remember that they have
the cold cunning of a prince of nightmares, and that they
have successfully eluded the [[Thousand Eyes]] for almost
a decade. Their intellect is a far greater weapon than their
[[psionic|psionics]] powers. If they are forced into battle, something has
gone terribly wrong for them.
The [[gnoll]] Keshta commands a small unit of elite [[gnoll]] commandos within the [[Sharn]] cell of [[Daask]]. Disciplined and ruthless, these soldiers are often called upon to carry out retaliatory strikes against those who defy Daask.
The viceroy in charge of
[[Ghallanda Hall]] in [[Sharn]], Keslo is a harried [[halfling]]
indeed. Since the end of the [[Last War]], he has been
spending more and more of his time keeping his
guests from attacking each other (a natural consequence when bitter enemies live in proximity to one
another). One of the few actions that will cause the
[[Ghallanda]]s to withdraw their hospitality is for one
guest to attack another, and Keslo has had to forcibly remove more guests in the last two years than in
the previous twenty. Because his job involves careful negotiations with nearly every powerful group in Sharn, he’s one of the best-connected people in the city. Not much happens in Sharn that Keslo d’Ghallanda doesn’t find out about eventually.
//A handsome, slender [[gnome]] with light skin and sharp features, Kessler often wears a beautiful suit of red and black [[glamerweave]]. A sporty black cap hides his short dark hair, and his beard and mustache are carefully trimmed and waxed. His deep blue eyes study everything around him and he laughs merrily. //
Kessler is known across [[Breland]] and [[Zilargo]] for his
razor wit and lyrical skill, performing solo or taking
the staring role in performances staged by playhouses
and theater groups. His satirical work //The Battle of the Five Ducks//—a comedy skewering the rulers of the [[Five Nations]]—is among the best-selling books of the last
century. While his sharp words have earned him
many enemies in high places, his charisma and quick
wits have made him a fixture at gatherings of the elite
and powerful. Kessler is a brilliant and insightful man, but he is completely fearless and will criticize anyone or anything. While he is remarkably intelligent, he is a consummate hedonist; in addition to fine food, wine, and music, he enjoys the company of
women of all races and has recently become addicted
to [[dreamlily]]. Kessler has no ties to any organization;
he has been approached by the [[Trust]] ([[Zilargo]]'s secret
order of spies and assassins) on many occasions, but
he has an independent mind and has no interest in
chaining himself to a higher power.
''Adventure Idea:'' Adventurers often perform
questionable actions. Perhaps a party accidentally desecrates a shrine, is caught breaking into the house of
a noble, or otherwise has fate turn against them. The
consequences aren't that serious—until Kessler seizes
on the subject for his latest satire, a work examining
the danger presented by adventurers. Suddenly the
party is the laughingstock of [[Sharn]]. Former associates
don't want to be seen with them, merchants raise their
prices, and it's only a matter of time before word of
Kessler's new act spreads across [[Breland]] and into the
other nations. Can the party find a way to straighten
things out with the gnome?
Ketaal is a [[ghaal’dar|hobgoblin]] daashor ([[artificer]] with a focus on arms and armor) of the [[Kech Volaar]], a student of both [[wizard]]ry and artifice. He has joined the [[Wayfinder Foundation]], which provides him an opportunity to study both
gath’dar magic and the secrets of the ancient [[giant]]s. He’s a
brilliant scholar and valued member of the Foundation, even
while he’s gathering information for the Kech Volaar.
This [[kobold]] [[warlord]] has
laid claim to [[Shaarat Kol]] in the south of [[Droaam]],
assembling a host of [[goblin]]s, [[kobold]]s, and [[gargoyle]]s
under his command. Though he is mocked by other
warlords, Kethelrax has the favor of [[Sora Katra]] and
has proven surprisingly clever. More than once,
Shaarat Kol has turned back challenges by foes that
underestimated the kobold lord’s strength.
High along the jagged crest of the [[Bluespine Peaks]] lairs the mighty Ketheptis. The Crone turns her one eye upon the many [[drow]] tribes of the jungles north of the Bluespines. Her gaze festers with hate, and an ancient vendetta crouches in her icy heart.
Ketheptis came to [[Xen'drik]] a newborn silver wyrmling, in the care of her parents, Lehtokorathil and Baasrashal. The family of [[silver dragon]]s made a home in the
lower peaks of the Bluespines, but their predations on
nearby [[drow]] soon drew the attention of a powerful band
of [[Sulatar]]. The fire-wielding drow trapped the elder
dragons in their lair and slaughtered them.
Ketheptis hid in a high alcove and looked on from her vantage point as the [[drow]] butchered her parents. She roared in terror as her mother was burned alive and her
father’s head was cleaved from his neck. One of the drow
put an arrow through Ketheptis’s left eye, nearly killing
her, but the wyrmling escaped and crawled away into the
snow-shrouded heights of the Bluespines.
Hate is a powerful force, and it ate at Ketheptis’s heart. She decided centuries ago that she would see every [[drow]] in [[Xen'drik]] dead. She pursues this plan of genocide
today by various means.
In her youth, she flew at drow tribes in the throes
of fury, which nearly got her killed more than once.
Ketheptis’s tactics matured as she did. She went down
among the drow tribes in the form of a one-eyed dark
[[elf]] crone possessing powerful [[enchantment]]s, and she poisoned
their leaders’ hearts against one another. The crone
watched as brutal warfare broke out, encouraging escalation and horrific atrocities on all sides. Some of the savage practices of [[drow]] tribes that [[Khorvairian|Khorvaire]] explorers have reported—maiming the children of their enemies, slowly eviscerating prisoners alive—might have actually spawned in Ketheptis’s twisted mind and were spread by her evil influence.
After the tribes in any one region are sufficiently weakened by this ploy, Ketheptis sheds her guise and slaughters the remainder, often leaving a single maimed survivor to tell the tale. Her hubris and need to inspire terror among her prey now work against her. Tales of her vile deception and secret war of genocide have spread, forcing her to pursue other avenues of eradicating her enemies. Most recently, she has developed virulent plagues intended to reduce the drow population of Xen’drik to a mass of rancid corpses. Ever single-minded of purpose, Ketheptis cares little if these blights decimate other races as well.
!! Description
Ketheptis never sought to regenerate her missing eye,
preferring the ugly wound as a constant reminder of
what the [[drow]] took from her. On occasion, she mounts
the skull of a particularly formidable foe in the socket to
terrorize her prey. Her entire left side sets the vacant eye
against a grotesque backdrop: The once-shining scales
along her left flank are rent, and several scorch marks
are a souvenir of a particularly painful foray against the
[[Sulatar]]. An experiment in vile magic gone awry twisted
her left talon, leaving it forever gnarled and blackened,
and her head crest is tattered from constant battle.
As Ketheptis’s weathered wings unfurl, countless [[drow]] skulls and bones dangling from them clatter unsettlingly. Though maimed, her physique is prodigious for her age, and the still-gleaming silver scales of her right side ripple with the movements of powerful muscles beneath.
!! Minions
Ketheptis is paid homage by a sizeable clan of [[frost giant]]s whose ruler, [[Thraalgrum]], shares her purpose. Ketheptis’s newest minion is an ancient [[Qabalrin]] [[elf]] [[vampire]] named Dekaraz, whose frozen tomb was excavated beneath her latest lair.
!! Adventure Hooks
The PCs could become embroiled in the conflict between Ketheptis and the [[drow]] in a number of ways. Perhaps a friend or relative of theirs visiting a drow community was killed when Ketheptis attacked, or was taken prisoner by the dragon. If the PCs have allies among the drow, the dark elves might entreat the party to end the One-Eyed Crone’s genocide. Other possible hooks include the following.
* ''Outbreak:'' A dread plague spreads fast across [[Xen'drik]], drawing closer to [[Stormreach]] with each passing day. The PCs must unravel the source of the contagion and seek out Ketheptis’s lair. Only there can the plague be undone.
* ''Spoils of War:'' Ketheptis possesses an awe-inspiring collection of seized [[drow]] artifacts and relics, and the PCs might be contracted to steal a particular item of legend from her hoard.
* ''Origins of the Blood:'' If the PCs are entangled with the [[Emerald Claw]], they may learn of a potential agent among Ketheptis's minions whose knowledge of [[Qabalrin]] [[necromancy]] could grant the Order great power. The party must find Dekaraz and destroy the [[vampire]] before agents of the Emerald Claw get there first.
The Kethuun Forests are a chain of forests in the [[Nulakesh]] and [[Pyrine]] provinces of [[Riedra]] that follow the coastline of [[Koralandaluun]].
The teeth of this small brass key constantly change shape.
You can insert it into any lock and lock it.
Once you have used the key, it can't be used again until the
next dawn.
This small stylized key plays a vital role in the work of House [[Kundarak]]. A person with the [[Mark of Warding]] who places an arcane [[alarm]], [[lock|arcane lock]], or warding glyph can tie the effect to a keycharm. Whoever holds the charm will receive the notification from the alarm, bypass the lock, or avoids triggering the warding glyph. The holder of the keycharm can also end any one spell tied to it if they know the proper command word. The keycharm can have up to three tied spells at one time.
Khaar is a [[guul’dar|bugbear]] barbarian of the [[Kech Ghaalrac]]. He’s
stalking a [[cult of the Dragon Below|Cults of the Dragon Below]] that serves [[Dyrrn]] the
Corruptor, intending to kill them and take their [[symbiont]]s
for himself. He could be an ally if the adventurers are
already fighting the cult, or he might expose a cult they
weren’t yet aware of.
House [[Tharashk]]’s [[dragonshard]] mining operations in [[Q'barra]] are controlled
by the [[Velderan]] clan. Lord Khalar Velderan is a
cunning and ruthless man. In his youth he was an
[[inquisitive]] in [[Sharn]], and he’s comfortable fighting
with either words or steel. Khalar is [[human]] with only a touch of [[orc]] blood in his ancestry, but the majority of the [[Tharashk]] forces in the region are [[orc]]s
or [[half-orc]]s. The house has also brought large numbers of monstrous mercenaries to [[Q'barra]] to serve as laborers and guards. [[Ogre|ogre]]s and [[minotaur]]s are found
at Tharashk sites, and [[gargoyle]]s and [[harpies|harpy]] serve as
messengers and scouts. Repurposed [[warforged titan]]s
perform the heavy mining operations at the largest
pits. However, there is always room for cheap labor at
a Tharashk mine.
Despite the success he has enjoyed so far, Lord
Khalar is hungry to expand his operations and
chafes at the restrictions imposed by King [[Sebastes|Sebastes ir'Kesslan]]. Although he is careful not to endanger the position of his house, he is secretly funding a number of
teams that are operating in forbidden territory. He
doesn’t care if independent miners enjoy limited success, but if a lucky prospector found a remarkably rich deposit, Khalar might try to buy out their claim... and failing that, employ bandits or others to drive the settler from their claim.
The town of [[Whitecliff]] in [[Hope]], located near the largest [[dragonshard]] mine yet discovered, serves as the base of operations for Khalar's covert schemes, and when Khalar isn't lobbying in [[Newthrone]], he stays there.
Khalesh was once a theocratic nation dedicated to the
worship of the [[couatl]], with a long history of crusades.
During the [[Sundering]], it was revealed that many of the
noble families of Khalesh were actually [[shulassakar]]. The
[[Inspired]] combined the general disdain for Khalesh with
fear of these alien creatures, and the Khaleshites were
largely exterminated over centuries of war. The humans
inhabiting the region today are mostly descended from
resettled people of the west.
The Khalesh region includes a number of [[couatl]] ruins from the [[Age of Demons]]. The [[Inspired]] work to suppress knowledge of these ruins, which are hidden in
[[wild zone]]s and protected by the [[Edgewalkers]].
The people of Khalesh know that "demons" (the [[shulassakar]]) once ruled their land. As a result, they are especially devoted to the [[Path of Inspiration]], believing
that great faith is required to resist the temptations of the
//altavars//. They shun the ancient ruins and don't assist those
who want to explore them.
Captain Khandan Dol is a male [[dwarf]] who leads
the [[Redcloak Battalion]]. Khandan is a local legend
who served in the [[Brelish|Breland]] army throughout the [[Last War]]; he was knighted by the last king of [[Galifar]] and swore an oath to the [[first queen of Breland|Wroann ir'Wynarn]]. He enjoys drinking and gambling. He takes discipline seriously,
though, and expects his soldiers to show complete loyalty to their country and its king. Because of his experiences in the war, he has a deep dislike for [[Thrane]]s
and followers of the [[Silver Flame]], but he rarely lets
these feelings interfere with his duties.
Clever and charismatic, the [[half-orc]] [[triumvir|Tharashk triumvirate]] Khandar has great ambition and a dark heart. He is ruthless in matters related to expanding
the power of House [[Tharashk]].
A [[shifter]] named Kharva Crack-Tusk tends the [[Nest]] in [[Stormreach]], outpost of the [[Wayfinder Foundation]] on the continent of [[Xen'drik]]. Kharva was one of the first shifters to join the order, and rumor has it the old shifter was present on the very expedition during which Lord [[Boroman ir'Dayne]] contracted his wasting blight. Other rumors whisper of Kharva’s wild affair with Boroman, cut short by his
debilitating illness.
The Khavish Theater, one of
four upscale theaters in [[Upper Menthis]] (the other
three are all located in the [[University District]]), stands
out for its ability to cater to the needs of [[gnome]]s and
[[gnome]]-sized races, with ample seating for people
of all sizes. Two stage troupes share
the theater—the Khavish Players, made up mostly of
human actors, and the [[Zilargo]] Repertoire Group,
consisting entirely of gnome performers.
The Khavish Players present more contemporary and widely appealing acts than the performers
at the other Upper Menthis theaters, incorporating
music, sex, and comedy—though not to the extent of
the burlesque found in [[Lower Menthis]]. The Zilargo
Repertoire Group generally performs works that
only interest [[gnome]]s, full of intricate histories and
a level of detail that audiences of other races find
excessive (and mostly boring). Occasionally, they
stage a comedy aimed at mixed-race audiences, generally featuring acrobatics and pratfalls. Recently,
the famous gnome [[bard]] [[Kessler]] agreed to play with
the Zilargo Repertoire Group, and that has brought
more mixed crowds to their performances.
Under [[Dhakaan]]i tradition, the golin'dar—[[goblin]]s—are
traditionally laborers and artisans. While the [[guul'dar|bugbear]] and
[[ghaal'dar|hobgoblin]] train for war, the golin'dar maintain the hearth. But
there is a force that stands outside this tradition, lurking in the shadows of the empire. These are the //Khesh'dar//—the Silent Folk—golin'dar who use their speed and cunning as spies, scouts, and assassins.
While the Khesh'dar are part of the [[Uul Dhakaan]], they
have always remained separate from its traditions. They have
always served the emperor and their warlords, but they do so
in their own time. Their refuges have always been hidden, even
before the [[Kapaa'vola]]. The ascetic Khesh'dar aren't compelled
by money or power; they choose when to offer aid, and set a
fair price on their services. The Khesh'dar take no sides in
disputes between clans, and they do not seek to rule; in the
present day they serve both the [[Kech Shaarat]] and the [[Kech Volaar]]. However, they don't accept missions that they see as
threatening the empire itself; as a result, they rarely accept
a charge to kill a warlord or a [[dirge singer]].
Because of this long tradition of secrecy, even the warlords
of the [[Kech Dhakaan|Heirs of Dhakaan]] don't know where the vaults of the
Khesh'dar are located, or just how many of the Silent Folk are
out there. [[Goblin|goblin]]s are spread throughout [[Khorvaire]] and most
of the great cities of the [[Five Nations]] have significant goblin
populations, and this provides an easy opportunity for the
Khesh'dar to move freely throughout the modern world without
drawing attention. The Khesh'dar have been active throughout
the last century, spying on the chaat'oor ("defilers") and building up
resources and safe houses across the Five Nations. They've
recruited many eyes among the modern city goblins and the
goblins of [[Darguun]], though these contacts rarely understand
exactly who they are dealing with. The Khesh'dar likewise have
spies and agents among the golin'dar of every Keeper clan,
ensuring that there are few secrets hidden from the Silent Folk.
!! Two Traditions
The Khesh'dar are split into two primary traditions. The
''Taarka'khesh'' (“Silent Wolves”) are swift scouts, experts
in wilderness reconnaissance and targeted strikes. The
Taarka'khesh typically rely on [[worg]] cavalry; many develop
an unusual primal bond with their worg companions, and
the golin'dar view the worgs as partners, not beasts. Though
worgs don't have an innate tie to the [[Uul Dhakaan]], the beast masters of the Taarka'khesh can summon their worg
companions to them while dreaming.
The second Khesh'dar tradition is that of the ''Shaarat'khesh''
(“Silent Blades”), spies and assassins trained to operate within
cities. Both usually operate covertly, disguised to blend in
with the local [[goblin]] population. However, each order has a
distinctive half-mask that is worn over the lower face during
formal interactions.
It's up to the DM to decide just how widespread the
Khesh'dar are. They may have a single deep vault and only a
few hundred operatives, or it could be that they are the largest
of the Dhakaani clans, with outposts hidden across [[Khorvaire]].
They may have been building networks for thousands of
years, simply waiting for the Keepers to rise before putting
these resources to use. But are they truly content to serve any
emperor? Or do the Khesh'dar have a hidden agenda of their
own? Is it possible that they're tied to the [[Lords of Dust]]...
or even to the [[dragon]]s of the [[Chamber]]?
The Khesh'dar could serve as an espionage agency patron
for a group of golin'dar adventurers. More likely, a single
character could be an undercover operative of the Khesh'dar,
either pursuing a deep, long-term mission or simply gathering
intelligence while waiting for specific orders. It's not unusual
for the Khesh'dar to seek to cultivate useful allies among the
//gath'dar// (non-dar). It would be unusual for one of the Khesh'dar to explain
their traditions to an outsider, but it's not impossible that a
Khesh'dar could form a bond to a gath'dar comrade over the
course of their adventures.
!! Notable Members
<<list-links-article "[tag{!!title}sort[title]]">>
The main continent of [[Eberron]], at least from the point
of view of the humans and their closest kin, is Khorvaire.
In ages past, the [[goblinoid]]s ruled the continent. By the
time the first [[human]] settlers arrived 3,000 years ago, the
goblinoid nations were already in ruin. Their time had
passed, and the stage was set for humans and the other
newer races to carve out their own age.
On Khorvaire, humans settled what became known
as the [[Five Nations]]. [[Dragonmark|dragonmark]]s began to appear, and
the [[dragonmarked families|dragonmarked house]] developed into the mercantile
houses as time went on. Humans interacted with the races
they encountered—trading and forming partnerships
with [[dwarves|dwarf]], [[gnome]]s, and [[halfling]]s, conflicting with
and driving off goblinoids and other monster races. In
time, humans and their allied races (including [[elves|elf]], who
migrated from [[Aerenal]] to forge a new way of life on Khorvaire) controlled the central region of the continent. They
settled large portions of what is now the [[Eldeen Reaches]],
[[Aundair]], [[Breland]], [[Thrane]], [[Zilargo]], the [[Mournland]],
[[Karrnath]], the [[Talenta Plains]], the [[Mror Holds]], and the
[[Lhazaar Principalities]].
Eventually, the great and wondrous kingdom of [[Galifar]] arose from the joining of the [[Five Nations]]—the original human settlements. During the reign of the Galifar kings
and queens, human lands expanded, the dragonmarked
houses stabilized, and wonders such as [[Sharn]], the City of
Towers, and the [[Korranberg Library|Library of Korranberg]] were established. The
shining kingdom was legendary, even in its own time, and
for good cause.
Many of the most amazing accomplishments of Khorvairian civilization came to pass during Galifar's almost
nine hundred years of existence. The mastery of magic and
the arcane arts, which developed through the efforts of
the [[Twelve]], King [[Galifar I|Galifar ir'Wynarn]]'s [[Arcane Congress]], and similar enterprises that followed, led to the construction of
great cities, wondrous monuments, magical conveniences,
and powerful weapons of war. Massive civil works projects,
bolstered by magic, paved the way for the metropolitan
centers of central Khorvaire. Magic helped crops grow and
herds prosper, so hunger rarely struck the inhabitants of
the kingdom.
In its day, Galifar stretched from the [[Barren Sea]] to
the [[Lhazaar Sea]], covering every mile of the continent. In
practical terms, the crown claimed the entire continent
but was only able to govern the central region with any
proficiency. The farther one traveled toward the edges of
the continent, the more wild, undeveloped, and uncivilized the land became. This fact was especially true in the
areas that would eventually become the [[Shadow Marches]],
[[Droaam]], [[Darguun]], [[Q'barra]], and [[Valenar]]. These frontier
regions attracted some humans, but were more likely to be
home to the monstrous races. The humans that did make
the trip to these areas fell into a few categories: explorers,
profiteers, missionaries, and settlers.
Profit made an excellent incentive for sending people
into the wilderness. There were resources to discover and
gather, trade routes to open, maps to create, and money
to be made. Some explorers set out for crown and glory others just to see what was out there. More often, however, explorers were attached to profiteering projects designed
to open up some part of the wilderness for use by the
civilized regions. This led to the construction of trading
posts and supply outposts from which additional expeditions could be launched.
Trading posts developed into settlements in some
locations, and there were always those who sought to find
new and better lives in new lands. Settlers had hard lives,
and many fell victim to monster raids and other hazards,
but a few settlements survived. The [[human]]–[[orc]] communities of the [[Shadow Marches]], for example, are in
this category.
Missionaries occasionally delved deep into the wilderness to bring the message of their faith to the natives.
Some, such as the [[Sovereign Host]], went to teach. Others
went to destroy, as with the [[lycanthrope]] extermination
launched by the [[Silver Flame]].
In 894 YK, King [[Jarot|Jarot ir'Wynarn]], the last king of [[Galifar]],
died. With his death, the kingdom of Galifar collapsed.
Civil war erupted as his scions refused to uphold tradition and instead battled for the crown. This conflict,
which became known as the [[Last War]] thanks to headlines
plastered across many years' worth of [[Korranberg Chronicle]]s,
lasted just more than a century. When it ended, the
makeup of the continent was changed. [[Cyre]], one of the
original Five Nations, was reduced to a blighted, decimated region called the [[Mournland]]. The peace conference that resulted in the [[Thronehold Accords|Treaty of Thronehold]] and ended
the war created twelve distinct nations from what was once
mighty Galifar. The recognized nations, who each signed
the treaty and are now in place on Khorvaire, are [[Aundair]], [[Breland]], [[Darguun]], the [[Eldeen Reaches]], [[Karrnath]],
the [[Lhazaar Principalities]], the [[Mror Holds]], [[Q'barra]], the
[[Talenta Plains]], [[Thrane]], [[Valenar]], and [[Zilargo]]. Regions
formed during the war but not yet recognized as sovereign include [[Droaam]], the [[Shadow Marches]], the [[Demon Wastes]], and the [[Mournland]]. Though the original [[Five Nations]] have been reduced to four, the common usage
remains: “By the Five Nations” continues to be the pledge
(or curse) of choice.
In the common calendar of [[Khorvaire]], days are 24
hours long, divided into day and night. Seven days make
up a week, four weeks a month, and twelve months a
year. The months correspond to the twelve [[moon]]s of
[[Eberron]] (see the table below), and the prominent moon carries the name of the month in which its
orbit brings it closest to the planet.
The seven days of the week, in order, are ''Sul'', ''Mol'',
''Zol'', ''Wir'', ''Zor'', ''Far'', ''Sar''.
The common calendar of Khorvaire tracks the years
since the founding of the kingdom of [[Galifar]], using
the abbreviation YK. The last king of Galifar, [[Jarot ir'Wynarn]], died on 12 Therendor 894 YK. The Day of [[Mourning]] occurred a century later, on 20 Olarune 994
YK. By default, a new Eberron campaign begins on 1 Zarantyr 998 YK.
See also [[Modern Age]].
|!Month |!Name |
| 1 |[[Zarantyr]] (mid-winter) |
| 2 |[[Olarune]] (late winter) |
| 3 |[[Therendor]] (early spring) |
| 4 |[[Eyre]] (mid-spring) |
| 5 |[[Dravago]] (late spring) |
| 6 |[[Nymm]] (early summer) |
| 7 |[[Lharvion]] (mid-summer) |
| 8 |[[Barrakas]] (late summer) |
| 9 |[[Rhaan]] (early autumn) |
| 10 |[[Sypheros]] (mid-autumn) |
| 11 |[[Aryth]] (late autumn) |
| 12 |[[Vult]] (early winter) |
The Khraal rainforest
fills the eastern spur of [[Darguun]]. Within its dense depths,
all manner of strange and dangerous creatures roam. An
extensive series of ruins, believed to be from the time of
the [[Dhakaani Empire|Dhakaan]], lies deep within the vibrant jungle.
A few towns and villages can be found along the edge of the
great jungle, but not even the most powerful [[hobgoblin]]s
or [[bugbear]]s have been brave enough to try to forge settlements within this dangerous wildwood.
The raiders known as the [[Khraal Lords]] hide within this jungle.
A vicious band of pirates and
marauders hides within the jungle of [[Khraal]] in southeastern [[Darguun]]. Led by the cruel [[hobgoblin]] ''Baalo One-Eye'', the Khraal Lords terrorize the
scattered [[goblinoid]] communities of southern [[Darguun]]. The
band also possesses two small warships it recovered from a
[[Cyran|Cyre]] base on the [[Ghaal River]]. Now Baalo and his followers
use the ships to raid vessels crossing [[Kraken Bay]], though
they avoid prey that is better armed or more sea-savvy than
themselves (which includes most ships they come across).
For this reason, the Khraal Lords have begun sending
scavenging forays into the [[Mournland]] from the southern
sea. With few connections outside [[Darguun]], Baalo has been
selling whatever relics he acquires to a House [[Deneith]] clerk
who tends an outpost in [[Wyvernskull]]. The clerk, a hireling
without blood ties to the house, pays a third of what the relics
are worth and has been selling them, in turn, to Prince
[[Oargev|Oargev ir'Wynarn]] of [[New Cyre]] for a handsome profit.
The ancient kingdom of Khunan was once the greatest of the four kingdoms of what is now the region of [[Syrkarn]] in [[Sarlona]]. The [[wizard]]s of this land were experts in the [[Externalist|Externalist Theory]] tradition of [[arcane magic]], directly channeling the power of the [[plane]]s to produce incredible displays of mystical might.
In the early days of the [[Sundering]], Khunan invaded its neighbor [[Lamecha]], ostensibly for the southern ports that stayed largely free of [[Rhiavhaar]] piracy. [[Mae-Kree]], [[Sunyagir]], and [[Lamecha]] allied against Khunan. As a result, a devastating period of arcane conflict known as the magewars ensued.
When it was done, great Khunan lay broken. Some say the kingdom was destroyed by the partial release and re-binding of a demonic [[overlord]] from the [[Age of Demons]], but precise records of what happened to Khunan have been lost or destroyed. Over the course of decades, tribes of [[ogre]]s crossed the [[Andnemun Desert]], eager to occupy the ruins of this once-great land. In their midst, however, new creatures arose that had
never before been seen on [[Sarlona]]n soil—the [[yuan-ti]]. More cunning than the [[ogre]]s and even [[oni]], they quickly established dominance over the remnants of Khunan.
Fragments of lost lore collected by [[Adar]]'s [[Keepers of the Word]] suggest that sages of the day believed the [[yuan-ti]] to be magical mutants, descendants of the Khunani
transformed into serpent-like aberrations that quickly rechristened their new kingdom "Syrkarn."
!! The Syrkarn Exodus
When the [[Inspired]] arrived on Sarlona, the whispered alliances they forged among the warring human nations were quickly turned against the yuan-ti. [[Syrkarn]] was invaded, and the yuan-ti were hunted to the point of extinction. However, even in the aftermath of victory, the human populations of [[Lamecha]], [[Sunyagir]], and [[Mae-Kree]] were suddenly ordered out of their ancestral lands. In 90 Unity (-212 YK), thousands of people were moved and resettled in [[Khalesh]], [[Dor Maleer]], and [[Corvagura]].
To this day, no official rationale for the exodus has
been given. However, those who have attempted to piece
together and connect the oral histories of the yuan-ti
with the vague lore of the [[Age of Demons]] have suggested
that in the course of eliminating the threat of the intelligent and powerfully psionic yuan-ti, the Inspired discovered the dark power behind their creation.
!! Khunan Today
The savannahs of the modern province of Khunan are populated by [[human]]s and [[eneko]]. The largest city in [[Syrkarn]], [[Nderitese]], is built on the foundations of ancient [[yuan-ti]] ruins in Khunan, just north of the [[Tese Hills]]. The splendor of the Itzaina plains are one of the most beautiful sights in [[Sarlona]], filled with vibrant wildflowers and plants seen nowhere else on Eberron.
The kingdom once included the [[Aventus Islands]], but today they are considered part of the [[Riedra]]n province of [[Rhiavhaar]]. However, the [[Hailana Islands]] are still part of the province of Khunan.
In {{!!title}}, you might...
* Fight [[mind flayer]]s and armies of hideous [[aberration]]s.
* Discover a wondrous realm lit by an [[inner sun|Vale of the Inner Sun]].
* Prevent a fiendish [[overlord]] from escaping its ancient prison.
The common creation myth contends that when the [[Progenitor Dragons]] fought, [[Eberron]] trapped Khyber in her
coils and became the world, imprisoning her evil sibling in a living prison. Bound within the world, Khyber spawns demons and monsters to plague the children of
Eberron. This might be myth and metaphor, but it's also
a description of fact: there are worlds within the world,
realms inhabited by [[aberration]]s, [[fiend]]s, and all manner
of monsters.
Any time someone descends below the surface of the
world, they enter Khyber. But the underworld takes two
very different forms. First is the natural realm, networks
of tunnels and caverns formed from stone and soil.
These passages are dark and dangerous, but they're exactly what you expect to find in an underground realm.
Such passages might be home to [[carrion crawler]]s, giant beetles, or clans of [[kobold]]s. But ultimately these mundane caverns follow the laws of nature.
There's another aspect to Khyber: go deep enough and
you find a seemingly endless array of [[demiplane]]s, each
stranger than the last. When descending into a chasm,
you could find a labyrinth inhabited by [[demon]]s or discover a realm consisting of the guts of a colossal living creature. Anything is possible in Khyber, and these
"worlds within" are home to all manner of terrors.
The [[demiplane]]s of Khyber are not concretely tied to
the world above. You could discover a passage in [[Breland]] that leads into a disturbing subterranean swamp filled with [[ooze]]s and slimes. After traveling what seems
to be a few miles, you might emerge from a different tunnel in [[Xen'drik]], half a world away from where you began.
The [[Mror Holds]] demonstrate this mystery. Over the
past century, the [[dwarves|dwarf]] discovered a vast subterranean kingdom within the [[Ironroot Mountains]]. Most
of these halls rest in the natural layers of Khyber. The
halls connect to one another in logical cartographic order. But as the ancient dwarves dug deeper, they opened
passages into the unnatural realms and unleashed the
hordes of the [[daelkyr]] [[Dyrrn]] the Corruptor. Passages
to Dyrrn's realm also exist in the [[Shadow Marches]], on
the opposite side of [[Khorvaire]]. The Corruptor's domain
doesn't necessarily stretch across the entire world; the
portals to the worlds within defy natural law.
These connections impact the world in a number of
ways. Dark forces can rise anywhere in the world, bursting out of a previously unknown portal to Khyber. This
fact dictates the primary mission of the Church of the
[[Silver Flame]]: to stand ready to defend the innocent from
such unnatural threats. Because the [[demiplane]]s connect to the world at random, you never know what you
might find when you venture into the depths. A newly
opened chasm in the sewers could be an entirely mundane hole in the ground, or it could be a passage to the [[Abyssal Forest of Khaar]].
The many layers of Khyber share similarity only in
their strangeness and deadliness. Eberron is the natural
world; Khyber is the source of [[fiend]]s and monstrosities
and the domain of the alien [[daelkyr]]. Some [[Cults of the Dragon Below]] believe that paradise awaits them in the
[[Vale of the Inner Sun]], but such cultists also consider
[[gibbering mouther]]s and [[mind flayer]]s to be creatures of
beauty. Wondrous treasures might wait in the worlds
below amid hordes of [[demon]]s and [[aberration]]s.
!! {{!!title}}'s Influence in Khorvaire
In [[Khorvaire]], you might...
* Find a way to close a passage to Khyber before a horde of horrors emerges from it.
* Battle a [[mind flayer]] that has established a cult in the sewers.
* Stop the spread of a deadly drug or strange disease flowing from a well tied to Khyber.
Khyber is an ever-present threat. Any deep passage
could connect to a realm of [[fiend]]s or spew out an army
of [[aberration]]s. Despite the magnitude of this threat,
portals to Khyber are very rare, and they are stable
once found. If you dig a hole in the ground, the odds
that you'll eventually reach the [[Vale of the Inner Sun]]
are infinitesimal. And if a portal to Khyber existed in
the sewers of [[Fairhaven]], odds are good that it would already have been discovered. The risk arises when you're
exploring passages where no one has gone before.
The sewers of Fairhaven might be safe today, but if an
earthquake opens a new shaft or a group of cultists digs
deeper, a previously unknown passage to Khyber could
be uncovered. Wherever a passage to Khyber appears,
monsters and dark powers can rise up to threaten the
world above.
[[Cults of the Dragon Below]] often have ties to Khyber.
Some serve [[aberration]]s or fight alongside [[dolgrim]]s and
[[dolgaunt]]s. Others can unintentionally
threaten a community by releasing something from the
underworld: an unnatural disease, a malevolent [[demon]],
or a strange and addictive drug. In dealing with such a
cult, the question is not only how to stop their current
machinations, but how to seal the passage or prevent it
from posing an ongoing threat.
Treasures from Khyber can take many forms. The
[[daelkyr]] create living tools, including [[symbiont]]s, but any [[magic item]] could be presented as an organic creation: a living cloak of the mountebank that
teleports its wearer through the plane of madness; a
dagger of venom made from chitin and muscle, similar
to a scorpion's barb; a crystal ball made by the daelkyr
[[Belashyrra]] that looks like a giant eye, casting visions of
distant places directly into the wielder's mind. Items recovered from fiendish demiplanes might be constructed
from standard materials but have a sinister aspect or
appearance, such as a sword of life stealing from the
[[Abyssal Forest of Khaar]] made of jagged, blackened steel.
Shadows trail the blade, and it issues a hungry moan
any time it draws blood.
!!! Trinkets from {{!!title}}
| !<<dr d10>> |!Trinket |
| 1 |A pressed flower with vivid green petals; when you smell it, you hear eerie music |
| 2 |A tiny ball of putty; if you set it down, it begins to slowly crawl around |
| 3 |A perpetually warm disk of dark iron |
| 4 |A small journal with leathery pages; any words you write in it slowly disappear |
| 5 |A four-sided die carved with strange markings |
| 6 |A cameo with the silhouette of an unknown species |
| 7 |A preserved finger with purple flesh and four joints |
| 8 |A perfectly preserved eye; if you set it down, it rotates to follow your movement |
| 9 |A small box; when opened, you alone hear screaming |
| 10 |A preserved insect; you've never seen another like it |
!! Demiplanes of Khyber
<<list-links-article "[tag[demiplane]!title[Ashtakala]sort[title]]">>
''District Type:'' Undercity<br/>
''Buildings: ''Dungeons (8), temples ([[Dragon Below|Cults of the Dragon Below]], the [[Shadow]], the [[Mockery]], the [[Fury]]), poor lodging (20), poor food (40), average
trades (20), poor trades (60), average services (20),
poor services (80), poor residences (420)<br/>
''First Impression:'' This is an actual city beneath the
city, with homes and shops carved into the walls of the
Cogs. It is still a maze of passages, but the “streets” are
a little wider and the ceilings rise higher. The heat is
far less intense that in the industrial district, but the
air is still filled with the stench of smoke and garbage.
Goblins watch from the shadows, and in the distance
two ogres stagger out of a bar.<br/>
''Social Class:'' Lower class
Khyber's Gate covers the distance between [[Ashblack]]
and [[Blackbones]]. Due to the lack of lava streams, it does
not have any of the heavy industry found to the east or
west. For the most part, Khyber's Gate is a tenement
district, filled with tiny houses carved into the tunnel
walls. A great many of the monstrous immigrants from
[[Droaam]] have settled in Khyber's Gate, using strength
or supernatural abilities to drive the original residents
away. Beyond these monsters, the vast majority of the
inhabitants are [[goblin]]s. The other inhabitants of the
Gate are drawn from all races, though they share a
common desperation; an [[elf]] resident of Khyber's Gate
has little in common with one of the haughty inhabitants of [[Shae Lias]]. Many of the non-goblin inhabitants of the region are criminals who have fled from justice.
Some people have established businesses in the depths,
while others travel up to the surface and make a living
by begging or stealing. While the vast majority of the
trades and services offered in Khyber's Gate are illegal, there are a few people who practice useful mundane trades. Khyber's Gate is a community of sorts,
and brewers, tailors, and cooks are just as valuable
as burglars and assassins.
Khyber's Gate is an extremely disorganized
region. There is no central authority—it is simply a
question of who has the power to enforce their desires.
At the moment, [[Daask]] is the most powerful force in
the undercity. The [[Cults of the Dragon Below]] have a
strong following in the undercity, but as is often the
case, the cults are not a unified force; there are three
different sects, and they fight one another as often as
anyone else. The [[rakshasa]]s [[Zathara]] and [[Nethatar]]
are powerful and deadly inhabitants of the region,
but few people even know of their existence.
Khyber's Gate is part of the ruins of a goblin city that was abandoned thousands of years ago. No one knows how deep it goes. The monstrous inhabitants of the district have no love for treasure hunters or adventurers, and it's a dangerous place to explore.
In Khyber's Gate, an adventurer should always be
cautious—there's no telling when what appears to be a
lowly [[goblin]] might turn out to be a [[vampire]], a [[wererat|lycanthrope]],
a [[rakshasa]], or an even more dangerous [[fiend]].
!! Noteworthy Locations
* [[Shamukaar]]. This is the most successful tavern in Khyber's Gate. The place is a safe haven for all within it, regardless of species or politics; once you make it through the door, you can breathe easy.
* The [[Wounded Dragon]]. A small shop located behind Shamukaar, as well as the abode of the [[changeling]] [[artificer]] [[Cask]].
* The [[Temple of the Six]]. A temple to the [[Dark Six]] and headquarters of [[Daask]].
* The [[Citadel of the Closed Circle]]. Over 200 years ago, the last surviving members of the destroyed arcane order known as the [[Closed Circle]] were sealed in the order's fortress in the undercity.
* The [[Workshop of Tyrial Dashar]]. This former workshop of a [[wizard]] is now a fortress inhabited by two [[rakshasa]]s working on behalf of the [[Lords of Dust]].
Ki-rins are noble, celestial creatures native to [[Irian]]. They resemble [[unicorn]]-like stags, covered in golden scales rather than fur. In the mortal world, a ki-rin is celebrated far and wide as a harbinger of destiny, a guardian of the sacred, and a counterbalance to the forces of evil.
The herb known as kieros grows only in the region of [[Aerenal]] known as the [[Madwood]]. It is used by [[elvish|elf]] [[alchemist]]s for elixirs involving magical preservation.
Economic forces drive the wants and needs of [[Lower Tavick's Landing]].
Kilk ([[changeling]]) has the support of the [[Tyrants]], but has also won the loyalty of the other merchant lords of the district.
On the surface, it appears that Kilk looks out for the
mercantile interests of his ward, but he also monitors
and manipulates events across the city. Only [[Thurik Davandi]] can match Kilk for intrigues and scheming, and Kilk has a web of informants and spies across the city. He has done his best to make himself useful to the [[King's Citadel]] and the [[Guardians of the Gate]],
and as a result he has developed powerful allies within
both organizations.
Kilk is an invention of the [[Tyrants]]. There is
one [[changeling]] who plays the role more often than
others, but at any time Kilk could be any one of
the Tyrants—even [[Ek]] himself. Through Kilk, the
Tyrants have a second way to affect the city, and a
more respectable façade for dealing with groups such
as the King's Citadel.
The commander of the [[Corpse Collectors]] is known only as the Kind, a title given to him by Gyrnar Shult (the creator of the [[Odakyr Rites]]) long ago. He directly reports to the Minister of the Dead, Count [[Vedim ir'Omik]]. The Kind is an old man with long gray hair who wears the simple black uniform
and silver raven pin of the Collectors. He remains vigorous despite his age, but he never raises his voice or
shows any sign of anger, and is a devoted [[Seeker|Blood of Vol]]. He isn't especially skilled a combat magic, but he is one of the finest [[necromantic|necromancy]]
ritualists of the modern age.
The [[Kind]] fears that the [[Karrnathi undead]] aren't animated by the patriotic soul of
[[Karrnath]], but rather by an aspect of [[Mabar]] itself—that
the combat styles of the undead might be those of
the [[dark fiend|yugoloth]]s of Mabar. Over the years, he has felt
a certain malevolence in his skeletal creations that he
can't explain, not to mention their love of slaughter.
He has also considered the possibility that they are
touched by the spirits of the [[Qabalrin]] [[elves|elf]] of ancient [[Xen'drik]]. The Kind hasn't found any proof for these
theories, but they haunt his dreams.
The most common deck of
playing cards used in [[Khorvaire]] has four suits, each
tied to one of the four elements. The largest tavern
in Hareth's Folly uses the King of Fire as its trade
sign. The tavern, a strange structure supposedly
inspired by Hareth's visions of [[Fernia]], consists of
black stone and brass, and [[continual flame]] spells have
been placed on fixtures throughout the building—
including tables and chairs. Half a dozen card games
constantly play out in the back rooms of the King,
and the place does a brisk business in gambling on
races and [[skyblade]] matches.
Lat Horasca, a former [[glidewing]] jockey, owns the tavern, which he won in a
dramatic hand of cards. Lat is a gambler, not an innkeeper, but he has married into House [[Ghallanda]] and
his wife Kela manages the day-to-day affairs of the business. Things
can get rowdy during the [[Race of Eight Winds]], but Lat
has wisely invested in an excellent bouncer, an [[ogre]]
named Korrla. When she's
not working, Korrla often fights at the [[Burning Ring]]
in [[Lower Menthis]].
[[Breland]]’s elite military service operates from the obsidian tower also known as "the Citadel" in [[Wroat]]. The headquarters contains offices, headquarters, residences, and training grounds for the force of warriors, mages, and spies
who serve at the king’s pleasure. Second to the king, the commander of the King's Citadel is Lord [[Kor ir'Wynarn]].
The Citadel is made up of these four divisions:
* The [[King's Dark Lanterns]] gather intelligence and engage in covert operations.
* The [[King's Shields]] protect the royal family and its closest associates.
* The [[King's Swords]] are elite soldiers used in the most dangerous military operations.
* The [[King's Wands]] are [[wizard]]s and [[sorcerer]]s, serving the crown in all arcane matters.
!! The King's Citadel in Sharn
The members of the King's Citadel are the direct agents
of the [[Brelish|Breland]] [[Crown|Boranel ir'Wynarn]]. As such, the King's Citadel stands
above the [[Sharn Watch]]. Its members have the authority
to take control of any investigation and to command the
service of any guard or sentinel. Typically the Citadel
leaves the daily chores of law enforcement (including
the conflicts between the criminal organizations of the
lower towers) in the hands of the Sharn Watch. The
Citadel is concerned with forces that threaten the entire
city, or even the kingdom. Foreign spies, mad necromancers, and ancient fiends—these are the foes of the King's Citadel, rather than pickpockets and burglars.
Of course, many of these greater threats might be beyond the capabilities of the typical Citadel agents. Much
as the [[Blackened Book]] does, the Citadel keeps a close
eye on unusual and talented individuals, and a party of
adventurers might be called upon to assist the Citadel in
a dangerous mission.
Unlike the Sharn Watch, the Citadel doesn't ask for
help; it demands it. The knights of the Citadel are the
representatives of the King of Breland, and any Brelish
citizen who refuses to help them is committing an act of
treason. The Citadel isn't required to provide compensation for the services it demands, but an adventurer
who wins the respect of the Citadel can certainly benefit
from the relationship.
The headquarters of the Citadel in [[Sharn]] is in the [[Ambassador Towers]] district of [[Middle Central]], in Andith Tower. That
structure also serves as the city jail.
The King's Dark Lanterns is the intelligence division
of the [[King's Citadel]], an organization sworn to defend
[[Breland]] from its enemies and dispense justice in the
name of King [[Boranel|Boranel ir'Wynarn]]. As the secret servants of the
crown, members of the organization are granted the
authority to conduct intelligence operations on foreign
soil, execute covert missions across the globe, and prevent national secrets from falling into the hands of rival
intelligence agencies. The Dark Lanterns also have an
unwritten license to eliminate any creature that threatens their nation, its sovereign, or its citizens.
//''Headquarters.''// The King's Citadel is based in [[Breland]]'s capital city of [[Wroat]], under the command of
the king's brother, Lord [[Kor ir'Wynarn]]. A [[changeling]]
named Captain [[Vron]] serves as the leader of the Dark Lanterns, with four subordinate knights marshal leading branch offices across Breland, in [[Sharn]], [[Starilaskur]],
and [[Xandrar]]. A much smaller branch office keeps an
eye on Brelish interests in the city of [[Stormreach]], in
[[Xen'drik]]. Small, temporary field offices are sometimes
established to coordinate missions outside [[Breland]];
these offices double as safe houses for agents in trouble,
and they are designed to be wiped clean at a moment's
notice if discovered by local authorities.
The [[Sharn]] office of the [[King's Citadel]] is in Andith
Tower in the [[Ambassador Towers]] district. Though a
knight marshal commands the office, most of the King's
Citadel members in [[Sharn]] are Dark Lanterns, and thus
under the authority of a scheming and ruthless [[gnome]]
named [[Talleon Haliar Tonan]].
//''Agents.''// The King's Dark Lanterns includes more
than 500 agents operating within [[Breland]]'s borders and
roughly one-fifth that number stationed abroad. They often work in teams, and also work closely with the other
divisions of the [[Citadel|King's Citadel]]. Sometimes they recruit local
talent, often under false pretenses, to help them accomplish their missions in foreign lands.
//''Allies.''// By their nature, espionage agencies must be cautious in choosing their allies, and the King's Dark Lanterns is no exception. Its most trustworthy allies include the following facets of the Brelish government:
* ''King Boranel. ''The King's Dark Lanterns, as one would expect, serve the king of Breland, and he is their greatest advocate and ally. The king views loyalty as mutual: as long as an agent's loyalty is irreproachable, [[Boranel|Boranel ir'Wynarn]] is willing to exercise his considerable power on that agent's behalf.
* ''The King's Citadel.'' The [[Citadel|King's Citadel]] has three branches besides the Dark Lanterns. The [[King's Swords]] are elite special combat forces. The [[King's Shields]] protect the king and his closest family members and associates. The [[King's Wands]] provide magical support to the other branches of the Citadel as well as other Brelish forces. Some Dark Lanterns might think themselves superior to members of the other branches, but even so they recognize other Citadel agents as players on the same team. When your group needs a little extra help, the other branches of the Citadel are there for you.
//''Enemies.''// Rare is the espionage agency that is loved.
Even within [[Breland]], the populace views the Dark Lanterns with suspicion, and powerful people outside the
royal family harbor resentment at the influence of the
Citadel. Many people and institutions outside Breland
view the Dark Lanterns as a hostile force. As a result,
the following groups account for just a few enemies of
the Dark Lanterns:
* ''Brelish Populists.'' As much as King Boranel is loved in his country, many Brelish voices argue that the era of monarchy is at an end, and the throne of Breland should be replaced by a government democratically elected by the citizenry. When these forces grow restless enough to plot and riot, the Citadel—and often the Dark Lanterns—work to bring them to heel. As a result, those who question the authority of the king are the most likely Brelish citizens to mistrust the Dark Lanterns or view them with open hostility. According to rumor some of those people even hold high positions in the Brelish government.
* ''Foreign Nations.'' Every nation knows the King's Dark Lanterns serves as an espionage force and do their best to track the movements of Dark Lantern agents within their borders. Foreign governments treat Dark Lantern agents with care to avoid sparking an international incident, but they are quick to arrest Dark Lantern agents suspected of wrongdoing.
* ''New Cyre.'' One of the world's largest concentrations of [[Cyran|Cyre]] refugees settled in eastern Breland under the leadership of [[Oargev ir'Wynarn]], the last prince of Cyre. Many voices among the Cyrans, possibly including Oargev himself, call for the establishment of an independent nation in what is now Brelish territory, but Boranel is determined to hold on to every acre of his land. The Dark Lanterns actively infiltrate the Cyran refugee community, rooting out those who would act against the king.
A great tropical rainforest fills the southeastern portion of [[Breland]], from the [[Dagger River]] in the west to the [[Trolan River]] (now part of [[Zilargo]]) in the east, from the [[Howling River]] in the north to [[Khorvaire]]'s southern coast. The King's Forest is a hunting preserve that once belonged to the [[Galifar]] king and now falls under the protection of Breland's crown. The [[Knight Rangers|King's Shields]] patrol the rainforest, watching for poachers and trying to keep in check the bandits and brigands who hide within its depths. Since the [[Treaty of Thronehold]], the easter portion of the forest has been part of [[Zilargo]]. It isn't unusual for bands of brigands to flee across the border as they try to evade the Brelish rangers.
Once, the King's Forest covered the entire southern half of Breland, cut in half by the mighty [[Dagger River]]. Logging and cultivation have reduced the forest's size over the centuries, and a royal decree was necessary to preserve the portion of forest that remains. All kinds of tropical plants, insects and wildlife fill the King's Forest. Hunting, except by permit or royal invitation, is strictly prohibited. In the fall season, the king and his court, as well as honored guests, enter the King's Forest to participate in a Great Hunt.
The [[Jungle Boys]], a band of bloodthirsty brigands, hide within the King's Forest.
The King's Shields is an agency of [[Breland]]'s [[King's Citadel]]. Led by Captain Sortan, a [[human]] [[paladin]], the Shields provide protection for the royal family and other dignitaries, as well as overseeing matters of royal security throughout the kingdom.
The ''Knight Rangers'' are a subdivision of the King's Shields that patrol the borders of [[Breland]] as well as the [[King's Forest]].
The King's Swords is an agency of [[Breland]]'s [[King's Citadel]]. Led by Captain Ellanar, a [[half-elf]] [[paladin]], the Swords consist of elite warriors trained to operate far and wide on public missions in service to the king.
The King's Wands is a division of [[Breland]]'s [[King's Citadel]]. Led by Captain Nebik, a [[gnome]] [[wizard]], the Wands provide magical support and undertake missions that require arcane talents. The agents of the Wands usually work as part of a task force that includes operatives from other divisions of the Citadel.
Where the domain of the [[Amaranthine City]] of [[Mabar]] feels like an empire
in its last days, the Kingdom of Bones is one that's already
fallen. If a [[layer]] contains a fortress, it's not preparing for a
final battle; it's what remained after the battle. The gates are
shattered, and bloodstains and broken weapons are scattered
across the floors. The people of this domain fought a dreadful
war and lost... but this being Mabar, their bones remain. The
skeletons of peasants continue their menial labors, seemingly
oblivious to the futility of their actions. Even in death, these
commoners are oppressed by their cruel lords. [[Wight|wight]]s,
[[deathlock]]s, and [[vampire]] spawn might serve as the soldiers of
the tyrants, while the overlords themselves may be vampires or
mummies, still ruling from their ruined keeps.
All of the kingdom's cursed nobles bow before the [[Bone King]],
who embodies the concepts of death and decay.
[[Storm Lord|Storm Lords]] Kirris [[Sel Shadra|Sel Shadra family]] oversees [[jurisprudence|Crime in Stormreach]] in [[Stormreach]], an area viewed as a headache by the
other lords. The clever [[gnome]] manages to turn a
tidy profit by sending violent criminals to the [[Red Ring]], receiving kickbacks from the stablemasters.
The gold she receives is only one benefit. Strong
ties with the [[Blood Council]] (particularly [[Malketh Zolark]]) allow Lady Kirris to borrow [[Bloodbound]]—the ring’s greatest gladiators—when she needs their
violent skills to deal with someone who dares to oppose
her enterprises.
A typical thug might never realize that his boss is tithing a percentage of profits to Lady Kirris, “the [[Spider|Quickfoot Gang]] of [[Stormreach]],” and that’s how she likes it. She is a grandmaster playing with many pieces. She can influence the prices that fences and brothels charge. She knows smugglers’ timetables and the goods they’re
carrying. She knows which gangs are fighting, and by
pulling a few strings, she can redirect those conflicts.
Lady Kirris is the queen of crime in Stormreach, and
she works from the deepest shadows. The gang leaders
know better than to cross her, and few ever know her
true agenda.
Lady Kirris has also established a working relationship with
House [[Thuranni]]. Lady [[Miravella Uruvai d'Thuranni]] has
her own interests in [[Stormreach]] and largely wants
to be left alone. Lady Kirris keeps both criminals
and the [[Stormreach Guard]] out of Lady Miravella’s
way; if anyone is foolish enough to cause trouble for
Thuranni, the [[Sel Shadras|Sel Shadra family]] help hide the bodies. In
exchange, the Sel Shadras gain access to the special
services of House Thuranni. When the justice system
proves ill suited to her needs, Lady Kirris can call in
[[Bloodbound]] gladiators or [[Thuranni]] assassins; as a
result, few people cross her.
If adventurers cause a major upset in the underworld by destroying entire gangs or businesses, they’re
likely to draw Lady Kirris’s attention. An adventurer
who shines at subterfuge might receive an offer to work
for the Spider of [[Stormreach]]. Otherwise, Lady Kirris
maintains the lowest profile of all the [[Storm Lords]]:
always watching, rarely seen.
Kiznak the Exterminator, a [[green|green dragon]] [[rogue dragon]] in [[Xen'drik]], has always been too friendly with [[elves|elf]] for other [[dragon]]s’ comfort. After secretly
consorting with the [[Undying Court]] for centuries, Kiznak earned himself a lengthy term of forced exile on [[Xen'drik]]. Although the [[drow]] are significantly
less erudite than their [[Aerenal]] cousins, Kiznak finds them delightful company. His brushes with other [[humanoid]]s have been less pleasing, so Kiznak has decided to exterminate the pesky non-[[elf]] “vermin” plaguing [[Xen'drik]]. The [[green dragon]]
patrols routes frequently used by [[Stormreach]] [[human]]s, [[half-orc]]s, and other non-elves, unceremoniously killing any he encounters.
The Knights Arcane of [[Aundair]] is a large order of [[eldritch knight]]s that embodies the mixing of [[arcane|arcane magic]] and martial traditions. Many of the Knights Arcane conventionally raise their own mounds to serve as traditional cavalry, mixing spell and blade from horseback. The Knights Phantom are an elite unit of light cavalry that prefer to leverage the spell [[phantom steed]] over flesh and blood mounts, using a special [[magic item]] that extends the duration of the steed for several hours.
Perhaps the most famous of the Knights Arcane are the [[dragonhawk]] riders, whose mastery of magic solidified [[Aundair]]'s aerial superiority during the [[Last War]]. Still, this wasn't enough to prevent the major losses Aundair faced throughout the war. It takes years for a [[dragonhawk]] to grow to a rideable size and war-ready state. Furthermore, the reliance on the noble class for both mounts and riders limited the overall size and scope of aerial warfare.
The Knights Arcane are led by Lord [[Darro ir'Lain]].
''Leader:'' [[Valen Vanatar]]<br/>
''Notable Members:'' [[Taris Irvalo]], [[Arrun Stone]]<br/>
''Base of Operations:'' [[Embers]]
When King [[Thalin|Thalin ir'Wynarn]] of [[Thrane]] died, a popular uprising
turned the people against Prince Daslin and ushered in
the theocratic government that reigns today. The Knights
of Thrane were the sworn defenders of the throne, and
many were prepared to lay down their lives to defend the
rights of their king. Daslin wouldn’t allow it, demanding
that his soldiers obey the will of the people. Many did, and
in Thrane the order now serves both [[Queen|Diani ir'Wynarn]] and [[Keeper|Keeper of the Flame]].
However, some simply couldn’t stomach the change.
These knights turned their backs on [[Galifar]] and made
their way to the expatriate community of [[Stormreach]].
The Knights of Thrane seek to protect their own
and to preserve the old values of [[Thrane]]. They see
[[Embers]] as the last bastion of Thrane culture, and new
immigrants are pressured to conform to their traditions. Foremost among these is respect for the blood of Wynarn and the royal family of Thrane. A knight begins
every meal with a toast to Queen [[Diani|Diani ir'Wynarn]] and to the day
when she holds her throne once more. Even so, most
knights are followers of the [[Silver Flame]] and seek to live
by the virtues of the Flame, which sets them apart from
the secular [[Throneholder|Diani ir'Wynarn]] movement. Faith
is important to the knights and the people of Embers.
But they believe that their faith—their dedication to the
true principles of the Silver Flame—demands that they
oppose the theocracy, which will inevitably tarnish the
values of both church and state.
Despite the fact that most of the knights have never
set foot in [[Thrane]], they are passionately devoted to the idea
of their homeland. This attitude leads the knights to take
violent action against those they consider to be enemies
of their state. Most of the knights are good people, and
they won’t attack helpless innocents. But anyone who
raises suspicions—such as former soldiers—might trigger
violent action. The [[Swords of Karrn]] are seen as a threat,
and the knights occasionally strike at Sword patrols. And
if [[Dannel's Wrath]] launches attacks across the city, the
knights might conclude that all [[Cyrans|Cyre]] are dangerous.
Choose an object that you can see within 60 feet. The object can be a door, a box, a chest, a set of manacles, a padlock, or another object that contains a mundane or magical means that prevents access.
A target that is held shut by a mundane lock or that is stuck or barred becomes unlocked, unstuck, or unbarred. If the object has multiple locks, only one of them is unlocked.
If you choose a target that is held shut with [[arcane lock]], that spell is suppressed for 10 minutes, during which time the target can be opened and shut normally.
When you cast the spell, a loud knock, audible from as far away as 300 feet, emanates from the target object.
Kobolds are tribal reptilian humanoids about the same size as [[goblin]]s. They historically worshipped [[dragon]]s and dwelled in subterranean tunnels, making complex traps to protect their lairs.
The kobolds of [[Khorvaire]] trace their history to the dawn of [[Eberron]]. According to ancient legend, kobolds were formed from the drops of blood shed in the battle between [[Eberron, Siberys, and Khyber|Progenitor Dragons]]. A new generation of [[dragon]]s descended from [[Siberys]], [[Khyber]] brought forth [[fiend]]s and horrors, and [[Eberron]] gave birth to the creatures of nature—but the kobolds were already there, spawned from the first battle. True or not, this myth is the driving force behind kobold psychology and culture.
Two [[subrace]]s of kobold exist in Khorvaire: the ''iredar'' (Draconic for "ones of earth"), who trace their ancestry to Eberron, and the ''irvhir'' (Draconic for "ones below") that descend from Khyber. These two races share a common appearance, but each race has a distinctive body odor that kobolds can instantly detect; in fact, a kobold can automatically identify the subrace of any other kobold within 15 feet. Kobolds find the scent of others of their kind to be soothing, and kobolds that spend long periods of time away from their own kind often become depressed.
Beyond scent, the key distinction between the kobold subraces is supernatural. Kobolds produce a surprising number of [[sorcerer]]s, which is a phenomenon they attribute to their supposed bond to the progenitor dragons. Irvhir sorcerers typically possess spells tied to corruption and darkness, while iredar sorcerers usually have powers of defense and binding. This is not an absolute rule, and exceptions exist. However, an iredar kobold that makes use of spells such as fear, darkness, or chilling touch may be viewed with suspicion by her companions, who see these as the powers of the Dragon Below.
Stories are told of a third subrace of kobolds: the ''irsvern'' (Draconic for "ones above"), children of Siberys. According to legend, these kobolds have wings and live in hidden communities on the peaks of the tallest mountains. In 867 YK, Tolas Koln of the [[Wayfinder Foundation]] set out to recover a copy of the Talarash Siberys said to reside in an abandoned draconic temple in the [[Ironroot Mountains]], and the last entry in the expedition journal describes an encounter with winged kobolds with astonishing sorcerous powers. Some say that this is a documented encounter with the irsvern kobolds, while others dismiss it as a hoax perpetrated by Koln himself.
Outsiders often assume that kobolds are primitive and savage since they live in unmodified caverns and rely on oral tradition instead of written records. Also, they live in small tribal communities and have never come together to create cities, nations, or empires. However, kobolds are just as sophisticated as [[human]]s or [[gnome]]s. While they prefer to live in natural environments instead of creating artificial structures, kobolds have a great gift for mining and stoneworking, and they often fill their lairs with cunning traps. But their culture is driven by tradition, and the kobolds have never sought to change or progress. They are the children of the [[dragon]]s, vessels of the [[progenitors|Progenitor Dragons]]' will; change will come when the great dragons mandate it.
!! Lands and Settlements
To date, kobold communities have been encountered in [[Q'barra]], [[Droaam]], and in the [[Seawall Mountains]] between [[Darguun]] and [[Zilargo]]. However, kobolds are extremely reclusive, and recent events suggest that kobold communities are hidden across [[Khorvaire]].
The kobolds of [[Eberron]] prefer to live in natural caverns. The irvhir kobolds make their homes deep beneath the surface, while the iredar kobolds usually live in mountain caves. The kobolds believe that these caverns are the veins of the progenitor dragons, and they often carve elaborate draconic designs on the walls. Kobolds prefer to live in tribes containing approximately 100 adults. The largest communities can have up to 600 adults. Generally, though, a community splits once its population rises too far above 100 adults, with younger kobolds moving away to found a new community.
Kobolds bond with [[dire animal|dire beast]]s. Dire creatures—especially burrowing animals such as rats, weasels, and badgers—are frequently found in kobold communities.
!! Power Groups
Kobold culture revolves around three forces. The ''stonescales'' (or ternmolik, in Draconic) perform the day-to-day tasks required for the survival of a community: crafts, agriculture, and the gathering of food when agriculture will not suffice. The ''claws'' (gix) are soldiers and hunters. And the ''blood seers'' (iejirastrix) are mystics who hear the voices of the progenitor dragons—[[sorcerer]]s and [[druid]]s whose magical powers are seen as proof of the kobolds' divine ancestry.
Typically the chieftain of a village is an old claw, though in a peaceful region a stonescale can hold the post. The chieftain manages the daily affairs of the community while the blood seers link the communities together. Seers often travel from village to village to meet with other blood seers, discussing their visions and issues affecting the race as a whole.
One other force that has an impact on kobold culture: the [[Chamber]]. While most dragons dismiss the kobold's claims of draconic ancestry, kobold blood seers can have strange (though often distorted) insights into the [[Draconic Prophecy]], and the Chamber occasionally makes use of kobold agents. This can result in teams of kobolds equipped with powerful magic weapons and items—an unpleasant surprise for a group of adventurers that underestimates the little reptiles.
!! Beliefs
Mainstream kobold culture is oriented around the worship of a particular progenitor dragon. The irvhir tradition is one of the oldest [[Cults of the Dragon Below]], though it has no connection with the [[aberration]]-oriented cults of the [[Shadow Marches]]. The iredar kobolds revere [[Eberron]] as the source of life and nature; this is a unique [[druid]]ic tradition with no ties to the sects of the [[Eldeen Reaches]].
The kobolds see themselves as the hands of the progenitors in the modern age. And in the past, visions of the blood seers have often been tied to the [[Draconic Prophecy]]. It is a mystery, since the kobolds themselves rarely understand the significance of their actions—but even the [[Chamber]] respects this uncanny gift.
Of course, not all kobolds are bound to these beliefs. A few tribes have split off from these traditions, ignoring the words of the blood seers. Irvhir kobolds often turn to the worship of the [[Shadow]] or the [[Mockery]], while independent iredar revere [[Boldrei]] and [[Olladra]].
!! Interaction with the Outside World
Kobolds speak Draconic. There is no evidence of the kobolds ever having possessed another language or having been taught by [[dragon]]s. Most kobolds love to talk, and a meal with a group of kobolds is a deluge of yapping voices.
Most kobolds prefer to avoid contact with the outside world. Irvhir kobolds are especially xenophobic, and the miners of [[Zilargo]] have been fighting irvhir kobolds for centuries. Iredar kobolds are more moderate in their views. They have little interest in foreign cultures and fight irvhir kobolds as often as they battle [[gnome]]s or [[human]]s.
In the wake of the [[Last War]], kobolds have had more active presence on the surface of [[Khorvaire]]. Kobold scavengers often rummage through battlefields and ruined villages. Previously unknown irvhir communities have risen from the depths to strike at weakened thorps and hamlets along the borders of the [[Mournland]]. Whether these are random attacks of opportunity or driven by the seers of [[Khyber]] remains to be seen.
Kol Korran is the Sovereign of World and Wealth. He guards travelers and guides traders. His symbols include a nine-sided gold coin or [[white dragon]].
Kol Korran guides fair negotiation; those driven solely by greed prefer the [[Keeper]] of the [[Dark Six]].
[[Kol Korran]]'s Throne, [[Khorvaire]]'s largest temple to the Sovereign Lord of World and Wealth, dominates the cityscape of [[Krona Peak]] in the [[Mror Holds]].
Brilliant and charismatic, Kolas Verdgrin was one of [[Breland]]’s finest generals of the [[Redcloak Battalion]] during the [[Last War]]. As he served in the war, he became increasingly bloodthirsty and infamous for terror tactics, butchery, and the mistreatment of prisoners. His acts weighed heavily on the heart of King [[Boranel|Boranel ir'Wynarn]], who wished to win the war with a clean conscience. In 994 YK, Kolas finally went too far. After he massacred a peaceful monastic community in [[Cyre]], Boranel stripped the general of command. The king could not bear to execute him after so many years of service, but he was also aware of the dangers presented by Kolas’s fanatical followers. In the end, he shipped Kolas to [[Dreadhold]] and dispersed his soldiers among other units.
Kolas resides in the Golden Ward. Now in his early forties, he is a handsome and well-spoken man. He conceals his ruthless temperament beneath a façade of charm. Kolas still has loyal followers in [[Breland]] who believe his ruthless temperament is required to lead Breland to dominance.
Prince [[Kolberkon]] is the leader of the [[Diresharks]] and governor of [[Port Verge]]. He has ambitions to unseat his rival [[Ryger ir'Wynarn]] become the next High Prince of the [[Lhazaar Principalities]]. His hope of leading the Principalities rests on his ability to outshine High Prince Ryger in every way, and Port Verge is his starting point: He hopes to develop the city to outshine [[Regalport]], the seat of the [[Seadragons]].
Kolberkon's alliance with House [[Lyrandar]] for financing his grand schemes is well known, but he has also privately struck deals with the Order of the [[Emerald Claw]]. He is well aware that these alliances carry risks, but Kolberkon is wily and cautious, and is ready for an attack from any of a dozen foes at all times. Unknown to most, he has employed several talented [[changeling]]s who he uses as decoys, sometimes posing as the Prince even at parleys and banquets.
Kolis [[Sel Shadra|Sel Shadra family]] was a wily smuggler and one of the original five [[Storm Lords]] of [[Stormreach]]. He was the initial representative of the four pirate lords to [[Galifar]] before the [[Stormreach Compact|History of Stormreach]] was drafted. Lord Kolis was said to have a fleet of spectral ships.
''Capital:'' Lake Home<br/>
''Primary Resources:'' Copper, silver<br/>
''Enemies:'' [[Doldarun]]<br/>
''Celebrated Virtues:'' Diplomacy, flexibility, pragmatism. Never miss an opportunity.
The Kolkarun [[dwarves|dwarf]] aren't the wealthiest clan, but they are
skilled negotiators and are one of the more active clans in the
wider world. Some Kolkarun dwarves believe that their mythic
founder was [[Kol Korran]], though they don't like to brag about it.
They've established strong ties to [[Aundair]], [[Karrnath]], [[Zilargo]],
and the [[Talenta Plains]], and Kolkarun diplomats played a critical
role in securing Karrnathi support for recognition of the [[Holds|Mror Holds]].
Kolkarun has had many alliances and feuds over the centuries,
but always manages to trick others into fighting its battles.
Rivals say “Kolkarun's mother was a [[gnome]],” and assert that
Kolkarun dwarves are cowards and opportunists. The Kolkarun
shrug and respond, “Only a fool passes up an opportunity.”
Currently, they have strong ties to [[Mroranon]], which relies on
their support in the [[Iron Council]] and makes use of Kolkarun
as ambassadors and spies, and they have maintained strong
ties to [[Soldorak]] since the Exile. Many of the most powerful
members of the [[Aurum]] are Kolkarun dwarves.
Kolkarun dwarves are the most adept sailors of the Mror.
While they don't focus their efforts on fishing, they have long
been the primary sailors ferrying goods along [[Mirror Lake]] and
facilitating trade and transit within the holds. However, House
[[Lyrandar]] produces better ships than the Mror ever did, and
today Kolkarun sailors are often licensed by Lyrandar.
Kolkarun was quick to explore the [[Realm Below]] before the
threat was known, but even they proved unable to negotiate
with the horrors of the deep. Kolkarun holds a few outposts in
Sol Udar—often with the help of [[Droranath]] mercenaries—but
hasn't made strong offensive moves in recent decades.
Kolkarun dwarves are among those most likely to travel,
and Kolkarun entertainers, sailors, and merchants can be
found across [[Khorvaire]]. Most of the [[Iron Council]]'s spies are
Kolkarun; the charlatan background works well for both clever
merchant and freelance spy. [[Bard|bard]] is a reasonable choice for a
Kolkarun character, and they're among the few dwarves with a
true interest in lore.
Kolos is the newest member of the [[Blood Council]] and the first non-[[humanoid]] to
earn a place there. A former slave who fought fiercely in the [[Red Ring]] for years to earn his freedom, Kolos captured the heart of the crowd. He earned the title of champion by defeating Deathreaver, an [[ogre]] blackguard in the [[Zolark|Malketh Zolark]] stable,
undefeated for two years before
Kolos laid him low.
Kolos harnessed his fame and fortune to start his own stable, called the Ivory Horn.
The Horn is unique in that every [[Bloodbound]] in it has a
stake in its success. Every purse won is
divided among the gladiators in Kolos’s
care. He also keeps no slaves and is a vocal
opponent of the use of slaves in the [[Red Ring]], earning the displeasure of several of
his colleagues who rely on slave stock to keep
their stables running.
The [[minotaur]] champions the rights of non-[[humanoid]] sapient creatures as well. He maintains that these “monsters” are tortured for the entertainment of the viewing elite
without receiving any consideration for their agony. His equitable treatment of races viewed as mere beasts or fodder by other stablemasters won
several dangerous monsters to his stable and paved the
way for his rise to power.
Kolos’s recent political maneuverings earned him
a seat on the [[Blood Council]] but also many enemies.
They want to see him eliminated or swept aside, but he
is far too popular for obvious foul play. It is widely held that [[Malketh|Malketh Zolark]] offered the [[minotaur]] a seat to increase the rancor other stablemasters already felt toward Kolos and potentially provoke one of them to plot the
minotaur’s downfall. However, the stablemaster [[Dhavordrin]] is a potential ally.
Kolos is a powerhouse of a [[minotaur]] with brilliant crimson fur, shining eyes, and polished horns. He dresses in finery to look the part of a wealthy
stablemaster. Close observation reveals frayed threads,
patches, and missing buttons on his aristocratic attire,
evidence that most of his money goes to his fellow
[[Bloodbound]] in the stable. He rarely covers his slave
brand of the now defunct Serpent’s Fang stable, an
ugly burn scar on his forearm. He prefers to leave it
on display as a mark of his triumphs and as inspiration
to other Bloodbound, proof that any of them can fight
their way to similar power and freedom.
The [[King's Citadel]] serves the king of [[Breland]] and
follows his every command. Day-to-day management
of the organization falls to [[Boranel|Boranel ir'Wynarn]]’s chief advisor and brother, Lord Kor ir'Wynarn. Kor collates reports from agents in the field, manages royal family
security, allocates resources to reinforce local law
enforcement agencies, and sends out spies and assassins to attend to major threats.
Kor also oversees [[Brokenblade Castle]] when King Boranel is away.
The chief of [[Galshani]]'s animal caretakers in the [[Mokush]] manor has noticed no
odd behavior from the animals when dealing with the
disguised [[Yrnuxi]], so they aren't a weak point in her ruse.
While he has no real love for Galshani, Korac still suspects
something strange is happening in the manor. He's
eager to help anyone who comes to investigate Mokush.
The [[Koralanda River]] in [[Corvagura]] cuts through the heart of [[Riedra]]. Many of the major cities of the nation lie along this river's floodplain. The Koralanda flows into [[Koralandaluun]].
Koralandaluun is a large bay that lies between mainland [[Sarlona]] and the islands of [[Ohr Kaluun]]. Major rivers of the provinces of [[Nulakesh]] and [[Corvagura]] empty into Koralandaluun, including the [[Koralanda River]].
The head of the [[Kundarak]] [[enclave|Kundarak Enclave (Stormreach)]] in [[Stormreach]] is Korbek Ghedin, the nephew of Lord Durdik Ghedin, the current patriarch of the Ghedin clan worldwide. A thoughtful and quiet person, Korbek is one of the most influential individuals in [[Stormreach]], but one would never know it by his behavior. He runs
a tight ship and clearly sees a line of demarcation
between his house and those outside it, despite his
willingness to serve all who call on its services. Publicly, he is known for being nearly humorless when it comes to the security of his [[enclave]], and rumors of
would-be interlopers disappearing without a trace circle throughout the city. Korbek is almost never encountered without his bodyguard [[Yarik|Yarik Ghedin d'Kundarak]], a hulking brick of a
[[dwarf]] clad in [[mithral]] plate.
For more on the secrets of House Kundarak and Korbek's part in them, see [[Tower of Kol Korran]].
Korlass, or "dream stone", is a substance used by the [[sahuagin]] of the [[Eternal Dominion]] as an industrial material. It is formed from the biomass of the [[kar'lassa]], the gargantuan beasts that form the foundation of their cities at the bottom of the [[Thunder Sea]]. Korlass can be sculpted like clay, then fixed in its shape by a [[magewright]] ritual. It has the strength of steel, with a texture similar to shell, though its appearance varies depending on which [[kar'lassa]] it’s drawn from.
The Koronoo River (also known as the Rachi River) flows a winding path through the [[Skyfall Peninsula]] of [[Xen'drik]], from the [[Titan's Teeth]] north to [[Stormreach]].
''District Type:'' Finance district<br/>
''Buildings:'' Banks (10), moneychangers (60), temples
([[Kol Korran]]) (2), upscale food (80), exotic trades (40),
upscale trades (200), upscale residences (160)<br/>
''First Impression:'' There doesn't seem to be anyone
here who is not wealthy, and the whole district
seems to be set up as a shrine to money itself. Every
shop sells only the fi nest goods, each huge house is
impeccably maintained, and the sound of money
changing hands fills the air. Even the guards—who
are everywhere—seem well off.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Platinum Heights]] (north); [[Mithral Tower]] (southwest); [[Skysedge Park]] (southeast); [[Oak Towers]] (bridge, north); [[Crystal Bridge]] (bridge, northeast); [[Ambassador Towers]] (below, west); [[Sovereign Towers]] (below, east)
Korranath, [[Sharn]]'s sprawling financial district, is
also the seat of the [[Aurum]]'s power in the city. Named
for the great temple of [[Kol Korran]] that lies at its heart,
Korranath is utterly dedicated to the darker side of the
god of wealth—the pursuit of wealth at any cost.
Korranath includes the neighborhood of Korran-Thiven. Its name means “Korran's Blade”
in Dwarven, and institutions there seem more obsessed with protecting wealth than with acquiring it.
!! Noteworthy Locations
* [[The Korranath|Korranath (temple)]]. The temple of Kol Korran is an ostentatious display of wealth and a popular tourist attraction, since many believe praying at the Korranath ensures success in business.
* [[Kundarak Bank of Sharn]]. This is the largest bank in Sharn and the center of House [[Kundarak]] urban operations in the city.
* The [[Vaults]]. Located below the Kundarak Bank, the Vaults are Kundarak's heavily guarded storage facility.
* [[Wayfinder Foundation|Wayfinder Foundation (Sharn office)]]. The guildhall for this legendary [[association of explorers|Wayfinder Foundation]].
The grand temple of [[Kol Korran]] is one of the most incredibly ostentatious
and elaborate structures in [[Sharn]]. Surrounded by
a grand colonnade, the interior of the temple rises
in a grand dome a hundred feet across covered with
gold leaf and studded with precious gems. The tiles
in the mosaic floor are made of precious stones as
well, and all the sacral objects inside the temple are
solid gold. Sightseers and pilgrims regularly crowd
the Korranath, milling under the watchful eye of
the temple soldiers employed to protect the fabulous
wealth inside.
The high priest of the Korranath, appointed by
the mayor on an annual basis, is rarely a [[cleric]] though
he carries out rote ceremonial functions. The current
high priest, [[Kalphan Riak]], is a leader of the [[Aurum]].
The ancestral home and [[headquarters|Labyrinth (enclave)]] of House [[Sivis]] and the oldest city in [[Zilargo]], Korranberg has long been a seat of learning and a haven for folk who love the written word. Countless aristocrats of other nations come to study in the famous [[Library of Korranberg]]. The offices of the [[Korranberg Chronicle]] are located in the Bookbinder’s Quarter, along with a diverse range of scribes, printers, and the finest cartographers in [[Khorvaire]]. Old scrolls, maps, and weathered tomes can be bought
and sold in the quarter’s Paper Market, and explorers and adventurers make up a sizable portion of the clientele here. The [[Street of a Hundred Temples]] showcases almost every pantheon on Eberron, and includes the Codex Vault, [[Khorvaire]]'s largest
shrine to [[Aureon]].
By far, the most well known and widely read newspaper
is the //Korranberg Chronicle.// Thanks to its relentless and mostly
unbiased coverage of the [[Last War]], and through a distribution deal with House [[Orien]], the Korranberg Chronicle enjoys a loyal
and avid readership throughout central [[Khorvaire]].
A typical edition of the //Korranberg Chronicle// features
news from around the [[Five Nations]], [[Zilargo]], and the [[Mror Holds]], as well as stories of adventurers and exciting expeditions, business solicitations, royal proclamations, and
almanac information. While the main offices are located in
[[Korranberg]], the Chronicle employs chroniclers far and wide,
and maintains field offices in every major nation. House
[[Orien]] distributes each edition (the Chronicle appears three
days a week; [[Mol, Wir, and Far|Khorvaire calendar]]) along its mail and [[lightning rail]] runs, allowing the Chronicle to reach a huge audience. Indeed, almost everyone in the [[Five Nations]] knows the Chronicle slogan: “If it happens in the Five Nations, you'll
read about it in the //Korranberg Chronicle//.”
In the center of [[Adar]] rises a single massive mountain, over 32,000 feet above sea level, the peak of which is always shrouded in storm clouds. Korrandar is said to be the home of the [[Storm Guardians]], the [[blue dragon]]s that protect the mountain from those who would abuse its sanctuary. At the peak of Korrandar, hidden from view beneath thick clouds, is said to be an active volcano; some say that a powerful [[overlord]] is imprisoned within the mountain, and that the draconic guardians were actually sent to guard against the escape of this [[fiend]].
Korrandar's storms often prevent flight, and the [[Shroud]] thwarts dimensional travel. The elusive [[Storm Guardians]] are usually seen only if they
have business with intruders. Otherwise, the mountain is a wilderness of
the most unforgiving type. The supernatural energy surrounding the
mountain could also result in sudden squalls of blood
snow, death hail, and howl of the north, as well as ebony
ice and rare pools and rivulets of coldfire.
!! Spheres of Korrandar
A set of ancient and hidden halls—round, domed chambers built according to
the [[Draconic Prophecy]]—lie under the mountain's clouds,
glaciers, and rocks. The [[Storm Guardians]] call these halls
"spheres." Unobservant explorers are often fooled into
entering caverns under the spheres instead of the spheres
themselves. Within the spheres are trials of worthiness, and
ancient creatures bound to enforce these tests. Each test
is tied to the nature of a dragon god, and art on the walls
and/or ceiling of each chamber shows the constellation
representing the appropriate deity and the symbol of that
entity. No passages exist between the rooms—bound earth [[elemental]]s open the walls
between tests once they are passed. These walls are at least 5
feet of magically treated hewn stone, and breaching them draws the ire of powerful earth elementals.
Personalize these tests so it seems as if the PCs were
predestined to come to the spheres.
!!! Test of the Messenger
A key found in a ruined [[dragon]]
hold elsewhere in [[Adar]] fits into a stand shaped like a dragon head made of brass and set with turquoise. The keyhole is set inside a golden star. This is the test of [[Aasterinian]], Messenger of [[Io]]. If the key is placed in the stand, a secret door
on the far side of the cavern opens immediately. Without
the key, the secret door must be found and opened by force or otherwise breached. Regardless, the door is 20 feet up the far wall, across a 20-foot-deep pit leading into caves beneath the halls.
!!! Test of Fate
Here, through a gossamer wall of violet energy, is the test of [[Chronepsis]]. A shade effect calls forth duplicates of the PCs as they might have been if they
had chosen darker life paths and worldviews. Under the unblinking eye of Chronepsis in the ceiling, the characters must face their sinister selves.
!!! Test of Wealth
Set in the center of this place is a pool shaped like a sun and swirling with purple energy. Knowledgeable explorers might recognize the pool as a symbol of [[Astilabor]], the Hoard Mistress. Eight golden statues of noble and winged [[kobold]]s
pour violet streams into the pool, and something sparkles
deep within. Those who give generously by casting wealth
into the pool might find their wealth increased tenfold
in the form of a desired [[magic item]]. Those who steal are
punished when the statues animate.
!!! Test of the North Wind
This room's domed ceiling sparkles as a night sky, the constellation of [[Bahamut]] shining most brightly. Those who look into the stars see the depredations of an evil dragon or some spawn of [[Tiamat]], and those who want to do so can be carried as if by a cold wind to the wicked wyrm's lair. Slaying the beast returns the questers
here and the evil one's hoard to the [[Teeth of the Three]].
!!! Test of Death
The massive skull of a [[black dragon]]
rests in the center of this chamber, signifying the baleful majesty of [[Falazure]]. Its eyes flash red as anyone enters, calling forth heinous [[undead]] to harry good folk. Evil
beings might find a boon here instead, such as the secret
of becoming one of the free-willed undead, if they are
willing to risk death to acquire it.
!!! Test of Tales
The ghost of a very old [[copper dragon]] sleeps here upon a golden book (the symbol of [[Hlal]]), waiting for someone who can spin a tale or make a performance to rouse her heart and free her from her duty. She
then imparts some important knowledge in the form of a
long-winded tale before sending the adventurers on their
way. Those who want to can read the golden book for a
special boon.
!!! Test of Justice
A magic golden longsword stands in the center of this room, balanced on a tiny platinum needle and flanked by stone dragons. This is the
test of [[Lendys]]. Spirits within the dragons judge each passer
for some misdeed, possibly causing the guardians to attack
if the defense is inadequate. Victorious characters are purified through this trial by ordeal. Death claims the guilty.
A paragon of law might be able to take the sword and the
needle from this room.
!!! Test of the Firelord
Those who manage to make it
through the previous halls come to a volcanic shaft that has
cool lava at the bottom. A wide spire of rock stands in the
middle, red and glistening. An observant character might
notice roughly carved symbols of [[Garyx]],
the All-Destroyer, on the outside of the archway leading into the shaft. Across the tube is a platform that apparently allows access to another part of the complex—but this
platform is higher in the shaft than the entry point and
obscured by the spire. Further, a decoy cave opens in the
northern wall near the lava.
The moment anyone enters the volcanic tube, it
springs to life as if erupting, forcing the characters to make
a mad dash for the other side. Run this event as if each party
member faced some danger each round from flying debris,
dangerous gases, or hot magma. Add fire [[elemental]]s and
other fire creatures if you prefer combat to a furious rush
or carefully plotted escape. The fires settle down as the
characters exit the shaft, almost as if it were all an illusion.
Monsters do not pursue those who make it to the platform,
but they might follow those who enter the caverns.
!!! Test of Life
Beneath a black ceiling etched with a
silver seven-pointed star, the skeleton of a [[couatl]] is reverently coiled in a funerary basin, polished bones and bright
feathers showing through ornaments of gold and precious
stone. Those who return this creature to life pass the test of
[[Tamara]] and gain the aid of a powerful [[celestial]] for
a while. The couatl warns those who return it to life of the
test of power. Creatures sitting in the basin rapidly recover from any injuries. Any corpse laid in it is granted a constant [[gentle repose]] spell. At the same
time, the basin reduces the body to skeletal remains.
!!! Test of Power
A grand idol of [[Tiamat]] stands in the
center of this chamber, and the evil one suffers none to pass
this chamber. The idol becomes an aspect of Tiamat—a [[red dragon]] that can breathe the breath weapon of any [[dragon]] instead of just fire. It does not
chase those who flee back to the test of life. Those who best Tiamat's aspect are rewarded with passage to the [[Teeth of the Three]], and possibly more.
!!! Chamber of the Teeth
This great, round chamber represents [[Io]] the Concordant, Creator of Dragonkind,
and in its center is set the [[Teeth of the Three]]. The
room glows in eerie colors—the light of the Teeth reflected
off polished surfaces. While anyone who returned
through Korrandar's halls would have to face many of
its tests again, the Chamber of the Teeth allows egress
through its ceiling. This way passes through the lairs of
several mighty [[Storm Guardians]], but the dragons show
those who have passed the tests through the winding caverns, letting them leave after having a short conversation
and presenting a small token of remembrance.
Shekkal Korranor was the founder of the [[Clifftop Adventurers' Guild]], and he loved nothing more than a tall tale. After he retired
from adventuring, he established the Korranor as a stage focused
on tales of adventure — stories based on the heroes of the Clifftop
Guild. Performances at the Korranor are sure to be filled with
acrobatics and wild action.
While small, the Korranor theater has an exceptional array of prop weaponry and pyrotechnic magics, as well as a set of trampolines.
The city-fortress of Korth has served as [[Karrnath]]’s capital since before the days of
the kingdom of [[Galifar]]. Some of its buildings date back
to the earliest [[human]] settlements on [[Khorvaire]]. The Korth skyline rises along
the southern shore of the [[Karrn River]] on the edge of the dense [[Nightwood]]. Its walls and towers bristle with the weapons of war, and military marches through the city help bolster the spirits of the Karrns as well as intimidate foreign diplomats.
The city has well-kept streets and somber, symmetrical structures,
each in a fashion suggestive of its militant origins. Five major wards—Highcourt, Temple, Commerce, Community, and Low District—make up the city. Each ward contains residences and shops, but
exemplifies its particular function. For example, Highcourt Ward houses the [[king’s palace|Crownhome]], governmental buildings, and the homes of dignitaries. The Commerce Ward holds the [[dragonmarked|dragonmarked house]] emporiums and [[enclave]]s, warehouses, shops, and marketplaces; the forges of Korth produce some of the finest armor and weapons in [[Khorvaire]]. The headquarters of [[Cannith]] East, the [[Korth Enclave]], is located here. Above the Commerce Ward floats the imposing [[Ziggurat of the Twelve]].
The [[Last War]]’s ravages are evident in the damage to
the city’s steep walls and a majority of its buildings.
[[Cyran|Cyre]] and [[Aundair]]ian forces besieged the city several times, but each time the defenders threw back the attackers. Rebuilding is slow—some scars are not easily erased.
The Korth Edicts, signed in the city of [[Korth]] by King [[Galifar ir'Wynarn]] and representatives of the [[Twelve]] over a [[thousand years ago|Modern Age]], prevent the [[dragonmarked house]]s from owning land, holding noble titles, or maintaining
military forces (with an exception for [[Deneith]]), among other restrictions. The
edicts were established when the [[Five Nations]] were
united under [[Galifar]]. Today, many in the houses feel the edicts have
become obsolete in the wake of the [[Last War]].
[[Zorlan d'Cannith]] is nominally in charge of this [[enclave]], but many of [[Jorlanna d'Cannith]]’s functionaries (and sometimes Jorlanna herself) spend time in [[Korth]] because the Council of the [[Twelve]] is headquartered here. This walled compound is the site of much scheming among the factions of House [[Cannith]].
Korunda Gate was once the center of Kundarakhold, the lands belonging to [[Clan|Mror clan]] [[Kundarak]]. With the rise of House Kundarak, it has become the first
and greatest [[enclave]] of the house, and its deep vaults
are the core of Kundarak’s operations. Although the house’s wealth
is spread out across [[Khorvaire]], more of it resides in
the underground vaults below Korunda Gate than
anywhere else. But Korunda Gate holds more than
rooms full of gold and platinum. Its armories and
weapon arsenals contain spectacular examples of
both mundane craftsmanship and magical potency
The city has changed little since the rise of the
house, though [[Kundarak]] has ceased all mining
operations throughout the hold as a condition of its
[[dragonmarked house]] status under the [[Korth Edicts]] and laws of the [[Mror Holds]]. The mines that once spread beneath the city now serve as treasure vaults for the house and its clients. However, Kundarak retains the mining rights to its ancestral territories, leasing those rights to other [[clans|Mror clan]] in return for a percentage of the wealth they extract. The house views such activities as part of its overall business dealings. More cynical observers label this activity blatant
interference and influence peddling.
The prince and founder of the [[Wind Whisperers]] is Koulton Brightwind. Born Koulton d'[[Lyrandar]], this gifted heir and bearer of the [[Mark of Storm]] fled his family in a prototype [[airship]] ten years ago, and has so far managed to evade the house’s efforts to retrieve the ship. House [[Lyrandar]] has put a price on his head, but Prince Brightwind has made arrangements with House [[Thuranni]], and so far his head remains attached to his shoulders.
The chot'uul monks, who guard the dreams of [[Dhakaan|Heirs of Dhakaan]], craft
objects that are drawn to [[Dal Quor]] with a dreamer. When
you dream, your kra'uul ("dreamforged") objects accompany you. The physical
object remains with your body in Eberron, but the idea of it
travels with you and you can use it while exploring Dal Quor.
Any kra'uul made of an otherwise-mundane object is a
common magic item. Kra'uul made of other magic items are
the same rarity as the standard version. While the techniques
of crafting kra'uul objects are known only to the chot'uul, the
DM can introduce other dreambound objects. A cursed sword
might follow its bearer even into dreams, while a powerful
artifact could be even more glorious when seen in Dal Quor.
South of [[Stormreach]], a mass of black clouds forms a
permanent blot on the horizon, and dark wings cast
long shadows on the forlorn earth. The sky demesne
of Kraa’ark Lors is a wondrous citadel in the clouds,
hovering atop thunderheads and swirling in dark
mists. Also called the Roc King and Lord of the Black Clouds, Kraa’ark is a mighty [[roc]] awakened by powerful [[primal magic]] long ago. The roc claims to be
immortal, another trait granted to the magical beast
by whatever magic awakened its mind.
Kraa’ark Lors sees [[Stormreach]] as a blight on the natural wonder of [[Xen'drik]]. The roc has long sought to annihilate its populace and reduce the city to so much rubble. So far, [[Rushemé]] mystics have held the Roc King at bay with rituals and sacrifices. If the city’s relationship with the [[giants of Rushemé|Guardians of Rushemé]] deteriorates, Kraa’ark Lors might bring down calamity upon Stormreach.
Krag is an island in the [[Lhazaar Principalities]]. The city of [[Port Krez]] on the north coast of the island is the seat of the [[Cloudreavers]].
Beneath the waves, the gargantuan kraken sleeps for untold ages, awaiting some fell sign or calling. Land-born mortals who sail the open sea forget the reasons their ancestors dreaded the ocean, even as the races of the deep ignore strange gaps in their histories when their civilizations nearly vanished after the appearance of the tentacled horror.
Krakens are children of [[Khyber]], born in the [[Age of Demons]]. Unlike the [[aboleth]]s, they weren’t created by a fiendish [[overlord]] and they don’t serve any overlord; each
kraken is a power in its own right. Krakens (or "lopok", as they are called by the [[locathah]]) enjoy exercising their power and being worshipped by lesser creatures, and
each one carved out a domain within the chaos of the Age of Demons. The binding of the overlords didn’t adversely affect the krakens; however, many feared that the alliance that had formed to defeat the [[fiend]]s might well turn its attention to
them next, so they chose to go into hiding and sleep, waiting
for an age when the champions of the Age of Demons were
dead and the oceans were free.
Krakens are spread across all of the oceans of [[Eberron]].
For the most part, they don’t work together, in part to avoid
the interest of [[Argonnessen]]. One kraken dominating an island
of [[humanoid]]s is of no concern to the [[dragon]]s; an alliance
of krakens is another story. However, multiple krakens have
occasionally joined forces. Tens of thousands of years ago, five
krakens devastated a previous civilization of the [[sahuagin]]
of the [[Thunder Sea]]. Despite their power, they were eventually
overcome; their remains are preserved in the city of [[Hal'shavar]].
There are a few krakens in the [[Thunder Sea]], but they
avoid the [[Eternal Dominion]], dwelling either in its fringes
or in dangerous places that are shunned by the [[sahuagin]].
The kraken [[Bastyreth]] has established a sanctum below
the [[kar'lassa]] tied to [[Mabar]]; it’s raising a legion of [[undead]]
minions and preparing to take vengeance on the Dominion.
Kraken Bay lies the coast of [[Darguun]], [[Valenar]], and the [[Mournland]], and is part of the larger [[Thunder Sea]]. Once the staging ground of [[Cyre]]'s powerful navy, now it is filled with bizarre aquatic monstrosities and mysterious shipwrecks.
The [[warforged colossus]] WX-42, "Hanamar", stands at the bottom of Kraken Bay, near the coast of [[Valenar]], buried up to its knees in sand and flooded, but it is otherwise intact.
The Krertok Peninsula in the [[Tashana Tundra]] of [[Sarlona]] is the apparent origin of the bloodthirsty [[Kalaak]] barbarians. Few are aware that in this region, a strange and terrible relic from the [[Age of Demons]] can be found—a gargantuan statue of an ancient [[overlord]], the physical remains of a [[demon]] long ago dispatched and bound. The [[Kalaak]] worship this ancient evil, whose vague stirrings of malevolent consciousness power their terrible savagery.
Krezent is an ancient fortress-citadel from the [[Age of Demons]], established by the [[couatl]] during their million-year war with the [[overlord]]s, and is possibly the last couatl fortress on Eberron. It is located on the edge of the [[Blade Desert]] in the [[Talenta Plains]], and it extends down into the depths of [[Khyber]], where powerful [[fiend]]s from that ancient conflict are bound.
Today, the [[halfling]]s of the plains shun the fortress and the surrounding area, believing it to be cursed. In truth, it is still inhabited by the [[shulassakar]], [[couatl]]-like [[human]]s who tend the ancient city and keep intruders at bay.
Located in the dwarven realm of [[Mroranon]]hold, Krona
Peak serves as the seat of the [[Iron Council]] and thus is
the [[Mror Holds]]' equivalent of a capital. This center of
commerce provides a major connection to the western
nations. [[Kol Korran's Throne]], [[Khorvaire]]'s largest temple to the [[Sovereign|Sovereign Host]] [[Lord of World and Wealth|Kol Korran]], dominates the cityscape. The [[Iron Council]] meets in the [[Ferrous House]].
The major trade road in the Holds runs west from the city, making it the conduit
for commercial traffic to the rest of the continent. Virtually all goods entering or leaving the [[Ironroot Mountains]] come through Krona Peak first. Clan [[Mroranon]]’s control of the capital reinforces its position at the head of politics in the Holds, but Krona Peak’s importance is a constant source of tension. The city keeps tariffs to a minimum in order to placate the other [[clans|Mror clan]].
Just outside the city, rising from the cliffs, the glittering [[Golden Vault]] serves as the headquarters of the [[Aurum]].
Ultimate authority in the Church of the [[Silver Flame]] rests with the [[Keeper of the Flame]], but actual governance—the work of the individuals who chart the nation’s course—occurs in the [[Council of Cardinals]]. With such power comes opportunity for abuse, since the cardinals answer to none except the Keeper of the Flame, and she is still a young girl. Most church officials resist the temptation to exploit the benefit that their position affords them, keeping to the tenets of their faith, but a few have drifted, giving in to their baser impulses to reap the full rewards of their stations. Of these unprincipled members, High Cardinal Krozen represents the worst, embodying the theocracy’s dangers and the
excesses of its power.
!! Krozen's Accession
High Cardinal Krozen is the most powerful individual in [[Thrane]]. He, like
other senior religious officials, climbed through the
church’s ranks, serving for a time as a holy warrior
and priest, attaining the rank of archbishop for his
zeal and unmatched piety. When a senior member of
the [[Council of Cardinals]] died a decade ago, conservative officials in the government succeeded in getting Krozen appointed to replace him. The hardliners
viewed then-[[Keeper|Keeper of the Flame]] Tagor’s attempts to moderate
[[Thrane]] policies as a threat and wanted to strengthen their hand in his final days. In truth, it was hard to object to Krozen’s appointment—few could match his knowledge of the sacred texts or his passion for the church.
In the early years of his tenure, Cardinal Krozen
worked tirelessly to strengthen the church in the
lives of the common people of [[Thrane]], and to keep
Thrane’s military strong. In a few short years, he
assumed the position of High Cardinal. Peaceful
times and the ascension of a young, tolerant, and
highly compassionate [[Keeper of the Flame]], however,
were not to his liking. Indeed, this situation seemed
to quash his idealism. Krozen turned his attention
toward consolidating his control over the council,
using his network of allies to bend his peers to his
way of thinking.
Krozen’s rise to power did not come without casualties. He has made numerous
enemies over the years, usually officials he removed
from office or slandered to render them powerless.
His critics spread a slew of accusations about his
methods and motives, ranging from dirty tactics all
the way up to consorting with [[fiend]]s. These claims
have spawned investigations now and again, but each
turns up nothing that calls into question Krozen’s
service or loyalty.
Rumors also circulate about the extent of the High Cardinal’s influence, questioning his deference to the [[Keeper of the Flame]]. During the final years of the [[Last War]], the nation did little without Krozen’s assent, and most military initiatives came from his office. More than one [[Thrane]] official worries that the High Cardinal views himself more as the nation’s ruler rather than as a loyal advisor.
!! Krozen's Obsession
For the most part, the accusations against Krozen are true. Ever the pragmatist, he
simply removed those he saw as obstacles to achieving his goal—attaining complete power. Although he was ruthless, his loyalty and devotion to the [[Silver Flame]] remained true... at least until the [[Mourning]].
[[Cyre]]’s destruction rocked Krozen to the core,
leaving him reeling with fear. The nation’s destruction inflamed the seeds of paranoia that had already begun to blossom in his shadowed mind. Krozen
rarely meets with other [[cardinals|Council of Cardinals]] in any great
number, demanding that his few visitors treat with
him in private chambers under the watchful eyes of
his loyal guards.
Krozen’s eccentric behavior has done nothing to
diminish his power and influence. When the council meets, Krozen sends a proxy to explain his views and represent his interests. Since his representative
is rarely the same person from meeting to meeting,
he reinforces the mystique and suspicions about
his true character, leading many officials to wonder
what he is hiding. For several years now, his power
has gone unchallenged. His peers submit to his
demands out of fear of the reprisals they have seen
occur time and again.
!! Krozen's Secret
The [[Mourning]] changed everything for Krozen, though not because he gave
one whit for the [[Cyran|Cyre]] people. Rather, he sees the Mourning as a grave risk to the nation he considers his to govern as he pleases. If a weapon caused the Mourning, Krozen must find it and claim it for himself. If the Mourning was a magical phenomenon, he must find the trigger and control it to ensure that [[Thrane]] remains secure and to force his enemies to their knees. Krozen makes full use of the
church’s power, particularly the [[Argentum]]—a secret
society of treasure-hunters who retrieve relics for
the church—to seek out clues to the nature of this
catastrophe.
Krozen’s strength comes from the vast network of
agents in his service and a coalition of loyal supporters within the church. As he gained power, he was ever watchful for anything he might use. Sometimes,
he would use damning information to remove his
enemies, but more often he would tuck away the
tidbit for later use. With spies, assassins, and loyal
fanatics spread across [[Thrane]], he can use these
agents to blackmail his enemies, discredit them, or
otherwise have them removed from power.
he High Cardinal also employs sinister means to
attain his information and treasures. Bit by bit, he has
succumbed to the temptation of using dark magic, calling up foul [[demon]]s, dealing with [[devil]]s, and employing other hideous creatures to tease out the
secrets of his enemies. He conceals these activities
well, destroying anyone who would dare bring these
acts to light. Still, whispers abound, and Krozen’s
minions are ever watchful for those who would delve
too deep into the High Cardinal’s business.
Kularket is a [[jungle giant|hill giant]] spirit shaman of the [[Guardians of Rushemé]], and is one of the strongest spellcasters among the Guardians. Her tribe lives in the heart of the deepest jungles of [[Xen'drik]], but she occasionally uses [[tree stride]] to visit [[Gaulronak]] and study the cursed city of [[Stormreach]]. During
the Fire Storm, when the [[Battalion of the Basalt Towers]] attacked the city over fifty years ago, Kularket led the forces of Rushemé in their stand against the [[fire giant]]s. Kularket prefers to avoid dealing with the little people, but she might assist adventurers who have become champions of [[Rushemé]].
If you have the [[Mark of Warding]], you can place these shackles on an incapacitated creature. The shackles adjust to fit a creature of any size from [[kobold]] to [[troll]]. In addition to serving as mundane manacles, the shackles prevent a creature bound by them from using any method of extradimensional movement, including teleportation or travel to a different [[plane]] of existence. They don't prevent the creature from passing through an interdimensional portal.
You and any creature you designate when you use the shackles can remove them at will.
''Leader:'' [[Morrikan d'Kundarak]] <br/>
''Headquarters:'' [[Korunda Gate]] ([[Mror Holds]]) <br/>
''Dragonmark:'' [[Mark of Warding]]
//My family has the finest vaults you can imagine. They forge the locks that secure royal jewels. And I learned to pick those locks when I was barely out of the crib.//
<div align="right">—Cutter, burglar and Kundarak excoriate</div>
If you want to keep something safe—jewels, secrets,
prisoners—Kundarak is there to help. The [[Warding Guild]] of House Kundarak trains locksmiths, security specialists, and more. It maintains the prison of
[[Dreadhold]], along with a number of smaller prisons. As
useful as these services are, it's the [[Banking Guild]] that
truly defines the house. Kundarak's lands in the [[Mror Holds]] include deep veins of precious metals, which
the [[dwarves|dwarf]] used to establish the banking industry of
[[Khorvaire]]. Anyone who makes a living from coin—from
bankers to goldsmiths—likely learned their skills at
House Kundarak. The security of banks bearing the
Kundarak [[manticore]] emblem is legendary. The house
also provides a special service to those who can afford
it: a system of extradimensional vaults, allowing a client
to store their goods in one location and retrieve them at
any other Kundarak [[enclave]].
House Kundarak has a close alliance with House
[[Sivis]]. Like the House of Scribing, Kundarak has worked
to earn the trust of its clients and to establish a reputation for unshakable integrity. The house has no love of
renegade dwarves using their marks to turn a profit, and
such rogues strive to avoid the eye of Kundarak.
As the dwarves of the [[Mror Holds]] have come into
increasing conflict with the [[daelkyr]], Lord [[Morrikan d'Kundarak]] has instructed house heirs to establish connections with the [[Gatekeeper|Gatekeepers]] [[druid]]s. The druids have
much in common with the house, being the creators of
the wards that protect [[Eberron]] from the daelkyr.
!! History of House {{!!title}}
The mythic founder of House Kundarak was a stonemason
who built the first shelter for the [[exiles|Mror History]]. While House [[Sivis]]
estimates that Kundarak's [[dragonmark]] appeared less than
three thousand years ago, in the stories, Kundarak had always
borne the mark and used its powers to protect their people.
Dwarves of all clans relied on Kundarak, both for wise counsel
and their expertise in building. Kundarak laid the foundations
of the fortresses that stood against the armies of [[Galifar]].
But soon after the [[Great Sorrow|Mror History]], Clan Kundarak became House
Kundarak, expanding its influence across [[Khorvaire]]. While
they held onto their ancestral lands, the [[Korth Edicts]] required
Kundarak to sever its ties to the other [[clans|Mror clan]], putting the
interests of its clients ahead of those of the Mror. While this
caused initial tension, it also brought an influx of gold and
influence, and served as a bridge between the holds and the
outside world. Kundarak helped bring dragonmarked services
to the [[Mror Holds]], and also helped build connections between
houses and clans—House [[Deneith]] and the [[Droranath]], House
[[Jorasco]] and the [[Frosthaven clans|Toldorath and Tordannon]]. So while there was some estrangement, the clans generally accepted Kundarak's
new role—though [[Soldorak]] has long decried Kundarak as
abandoning traditional values and selling out the dwarves.
House Kundarak has no seat on the [[Iron Council]] and is not
considered a [[Mror clan]]. Kundarak has done its best to stay out of
the [[War Below|Mror History]], though Kundarak engineers played an important
part in building defenses during the War Below, and were well
paid for their services. Despite the lure of treasures and the
mysteries of the past, Kundarak has no interest in courting
disaster beneath the very seat of its power; it has fortified
all [[deep portals|Realm Below]] beneath its spires. Should it choose to send
expeditions below, it would do so with extreme care and caution.
!!! The Last War
House Kundarak’s involvement with the [[Last War]] was financial rather than military. Twenty years after the Last War began, the [[Mror Holds]] declared their independence from [[Karrnath]]; thanks to an immediate financial infusion from House Kundarak, the [[dwarves|dwarf]] were able to make their independence stick. When years of war turned into decades, the [[Five Nations]] became increasingly cash-strapped and turned to House Kundarak for hard currency to pay, provision, and equip their
armies. The [[Treaty of Thronehold]] guaranteed that the [[Five Nations]] would make good on their wartime obligations. Not only is House Kundarak among the
wealthiest of the [[dragonmarked house]]s, but it has a
ongoing source of income.
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
The Kundarak bank, operated by the [[dwarven|dwarf]] [[dragonmarked House|dragonmarked house]] [[Kundarak]], is the largest and most important
bank in [[Sharn]]. Kundarak holds more loans than the
other nine banks in the city combined, including
many loans supporting key building projects, past
and present. From its perch at the top of Kundarak
Tower, the bank wields a great deal of behind-the-scenes influence over every part of politics in Sharn. A massive [[slaughterstone]] construct stands guard inside the bank's main lobby.
[[Daphanë d'Kundarak]] is the leader of the [[Kundarak Enclave|Kundarak Enclave (Dragon Towers)]] in [[Sharn]] and the president of the bank.
She divides her time between the house enclave in
[[Dragon Towers]] (in [[Middle Central]]) and the bank,
but favors the bank.
[[Kundarak]] Enclave can be
found in [[Sivis]] Tower, as the house commands a major
presence in the [[Korranath]] district (in [[Upper Central]]),
where the [[Kundarak Bank|Kundarak Bank of Sharn]] is located. Even so, Kundarak Enclave is large and impressive, with marble columns supporting lofty ceilings with dazzling mosaics
of precious metals and stones. Security, as one might
expect from the House of Warding, is extremely tight.
[[Daphanë d'Kundarak]] oversees the [[enclave]], but spends
most of her time at the Kundarak Bank.
The House [[Kundarak]] [[enclave]] is the most secure structure in the city of [[Stormreach]]. For those who know of the Kundarak penchant for security, this comes as no surprise. The two bridges that span the [[Silverwall]] trench deposit
visitors at the enclave’s entrance, which is marked
by three small guardhouses. Two guard towers look
down on the main entrance, with another three towers
spread around the enclave’s walls. Kundarak guards are
posted at the towers day and night. Each main entrance
guardhouse typically contains armored soldiers and [[iron defender]]s. Guards will admit only those with appointments, though they make exceptions for the [[Storm Lords]],
members of any [[dragonmarked house]], and anyone
having business with the [[Citadel of the Twelve]]. In the
latter case, the guards escort visitors both to and from
the citadel.
The [[enclave]] is composed of a central keep and several
outbuildings, all of which are surrounded by a 20-foot-wide moat filled with water. Guards inside the enclave can turn a winch that retracts the four
bridges spanning the moat, and if there is a serious threat
to the enclave, a living [[cloudkill]] (see [[living spell]]) can be instantly
released on the enclave’s west side. This creature was
retrieved from the [[Mournland]] at great expense, and the
guards are nervous about its presence.
The enclave’s residents, all [[dwarves|dwarf]] sworn to House
[[Kundarak]], venture regularly into the city for business
and pleasure but rarely without at least one armed guard,
and often with two or three, especially if the dwarf is a
banker or other house official. If necessary, the dwarves
can get by inside the enclave for quite some time; it has
ample food stored and plenty of living space to take care of its residents for a month at least. If residents need healing, they can turn to [[Margheta Tuvodni]], a physician and [[cleric]] of [[Kol Korran]]. She also oversees many of the enclave’s day-to-day operations, since Viceroy [[Korbek Ghedin d'Kundarak]] is often out on business or tending to secret matters in the [[Tower of Kol Korran]].
Most visitors to the enclave come for its bank, which
is an architectural beauty. Three stories of stone walls
gilded with silver and gold, the bank is renowned for
the [[slaughterstone]] eviscerator that stands
watch over its main lobby. Many suspect that somewhere
beneath it, watching over the vault, is its twin.
Thanks to good relations with the dwarves, House [[Sivis]] keeps private offices inside the Kundarak enclave. These offices contain a message station (with two active [[speaking stone]]s), First Stonespeaker [[Amilene Santor d'Sivis]]’s private office, and a small but valuable arcane library of which she is especially proud and the maintenance of which she oversees personally.
A fearsome war chief among the [[Kalaak]], and some say leader
of that depraved people, Kunigaal the Desecrator is the embodiment of
Kalaak ideals. He is pitiless, ruthless, fearless, and utterly
blasphemous. His pale, hairless body, particularly his face,
is crisscrossed with terrible scars; some have meaningful
patterns, but others are telltale signs of wounds survived.
Kunigaal can cow even frenzied Kalaak raiders with his
unyielding gaze. Metal spikes adorn his face and the skin
of his body, and his fingers have been magically altered so
that wicked bone and iron claws replace the ends of them.
Kunigaal never goes alone into battle—superstitious and
wary of his own followers, he surrounds himself with evil
spellcasters and a private stable of elite, fanatically loyal
female Kalaak barbarians that are also his wives.
Explorers tend
to need healing more than merchants and crafters, and [[Kurala d'Jorasco]] does a brisk business in [[Clifftop]]. She possesses the [[Mark of Healing]], which enables her to cure diseases and mend wounds, but she is also an adept of [[Boldrei]], and her faith enables her to channel divine magic to remove curses. While she runs her own
business, Kurala is a respected member of House
[[Jorasco]] and is often called in to help the healers
in [[Dragon Towers]]. Kurala's House includes three
lesser healers, and Kurala's husband Janasar, who specializes in the care and
treatment of animals.
Viceroy Kurn Velderan makes his home in the [[Tharashk]] [[enclave]] in [[Stormreach]], the [[House Tharashk Refinery]]. He is a busy man. He manages
numerous mining camps and monitors activities
within the city, which includes navigating diplomatic
tightropes between the [[Storm Lords]], [[dragonmarked house]]s, and other forces. He’s working to strengthen the presence of the [[Liondrake's Roar]], the division of
the house that recruits mercenaries and laborers from
the monstrous races. Under Kurn’s watch, House
[[Tharashk]] has developed ties with the [[hill giant]]s and
[[eneko]]. To date, the [[drow]] have shown no interest
in working with the house, but Kurn is always searching for new possibilities.
Kurn oversees the business of the house, but he
doesn’t have the time or skills to direct the refinery.
This is the work of [[Durgran Torrn]].
The berries of the kuryeva bush of [[Xen'drik]] can be
used to produce a wide variety of alcoholic beverages,
most notably the gin typically called kuryeva. This drink
is popular with sailors across [[Eberron]], and it is in great
demand in the taverns of [[Sharn]] and [[Zarash'ak]].
The Kushtuar Hills are a chain of rolling mountains in [[Syrkarn]], stretching across [[Khunan]] and [[Sunyagir]]. They are the source of the [[Kushtuar River]], and include Mount Athay, the point of highest elevation in [[Syrkarn]].
The Kushtuar River in [[Syrkarn]] flows from the [[Kushtuar Hills]] into the [[Whitewater]]. It forms most of the border between the provinces of [[Sunyagir]] and [[Khunan]].
Baron Kwanti, patriarch of House [[Orien]], is a dynamic, energetic human who hates to stay in one place. He spends most of his time on his personal
[[lightning rail]] coach, the Silver Unicorn, traveling from
enclave to enclave to monitor affairs. Despite his wanderlust, he is a clever businessman. It was Kwanti who diverted funding to the [[First Step]] program. Now he’s
searching for a way to get enough funds to repair the
[[lightning rail]] lines shattered during the war, and to
create new lines to bypass the [[Mournland]]. He could
be a patron for a group of PCs, if he comes up with an
adventure that could bring profit to the house; a party
working for the baron would have full access to the
[[lightning rail]], caravans, and [[teleportation circle]]s.
A former member of the [[Karrak]] cults in [[Syrkarn]], Ky is one
of the best sources of information on cult activity—she
remains one of the few people to flee their ranks and live
to tell about it. Though she prefers the crowds of [[Ardhmen]] and [[Nderitese]] to the open plains where ambush is
easy, Ky is a loner. She remains a disciple of Karrak,
and the scythe she carries has never seen a wheat field.
Those seeking information on the cults inevitably find
themselves pointed in her direction, but seekers must
spend time and money (mostly at the [[ustah]] taverns) to
win her trust.
A mere nine [[night hag]]s dwell in the [[Demon Wastes]]. The hags
spend most of their time engaged in mystical studies beyond
the realm of mortal ken (and mercifully so), exploring the
ancient ruins for arcane tomes from the [[Age of Demons]].
Most of the night hags react with hostility when approached
by strangers, but a few can be dealt with—provided the visitor has something to offer and minds her manners. The widely respected hag Kyrale serves as an ambassador and mediator among the [[fiend]]ish powers active in the Wastes, and mortals wishing to negotiate with the [[Lords of Dust]] or other fiends often seek her out to act as an intermediary.
//Slime, water, blood—fluids are the purest essence of life. We begin as a drop of liquid, and in the end we return to it. Drink the bounty of the Bile Lord. Heed the voice of the Lurker Within, for it's already part of you. Follow our teachings, and after death, you'll find eternal peace in the whispering choir.//
<div align="right">—A cultist of Kyrzin</div>
The [[daelkyr]] Kyrzin deals in living liquids and foul fluids. It is
infamous as the source of all [[ooze]]s; some believe that there
are living rivers of [[gray ooze]] and green slime in the depths of
[[Khyber]]. Many cults revere [[gibbering mouther]]s and hear guiding
words in the ravings of these beasts; such cults refer to Kyrzin
as the Regent of Whispers. While oozes play a major role, its
cults can be associated with liquid in any form. One cult might
venerate an ancient well, while others say that the local lake
holds the ghosts of their ancestors. Any delusion associated
with liquids could be tied to Kyrzin.
Kyrzin's traditional cults are strongly established in the
[[Shadow Marches]], but Whisperers keep to themselves.
Marchers refer to the common cold as “the drip” or the “Bile
Lord's kiss;” and stories say that Kyrzin has sown giant oozes in
the rivers of the Marches. While many Marchers know stories
of the Prince of Slime, it's typically seen as a dangerous but
largely neutral force. Mold plays an important part in Marcher
medicine, and the Bile Lord is seen as a force that can cause
disease when angered, or help to prevent it. So most prefer to
ignore and avoid Kyrzin, and Whisperers are largely left alone.
This opalescent, symbiotic goo comes sealed in a jar and slowly shifts and moves, as if endlessly exploring the jar's interior. To attune to this item, you must first drink the contents of the jar, unlocking the following properties.
//''Resistant.''// While attuned to Kyrzin's ooze, you become highly resistant to all poisons and acids.
//''Amorphous.''// You can cause your body to assume the amorphous qualities of an [[ooze]]. For the next minute, you (along with any equipment you're wearing or carrying) can move through a space as narrow as 1 inch wide without squeezing. Once you use this property, it can't be used again until the next dawn.
//''Acid Breath.''// You can belch caustic acid in a stream up to 30 feet away. The acid burns creatures' skin and the fumes irritate their senses. Once you use this property, it can't be used again until the next dawn.
If you die while the ooze is inside you, it bursts out and engulfs you, turning your corpse into a [[black pudding]] allied with [[Kyrzin]].
It's hard to keep a consistent rhythm in Kythri. It takes effort to maintain any
pattern of behavior; without even thinking about it, people in Kythri adjust their behavior to avoid repetition. This is the essence of Kythri. On the one hand it's a vision of chaos, but it's also about change, adapting to overcome the unexpected, and challenging traditions.
Kythri is commonly imagined as utterly unstable, with landscapes taking shape only to boil away within moments. And this is true of the heart of the realm, known as the [[Sea of Chaos]]. But at the edges of the sea, there are islands that linger. The environments of these [[Shifting Islands]] steadily and constantly change; a vast desert might be a lush rainforest in a few hours. But the land itself remains constant, and creatures can live on these islands, adapting to the endlessly changing environment.
While Kythri constantly changes, its elements are usually natural. A jungle becomes a desert, a blizzard becomes a sandstorm—but it's comprised of //sand//, not tiny marble busts of King Boranel. This distinguishes Kythri from [[Xoriat]] or [[Dal Quor]]; while constantly changing, it's generally change between plausible options, unlike the unreal environments of the Realm of Madness and the Region of Dreams.
!! Universal Properties
All things change in Kythri, even time and the future. The only
thing that's truly reliable is that nothing's reliable.
* //''Broken Rhythms.''// A creature can't take the exact same action twice in a row.
* //''Fluid in Form.''// The range and duration of [[transmutation]] spells is doubled.
* //''Embrace the Unknown.''// [[Divination|divination]] magic is severely attenuated in Kythri. Divination spells cast on other planes can't affect or target creatures, places, or objects on Kythri.
* //''Constant Change.''// Nothing remains exactly the same in Kythri. Every so often at irregular intervals, a creature finds that something changed about it or its possessions. Each player should describe what's changed about their character; this could be as simple as your cloak changing color or your sword now having a stylish [[Aundair]]ian design when it was originally [[Karrnath]]i. You could choose for the change to be physical—your skin, hairstyle, or sex—or mental—you suddenly hate olives or no longer believe in the [[Sovereign Host]]. These changes have no mechanical impact: the coins in your pocket may change in design, but copper coins won't turn into platinum. If you want a change to have mechanical impact—for example, if your [[cleric]]'s faith or race changes and you want your character sheet to reflect that—discuss the possibility with your DM.
* //''Chaotic Time.''// Time is fluid in Kythri, inconsistent both with the Material Plane and within its own islands. Adventurers who spend a day in Kythri could find that a year has passed in Eberron, or they could be trapped in Kythri for a year and find that only an hour has passed when they return.
!! Denizens
Most of Kythri's denizens fall into one of three categories.
!!! Wild Things
The islands of Kythri are inhabited. But how can a creature
survive in an environment that can be a desert today and a
glacier tomorrow? The answer, of course, is that the creature
must change with the environment. Kythri's islands include
some creatures that appear to be natural beasts, though they
change as the region around them does; the wolf in the forest
becomes an arctic wolf when the land turns into a glacier, and
turns into a jackal when it's a desert. Even beyond their practical
changes for survival, Kythrian creatures might be constantly
shifting their plumage, behavior, and more fundamental
biology, whether from moment to moment or day to day.
However, not all of Kythri's wild things transform into familiar
forms. Part of the plane's core concept is evolving in response
to change, and Kythri is home to many creatures that blend
the features of two or more natural beasts: monstrosities such
as the [[owlbear]], [[griffon]], and [[chimera]]. It's commonly accepted
that at least some of these monstrosities first appeared in
Kythri, and that they first appeared in [[Eberron]] either by passing
through portals or due to the influence of [[manifest zone]]s.
Just as the environments of Kythri are chaotic but largely
blend natural elements, Kythrian monstrosities typically blend
the forms of natural creatures. While there are [[hippogriff]]s and
[[griffon]]s in Kythri, inherently alien creatures like [[kruthik]]s and
[[grick]]s aren't found here. The wild things of Kythri also include
natural shapechangers, notably a wide variety of [[mimic]]s—even
colossal ones that can assume the shape of natural features
such as hills or mountains. It's quite likely the mimics of Eberron
either immigrated from Kythri or were created by its influence,
much like the [[sahuagin]] of the [[Eternal Dominion]] use the blood
of the [[kar'lassa]] bound to Kythri to create their [[plasmid]]s.
Unlike other planes where these wild things would likely be
[[manifestation]]s, the wild things of Kythri are mortal creatures.
They live, reproduce, and die following (mostly) natural means,
and have to find sustenance and shelter in their islands. Between
the strange flow of time and unusual environments, this can
lead to dramatic surges in populations or sudden extinctions.
However, the plane itself seeds new life into islands that
somehow become depopulated, and if all the griffons in Kythri
were to die, new ones would eventually evolve. So even though
Kythri doesn't have manifestations, it ensures a steady stream
of mortals exist—and when they die, it replaces them.
!!! Slaadi
The [[slaad]]i make up the only native civilization of Kythri. They
aren't a monolithic society; some live in massive cities such as the ever-shifting [[Cornerstone|Cornerstone (Kythri city)]], while
others are tiny rustic communities.
!!! Githzerai
The [[githzerai|gith]] aren't natives of Kythri, and their presence is
an act of defiance: through unparalleled mental discipline,
they create bastions of order in the heart of chaos. If they
seek order, why don't they dwell in [[Daanvi]]? It's not that they
simply desire order, but to strengthen their will by imposing
it on a reality that absolutely defies it. The struggle is the
purpose. Beyond this, they're served by the fact that even
great powers can't scry into Kythri.
The [[githzerai|gith]] don't dwell on the [[Shifting Islands]] of Kythri.
Instead, they've created their own islands in the [[Sea of Chaos]]:
vast monastery vessels the size of small towns, moving through
the eddies of chaos and defying transformation. The githzerai
devote themselves to meditation and self-improvement, with little
interest in what transpires beyond their monasteries. They have
no particular love of outsiders—they consider all creatures of
[[Eberron]] to be warped shadows of their stolen reality—but
neither are they inherently hostile. A persuasive group of
adventurers could find brief shelter in a githzerai monastery,
especially if they bring something interesting to trade or have
compelling stories to share. However, should the outsiders
offend the githzerai, they'll feel no remorse in eliminating
them; there's nothing evil in shining light to dispel a shadow.
!!! Greater Powers?
No one knows if there's a greater power shaping Kythri.
The death [[slaad]]i are powerful beings, but there's no known
equivalent to [[Dolurrh]]'s [[Queen of the Dead]] or [[Dal Quor]]'s
[[il-Lashtavar]]. Some sages assert that there must be a
consciousness at the heart of the [[Sea of Chaos]], a sentience
behind the chaos, but if so, its presence has never been proven.
!! Layers
Unlike many [[plane]]s, Kythri isn't divided into [[layer]]s. Its structure
is closer to that of [[Dal Quor]]; it has a planar core, with islands
of reality suspended within the [[Sea of Chaos]]. The difference is
that the core of [[Dal Quor]] is stable—while in Kythri, the closer
you get to the heart of the sea, the more tumultuous it becomes.
There are many [[slaad]] communities spread across the
[[Shifting Islands]], and at least half a dozen [[githzerai|gith]] monastery
vessels in the Sea of Chaos. [[Cornerstone|Cornerstone (Kythri city)]] and [[Zertherun IV]] are examples that can be used as inspiration.
<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>
!! Planar Manifestations
Here are ways that Kythri can affect the Material Plane.
!!! Manifest Zones
Kythrian [[manifest zone]]s are often unpredictable in minor
ways. Weather patterns may deviate from the surrounding
region and change on a moment's notice. The plane's universal properties also carry over to many manifest zones. Any Kythrian zone with the //Constant Change// property might
produce monstrosities. A zone with the //Fluid in Form// property
amplifies the effects of [[transmutation]] magic and can have
dramatic effects on the success of [[magebreeding]]; these zones
are extraordinarily valuable to House [[Vadalis]].
Manifest zones can occasionally serve as gateways, allowing
creatures from Kythri to slip through into Eberron, intentionally
or accidentally. Many monstrosities make their home in the
wilds, whereas other creatures—like [[slaad]]i—can present very
unusual encounters, depending what culture they're from.
!!! Coterminous and Remote
Kythri's cycle of coterminous and remote periods is completely
unpredictable, lasting anywhere from days to centuries.
Curiously, its proximity to Eberron has no discernable effects.
!!! Kythrian Artifacts
Materials from Kythrian [[manifest zone]]s are often important
components of [[magic item]]s tied to [[transmutation]] or [[illusion]];
[[shiftweave]] uses fibers of plants harvested in Kythrian zones. The manifest zone of [[Hal'kyth]] is a vital part of the transmutation industry of the [[Eternal Dominion]].
Items that come from Kythri may have unpredictable effects. For
example, a [[hat of disguise]] from Kythri may function normally
when its wearer keeps in mind exactly what they want to look
like; but if they don't consciously enforce an appearance, it slowly
but continuously changes minor elements of their disguise.
!! Kythrian Stories
Visitors from Kythri can cause excitement, and an accidental
journey to a [[Shifting Island|Shifting Islands]] can be an easy source of adventure;
can the adventurers find a way back before they are consumed
by the Churning Chaos? Here are a few other ideas.
//''Vadalis Park.''// The [[dragonmarked house]]s are looking for new
sources of revenue in the wake of the [[Last War]]. Jalan d'Vadalis,
a brilliant [[magebreeder|magebreeding]], has created a resort where people can
interact with a vast array of intriguing [[monstrosities|monstrosity]], including a
few of his own design. This park is built on a Kythrian [[manifest zone]], and Jalan hasn't yet recognized that the //Constant Change// property is sabotaging his security systems and dangerously mutating his monstrosities. He was so preoccupied with whether
he could do it, he didn't stop to think whether he should...
//''Terror at Sea.''// While at sea, the adventurers pass through a
Kythrian manifest zone at exactly the wrong time, and a blue
or red [[slaad]]i from the Union of Flesh slips aboard the ship. It
infects or implants a few passengers, doing its best to hide. Can
the adventurers defeat this lurking threat before it's too late?
Or will a wave of newborn slaadi take over the ship?
//''Superstars.''// A gray [[slaad]] reveals its presence to the
adventurers. It's from the Confluence of Reality and wants
to bring the adventurers to [[Cornerstone|Cornerstone (Kythri city)]] to represent their
cultures. What could go wrong? Well, while the Confluence is
usually peaceful, this time it wants the adventurers to represent
their culture in a massive extraplanar gladiatorial match. Can
they defeat champions from across [[Eberron]] and the other
planes? Or is the only hope of survival to flee into the [[Sea of Chaos]] and try to find another way home?
//''The Hunt.''// The adventurers stumble into a pitched battle: a
trio of [[githzerai|gith]] ambushed by [[Transcendent Flesh]] cultists. Only
one survives the battle. This zerth has a psychic connection to
the [[illithid|mind flayer]] master of the cult cell, and is determined to bring
down this mind flayer. Will the adventurers work with the zerth
and end this threat? And is this solely about the hunt, or does
the githzerai have a hidden agenda?
A massive scar mars the otherwise flat plains that stretch beyond the [[Shadowcrags]] and [[Icehorn Mountains]]. Like wounds gouged out of the earth by gigantic talons, the twists and turns of the canyons and depressions form a torn and ruined expanse of terrain giving way to the plains and windswept deserts of
the [[Wastes|Demon Wastes]]. This is the Labyrinth, where the [[Dragon Below|Khyber]] meets the [[Dragon Between|Eberron]] in a land
of ruin and desolation.
This vast network of canyons and mesas forms a natural maze of stone. The wind in the canyons sounds like the keening of hundreds of ancient banshees, and sometimes
the air inexplicably fills with the smell of fresh blood or
the bitter tang of sulfur. The terrain here is most sinister, and it is
easy to become lost along its unmarked paths, or to
fall victim to the natural hazards spread throughout.
Boiling pools of mud, geysers, flash floods, lava flows, and
crumbling walls, and crevices sometimes open that drop
into the very heart of [[Khyber]] itself frequently claim the lives of reckless travelers. Roving bands of [[demon]]s and savage [[humanoid]]s hunt here in search of flesh and plunder.
The [[Ghaash'kala]] clans patrol the Labyrinth, keeping the horrors of the Wastes from pushing into the mountains. They discourage travelers from venturing
into the [[Demon Wastes]], often to the point of threatening violence. Though they stop short of attacking
explorers set on entering, the Ghaash’kala ensure that
nothing they encounter leaves the Wastes—including
adventurers who ignore their initial warnings. They maintain a number of small settlements that resemble fortresses
built into and around secure caves in the canyon walls.
The largest, most permanent of these are Ghaash Dar in
the northern canyons and [[Maruk]] Dar in the south.
The Labyrinth, the ancestral citadel of House
[[Sivis]], is located in [[Korranberg]]. The name refers not to
the towers that rise toward the sky, but to the maze of
caverns stretching out below the enclave and under
the [[Seawall Mountains]]. Once home to the ancestors of the clan, these caverns are festooned with carvings—historical records dating back to the [[Age of Dhakaan|Age of Monsters]], etched carefully into the stone walls. Today, these tunnels also serve as the vaults of the house, holding records of vital communications and
other secret lore.
A wandering historian, Laddin Tho is the best
source of general and historical knowledge on the plains of [[Syrkarn]].
The problem for most of those who seek his knowledge is
pulling the useful details from his endlessly meandering
tales. Tho is nearly as tall as the [[eneko]] laborers he drinks
with constantly, but his gaunt frame gives him the look
of an oddly mustached insect. His apartments in [[Nderitese]] are rumored to hold one of the largest collections of arcane scrolls outside the enclaves of the [[Keepers of the Word]], but Tho's days as a hired spellslinger (which he happily recounts in excruciating detail) are long behind him.
Lady Ash is a [[githyanki|gith]] merchant who sells the plunder
claimed by her city-ship, //Zaeran's Sword//, in the [[Immeasurable Market]] of [[Syrania]]. Her goods depend on the Sword's most recent target.
Lady Illmarrow is a legend—an ancient [[lich]] said to dwell in a castle of bone and ice in the coldest regions of the [[Lhazaar Principalities]]. Some stories say that she is served by a legion of [[undead]] and that she maintains a court of [[vampire]]s and [[ghost]]s in her palace of ice. Other tales claim that when anyone dies in Lhazaar, Illmarrow chooses whether to take their soul before it passes on to the [[Keeper]] and [[Dolurrh]].
But Lady Illmarrow is no folk tale. She is the greatest [[necromancer|necromancy]] in [[Eberron]], and after centuries of silence, she is setting ancient plots into motion at last. She is the power behind the Order of the [[Emerald Claw]], but her motives for founding the order are buried in her past. Lady Illmarrow has no interest in ruling the living. Rather, she seeks to become Queen of Death.
!! The Mark of Death
Illmarrow is a fiefdom on the isle of [[Farlnen]]—home to a community of elves exiled from [[Aerenal]], who have practiced [[necromancy]] for centuries. This domain includes [[Port Cairn]], the seat of the [[Bloodsails]]. But Lady Illmarrow's roots extend far beyond her island domain.
Long ago, it was revealed that the [[elven|elf]] [[line|Aereni noble line]] of [[Vol]]—a house that practiced the art of necromancy and bore the [[Dragonmark|dragonmark]] of [[Death|Mark of Death]]—was engaged in secret blood rites with a clan of [[dragon]]s. The discovery of this pact triggered an unprecedented alliance between the [[Sibling Kings]] of [[Aerenal]] and the dragons of [[Argonnessen]]. The Sibling Kings proclaimed that House Vol would be exterminated to the last member, and the [[Mark of Death]] would be eliminated from the world.
The line of Vol had long been rivals of the [[Undying Court]], and many whisper even today that the attack on House Vol was nothing more than an excuse to eliminate a political rival. But others believe that what the Undying Court truly feared was a path shown in the [[Draconic Prophecy]]—that a child born of [[dragon]] and [[elf]] could become a godlike avatar of death.
!! Illmarrow Rises
Even as dragons and elves fought to destroy the line of [[Vol]], a child was born to the house: Erandis. A scion of [[elf]] and [[dragon]], Erandis bore a Mark of Death unlike any other. In time, it might have been her gateway to immortality and unrivaled power, but she was hunted down and killed long before she could master the mark's magic. Her mother, [[Minara Vol|Queen of All Tears]], escaped with her daughter's body to the icy reaches of [[Farlnen]], far from the conflict. There, Minara unleashed all her necromantic power to raise Erandis as a [[lich]].
As an [[undead]] being, Erandis lost the use of her [[dragonmark]]. Thus, when the [[diviners|divination]] of [[Aerenal]] asked if the line of Vol had been exterminated and the Mark of Death destroyed, they received a vision affirming that the bloodline of Vol was no more. To the world, Lady Illmarrow is merely a mysterious [[lich]] of the [[Grim Lords]] of [[Farlnen]]. But in truth, she is Erandis Vol, the last "survivor" of that cursed bloodline, heir to the [[Mark of Death]].
When Minara restored Erandis as a lich, she hid her daughter's phylactery, weaving enchantments into it that cause Erandis to be reborn in a random safe haven after she is destroyed. Thus, even Erandis herself doesn't know the location or form of her phylactery.
!! Restoring the Mark
Though she takes great pleasure in fighting the dragons and elves who destroyed her ancestors, Lady Illmarrow has a more important goal: restoring her [[dragonmark]] and unlocking godlike powers. The agents of the [[Emerald Claw]] who serve her fight either for the good of [[Karrnath]] or for personal gain, but Illmarrow cares for nothing except increasing her necromantic knowledge and finding a way to restore her lost mark.
!! Lady Illmarrow and the Blood of Vol
The [[Blood of Vol]] and Lady Illmarrow are both legacies of the line of [[Vol]], but they aren't one and the same. As far as the world knows, the line of Vol was exterminated. Followers of the Blood of Vol who have heard of Lady Illmarrow believe that she's a champion of their faith, but they don't worship or serve her. And the powers of priests of the Blood of Vol don't come from Lady Illmarrow.
The Lady in Shadow is the [[archfey]] representing the witch who stands outside
society, possessing dangerous knowledge and power.
She curses those who offend her or steal her things,
but her knowledge can be quite valuable—if she is
approached with care. Her [[barony]] is the [[Shadow|Shadow (barony)]].
//She grew up in village in [[Daskara]], not far from the modern [[Thrane]] city of [[Sigilstar]]. She loved the country and taking care of the livestock. When she was 13, her family fell ill with a disease no one had ever seen before. They died, and the plague spread to the rest of the village and their stock. Only two things were unaffected: the rats and the girl. When everyone was dead, she fled to the town of Sarus. You've never heard of Sarus, because it doesn't exist anymore. It was burnt by those who sought to keep the plague from spreading. The rats kept the girl alive, and were the only thing that kept her close to sane. In time she learned to control her power. Even so, she couldn't bear the burden of the deaths on her conscience. She declared that the girl had died with her family. She was someone new, someone without a name. She was the Lady of the Plague.//
The Lady of the Plague was a mysterious figure who played a prominent role during the [[War of the Mark]]. Though she is commonly seen
as a monster, the records of the war suggest that she was
loath to use her power unless forced to, and might even
have despised the aberrant mark she carried. Together with Lord [[Halas Tarkanan]], she released the full power of her [[aberrant dragonmark]] at the end of the war and caused the destruction of early [[Sharn]], and some claim that the Lady's death-curse still lingers in the depths of [[Old Sharn]] to this day, over a millenium later.
The [[Demon Wastes]] offer numerous
access points to [[Khyber]], but none as intimidating as
the Lair of the Keeper. Yawning wide in the northern
reaches of the Wastes, the site is a deep chasm whose
crumbling walls drop away into darkness.
The place takes its name from a legendary chamber in its depths. Beyond the River of Blood and Bone, the Chamber of Secret Thoughts, and the Legion of the Forgotten Dead, there dwells a great [[dragon]]—some say a [[dracolich]]—said to be an aspect of the [[Lord of Death and Decay|Keeper]]. This creature houses souls trapped
in Khyber [[dragonshard]]s sprouting from the walls.
Foul cultists of the [[Dark Six]] make forays to the site, offering up their wicked prayers.
The Lair of the Keeper and the chasm that surrounds it are powerful [[manifest zone]]s to [[Dolurrh]], the Realm of the Dead.
Lake Aat is a freshwater lake in the [[Eska Mountains]] of the [[Tashana Tundra]] in [[Sarlona]]. It flows into the [[White Sea]] via the [[Tanni River]].
Lake Brey in [[Khorvaire]] forms part of the border between [[Breland]] and [[Thrane]], and feeds the [[Brey River]].
Lake Cyre in [[Khorvaire]] forms part of the border between the [[Mournland]], the [[Talenta Plains]], and [[Valenar]], and it feeds the [[Cyre River]].
The [[warforged colossus]] WX-73, "Artorok", sits at the bottom of Lake Cyre amid the scaffolding of a sunken House [[Cannith]] workshop, flooded but otherwise intact.
The pitch-black waters of Lake Dark shimmer in the farmland in eastern [[Karrnath]]. Fed by the cold runoff of the [[Iron River]], Lake Dark is a large body of mist-shrouded water that collects in a depression in the fields
between the [[Icetop Mountains]] and the [[Talenta Plains]]. The
small towns of [[Lakeside]] and [[Irontown]] flank Lake Dark, and
smaller farming communities encircle it.
Many believe that spirits haunt Lake Dark, and that the pitch-black waters provide a pathway to [[Dolurrh]], a location from which the living can sometimes speak with the dead. Lake Dark is in fact a [[manifest zone]] connected to the realm of the dead, and spells related to [[necromancy]] have greater power when cast in proximity to
its dark, restless waters.
Lake Galifar is a lake in [[Khorvaire]] bordering [[Breland]], [[Aundair]], and the [[Eldeen Reaches]]. It is also the largest lake on the continent. The [[Wynarn River]] connects Lake Galifar to [[Eldeen Bay]] and the [[Bitter Sea]] to the North. [[Silver Lake]] lies directly south.
The [[Demon Wastes]] linger under a pall cast by
the numerous volcanoes rising from the heart of
this blighted realm. Spewing clouds of ash and toxic
smoke, the volcanoes of the Wastes cover the land in
rivers of lava that consume everything in their path.
The Lake of Fire is an ancient peak southwest of the
[[Labyrinth]], and the site of one of the largest of the
Wastes’ volcanoes. Some say that the vast expanse
of lava within the bowl of the mountain imprisons
a terrible [[fiend]], perhaps one of the [[overlord]]s.
Others hold that ancient heroes once ventured here
to cast dangerous artifacts into the furnace of molten
rock.
The Lake of Fire attracts [[demon]]s, fiendish cults,
and the deadlier [[Carrion Tribes]] to its shores—all
paying homage here to their dreadful masters. Whether or not the stories of bound [[overlord]]s and sunken relics are true, a fiery magic permeates the crater, and [[sorcerer]]s and [[wizard]]s who travel to the lake
can draw on its power to perform astonishing feats of
[[evocation]].
Lakeside is a small town in [[Karrnath]], located between the [[Icetop Mountains]] and [[Lake Dark]].
Identical twins Lalia d'Deneith and [[Tasra d'Deneith]] are the leading [[Sentinel Marshals]] in [[Sharn]], headquartered in the [[Three Towers]] [[enclave]]. They can be inconsistent about which fugitives they chase down, leaving some high-profile but potentially longterm pursuits to other marshals. Nonetheless, they
are a fugitive’s worst nightmare: implacable, but likely to toy with their quarry before ending the chase. Lalia specializes in tracking fugitives through the wilderness.
Unknown to all but agents of the [[Dreaming Dark]], both sisters are hosts to [[tsucora]] [[quori]] spirits.
Lamannia embodies primordial nature, untapped and untamable. It's often called the Twilight Forest, and is depicted as a realm of colossal trees and massive beasts. However, the forest is just one of the facets of Lamannia. Every natural
environment is represented in various [[layer]]s that exemplify
and exaggerate their features. Windswept desert, raging ocean, endless plains—all can be found here. In other [[plane]]s, these environments are backdrops to the story the realm is telling. In Lamannia, the environment is the story. It doesn't need the help of
[[fey]] or [[fiend]]s to make its point, because the land itself is the point.
Some scholars assert that Lamannia served as a
blueprint for the Material Plane—that here, the [[Progenitors|Progenitor Dragons]]
perfected the ideas of storm and stone. They believe that
the natural world is infused with the essence of Lamannia,
and that [[druid]]s and others who wield [[primal magic]] actually
manipulate that Lamannian essence. And indeed, druids
who travel to the Twilight Forest can be overwhelmed by
the sheer force of nature that infuses this place.
Lamannia lies close to the world, and it's one of the easiest
planes to reach. Its treasures are natural objects imbued with
elemental power—wood, stone, herbs, and plants, all of which
are stronger and more potent than their mortal counterparts.
But when you come to Lamannia, there are many predators,
and you are prey; anyone who seeks to despoil the
embodiment of nature will be hunted.
!! Universal Properties
Lamannia is a reflection of the natural world, intensified and
exaggerated. The air is pure and clean, the water fresh and
clear. Colors are impossibly vivid. It's suffused with life—a
realm in which any stone could be an earth [[elemental]], where
any tree could be [[awaken]]ed. Vegetation is nearly always in
bloom, and beasts are almost always in the peak of health.
Except for a few layers such as the [[Rot]], Lamannia reflects the
ideal state of the natural world. Here are some of the plane's
consistent properties.
* //''Extended Druidic Magic.''// Durations of spells that draw on primal sources of magic are doubled.
* //''Indomitable Beasts.''// Beasts and [[elemental]]s are filled with vigor and fortitude. Upon its arrival in Lamannia, any elemental or beast that's charmed or bound in any way is immediately freed from that effect; this can be disastrous for an elemental [[airship]] that's thrown into the plane.
* //''Elemental Power.''// Spells that [[conjure elemental]]s are augmented.
* ''//The Land Provides.//'' In most layers of Lamannia (the [[Broken Land]] notwithstanding), the vegetation is bountiful and the land sustaining. In these places, a creature has advantage when attempting to forage for food or shelter.
* ''//Primordial Matter.//'' It's difficult to destroy or contaminate the matter of Lamannia. All nonmagical food and drink is purified and rendered free of poison and disease. In addition, natural materials such as wood and stone are tougher than their mundane counterparts.
* //''Standard Time.''// Time passes at the same pace as on the Material Plane, and is consistent across its layers.
!! Denizens
A common story about Lamannia tells of an explorer who
passed through a [[manifest zone]] and found herself on a vast
mountain peak. Pressing up the mountain, she was exploring
a mysterious thicket when she was set upon by rats the size
of wolves. She fought the rats, but was on the verge of being
overwhelmed... until a giant beak flashed down and snapped
up a rat in a single bite. The wide “thicket” wasn't natural briar;
it was the nest of a gargantuan [[roc]], one of Lamannia's many
impressive denizens.
!!! Beasts
Lamannia's primary inhabitants are beasts—both ones that
you might encounter in the wilds of [[Eberron]], and massive
creatures that can be seen as iconic representations of their
type: the idealized incarnation of Bear or Wolf. Any natural
creature can be found in Lamannia; indeed, some sages
assert that the presence of a creature in Lamannia is what
defines it as “natural.”
For the most part, Lamannian beasts are no smarter than
their counterparts on Eberron. However, some animals
possess intelligence similar to that granted by the [[awaken]]
spell, though even these beasts generally follow their natural
instincts and live wild lives. While the [[giant owl]]s of [[Sharn]]
may own shops and run for city council, the giant owls of
Lamannia are content to hunt the beasts of the Twilight
Forest. So it's possible to find creatures in Lamannia that
speak Common or a Primordial dialect, but most have little
interest in long conversations.
The beasts of Lamannia generally fall into the following
four categories.
''Mundane animals'' are identical to their counterparts in
Eberron. Any natural creature can be found in a layer with an
appropriate environment. If such beasts are the first things
adventurers encounter in a visit to Lamannia, they might not
even realize they've traveled to another plane.
''[[Dire animals|dire beast]]'' are creatures of remarkable size. Such
creatures are more common than mundane animals; in the
[[Twilight Forest]], most owls are [[giant owl]]s, and they prey
on giant weasels and rats. Any natural beast
could have a dire counterpart in Lamannia.
''Megafauna'' are gargantuan beasts. The [[roc]] is an example
of Lamannian megafauna; those found in Eberron have been
drawn through [[manifest zone]]s or slipped between planes
during coterminous periods. The DM can create a wide range
of megafauna; a pack of gargantuan wolves could hound the
adventurers, or they might meet a megafauna serpent—perhaps even a megafauna
[[dinosaur]]! While these creatures are similar in form to beasts,
they are typically classified as [[monstrosities|monstrosity]]. Between their
vast size and their connection to the plane, they're immune to
most effects that target beasts, and you can't charm a roc with
a simple [[animal friendship]] spell.
''Totems'' are beasts that are beyond the tactical scale—creatures that can be measured in miles. The [[gnome]] explorer [[Tasker|Tasker Torralyn d'Sivis]] tells a tale of an island in the [[Endless Ocean]] that turned out to be an enormous turtle; another of his stories
features a pack of [[lycanthrope]]s living in the fur of a massive
roaming wolf. Such totems aren't natural creatures and don't
need to eat. Their origins and purpose are unsolved mysteries,
but most sages believe that they are [[immortal]] spirits projected
by the plane itself. Some claim that the totems are connected
to all creatures cast in their image. Others believe that the
totems are sources of primal power, and barbarians, shifters,
and druids can receive power and guidance from them. All
that's known for sure is that they're immune to common
spells, and there are no accounts of anyone successfully
harming or communicating with a totem.
!!! Elementals
After beasts, the most common inhabitants of the plane are
[[elemental]]s. Unlike the [[genie]]s, [[mephit]]s, and anthropomorphic
elementals of [[Fernia]] and [[Syrania]], Lamannia's elementals are
the pure, living essence of the elements, unburdened by any
humanoid desire. These include the standard earth, fire, air,
and water elementals, but they can come in a wide array of
sizes and forms. Adventurers exploring the [[Broken Land]] could
encounter tiny globs of lava crawling across the land, while the
[[leviathan]]s of the [[Endless Ocean]] and the [[elder tempest]]s of the
[[First Storm]] are forces of apocalyptic power.
The [[Zil|Zilargo]] [[gnome]]s commonly summon and bind the
elementals of Lamannia, using them to propel [[lightning rail]]s
and [[airship]]s. While intelligent, these elementals are utterly alien. They have little concept of time and perceive the world
purely through the balance of elements. The sole desire of
most elementals is to express their element: to //burn//, to //flow//,
to //fly//. Many have an antagonistic attitude toward spirits of
other elements, which drives the deadly conflict between
them in the [[Broken Land]]—this poses an obstacle in dealing
with elementals, as they tend to perceive [[humanoid]]s as
globs of water. While it's possible for a character that speaks
Primordial to talk with a Lamannian elemental, it's usually
difficult to establish any sort of common basis for negotiation.
Still, there are legends of wandering [[druid]]s who “befriended
earth and air,” so anything is possible!
!!! Humanoids
There are [[merfolk]] in [[Eberron]]—such as the [[Kalamer|Karakala]] of the
[[Thunder Sea]]—but their people began in the [[Endless Ocean]] of
Lamannia, and are still found there. These primordial merfolk
remain close to their elemental roots and instincts. They
wield [[druid]]ic magic, but don't craft tools or structures. Other
humanoid natives of Lamannia are much the same; any race
with a strong primal connection could be tied to Lamannia, but
they're driven by instinct and avoid the trappings of civilization.
There could be [[tabaxi]] dwelling in the branches of the Twilight
Forest, but if so, they'll seem wild.
Over a century ago, during the [[Silver Crusade]], there were
many [[lycanthrope]]s who fled to Lamannia. As long as they
remain on this plane, a lycanthrope can't spread the curse to
anyone other than their offspring, and the unnatural impulses
of the curse—the drive to prey on innocents, the bloodlust
that can cause a victim of lycanthropy to lose control of their
actions—are suspended. Meanwhile, primal instincts are
amplified; Lamannian werewolves remain predators and
take joy in the hunt, but they aren't driven to evil, and remain
in full control. Packs and communities of lycanthropes
are scattered across the layers. Most are descended from
lycanthropes who fled Eberron to escape both the templars and the dark power whose corrupting influence led to the
crusade; these shapeshifters embrace their primal nature
and rarely assume humanoid forms. But there are also
packs descended from afflicted templars who chose exile
over death, and who strive to preserve the beliefs and
traditions of their ancestors.
A handful of druids and rangers have crossed into Lamannia
and chosen to remain in this primal paradise. Many run with
lycanthrope packs, embracing their feral instincts and spending
their days in wild shape. Others act as planar shepherds,
seeking to minimize the impact of dangerous [[manifest zone]]s
and help unwary travelers.
!!! Greater Powers?
There are no [[celestial]]s or [[fiend]]s in Lamannia. Yet explorers
often report a feeling that they are being watched, and there
are times when random events seem to be guided by an unseen
hand. When outsiders have sought to establish industries
in Lamannia, they've been attacked by megafauna or elder
elementals, or struck by especially vicious turns of weather. It's
possible that this is the work of the totems, and that they have
great influence over their [[layer]]s. Or there could be a greater
power that watches over the entire plane. Some scholars assert
that the moon [[Olarune]] is the consciousness that governs the
plane, and [[Eldeen|Eldeen Reaches]] [[shifter]] traditions that predate the practices
of the [[Wardens of the Wood]] also reflect this belief. Shifter
druids suggest that Olarune created the shifters, and the first
lycanthropes were her champions.
!! Layers
Each of Lamannia's layers highlights a particular aspect of
primal nature. One layer in Lamannia might contain a single
colossal mountain peak; on the other hand, the [[Twilight Forest]]
could be as large as [[Khorvaire]] (or even [[Eberron]] itself). The
edge of a layer could be an impassable physical barrier, or it
could wrap around onto itself—if you sail far enough in the
[[Endless Ocean]], you'll find yourself back where you began. Most
layers of Lamannia follow a traditional day-night cycle, though
they aren't synchronized across layers, and when the moon
[[Olarune]] is visible, it's always full.
The portals that connect the layers of Lamannia often only
allow travel in one direction. Any deep pool of water may
connect a layer to the Endless Ocean; but while you can get to
the Ocean by diving into a pond in the Twilight Forest, there's
no gate back to the forest on the other side. The Endless
Ocean contains small islands, and if you explore one, you'll
find you've moved to a new layer.
The following are just a handful of Lamannia's many layers.
In creating a layer, think of a distinctive natural feature—a
canyon, a desert, a lone mountain—and build the layer around
it. What creatures would be found there? Have any outsiders
taken up residence? Is there an unusual role for [[elemental]]s?
How does it connect to other layers or Eberron?
<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>
!! Planar Manifestations
A town is established in the desolate [[Blade Desert]], but it
thrives beside a small lake that provides fresh water and a
seemingly inexhaustible supply of fish. In a small [[Eldeen|Eldeen Reaches]]
village, the locals live in harmony with a breed of giant rabbits
unknown elsewhere in [[Khorvaire]]. A tribe of [[shifter]]s lives in
the branches of three massive trees that grow in a Lamannian
[[manifest zone]]. These are all examples of how Lamannia can
affect the Material Plane; below are a few more.
!!! Manifest Zones
Lamannian [[manifest zone]]s are relatively common, and
usually share one or more of the plane's universal properties.
They're often found at the heart of a region that resembles the
connected layer; zones tied to the [[Endless Ocean]] are found
underwater, while manifest zones tied to the [[Twilight Forest]]
can be found in the [[Towering Wood]], the [[King's Forest]], and
other vast woodlands. It's relatively common for these zones to
serve as gateways to Lamannia, though they might require a
lunar alignment or a coterminous period. This goes in reverse
too, as creatures can be pulled through to the Material Plane,
from hostile elementals to deadly megafauna.
[[Zilargo]] has a number of valuable zones with the //Elemental Power// property, and House [[Cannith]] and the [[Twelve]] are eager
to find more of these zones—though they're also dangerous, as
[[elemental]]s sometimes spontaneously manifest in such places,
linger for a few hours, then dissipate. Bound elementals can
also break free from their bonds in some Lamannian manifest
zones—especially unfortunate if that elemental is responsible
for keeping an [[airship]] aloft!
Plants and beasts near Lamannian zones often are
significantly larger and healthier than their counterparts in
other areas, and many House [[Vadalis]] [[enclave]]s are built in
these zones. Zones with the //Primordial Matter// property can
also be a valuable resource for communities, with purified
food and water and the presence of extremely durable wood
and other materials for industry. The prison of [[Dreadhold]] is
built in such a manifest zone.
However, though Lamannian manifest zones can be useful
tools for communities and [[dragonmarked house]]s, some zones
actively resist and repel civilization. Weather, vegetation, and a
rapid rate of decay can combine to quickly destroy structures
built in the zone and overgrow the ruins.
!!! Coterminous and Remote
While Lamannia is coterminous, the effects of Lamannian
[[manifest zone]]s are enhanced. In regions of unspoiled nature—such as the [[Eldeen Reaches]] and the wilds of [[Q'barra]]—fertility of both plants and animals is enhanced, and beasts conceived in these periods are often exceptionally strong and healthy.
Durations of spells that target beasts or elementals are doubled.
While Lamannia is remote, fertility rates drop, and beasts
born in these periods are often weak or sickly. Animals are
often uneasy, and the duration of spells that affect beasts or
elementals are cut in half.
Lamannia traditionally becomes coterminous for a week
around the summer solstice, and is remote for a week during
the winter solstice.
!!! Lamannian Artifacts
Lamannian vegetation is prized by [[alchemist]]s. Herbs and
roots from Lamannia can produce exceptionally strong
potions, and many types of Lamannian vegetation have innate
magical effects; there are bushes in the [[Twilight Forest]] that
naturally produce [[goodberries|goodberry]]. Lamannian lumber likewise
can have unusual properties, mirroring the [[densewood]] and
[[bronzewood]] found in [[Aerenal]]. Lamannian wood and stone
can serve as powerful focuses for primal magic, for creating
[[figurines of wondrous power|figurine of wondrous power]], or for tools designed to summon or bind [[elemental]]s.
!! Lamannian Stories
Lamannia is a source of elementals and dire beasts. It's wild
and untamed, strengthening primal magic and providing a
haven to lycanthropes. It resists any intrusion by civilization.
Here are a few ideas for working it into your story.
//''A Savage Land.''// When a party of adventurers unknowingly
passes through a Lamannian gateway, they must find a way to
survive in this wild realm. This could be as simple as finding
another [[manifest zone]] to take them home, or it could require
them to survive in Lamannia for months while waiting for the
planes to become coterminous. Or perhaps their [[airship]] passes
through a manifest zone and the [[elemental]] breaks free; the
adventurers are stranded, along with other survivors.
//''Megafauna Island.''// An island near a Lamannian manifest
zone is discovered to be the home to an unusual array of
megafauna beasts. Adventurers could stumble onto this on
their own, or they could be hired by an heir of House [[Vadalis]]
who wants to investigate the rumors without drawing the
attention of rivals in the house. Perhaps the adventurers find a
legendary megafauna ape—which, if captured, might break free
while on exhibition and climb the towers of [[Sharn]]!
//''At War with Nature.''// An [[Ashbound]] [[druid]] manages to
establish a new Lamannian manifest zone in a major city,
such as [[Fairhaven]] or [[Sharn]]. It's causing the city to crumble,
releasing [[elemental]]s and dense vegetation as the wilderness
takes over. Can the adventurers find a way to remove the
manifest zone?
The ancient [[Sarlona]]n kingdom of Lamecha is best known for fighting off an incursion from the aggressive neighboring kingdom of [[Khunan]], sparking a devastating period of arcane conflict known as the "magewars", one of the opening strokes of the [[Sundering]]. Today, the steppes of the Lamecha lowlands are part of the territory known as [[Syrkarn]], and through its port city of [[Ardhmen]], the province acts as a gateway to [[Sarlona]] for those hoping to avoid the attention of [[Riedra]]'s [[Thousand Eyes]].
Since before the unification of [[Riedra]], Lamecha has been defined by its agriculture and [[eneko]]-led farmsteads, and is the origin of the root vegetable [[sepse]], as well as the narcotic [[dreamlily]].
While you are holding this wand, after a few seconds of concentration, you can instantaneously light or snuff out a candle, torch, small campfire, or similar source of flame within 10 feet of you.
//This tall [[Karrn|Karrnath]] is lean and weathered, but he has a strong presence. His voice is deep and resonant, and it is hard not to listen to his words. Despite his short, iron-gray hair, he is still in the prime of his life; his gray eyes are sharp and clear, and his pride and confidence are visible in his bearing. He wears a beautiful black clock trimmed with purple silk over a well-tailored outfit of black and gray. //
Lan, a priest of the [[Blood of Vol]], is a charismatic and wealthy man, and he is very careful to
conceal his impressive mystical powers from the world at large. Unless there is no other alternative, he only
performs magic in the depths of the [[temple|House of Hazal]]. He takes the use of magic very seriously, and rarely uses spells even to help his parishioners. He believes that people should be able to solve their own problems, and while he offers spiritual advice and even financial assistance to other members of the community, he only uses magic for the most serious situations.
Lan is not an evil man, and he does not always
approve of the actions of the Order of the [[Emerald Claw]]. However, he feels that it is not his place to question the [[undead]] champions of Vol. He has an
astonishing gift for [[enchantment]], and he spends
much of his time producing magic items and weapons for Lady [[Tarra'az|Jesel Tarra'az]]. His other primary interest is extending his family library. Lan
has invested a fortune to recover scrolls and texts
from [[Xen'drik]], seeking more information about the
origin of the first [[vampire]]s. He might hire a party
to locate a tome on his behalf, or cross paths with a
character who has accidentally acquired a book he
needs; alternately, the party might need a rare book
that can only be found in the Hazal library.
''Capital:'' Greenspire (Lanarak), Bounty (Londurak)<br/>
''Primary Resources:'' Agriculture, fish, alcohol<br/>
''Enemies:'' Each other<br/>
''Celebrated Virtues:'' Common sense, stoicism, enjoying life. Work hard and don't complain.
In the tales of the Exile, Lanarak and Londurak are siblings.
Farmers and brewers, they're all but indistinguishable to
outsiders, but the two are constantly striving to outdo each
other. This mythic pattern remains true today. These holds lie
on opposite sides of [[Mirror Lake]], and they're both devoted to
farming and fishing; many of the mountain clans rely on these
valley clans for sustenance. But despite their deep similarities
in outlook and lifestyle, these two clans are constantly
feuding. This rarely escalates to violence, instead typically
driving them to find ways to perform better than their rivals,
though there have been times where one clan has actively
sabotaged the other. Despite this, both Lanarak and Londurak
proclaim to possess vast common sense—to prefer fishing
to fighting, and to always be able to find a simple solution to
complex problems. Dwarves from these clans established
inns across the holds; these days, most of these inns have
been bought up or licensed by House [[Ghallanda]], but there's a
decent chance that if a bartender's a [[dwarf]], they're from one
of these two clans.
While Lanarak and Londurak don't mine metals, both
traditionally farm mushrooms and red pudding in deep
caverns, and both were drawn into the War Below. Londurak
quickly pulled out of the war; they have sealed all passages
and forbidden anyone from venturing into [[Sol Udar|Realm Below]]. Lanarak
still tends its gardens on the upper levels. This has given
Lanarak an edge over its rivals, especially as traditional Mror
spirits are made with mushrooms. However, Lanarak has also
suffered several significant supernatural attacks over the last
few decades—outbreaks of the Frenzy and similar threats.
It's rare for dwarves from these valley clans to take risks or
to leave the holds, but a remarkable folk hero or sailor could
hear the call of adventure.
<<list-links-article "[tag{!!title}category[location]sort[title]]">>
While lit, this hooded lantern burns for 6 hours on 1 pint of oil, shedding bright light in a 30-foot radius and dim light for an additional 30 feet. Invisible creatures and objects are visible as long as they are in the lantern's bright light. You can lower the hood, reducing the light to dim light in a 5-foot radius.
Named after the founder of [[Morgrave University]], Lareth Hall holds the University's
administrative and faculty offices. This large domed
structure at the center of the campus, situated at the
top of Dalannan Tower, contains the office of president [[Larrian ir'Morgrave]] ([[human]]), along with the bursar's and registrar's offices, and—in a large chamber at the top of the
dome—the abode of [[Flamewind]], a [[gynosphinx]]. As a
scholar of the [[Draconic Prophecy]], Flamewind often
poses strange questions and sends adventurers on
obscure missions.
The links of this chain mail have been stained to create the optical illusion that you are wearing a brown-and-russet feathered tunic. While you wear this armor, your attempts involving making performances with an instrument have advantage. Additionally, when you play an instrument, all creatures of your choosing who can hear you may become [[charm]]ed by you for up to 1 minute.
The laskin, a small antelope native to the [[Eldeen Reaches]], has swept-back horns that can be used as a material component for any [[spell]] that requires direct physical contact with the target.
''Founder:'' [[Molou Lassite]].<br/>
''Current Leader:'' [[Varen Lassite]].<br/>
''Primary Sphere of Influence:'' Diplomacy and commerce.<br/>
''Family Business:'' [[Molou's Distillery]].<br/>
''Districts:'' [[Cross]], [[Marketplace]].<br/>
''Allies:'' House [[Ghallanda]], House [[Tharashk]], [[Kirris Sel Shadra]].<br/>
''Enemies:'' None.
The Lassites, with their [[kuryeva]] brewing traditions, had an easy transition to honest living as [[Storm Lords]]. The pirates used their considerable wealth to expand their brewing operations. Today [[Molou's Distillery]] is one of the largest employers in [[Stormreach]], and its [[kuryeva]] is popular across the [[Five Nations]]. The Lassite family was set in charge of the [[Marketplace]], and the Lassites work to settle disputes between merchants and to smooth the wheels of commerce. Traditionally, the Lassites are the diplomats of [[Stormreach]]. When foreign dignitaries need to be entertained or the interests of Stormreach need to be taken abroad, the Lassites are brought into play.
The family’s current head is [[Varen Lassite]], a handsome man just reaching his middle years. His uncle, [[Volen Lassite]], was the former Lassite [[Storm Lord|Storm Lords]], but now manages [[Molou's Distillery]]. Varen's daughter [[Naleen|Naleen Lassite]] is the heir apparent.
The Lassites have few enemies, having chosen to
avoid direct conflict with the other lords; given this
neutrality, they serve as mediators in times of crisis.
They also have a number of powerful allies. Over the
years they have established a solid bond with House
[[Tharashk]], helping to meet the house’s needs in [[Cross]].
The Lassites also have a strong relationship with House
[[Ghallanda]]. Although the [[halfling]]s maintain a minimal presence in [[Stormreach]], the [[kuryeva]] trade forms a connection between the two that extends across the [[Thunder Sea]]. Finally, while the Lassites are on good terms with all the [[Storm Lords]], Lord Varen has established a close friendship with Lady [[Kirris Sel Shadra]],
and the two act to support each other.
Last Chance is a self-sustaining farming community in [[Xen'drik]] built around a
large inn. It is a joint venture of House [[Ghallanda]] and
House [[Jorasco]], providing a last night of comfort and a
final chance for healing to explorers heading into the
southern wilds. Magical services are provided by Alask
d’Jorasco, and the outpost also possesses a small supply of potions.
Alask could likely make more gold in [[Stormreach]], but he
is determined to spread the reach of the house to those in need. Quite a few dying explorers have stumbled into
Last Chance in their moment of greatest need; Alask
believes that the [[Traveler's Curse]] guides the needy to
his door. On the other hand, some adventurers never
manage to locate the inn. The curse works both ways.
A desert of black sand under a starless sky—this is one of
[[Mabar]]'s iconic images. In the Last Desert, there are remnants
of glorious monuments: the half-buried head of a grand statue,
its eye cracked; a fragment of a memorial wall, engraved
with names that can no longer be read; ruins so worn that it's
impossible to guess what purpose the building once served.
Characters knowledgeable in history and arcana can recognize
that these monuments are drawn from dramatically different
cultures; some are the work of [[celestial]]s, while others might
have been created by the [[giant]]s of [[Xen'drik]].
At the center lies a massive tomb-palace. Its style suggests
the architecture of [[Aerenal]], but it's grander than even the [[City of the Dead|Shae Mordai]]. This is the fortress of the [[Queen of All Tears]], the [[Dark Power]] of this domain.
The Queen's layers are largely desolate and miserable,
filled with wailing [[wraith]]s and [[banshee]]s and wandering [[nightwalker]]s. One is a battlefield plucked from [[Aerenal]], where the bones of elves and dragons
lie intertwined; this may hold the key to discovering her past.
The Last Resort is a tavern in the [[Immeasurable Market]] of [[Syrania]] where [[angel]]s and [[devil]]s drink together, where [[fey]] share stories while [[slaad]]i do shots.
The barkeep [[Solace]] is the [[Dominion|dominion]] of Hospitality; he's
got a sympathetic ear for patrons and knows the perfect
drink for any occasion.
For hundreds of years, the continent of [[Khorvaire]] was
united under the kingdom of [[Galifar]]. This peace came to
an end with the death of King [[Jarot|Jarot ir'Wynarn]] in 894 YK, just over
a century ago. Conflict over the succession spiraled into
outright war between the [[Five Nations]].
The Last War was a bitter struggle that forever
changed the shape of Khorvaire. It was a century
marked by shifting alliances, with years of stalemate interspersed with periods of intense battles. This grueling
conflict left deep scars on the land and the people, but
there was worse to come. On [[20 Olarune 994 YK|Khorvaire calendar]], the
nation of [[Cyre]] was consumed in a magical cataclysm
now known as the [[Mourning]]. The cause of the Mourning remains unknown; many fear it was caused by unbridled use of war magic. Shock and fear brought the
nations to the negotiating table, and the Last War came
to an end in 996 YK with the [[Treaty of Thronehold]].
Although many celebrated the end of the war, others
remain unsatisfied with its outcome. No one won the
war. Even though people optimistically refer to it as the
Last War, most believe that it's only a matter of time
until conflict begins anew. The mystery of the Mourning is the only thing holding the warmongers at bay. If
someone uncovers the secret of the Mourning—if it can
be proven that the Mourning can't happen again, or if
its power could be harnessed as a weapon—war could
erupt again. Until then, the nations remain in a cold war
as each makes preparations and seeks advantages in a
conflict that could lie ahead.
!! Scars of the War
As of 1 Zarantyr 998 YK, it's been less than four years
since the Mourning and less than two years since the
Last War came to an end. The Last War spanned the
continent and lasted for over a century. Most people
want to move on. But the scars of decades of war can't
be erased so quickly. These are just a few of the ongoing
effects of the Last War.
!!! Dragonmarked Power
The [[dragonmarked house]]s remained neutral in the war
and made considerable profit selling their services to all
sides. War drives innovation; House [[Cannith]] developed
many new weapons during the war, including the [[warforged]]. House [[Lyrandar]] perfected its [[airship]]s in the last
decade of the conflict. Rumors persist of monsters or
super soldiers developed by House [[Vadalis]] or biological
weapons in the hands of House [[Jorasco]].
The dragonmarked houses emerged from the war
stronger than ever, with the divided nations dependent
on their services. Before the Last War, united [[Galifar]]
imposed many restrictions on the houses. Today, no
monarch can afford to break ties with any of the dragonmarked houses. What will happen if one of the houses
goes too far in its pursuit of profit?
!!! New Nations
Before the Last War, Galifar laid claim to all [[Khorvaire]].
Several new states emerged over the course of the war.
In some cases, this was largely a formality; Galifar never had a strong grip on the [[Lhazaar Principalities]] or
the [[gnome]] nation of [[Zilargo]], and they held the [[Demon Wastes]] in name only. Other states were born in violence:
the [[elves|elf]] of [[Valenar]] and the [[goblinoid]]s of [[Darguun]] seized
their realms by force. But [[Aundair]] yearns to reclaim the
[[Eldeen Reaches]], [[Breland]] keeps a wary eye on the monstrous kingdom of [[Droaam]], and many mistrust the Valenar elves. Within the [[Five Nations]], anger remains over
how the final lines were drawn; for example, [[Thrane]] retains control of the ancient Aundairian city of [[Thaliost]], seized during the war.
!!! Physical Damage
The borders between nations demonstrate the impact of
generations of conflict. Forests and farmlands scorched
by fire and magic are still recovering. Ruined cities have
yet to be reclaimed, along with shattered villages and
abandoned fortresses. These deserted sites now provide
shelter for brigands or are haunted by the restless spirits of those who died in anguish.
This damage reached far beyond the front lines.
[[Magic-fueled weapons|arcane artillery]], aerial cavalry, and guerrilla
forces all struck deep within enemy territory, and the
cities of Khorvaire suffered. Wherever you go, you might
see the scorch marks of fireballs or wreckage from
siege weapons. Every nation is working to repair these
wounds, but the damage could linger for generations.
As you create an Eberron character, consider your
roots and the impact of the war. Was your hometown
destroyed in the war? Is your family thriving, or were its
members scattered or slain during the conflict?
!!! Refugees and Shortages
Refugees live in every major city, including tens of thousands of exiles produced by [[Cyre]]'s destruction. Cyrans are a people without a homeland, seeking shelter and
sustenance in the lands of their former enemies. Many
Cyran refugees are former soldiers who were fighting in
enemy territory when the [[Mourning]] struck, or they were
farmers and merchants who escaped before their nation
was consumed. Former nobles now have nothing but
rags, and scholars or artists live in alleyways.
Cities and towns still suffer from shortages in the
aftermath of the war. Farmlands, workers, and the
resources devoted to the war were lost. Nations are
recovering, and most essential services and goods are
available in major cities. But there is always the possibility that something you want—a luxury item or a spell
component—simply isn't available or can be acquired
only through the black market.
Lastpoint is an island in the [[Lhazaar Principalities]]. The seat of the [[Gray Tide]] principality is hidden somewhere within the mysterious mists that cover the eastern half of the island. Some say the secret headquarters of the [[Cabinet of Faces]] can also be found here.
!! The "Gray Tide"
The waters around the island of Lastpoint crawl with a clinging, bone chilling
gray mist. The crews of ships forced to sail through
the gray tide become disoriented and confused.
When—or if—they sail out again, they report hearing
shrieking winds emanating from the center of the
mysterious fog. No one has ever determined what
lies at the heart of the gray tide, and few are brave
enough to enter the mist in search of an answer.
The [[Gray Tide]] principality is named after this bizarre magical phenomenon.
Lathe, one of three Adamants of the [[Iron Watch]] of [[Stormreach]], is a mystery. They
spend most of their time in meditation, and they have
learned to manipulate the [[warforged]] body in strange
ways. They have begun teaching these arts to some members of
the [[Iron Watch]], enabling them to extend
spikes from their plating or sharpen the edge of their hands
to a razor edge. Some say that Lathe wasn’t actually built by House [[Cannith]], and that they emerged from the dungeons beneath [[Stormreach]] after
the Iron Watch was established. Perhaps this is true,
and Lathe is an [[ancient|quorcraft]] warforged trying to guide the
modern ’forged down a particular path.
[[Halfling|halfling]] culture treats every
member of a tribe as an equal. A halfling tribe is
ruled by an elected leader known as a //lath//, whose
authority depends on retaining the confidence and
respect of the tribe as a whole. Every few generations,
a truly great leader arises, inspiring not just their own
tribe but other tribes and their //lath//s. Such a halfling
is given the title of //lathon// and is granted the power to
render decisions for the halfling nation as a whole.
Lathon Halpum organized the tribes during the
[[Last War]] and represented them as the nation of the [[Talenta Plains]] in the [[negotiations|Treaty of Thronehold]] at [[Thronehold]]. He is considered the father of this land, and without his example, the [[halfling]] nation would likely never have come to pass. He has since stepped down from his position; Halpum still carries the grand title, but more as an honorary post than as a ruler. He continues to oversee his own tribe, one of the largest in the Plains, but he doesn’t command the other laths. But he has the respect of nearly every living halfling.
<<list-links-article "[tag{!!title}sort[title]]">>
The Lava Pit is an up-and-coming restaurant in—of
all places—the [[Cogs]] of [[Sharn]], in the heart of the [[Blackbones]] district. True to its name, the Lava Pit overlooks a gigantic forge powered by molten rock,
the glow from which suffuses the place with lurid
red light. The restaurant began as little more than a
hole in the wall with an interesting location, serving a
variety of grilled meats prepared in the spicy [[Shadow Marches]] style. Its popularity has grown tremendously, allowing the restaurant to improve its facility
and expand its menu (although the Shadow Marches
cuisine remains its specialty), making it by far the
most upscale establishment of any kind in the [[Cogs]].
<ul>
<$list filter="[tag[law enforcement]tags[]tag[nation]] [tag[law enforcement]tags[]tags[]tag[nation]] [tag[law enforcement]tags[]tag[dragonmarked house]] +[sort[title]]">
<li>{{!!article}}<$link overrideClass="graylink"/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[law enforcement]] [tag<currentTiddler>tagging[]tag[law enforcement]tags[]tag<currentTiddler>category[location]] [tag<currentTiddler>tagging[]tag[law enforcement]tags[]tag<currentTiddler>!title[law enforcement]category[organization]] +[sort[title]]">
<$list filter="[<currentTiddler>tag[law enforcement]]" emptyMessage="""<li>{{!!article}}<$link overrideClass="graylink"/></li>""" variable="noop">
<li>{{!!article}}<$link/></li></$list>
<ul>
<$list filter="[tag<currentTiddler>tag[law enforcement]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[law enforcement]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[law enforcement]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
It is a crime for a [[Riedran|Riedrans]] to possess anything that has
not come to him through official channels. The method
of acquisition is irrelevant. Whether someone deals with
the black market or steals goods, possession of unauthorized goods is a crime. Contraband goods are always
confiscated. This rule does not apply to foreigners, but
no Riedran is allowed to accept goods from strangers.
Any form of violence against a citizen of [[Riedra]] is
illegal. [[Thousand Eyes]] or [[Harmonious Shield]] agents can
be violent in pursuit of their duties.
It's a crime to challenge anyone who holds a higher
rank or disobey a command from a social superior. However, if the challenge proves true, such as when a [[Taskaan|Taskaan Legion]]
[[shifter]] identifies corruption in an officer, the "crime"
becomes a rewarded act.
Aside from the [[Chosen]] and the [[Inspired]], only
authorized individuals are permitted to study any form
of magic or [[psionics]]. Such abilities are to be used only
in the service of the nation. Foreigners aren't persecuted
for having supernatural abilities—it's well known that all
foreigners traffic with [[fiend]]s—but they are arrested and
punished if they turn these powers against Riedrans.
The widest category of crime is that of corruption.
This includes any action that could draw an honest Riedran
off the [[Path of Inspiration]] and imperil their soul. Challenging the benevolence of the [[Inspired]], teaching new skills
or ideas, and offering people goods they don't normally
receive are all acts that can draw punishment. Open
practice of any religion besides the Path of Inspiration is
also strictly forbidden. A foreign [[cleric]] of the [[Sovereign Host]] can wear his holy symbol and heal a companion, but he mustn't discuss his beliefs with [[Riedrans]], perform any sort of sacred ritual, or use any form of [[divine magic]]—even a benevolent spell—on a Riedran citizen.
!! Punishment
Most minor crimes are punished by a varying term
of solitary confinement, along with counseling by the
local priest. Given their indoctrination and communal
nature, [[Riedrans]] find isolation frightening and punishment enough. The shame of being marked as even a minor criminal or deviant is weighty to a Riedran as well.
In the case of more serious crimes, the criminal simply
vanishes. Sometimes the individual is taken to the local bastion reclamation center, where they are subjected to intense psychological conditioning. Even if someone emerges from a reclamation center, they are assigned to a new community.
Otherwise, the criminal is summarily killed. Executions
are not public, but it is well known that anyone taken by
the [[Thousand Eyes]] never returns to their prior life.
As for foreigners, minor crimes performed in
ignorance might be dismissed with a warning. In the
case of a violent crime or use of magic against a Riedran,
the offender's goods are confiscated, and they are usually
deported or executed. If the [[Inspired]] believe that a criminal has valuable information, they might be held in a reclamation center while agents extract it. Still, the Inspired
do not believe in long incarcerations. Captured PCs must
escape quickly if they hope to avoid execution.
The [[Inspired]] stand above all laws.
[[Eberron]] is the Material Plane, bound by the logical limitations
that govern material things. However, its thirteen [[plane]]s
are ideas, and these are potentially limitless. With this in
mind, the planes of Eberron are divided into layers—distinct
environments or realms that aren't bound by the laws of
physical space nor physically connected. These layers can
be tiny, seemingly infinite, or anything in between. A desert
may wrap back upon itself, the alleys in a city could twist in
impossible ways to always return you to the main square, or
you could come to an absolute edge, where everything falls
away into an endless void.
Many scholars—including [[Dorius Alyre ir'Korran]] in his
celebrated Planar Codex—describe the layers of a plane as
a stack; however, the planes of Eberron aren't physically
arranged in a particular order, and there's no concept of a
top or bottom layer. Instead, each layer explores a different
facet of the core concept that defines the plane. [[Lamannia]] is
the Plane of Nature, and each layer showcases a particular environment—there's an endless ocean, a vast forest, a volcano
forever on the edge of erupting. [[Shavarath]] is the Plane of War,
and each layer contains a different aspect of war—a bitter
siege, a bloody melee, a lingering guerilla conflict. Some planes
have a core layer that serves as the heart of the plane, such as
the [[Amaranthine Cities|Amaranthine City]] of [[Mabar]] and [[Irian]]. But the layers of
[[Lamannia]] are all equal in importance.
While they aren't stacked, most planes have layers bound by
a reliable set of connections. The shape of these connections
varies based on the plane. Some are obvious: a massive door
sitting in the desert, a pool that reflects a scene from another
layer. Others are more subtle; if you come upon an island while
sailing on the [[Endless Ocean]] of [[Lamannia]] and you walk inland,
you'll find that the island is a completely different layer—and
when you turn around, the ocean is no longer behind you. A
portal doesn't have to be physical at all; in [[Thelanis]], you can
travel to a new layer by acting out the elements of a new story.
This chapter provides examples of notable layers for each
plane, but these are only a sampling. Just as ideas have no
limits, there are no limits on the number of layers a plane can
contain. In developing or describing a layer to fit your story,
keep the core concept of the plane in mind. What differentiates
the vast fortress citadel of Irian's Amaranthine City from a
fortress in Shavarath? A fortress in Shavarath is about war; the
stones are worn, and there's a scent of blood and smoke in the
air. In Irian, the fortress is a symbol of hope, of an empire on
the rise; it's bright, clean, and may have never seen an actual
battle. So while the layers of two planes might initially sound
similar, look back to the core concept and consider how that's
reflected in each layer.
One of the most recognized captains who passes through [[Stormreach]]'s [[Falconer's Spire]] is Lazrea d’Lyrandar, known both for her beauty and her
love of dueling with those who offend her. Lord [[Calynden|Calynden d'Lyrandar]] has been using her to manipulate [[Jonas Wylkes]], and so far Lazrea has no objections to romancing the handsome Harbor Lord. However, if she discovers proof that Calynden was behind the death of Graden [[Wylkes|Wylkes family]], she could turn against him. Like many of the
children of [[Lyrandar]], Lazrea is a free spirit. If it turns out that the Kraken has dark plans, Lazrea could be a valuable ally to the PCs.
Leahtari was one of the first wave of [[kalashtar]] pilgrims to find their way to the [[Covenant of Light]] in [[Xen'drik]]. She is an unusually gifted [[psion]], and she uses her clairsentient abilities to assist [[Gilead Rhoy]] in locating new disciples.
The Leaky Dinghy is a rotting, rat-infested, creaking mess of a tavern in the area of the [[Stormreach]] [[Harbor]] docks called Fisher’s Folly, an unsafe mishmash of rigging, fishing boats,
and huts that is home to many of the city’s fishers.
A hangout for sailors, fishers, and thrill seekers, the Dinghy persists only because of the love its
patrons have for the place, keeping it alive despite the
best efforts of storm and rot to destroy it. The tavern’s
survival against storms has become an occasion for
celebrations, with parties being held in the swaying
structure during the severest storms.
[[Sahuagin|sahuagin]] come to the Dinghy looking to be
hired as guides for ships crossing the [[Thunder Sea]],
and the tavern offers dishes specifically for these sea
devils. Adventurous members of other races, and the
extremely drunk, sometimes give this food a try, but
the raw and wriggling nature of the meals leads to very
distressed stomachs.
The shack of [[Capshaw the Crier]] sits nearby the Leaky Dinghy. [[Tattered Alice]] also lingers around Fisher's Folly.
This item is composed of a set of two metal hooks. While
the hooks are within 30 feet of one another, you can speak a command word and cause a rope made of light to appear, linking the hooks in the most direct
route. The rope as strong as silk rope and cannot change length once summoned.
The rope lasts for 1 hour or until you use a sharp blade to cut it.
When wearing these stiff leggings of dark leather, your balance is greatly improved.
While you wear these black leggings, your movements make no sound, and you seem to blend into the shadows.
While you wear these soft grey leggings, you become extremely flexible.
The [[immortal]]s and [[manifestation]]s who fight in the eternal battlefield of [[Shavarath]] are tied to legions. The [[immortal]]s that fight in the war believe that each legion is
governed by a higher power—simply called ''Command''—and
that these powers collectively shape the [[layer]]s and determine
the terms of battle. Immortals don't question Command or
wonder why things are the way they are. Immortals never deal
directly with the Command of their legion, and they don't even
know if these powers have physical forms.
Vast legions are broken into smaller cohorts, which are in
turn divided into centuries of one hundred [[immortal]]s, each
representing an aspect of war like pain, mercy, or despair. A few
special centuries and individual immortals can move between
layers, but the majority are bound to their cohort and their layer.
Immortals can be reassigned to new cohorts, and promoted
or demoted—usually tied to a physical transformation. This
minimal movement between layers maintains balance, as cohort
leaders must make use of the forces in their layer, while legion
commanders can strategically direct the centuries that can move
between layers—what layer is [[Justice]] pressing at the moment?
!! Legions of Shavarath
<<list-links-article "[tag{!!title}sort[title]]">>
Lemures are repugnant, shapeless creatures formed from the psychic residue of lingering pain or hate in the [[Realm of the Dead|Dolurrh]]. A lemure resembles a molten mass of flesh with a vaguely humanoid head and torso. A permanent expression of anguish twists across its face, its feeble mouth babbling even though it can't speak.
Like [[sorrowsworn]], lemures are "waste products" of the machinery of the Realm of the Dead, and are dispatched by the [[nalfeshnee]] and [[marut]] guardians of [[Dolurrh]] whenever encountered.
Lendys, the Balancer, the Weigher of Lives, is the [[Dragon God|Dragon Gods]] of Justice. Unlike [[Chronepsis]], who judges the life of a [[dragon]] only after their death, Lendys metes out justice during a dragon's life. He is the consort of [[Tamara]].
Servants of Lendys in the [[Thousand]] in [[Argonnessen]] investigate and punish crimes between dragons.
The spellcaster creates a sound or an image of an object within 30 feet that lasts for up to one minute. The illusion also ends if the caster dismisses it or casts this spell again.
If the caster creates a sound, its volume can range from a whisper to a scream. It can be the caster's voice, someone else's voice, a lion's roar, a beating of drums, or any other sound they choose. The sound continues unabated throughout the duration, or they can make discrete sounds at different times before the spell ends.
If the caster creates an image of an object—such as a chair, muddy footprints, or a small chest—it must be no larger than a 5-foot cube. The image can't create sound, light, smell, or any other sensory effect. Physical interaction with the image reveals it to be an illusion, because things can pass through it.
If a creature discerns the illusion for what it is, the illusion becomes faint to the creature.
If the caster is able to cast common-tier spells, they can cast this as such to do up to ''two'' of the following:
* Create a simultaneous sound AND an image.
* Increase the range to 60 feet and the illusion's maximum size to a 10-foot cube.
* Extend the duration of the illusion to five minutes.
* Delay the start of the illusion for up to five minutes.
* Freely move an image or the source of sound to any spot within the range of the spell.
Seemingly patchwork in bodily structure, a leucrotta's form appears composed of the parts of a wide variety of animals. Their heads are low-slung, wedge shaped and similar in appearance to that of a giant badger. Their body is up to nine feet long, and resembles a cross between a stag and a hyena. Deer-like legs ending in cloven hooves make it very challenging to distinguish between the tracks of a leucrotta and a stag. Ending the mismatched creature's form is a tufted lion-like tail.
Its horrific, hodgepodge body oozes a foul stench that pollutes anywhere the creature lairs. This reek is outdone only by the creature's breath, which issues from a maw that drips fluid corrupted with rot and digestive juices. In place of fangs, a leucrotta has bony ridges as hard as steel that can crush bones and lacerate flesh. These plates are so tough that a leucrotta can use them to peel plate armor away from the body of a slain knight.
The leucrotta can duplicate the call or the vocal expressions of just about any creature it has heard. The monster uses its mimicry to lure in potential victims, then attacks when they are confused or unaware of the actual threat.
A towering wall of water that drags ships down to the ocean's depths and washes away coastal settlements—that phenomenon typifies the destruction a leviathan can unleash on the world.
Leviathans are only natively found in the [[Endless Ocean]] of [[Lamannia]]. If called forth into the Material Plane, a leviathan arises from a large body of water to form an immense serpent-shaped creature.
One creature or object of your choice that you can see within 60 feet rises vertically, up to 20 feet, and remains suspended there for up to 10 minutes, or until your concentration is broken. The spell can levitate a target that weighs up to 500 pounds. Unwilling creatures may be able to resist the effects of this spell.
''Color:'' Dull white with large black chasm crossing it<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Detection|Mark of Detection]]<br/>
''Associated Plane:'' [[Xoriat]]
This moon features a 750-mile-long black chasm, and, when viewed from [[Eberron]], the full disk of Lharvion resembles a slitted eye. Many superstitions exist about the baleful influence of this moon, and strange occurrences and calamities seem to happen when the Eye of Lharvion is full in the sky. The druids believe that children of Lharvion possess unnatural insights, and gifted diviners and researchers are often born in this month.
Lhazaar was a legendary explorer and pirate who led the first [[human]] expedition from [[Sarlona]] to [[Khorvaire]], around two millennia before the founding of the Kingdom of [[Galifar]]. Her namesake lives on in the [[Lhazaar Principalities]] as well as the [[Lhazaar Sea]].
Some three thousand years before the present age, a
flotilla of ships left the land even then called [[Rhiavhaar]],
bound west across the [[Sea of Rage]]. The leader of this exodus was an explorer named Lhazaar. Though many Khorvairian humans are unaware that Lhazaar's expedition was the beginning of human society on [[Khorvaire]], all know her name.
!! Onsten's Theory of Lhazaar
Recently, a controversial theory has been gaining
favor in academic circles, seeking to explain why the tale
of Lhazaar's expedition has always been an obscure part
of Khorvairian history. Ellias Onsten, a little-known
[[Korranberg Library|Library of Korranberg]] researcher whose reputation faded
even further after his death in 980 YK, was responsible
for a revisionist look at Lhazaar's expedition.
Even prior to the end of the [[Last War]], Onsten had
studied the fragmentary histories of the sorcerer-kings of
ancient [[Sarlona]]. To him, it had always seemed odd that the
first waves of [[human]]s to reach [[Khorvaire]] had brought precious little in the way of magical knowledge with them.
Onsten observed that migrant populations typically
hold to their former cultures at any cost—building new
culture on a rigid foundation of the customs and traditions of their ancestors. However, almost from the first, the early humans of Khorvaire seemed intent on turning
their back on the traditions and history of their former
homeland. This led Onsten to conjecture that the first
humans to settle Khorvaire might well have been a population that Sarlona did not want.
Today, those Khorvairians who know Lhazaar's story
think of themselves as the descendants of brave explorers
and seekers after glory. Onsten's less attractive notion is
that the descendants of untouchables, criminals, deserters, and slaves instead populate Khorvaire. The notion of slave culture was of particular interest to the scholar (and
of particular abhorrence to his critics), suggesting as it
did a reason why the early Khorvairians were so quick to
enslave the [[goblin]]s of fallen [[Dhakaan]]. In Onsten's view,
the strong controlling the weak was the only world these
human immigrants knew.
Onsten's hypothesis has recently gained ground among
scholars. To them, a culture built entirely by people who
have a vested interest in forgetting who they had once been
might look very much like Khorvaire's—people turning their backs on the traditions that glorified those who had oppressed them. Many of the learned in Khorvaire
sympathize with the idea of a people who turned away
from the sorcerous traditions of their lords because those
traditions ultimately turned their lands to ash.
Whatever the origins of Lhazaar's expedition, the
second wave of human migrants to hit Khorvaire sailed
west under better-known circumstances. Refugees fleeing the rising power of [[Riedra]] pushed east into the forests of [[Nulakesh]], then beyond. These humans landed on
Khorvaire's western shores, spreading into the [[Shadow Marches]] where they remain today.
Each of the [[Lhazaar|Lhazaar Principalities]] princes has their own agenda,
and each prince has a personal representative at the
embassy in [[Sharn]]. These ambassadors spend most
of their time in trade negotiations and denying
rumors of Lhazaar piracy. The Lhazaar embassy is unstable at best, and the ambassadors come and go as they please; it’s impossible to predict who will be in
residence in the embassy at any given time. To make
matters worse, the ambassadors frequently engage
in feuds and vendettas on behalf of their lords. The
embassy itself is neutral territory, but beyond its
walls anything can happen.
''Capital:'' [[Regalport]]<br/>
''Hallmarks:'' Fish, mercenaries, merchants, pirates, ships
This loose confederacy of pirate lords, merchant
princes, and sea barons holds the northeastern coastline of [[Khorvaire]] and the many mist-shrouded islands
scattered across it. Recognized as a single allied nation
under the [[Treaty of Thronehold]], the principalities are
more of a loose alliance. Each island domain has its
own values, goals, and feuds with other domains.
The Lhazaar are the finest sailors in Khorvaire. During
the [[Last War]], they served all nations as privateers and
engaged in piracy on the side. When the war ended, they
returned to the merchant trade, but pirates still hunt on
the open seas.
The Lhazaar value their independence. Here, anyone
can rise to captain a ship or even seize a principality.
Leadership is earned, not given. Nevertheless, High
Prince [[Ryger ir'Wynarn]] of [[Regalport]] seeks to forge the
principalities into a unified force. He has the finest fleet,
and his efforts ensured that the principalities gained recognition at [[Thronehold]], after which he awarded himself
the title of High Prince. So far, the other princes have
rejected his proposals for a stronger union.
Some principalities are devoted to the [[Blood of Vol]]
and a few favor the [[Sovereign Host]]. Beyond these, the
Lhazaar show little enthusiasm for religion, though
many curse the [[Devourer]] when a storm comes.
!! Interesting Things About {{!!article}}{{!!title}}
* Rulership of the principalities is so fluid that it's possible for someone to start the day as a sailor and end it as a prince. A campaign could easily be based around a party of adventurers gaining a principality.
* The [[Wind Whisperer|Wind Whisperers]] principality includes a number of [[half-elves|half-elf]] with the [[Mark of Storm]] foundlings with no tie to House [[Lyrandar]]. The Wind Whisperers want to obtain [[airship]]s by any means necessary.
* The Lhazaar Principalities have the largest [[changeling]] population in [[Khorvaire]]. Many of them congregate in the [[Gray Tide]], a domain founded by changelings.
!! Lhazaar Characters
As you develop a Lhazaar character or NPC, consider the following:
* ''Seafarers and Swashbucklers.'' Most Lhazaar spend more time at sea than they do on land. Sailor is an appropriate background for any Lhazaar, but you can ask your DM if you can switch a tool proficiency for vehicles (water) proficiency. Lhazaar are flamboyant people with little concern for the law, so charlatan, entertainer, and folk hero are all appropriate backgrounds.
* ''Local Customs.'' Each principality has its own martial traditions, fashions, and slang. Think about how your choices reflect your principality and work with your DM to develop one that fits your character.
* ''Big Dreams.'' Whatever their circumstances, the people of the principalities always look to the future. What do you want? To find a forgotten treasure hoard? To command your own ship? To take your place as a prince? Think big and chase your dreams.
!! Cities and Sites
Among the myriad ports and pirate redoubts of the
Lhazaar Principalities are ancient ruins from forgotten
civilizations that predate even the [[Dhakaan]]i Empire, as
well as tombs built by wealthy pirates and sea lords to
house their treasures and earthly remains.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Notable Islands
<<list-links-article "[tag{!!title}tag[island]!title[Dreadhold]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]!tag[island]]:filter[get[text]length[]compare:integer:gt[350]] [title[Dreadhold]] +[sort[title]]">>
!! Principalities
<<list-links-article "[tag{!!title}category[organization]sort[title]]">>
!! Aftermath of the Last War
During the Last War, the Lhazaar served as privateers
and pirates. Outsiders wonder if the principalities can
adapt to peace, or if their thirst for gold and adventure
will lead their subjects to ruin.
Most of the princes are content with their domains,
but ambitious rulers such as Prince [[Ryger|Ryger ir'Wynarn]] of [[Regalport]]
and Prince [[Kolberkon]] of [[Port Verge]] could shatter the
status quo. Kolberkon seeks to expand his personal
power, while Ryger wants to forge a stronger unified
nation. Both pursue dangerous alliances in their campaigns. In addition to agreements with the [[dragonmarked house]]s, rumors abound of bargains with [[dragon]]s, [[fiend]]s, and the distant Empire of [[Riedra]]. Will the
dreams of these princes lead to a new war?
The Lhazaar Sea lies east of [[Khorvaire]] and west of
[[Sarlona]], with no clear boundary between it and the [[Sea of Rage]]. Sailors agree that the Lhazaar Sea touches the
[[Tashyvar Islands]] at the northwestern end of Sarlona,
while the Sea of Rage begins farther south along the Sarlonan coast. [[Adder Bay]] in [[Q'barra]] is part of the Lhazaar
Sea, as are the countless channels that divide the islands
of the [[Lhazaar Principalities]] from each other and from
the mainland.
Whales make their homes in the Lhazaar Sea, which means whaling is a profitable industry in the area. However, large orcas sometimes attack ships, and the huge [[fey]] known as ocean striders seem to view themselves as protectors of the whales in the area.
Commander Lian Halamar is a male [[halfling]] who
leads the [[garrison|Daggerwatch Garrison]] in the [[Daggerwatch]] district in
[[Upper Dura]].
Lian's connections to the [[Boromar Clan]] helped him rise to his current
rank, but he is not a puppet to his halfling brethren. Lian presses the Boromars just hard enough to make sure they keep up their regular payments. As
a result, parties might get lucky and receive some
help from the Watch when fighting Boromars. But more often than not, the Watch is nowhere to be found during major Clan operations. Recently, the Boromars have been pressing Lian to take stronger action against [[Daask]], but the halfling has no interest in getting caught in the middle of the crime war erupting in the lower towers.
Located in [[Zilargo]]’s southernmost port city, the Library of [[Korranberg]] is the greatest repository of general knowledge in [[Khorvaire]]. In addition to serving as a resource for scholars and explorers, the library often funds expeditions to study ancient cultures or unexplored lands.
The [[gnome]]s of Zilargo have an unparalleled thirst
for knowledge; this inquisitive spirit gave birth to the
Library of Korranberg. The gnome loremaster [[Dorius Alyre ir'Korran]] founded the library almost 3000 years ago in an attempt to accumulate enough knowledge to ascend after death and supplant the [[Sovereign|Sovereign Host]] Lord [[Aureon]]. As the centuries passed, the library continued to grow and expand. With the rise of
the kingdom of [[Galifar]], gentry and aristocrats from across
[[Khorvaire]] came to study at its colleges. Today, the Library of Korranberg plays a significant role in the economy of Khorvaire. It funds many expeditions to further the search for knowledge, and can be a valuable patron for adventurers.
The citizens of [[Korranberg]] take great pride in
their library. Permanent residents may attend the colleges without charge, and every citizen must devote four years
of service to the Library. This service is considered an
act of patriotism and an educational experience. Many
choose to extend this period of service, accepting posts
as lecturers, researchers, administrators, and other
important roles.
The library appears larger on the inside than from
the outside—and from the outside, it looks massive. When
a researcher reserves time at the library, a clerk provides
a catalog stone—an orange-colored crystal keyed to the
topics the researcher wishes to study. A private study
cell is provided, which initially looks like a small pool
of light in a vast, open darkness located somewhere in
the library’s extradimensional space. Within the pool of
light, a desk, chair, work table, and narrow pedestal are
placed for the researcher’s use, along with quills, ink,
parchment, and sealing wax. When the catalog stone is
placed atop the pedestal, alcoves formed of shelves full of
books and scrolls rush out of the darkness to create the
walls of the study cell. When the researcher completes
their work, removing the stone from the pedestal causes
the shelves to fall away so that the researcher can exit the
study cell.
The library and its associated buildings dominate a full quarter of [[Korranberg]]. But it also keeps safe houses in the capital cities of every nation in [[Khorvaire]]. These offices provide shelter for library research teams.
While the library does not focus on magic as much as the
[[Twelve]] or the [[Arcane Congress]], it has had many centuries to
fill its vaults. The restricted archives and secret vaults are
heavily defended and shielded against scrying and other
forms of spying.
!! Colleges of the Library
Each of the library’s eight colleges seeks to advance
a particular field of study:
* ''Aureon’s Holt:'' law and oratory
* ''Balinor’s Horn'': natural sciences
* ''Blackdragon'': [[alchemy|alchemist]]
* ''Drystone'': engineering
* ''Lyrris'': art and literature
* ''Morridan'': mathematics
* ''Soladas'': history
* the ''Tabernacle'': religion and philosophy
Together, the colleges
maintain the archives—vast vaults containing knowledge accumulated over three millennia. The doyens of each college serve on a central council that manages the affairs of the library. This council is run by an appointed member of the Korran family, descended from the founders of the library. Like most politics in [[Zilargo]], positions in the library involve intrigue, blackmail, and scheming. The current high councilor, Alina Alrene ir'Korran, is a cunning woman who has had to fight off many
competitors within her own house to maintain her
status and position.
Liches are the remains of great [[wizard]]s who embrace [[undeath|undead]] as a means of preserving themselves. They further their own power at any cost, having no interest in the affairs of the living except where those affairs interfere with their own. Scheming and insane, they hunger for long-forgotten knowledge and the most terrible secrets. Because the shadow of death doesn't hang over them, they can conceive plans that take years, decades, or centuries to come to fruition.
A lich is a gaunt and skeletal humanoid with withered flesh stretched tight across its bones. Its eyes succumbed to decay long ago, but points of light burn in its empty sockets.
A lich is created by an arcane ritual that traps the [[wizard]]'s soul within a phylactery. Doing so binds the soul to the mortal world, preventing it from traveling to [[Dolurrh]] after death. A phylactery is traditionally an amulet in the shape of a small box, but it can take the form of any item possessing an interior space into which arcane sigils of naming, binding, immortality, and dark magic are scribed in silver.
With its phylactery prepared, the future lich drinks a potion of transformation—a vile concoction of poison mixed with the blood of a sentient creature whose soul is sacrificed to the phylactery. The wizard falls dead, then rises as a lich as its soul is drawn into the phylactery, where it forever remains.
When a lich's body is broken by accident or assault, the will and mind of the lich drains from it, leaving only a lifeless corpse behind. Within days, a new body reforms next to the lich's phylactery, coalescing out of glowing smoke that issues from the device. Because the destruction of its phylactery means the possibility of eternal death, a lich usually keeps its phylactery in a hidden, well-guarded location.
Destroying a lich's phylactery is no easy task and often requires a special ritual, item, or weapon. Every phylactery is unique, and discovering the key to its destruction can be a quest in and of itself.
The spellcaster touches one object that is no larger than 10 feet in any dimension. For up to an hour, the object sheds bright light in a 20-foot radius and dim light for an additional 20 feet. The light can be any color the spellcaster chooses. Completely covering the object with something opaque blocks the light. The spell ends if cast again or dismissed.
A scholar who researches the [[elf–dragon wars|Elf-Dragon Wars]], or
who manages to find records of the conflict that destroyed [[Xen'drik]], cannot help noticing that the [[dragon]]s fought as a disciplined force... as an army,
not merely a band of individuals. This break with draconic isolation was the work of the Light of Siberys, a name used both for a [[geographic region|Light of Siberys (region)]] in [[Argonnessen]] and for the [[dragon]]s who live there. These soldiers
have stood ready since the end of the [[Age of Demons]]. They guard the prisons of the [[overlord]]s. They maintain the borders of Argonnessen itself. And when the time comes for war, they organize the other dragons into a united force, bringing tactics and discipline
to the battle.
Little truly threatens [[Argonnessen]], but the Light of Siberys has faced plenty of challenges. The Soldiers of the Light carry out periodic, limited attacks on [[Aerenal]]—perhaps reconnaissance, perhaps training exercises, always short of full-scale invasion. The Light pursues the [[Talons of Tiamat]], an activity that has
become far more frequent of late. These militants
have dealt with a number of other threats to Argonnessen that the people of the wider world have never even heard of, including planar incursions from both
[[Fernia]] and [[Risia]]. The Light of Siberys maintains an order of impartial mediators, whom other dragons can call on to attempt to resolve disputes. Finally, it
is the Light of Siberys that patrols the longest border of Argonnessen—anyone who passes across [[Totem Beach]] must face the Soldiers of the Light.
Although [[dragon]]s of the Light of Siberys have mastered fight operations in large numbers, under normal circumstances they operate in squads of two to five, with the oldest dragon usually serving as squad leader. Dragons of all colors and all ages serve in the Light. Rank is based on age and service; it is possible for a dragon to be placed in command of an older comrade, if he has superior military skills. However, this rank holds no significance outside the Light of Siberys. The [[Conclave]] can grant the Light authority to act in its name; otherwise, the dragons of the Light hold no special jurisdiction over other dragons.
The Eternal Flame of the Light of Siberys is the Lightkeeper [[Dolarashynach]].
The Light of Siberys is the stronghold of the [[army|Light of Siberys]]
of [[Argonnessen]] that bears the same name. This land
still bears scars from the battles during the [[Age of Demons]]. It was the seat of [[fiend]]ish power in Argonnessen in the first age, and ruins built by twisted
[[rakshasa]] hands are still found across the territory,
!! Industries
The [[Light of Siberys]] maintains a host of armories and
arcane workshops in its fortresses. It has been creating
tools of war for nearly a hundred thousand years. The
forges of [[Verthicha'vivex]] produce weapons and armor
for the [[dragonborn]] and nondragon allies of the [[dragon]]s, and for those
dragons that choose to fight in [[humanoid]] form. Other
dragons create [[magic item]]s and lesser artifacts that can
be used by dragons in battle. Much of the manual labor
is done by [[dwarves|dwarf]] and [[giant]]s, but [[flames of the forge|flame of the forge]]
develop designs and provide the spell power needed to
craft [[magic item]]s.
Despite this strong industrial program, the Light of Siberys rarely exports any of its goods. All are needed for
the task at hand... or the battles to come.
!! Life and Society
The Light of Siberys is made up of [[dragon]]s of all colors
and ages. Although some of the [[dragon]]s are “trueborn”
or “born in the Light”—to families that have served the
cause for generations—the majority of the young dragons
come from the [[Thousand]]. Young adult dragons of the
Thousand are forced to spend fifty years in the [[Vast]] or
serve for fifty years in the Light of Siberys before they
can return to claim land in the Thousand. Some choose
to remain after the term is up, but life in the Light is
intense, dangerous, and often thankless. Moreover, it
clashes with the independent streak that runs through
the psyche of the dragon. Most are glad to return to the
peace of the Thousand.
A soldier of the [[Light|Light of Siberys]] is dedicated to his duty.
Missions abound, from patrolling the skies to standing watch over the [[Pit of Five Sorrows]] to hunting down the [[Talons of Tiamat]]. Young adults might be frivolous,
particularly those forced to work for the Light by the customs of the [[Thousand]]. Any adult or older [[dragon]] who chooses to abandon the safer life of the Thousand
for the deadly duty of the Light, however, is a stern and
implacable foe.
!! Government and Politics
The [[dragon]]s of the [[Light of Siberys]] follow a strict chain
of command. Although they normally patrol in squads of five or fewer, they are trained to
operate in large numbers, and even the lowest-ranking officers, the Lanterns of Siberys, are trained to organize other dragons in times of war. Currently five dragons hold the rank of Glorious Flame. Only one Eternal Flame exists, the Lightkeeper [[Dolarashynach]], and she guides the Soldiers of the Light from [[Verthicha'vivex]], the Mountain of Victory.
For the most part, the dragons who serve the Light of Siberys are deeply devoted to their cause. However, exceptions exist. Some simply develop a taste for power
and influence. Others are corrupted by the fiendish
presences they combat. Regardless of the reason, a few
dragons have sought to use their rank within the Light
for their own personal benefit. Indeed, it could be that
one of the current Glorious Flames is waiting for the
right moment to help [[Dolarashynach]] move on to her
eternal reward.
!! Nondragons in the Light of Siberys
The nondragons found in the Light of Siberys are closely
tied to the military efforts of the order. The [[stone giant]]s and [[dragonborn]] serve as the backbone of the nondragon army and also help with the construction of fortifications and other large-scale projects. The [[dwarves|dwarf]] are largely dedicated
to forgework and mining. A force of [[hobgoblin]]s and
[[bugbear]]s, descended from warriors of [[Dhakaan]], have
maintained the martial discipline of the empire; while their empire has fallen, and they have been cut off from the [[Uul Dhakaan]], they are sworn to battle the horrors of [[Khyber]]. A few [[human]]s and others from the city of [[Io'lokar]] have joined with the Light. In so doing, they hope to assuage any doubts the [[Conclave]] might have about
their loyalty.
Unless foreigners can successfully pass as nondragons in the service of the Light, they are met with hostility. This territory is filled with dangerous sources of power and strongholds of the [[Talons of Tiamat]]—it is a bad place to be a trespasser.
!! Important Sites
The [[Light of Siberys]] maintains watchtowers across this land, along with five fortresses and the mountain keep [[Verthicha'vivex]]. A watchtower is a tall pillar of magically reinforced stone with an aerie near the top. Limited barracks are located at the base for nondragon troops, but only fliers can reach the upper chambers. Architecture is simple and functional, blending magic and expert stonework. Beyond these fortifications, the region mixes wilderness with traces of the terrible wars of the [[Age of Demons]].
<<list-links-article "[tag{!!title}category[location]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>
!! Adventure Seeds
The Light of Siberys is an immensely dangerous place for adventurers; it’s just a question of whether they’re killed by [[dragon]]s, [[fiend]]s, or cultists. However, amazing secrets and treasures are hidden in the ruins of the [[Age of Demons]]. Beyond that, what wonders have the dragons produced in their hidden forges? For those
who can brave the many dangers, the rewards should
be astonishing.
''Haunted Weapon:'' A tablet dating back to the [[Age of Demons]] tells the story of [[Katashka]] the Gatekeeper and the [[Harvest of Pain]]. The tablet suggests the presence of an artifact weapon of immense power, never recovered because the [[dragon]]s couldn’t face the [[ghost]]s haunting the field. Can the party find a way into the depths to recover the blade? And is the weapon a tool that can be turned to good, or is it pure evil?
''Sorrow’s Path:'' To destroy a deadly artifact, the party must shatter it atop [[Tiamat]]’s crystal at the very bottom of the [[Pit of Five Sorrows]]. Can the PCs convince the [[dragon]]s to aid them in their quest, or will the [[rakshasa]]s laugh as heroes and dragons do battle?
The head of the mace is shaped like a sunburst and made of solid brass. Named //Lightbringer//, this weapon glows as bright as a torch when its wielder commands. While glowing, the mace deals radiant damage to [[undead]] creatures.
Lightfoot halflings can easily hide from notice,
even using other people as cover. They are inclined to be
affable and get along well with others.
Lightfoots are more prone to wanderlust than other
halflings, and often dwell alongside other races or take
up a nomadic life.
On a small rocky island in the [[Harbor]] stands [[Stormreach]]’s lighthouse, another remnant of ancient [[giant]] architecture and magic. Believed to be almost as old as the
[[Emperor]], the lighthouse’s gleaming crystal slowly turns,
casting its light out to sea and then across the city.
Strangely, the lighthouse building does not contain
any rooms or stairs, being made of solid stone, except
for the ground floor and cellars. These chambers have
been claimed by ''Eldamir Fallowcrest'', who maintains
them as his private haven and library. He is paranoid in
his defense of his books, and though he allows visitors
to examine them one at a time, he hovers over their
shoulder. At the first sign of trouble, he locks down the
library and activates traps to secure his collection.
When affixed to the mast of a ship, this lantern flashes red
when the ship comes within 120 feet of land or rocks that
break the water's surface. The lantern can be seen from 60
feet away but produces no light to see by.
''Sovereign:'' [[Dol Arrah]]
As [[Siberys]] fought [[Khyber]], the lightkeeper stands against Khyber’s offspring and other forces that threaten [[Eberron]]. Guardians who watch over the resting places of [[fiend]]s often follow this path. Lightkeepers place great value on personal honor and sacrifice.
A stroke of lightning forming a line 100 feet long and 5 feet wide blasts out from you in a direction you choose. Each creature in the line must dodge or be electrocuted. The lightning ignites flammable objects in the area.
This spell can be upgraded to legendary-tier for an even more destructive effect.
The wondrous lightning rail system once linked the
far reaches of the Kingdom of [[Galifar]], prior to the [[Last War]]. Now the system is divided, split into eastern and
western circuits. Reestablishing the [[conductor stone]]
paths across [[Scions Sound]] and the [[Mournland]] is often
discussed in the halls of power in the [[Five Nations]], but
formidable challenges are involved.
!! How It Works
A lightning rail train is made up of an [[elemental vessel]]
linked to a series of connected carts, all of which float
about 5 feet off the ground. Each cart, similar in form
to a large wagon with no wheels, has a [[conductor stone]]
embedded in its underside. A corresponding set of conductor stones laid out in a line on the ground interacts
with the stones in the carts to form a rail for the train to
follow. Lightning arcs between the two sets of stones,
accounting for the system's name.
The elemental vessel at the front of the train, called
a crew cart, holds a bound air [[elemental]] that propels
the train along its route at a speed of about 30 miles per hour. The elemental appears as a ring of lightning
encircling the crew cart while the train is in motion. A
bound air elemental can move a train of up to ten carts
without obvious strain, and most trains are configured
accordingly.
The other carts that make up the train have various
purposes. A typical train has a crew cart at each end,
with two cargo carts, four passenger carts, and two
lounge carts in between. Doors at both ends of each cart
enable crew and passengers to walk from one to the
next, even while the train is in motion. Both crew carts
are identical, except that the bound [[elemental]] in one is
suppressed. On the return trip, the roles of the carts and
the states of their elementals are reversed.
Specialized carts of other sorts vary in configuration
depending on their purpose and the degree of luxury
afforded to them. Some have solid sides and roofs, while
others are covered only with canvas.
''//Operation.//'' The vessel's pilot, a House [[Orien]] [[dragonmark]]ed heir, stands at the helm, high atop the crew cart, beneath the [[elemental binding]] struts. The pilot controls
the [[elemental]] and communicates with it during the trip,
watching the path ahead through broad windows that
encircle the helm platform.
The placement of [[conductor stone]] lines dictates where
a lightning rail train can travel, but the pilot still must
make operational decisions as the coach moves from
one city to the next. The pilot controls the vessel's speed
based on conditions around the train. When conductor
stone lines split, as they do at various hubs along the
way, the pilot selects the intended route and directs the
[[elemental]] down the correct line.
The crew of a train includes handful of chief stewards overseeing a number of lesser stewards who are
charged with seeing to the needs of passengers and
keeping cargo secured.
!! Lightning Rail Stations
Lightning rail stations, where passengers and cargo can
be disembarked or loaded, are located in or just outside
villages, towns, and cities along the conductor stone
paths. There are no stations in the expanses between
these settlements, and House [[Orien]] rules prohibit lightning rail pilots from stopping anywhere but at a station.
Stations throughout [[Khorvaire]] have a similar look
and feel, to ensure that each one lives up to the high
expectations of House Orien's patrons. White and gold
[[everbright lantern]]s continually illuminate each station.
When a train pulls into the station, loading ramps are
moved into position beside each cargo cart, and stairs
by each passenger cart. The cargo is unloaded from one
side of the train and the passengers from the other.
Individual stations do have distinct touches that reflect
local features. For example, the station in [[Gatherhold]], in
the [[Talenta Plains]], is decorated with traditional [[halfling]]
motifs and offers specialized stables for travelers leaving their [[dinosaur]]s behind. On a larger scale, the station
at [[Passage]], which is the seat of power for House [[Orien]],
is a multistoried structure designed as a monument to
the majesty and storied history of the house.
This actors’ enclave is typical of many in the [[Sunward]] of [[Io'lokar]]—a communal place of study and residence for the [[bard]]s and [[illusion]]ists whose work is
central to Io’lokar’s theatrical traditions. The Lightstorm and other
bardic enclaves have a great interest in the lore of the
outside world, and a party led by a [[bard]] can often seek
lodging in such enclaves while in the city.
A new branch of House [[Tharashk]], the Liondrake’s Roar was established to broker the services of monstrous mercenaries from [[Droaam]].
The group includes soldiers and laborers, and it is through this service that
some of these creatures have become
more common in the wider world.
Thanks to the Roar, [[ogre]] laborers can
be seen hauling goods in many western
cities—places where before the war,
they would likely have been attacked on
sight. A portion of the profits returns to the
[[Daughters of Sora Kell]]; the hags believe that the Roar
will raise Droaam’s standing in the eyes of the world.
The Liondrakes also serve as constables and guards in the [[Calabas]] of [[Graywall]], as well in as the [[Tharashk]] headquarters of [[Zarash'ak]].
<<list-links-article "[tag{!!title}sort[title]]">>
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Little Barrington is a pleasant
residential district. The homes are small but comfortable and well designed, and the inhabitants are
generally friendly and cheerful.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Kenton]] (west); [[Deathsgate]] (northeast); [[Little Plains]] (bridge, north); [[Black Arch]] (below); [[Ocean View]] (above)
The successful middle class of [[Tavick's Landing]] live
in Little Barrington. Overseers from the [[Blackbone Cogs|Blackbones]], junior barristers and aspiring government
functionaries—anyone who can't afford a home in
the [[upper ward]]s but is too successful to live in
[[Kenton]] or one of the lower districts. It is quiet and
peaceful, and frequent patrols by the [[Sharn Watch]]
ensure that it stays that way.
The {{!!title}} is a street gang of
[[halfling]] child pickpockets active in [[Middle Dura]], [[Sharn]]. They aren't directly tied to the [[Boromar|Boromar Clan]] family, but the master of the gang pays a tithe to the
Boromars, and if the Boromars send word to them that
certain targets are to be avoided, the Little Fingers
do so. In return, the Boromars ensure that the [[Sharn Watch]] in Middle Dura largely leaves the Fingers alone.
''District Type:'' [[Halfling|halfling]] encampment<br/>
''Buildings:'' Council hall, temple ([[Boldrei]]), shrine
([[Balinor]]), average lodging (20), average food (37),
average trades (60), average services (40), average
residences (200)<br/>
''First Impression:'' The towers here appear inside-out; instead of open central spaces surrounded by
buildings attached to the outside of a tower, streets
run around the outsides of the towers, giving access
to very low doorways leading to cavelike interiors.
Halflings seem to negotiate these outside ledges with
ease, and so do the [[dinosaur]]s many of them ride.
Great winged reptiles soar between towers, many
with halfling riders on their backs.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Everbright]] (northwest); [[Smoky Towers]] (north); [[Deathsgate]] (bridge, southeast); [[Little Barrington]] (bridge, south); [[Firelight]] (below); [[Platinate]] (above)
Little Plains is not the only [[halfling]] neighborhood in
[[Sharn]], but it is the only district almost entirely inhabited by halflings and the only significant concentration
west of the [[Mournland]] of halfling immigrants from
the [[Talenta Plains]]. Even the architecture suggests
the maintenance of these halflings' traditional ways,
since the towers resemble the city of [[Gatherhold]]
in Talenta. More urbanized halflings live in Little
Plains as well, as do some few members of other races
(primarily [[gnome]]s and some [[kobold]]s).
The top level of Thurias Tower gained the appellation of Little Xen'drik
because of the six antiquities dealers there. The
dealers maintain a tremendous rivalry, each sponsoring expeditions to [[Xen'drik]] and offering the
finest gold of the realm for items brought back from
that far-away land.
Jaster Mekdall ([[elf]]) owns the ''Mekdall Gallery'', which deals in ancient [[elven|elf]] and [[drow]] goods. He is gloomy and frequently moans about being cheated by his customers, but he
charges decent prices.
Haga Wissel ([[human]]) owns ''Echoes of the Past'', which deals in [[magic item]]s with practical uses. She is cheerful and friendly but extremely hard-nosed about prices. She
has been accused of having connections to House
[[Tarkanan]] and even paying burglars to steal items
from other collectors.
Kidro Osanak ([[gnome]]) owns ''Window on Yesterday''. A wizened old gnome, Kidro
harbors a deep resentment toward Haga Wissel, and
though he can't prove it, believes that she has stolen
items from his shop. One of the only dealers in
Little Xen'drik with more interest in the historical
significance contained in his treasures than in their
monetary worth, Kidro often sponsors the most
challenging expeditions.
Biballin Postar ([[halfling]]) owns ''Postar's Jewelry Art Gallery'', which specializes in the adornments of ancient [[Xen'drik]]. He
is absent-minded and keeps completely irregular
hours, but can be counted on to pay the best price
for jewelry related to either the [[drow]] or the [[giant]]s
of the ancient and mostly forgotten kingdoms.
Reina Doiran ([[human]]) owns ''Cloud Antiquities''. Flamboyant and eccentric, she judges items quickly based on her own aesthetic sense rather than their historic value, and
pays more for items that intrigue and appeal to her (particularly [[giant]] artifacts)
than for dusty trinkets of more scholarly worth.
Reina's twin sister, Fista Doiran ([[human]]) owns the ''Doiran Gallery'' (which
once belonged to their parents) and has the opposite personality and artistic disposition. This allows
them to get along amazingly well, and the twins
cooperate in business dealings despite a strong sense
of rivalry.
One of the unusual woods of [[Aerenal]], livewood is a green-colored hardwood with a highly magical nature. When livewood trees are felled, they do not die, though they stop growing. Livewood can be worked like normal hardwood, yet it remains completely alive.
In most respects, livewood is just like other ordinary woods. However, a channeler of [[primal magic]] who can commune wiht plants or command them to grow can interact with livewood as they would any other living plant.
[[Dryad|dryad]]s occasionally make their homes in livewood trees. Such a dryad looks no more kindly upon the felling of her tree than other dryads do, but the felling of her tree does not kill her, nor does it end her dependence on the tree. As a result, dryads can be found within livewood objects, including buildings, furniture, and ships.
Managed by [[Zarzalia Shol d'Phiarlan]], the Livewood Theater is House Phiarlan’s preeminent performance space in the city of [[Stormreach]]. It is built on an ancient amphitheater dating back to the [[Age of Giants]]. Mostly offering up classics of [[Brelish|Breland]], [[Aundair]]ian, or [[Cyran|Cyre]] playwrights, the
Livewood spares no expense and attracts sellout crowds
to its amphitheater four days a week, [[Wir through Sar|Khorvaire calendar]].
The shows are often nostalgia works beating patriotic
drums and offering exiles and expatriates glimpses of
their distant homelands.
Epics from [[Thrane]] and [[Karrnath]] were performed
in the past, but no longer. A few years ago, a large
group of Karrns crashed a performance of //Rainbow Serpents Rising//. Bedlam and bloodshed ensued. Thranes responded in kind two months later during the opening performance of //Ride of the Rekkenmark//. The Livewood’s
manager, [[Zarzalia|Zarzalia Shol d'Phiarlan]], has since banned patriotic
plays from both nations.
This hideous armor is formed from black chitin, beneath which veins pulse and red sinews glisten. To attune to this item, you must wear it for up to an hour, during which tendrils on the inside burrow into you.
In addition to physical protection, this armor also provides the wearer with enhanced reflexes, as well as resistance to necrotic, poison, and psychic attacks.
The armor requires fresh blood be fed to it. This means the wearer must stay well fed and hydrated, or else suffer rapid exhaustion and dizziness.
These symbiotic gloves—made of thin chitin and sinew—pulse with a life of their own. To attune to them, you must wear them for at least an hour, during which the gloves bond with your skin.
While attuned to these gloves, your manual dexterity increases immensely, granting you advantage when performing sleight of hand, playing musical instruments, using artisan tools, or other instances of manual manipulation.
Of all the anomalies that emerged from the magical
cataclysm that created the [[Mournland]], the appearance
of living spells might be the most mysterious. In some
unknown fashion, the magical energy unleashed during
the [[Last War]] caused [[spell]] effects to take on sentience. A
living spell appears much like a normal spell effect, except that its magical energy endures indefinitely.
Living spells haunt the [[Mournland]] and other areas
blasted by the [[Last War]], somehow subsisting on ambient magical energy as they writhe and across the landscape. Though they have no need for sustenance, they attack any creatures they come into contact with, lashing out indiscriminately with their corrupted magic.
Lizardfolk are tribal reptilian humanoids that inhabit the jungles and swamps of [[Q'barra]] and [[Xen'drik]]. Their race is as ancient as the [[giant]]s and the [[dragon]]s, having originated during the [[Age of Demons]]. The most common subspecies of lizardfolk, //tilsin//, are between 6 and 7 feet, weigh around 250 pounds, and have green, gray, or brown scales. They also have a 3-4 foot long tail, which they use for balance. They are expert swimmers and can hold their breath for well over ten minutes.
!! Lizardfolk of Q'barra
The vast majority of lizardfolk of the jungles of Q'barra are part of the Masvirik'Uala, or [[Cold Sun Federation]], though some have fallen to the corruption of [[Haka'torvhak]] and have joined the ranks of the [[Poison Dusk]]; many of these have been transformed by [[Masvirik]]'s power into hulking [[blackscale]]s. In their unique dialect of draconic, lizardfolk of [[Q'barra]] call their species "tsa", which is also their word for "we" or "us".
The tsa are a primitive folk. They do not forge metal tools. They fashion their armor from
hides, and their weapons are made from wood, bone, and [[dragonshard]]s. Despite their primitive appearance, lizardfolk mystics are skilled at the art of enchanting weapons, so Masvirik’Uala champions may have powerful magical weapons and dragonshard augments.
To learn more about Q'barran lizardfolk culture, see [[Cold Sun Federation]].
These resilient and proud fish-folk have endured war, slavery, and mistreatment at the hands of other aquatic creatures. They dwell in submerged tribal communities along seacoasts, and hunt both above and below the water. Their bodies are covered in fine scales of olive green, sea green, and pale yellow. They have toothless mouths and small gill fins where ears would be on another [[humanoid]].
Locathah are subjects of both the [[Valraean Protectorate]] and
the eastern regions of the [[Eternal Dominion]]. The locathah
never had a civilization as advanced as the [[sahuagin]], and
have been subjects of the Dominion for thousands of years.
However, there could be bands of free locathah on the
edges of the Dominion, potentially hiding in the territorial
waters of [[Khorvaire]].
!! The Five Plateaus
<ul>
<$list filter="[tag[Sharn]category[location]tag[quarter]] -[tag[Sharn]tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>category[location]] -[tag<currentTiddler>tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>category[location]] -[tag<currentTiddler>tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>category[location]] -[tag<currentTiddler>tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>category[location]] -[tag<currentTiddler>tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
!! Above and Below
<ul>
<$list filter="[tag[Sharn]category[location]!tag[quarter]] -[tag[Sharn]tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>category[location]] -[tag<currentTiddler>tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>category[location]] -[tag<currentTiddler>tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>category[location]] -[tag<currentTiddler>tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>category[location]] -[tag<currentTiddler>tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
This lock appears to be an ordinary lock and comes with a single key. The tumblers in this lock magically adjust to thwart burglars. Attempts made to pick the lock have disadvantage.
[[Stormreach]]’s most infamous ward, Locksmith Square
is home to many of the city’s more colorful and popular
attractions. The [[Marketplace]] is the hub of activity during
the day, but Locksmith Square takes over at night.
Although other districts, such as [[Respite]] and the [[Temple District]], offer good food or an evening’s entertainment,
many sailors, laborers, and adventurers would rather
spend their leisure time near the [[Red Ring]], where the
atmosphere is riotous and the prices are low.
Many craftspeople maintain shops here, from cobblers to locksmiths. The ward’s name arose in the modern city’s early days when the Kandars, a family of dwarf
locksmiths who curried favor with the [[Amanatu family]],
established their business by the great silver walls.
!! Noteworthy Locations
* the [[Black Wrack]]
* [[Eldred's Pool]]
* the [[Red Ring]]
* [[Shadows]]
This magical plant is one of the primary crops cultivated by settlers of [[Xen'drik]]. Long corn is imbued with supernatural qualities that slow its natural decomposition. Along with [[gurk'ash]] meat, it is the primary component of rations that never spoil, a boon for long voyages.
A long rod is a more portable version of a [[siege staff]], measuring
around 8 feet long. Including the stand required to brace it, it
weighs close to 350 pounds.
It takes five actions to set up a long rod, and the same to tear
down for transport. Once set up, it takes one action to prime
the rod, one to aim it, and one to fire it.
Any offensive spell can be cast through the long rod. The range is magnified by a factor
of 3, with a long range of up to 6 times the spell's standard
range. The spell's area of effect is increased to 150%. If the spell
normally affects a single target, it instead affects a 10-foot-radius
sphere.
''Date: '' [[26-28 Vult|Khorvaire calendar]]
It's said that the power of the [[Shadow]], the sinister deity of the [[Dark Six]], is at its height during these three
nights. Careful people spend this time indoors with
friends, but those who relish the darkness might decide
to take to the streets to prey on the weak and foolish.
''District Type: ''Apartment townhomes<br/>
''Buildings:'' Average residences (40), poor
residences (220)<br/>
''First Impression: ''Most of the towers in this residential district have stairs that wrap around the
outside of the buildings. The people go about their
business with quiet determination, and keep a suspicious eye on any strangers.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Stoneyard]] (southeast); [[High Hope]] (above)
Longstairs is a quiet residential district, and its inhabitants like it that way. The people of Longstairs are
primarily [[human]] and [[dwarf]] commoners, with a few
experts and [[magewright]]s mixed in. These citizens go
out of their way to maintain the stability of the neighborhood, and anything disruptive is quickly met with
unified opposition. The apartments in Longstairs
are reasonably priced and well maintained. However,
adventurers who settle in Longstairs may have to make
an extra effort to fit in; characters that engage in wild
antics may be run out of the neighborbood.
Longtooth [[shifter]]s are fierce and aggressive, but they
form deep bonds with their friends. Many longtooth shifters have canine traits that become more pronounced as
they shift, but they might instead draw on tigers, hyenas,
or other predators.
While the [[City Council|Sharn Council]] holds the true power in
[[Sharn]], the Lord Mayor is still a force to be reckoned
with. The Lord Mayor represents the interests of
Sharn in any direct contact with the [[Brelish|Breland]] Crown,
including interaction with the [[King's Citadel]]. He
also appoints the lesser officers of the city and oversees all issues of daily administration. He has the power to establish trade agreements with foreign governments, to pardon criminals, and to order arrests and even executions. His worship ''Cathan ir'Demell'' has been Lord Mayor of Sharn for twenty years, and he enjoys the luxuries and privileges of his position. He is unlikely to take any actions that would anger [[Javan Tomollan]] or [[Bestan ir'Tonn]], his strongest supporters in the council, and he
usually consults with these two before making any
major decisions.
The Lord of Blades is a [[warforged]] warlord who has broken all ties with his former masters. He has established
a nation for his people deep in the [[Mournland]], centered
in a great fortress where warforged from all over [[Khorvaire]] can come and feel a sense of belonging. No one
knows what the Lord of Blades plans for his followers,
but many fear that he intends to build a legion of warforged zealots, primed to march from the Mournland to
unleash destruction on their former masters.
Some tales assert that the Lord of Blades led the
warforged armies of [[Cyre]] in the [[Last War]]. Others cast
him as a newer warforged, perhaps the last to come out
of the [[Cannith]] [[creation forge]]s before the [[Thronehold Accords|Treaty of Thronehold]] led to their dismantling. One story claims the Lord of Blades caused the destruction of Cyre and warns that he plans to repeat the Day of [[Mourning]] in each of the remaining [[Five Nations]]. Whatever the truth, he has become a beacon for warforged everywhere.
!! The Creed of the Blades
The Lord of Blades runs his
society like a military dictatorship with religious
undertones. Calling themselves the Blades, most of
his followers name themselves after bladed weapons,
weapon parts, or the results of using such weapons.
The Blades value no spiritual
truths, and they revere no distant god. To them, the
Lord of Blades is divine. They empower him with
their devotion, and he gives them purpose and direction. His sermons and statements are divine truths, which they memorize and repeat as prayer-like sayings or battle oaths. A few travel in service of their lord, tasked with
retrieving items and relics related to the [[warforged]].
Others go abroad to proselytize to warforged, particularly those indentured in [[Karrnath]] and [[Thrane]].
The Blades believe themselves superior to any fleshbound creatures. Embracing their soldierly and [[construct]] aspects, they live as they were created—as
instruments of conquest and violence. They kill non-[[warforged]] without remorse. Willingly they die to attain their ends, and they suffer none to leave their
ranks except through death.
These warforged believe they are destined to lord
over [[Eberron]], for they alone are fit to do so. To accomplish this, they intend to carve a nation from [[Cyre]]’s corpse. Then they’ll conquer the rest of [[Khorvaire]], destroying any who oppose them and ruling over those who surrender.
!! Headquarters
The Lord of Blades' bases of operations are unknown; theories include [[Eston]], [[Making]], and [[Whitehearth]]. Within his hidden enclave, the Lord of Blades controls a damaged [[Cannith]] [[creation forge]]. Although he is an [[artificer]] of some
skill, the Lord of Blades hasn’t mastered the forge or
accomplished a complete set of repairs. Still, he uses it
slowly and carefully to create new [[warforged]]. Despite
his care, some warforged emerge from this forge misshapen in body, mind, or both.
Evil entities spawned at the dawn of time still haunt
[[Eberron]]. The cities raised by those ancient [[overlord]]s
are now only ashes, but the Lords of Dust still dream of
restoring their primordial dominion. These [[fiend]]s bide
their time in an inconceivably long game, sparring with
the [[dragon]]s of [[Argonnessen]] as they manipulate events
in order to fulfill the words of the [[Draconic Prophecy]] in
a way that will bring them victory.
Though the Lords of Dust are mighty enough on their
own, they serve greater masters known as the [[overlord]]s. Unfathomably powerful [[fiend]]s, the overlords were bound at the end of the [[Age of Demons]] by the
power of the [[Silver Flame]], and an overlord can be released from this binding only if doing so can be made to
fulfill the Draconic Prophecy. Every [[fiend]] spawned from
[[Khyber]] owes fealty to one of these overlords.
In many ways the Lords of Dust are a reflection of the
[[Chamber]]. Each group is trying to steer the fulfillment
of the Prophecy to serve its own ends. The goal of the
Lords of Dust is to release the overlords from their
bindings and loose them upon Eberron in a new age of
darkness. Despite this unified goal, the Lords of Dust
operate as an alliance of like-minded cabals rather than
a single monolithic organization. Each cabal serves its
particular overlord above all others, and the conditions
that release one overlord could actually contradict those
that would free another.
Accomplished shapeshifters, the Lords of Dust have
agents spread across [[Khorvaire]]. Some might wonder
why, with all their talents, they haven't tried to conquer
the world already. The reason is that they have no interest in ruling this world; they want to return it to the state of unnatural glory that existed before. Their only
interest in [[humanoid]] races is in directing them and
their affairs down the paths necessary to release their
overlords; aside from that, dealing with mortals is a tedious chore.
!! The Lords of Dust and the War
The Lords of Dust took part in the events of the [[Last War]] whenever they saw opportunities to further their dark version of the [[Prophecy|Draconic Prophecy]]. It remains difficult to identify what events might have been manipulated by
one of these fiends, because their schemes take so long
to play out. Far in the future, it might become apparent
that a seeming victory for the forces of good, or a battle
averted that spared hundreds from death was ultimately
the first step in an [[overlord]]'s release. (For instance, a
soldier who was otherwise fated to die in the battle that
was avoided goes on to tempt a good-hearted priest into
becoming corrupted.)
In the years since the [[Thronehold Accords|Treaty of Thronehold]], the Lords
of Dust continue on as they ever have, advancing one
small step at a time.
!! Demon Ruins
The Lords of Dust maintain a variety of safe houses and
sanctums across [[Eberron]], but their most tightly bound
locations are the ruins left behind from the Age of Demons, scattered across the [[Demon Wastes]]. A demon ruin is an echo of grandeur swathed in flame and ravaged by time. Despite the rich appointments and impeccable construction evident even in the broken remains of the building, the place carries the unmistakable air of anguish and torment.
The table below offers some reasons why characters might risk death in the [[Demon Wastes]].
| !<<dr d4>> |!Adventure Goal |
| 1 |Make a desperate request for aid from a Lord of Dust who is, by all accounts, an enemy of the characters' adversary. |
| 2 |Escort an innocent who is prophesied to destroy the Lord of Dust to the ruin, and there confront the [[fiend]]. |
| 3 |Carry an artifact to the river of black lava that runs through the demon ruin, which is the only place where the item can be truly destroyed. |
| 4 |Gather obsidian shards from the ruin as components for a rare spell. |
!! Lords of Dust NPCs
Most of the Lords of Dust are [[rakshasa]]s, but any sort of
fiend—[[devil]], [[demon]], or otherwise—could be part of this
organization. Such [[fiend]]s are spawned in [[Khyber]] and
aren't actually from the Outer Planes. These fiends generally work through a wide network of duped pawns and
indebted servitors.
Each [[overlord]] has a chief servant, and these leaders
meet in the ruins of [[Ashtakala]] in the [[Demon Wastes]].
The overlord [[Rak Tulkhesh]]'s speaker is [[Mordakhesh]] the Shadowsword.
The overlord [[Sul Khatesh]] is served by the [[rakshasa]]
[[Hektula]], also known as the First Scribe. [[Durastoran]] the
Wyrmbreaker is the speaker of [[Bel Shalor]], the overlord
said to be bound in [[Flamekeep]].
The table below describes some possible antagonists who might cross paths with adventurers.
| !<<dr d6>> |!Lords of Dust NPC |
| 1 |A virtuous [[paladin]] is hunting and destroying those who might one day thwart the Lords of Dust. |
| 2 |A possessed lord or lady spreads corruption throughout the noble house. |
| 3 |A [[wizard]] who sought to accelerate their own power by making a dark bargain must now pay the price demanded by their sinister patron. |
| 4 |A powerful [[demon]] has corrupted the local ruler in the name of its [[overlord]]. |
| 5 |A succubus or incubus tempts a mercenary warlord to engage in greater and greater battles. |
| 6 |One of the characters' most trusted allies or servants turns out to be a [[rakshasa]] in disguise. |
!! Lords of Dust Campaign Themes
The Lords of Dust have two basic goals. The first is to encourage activities that strengthen the influence of their overlords. [[Rak Tulkhesh]] embodies war and conflict, and his minions are always eager to cause strife. The servants of [[Sul Khatesh]] entice cruel and selfish people to become [[warlock]]s, drawing mystical powers
from their mistress. These activities won't release an [[overlord]], but they help to sustain it.
To release an overlord, the Lords of Dust must ensure that the [[Prophecy|Draconic Prophecy]] unfolds along a specific path. Often, following this path requires specific mortals to do specific deeds. For example, one shred of the Prophecy could stipulate that King [[Boranel|Boranel ir'Wynarn]] has to be killed by one of the characters. The Lords of Dust could easily kill Boranel themselves, but that wouldn't be sufficient to bring about the desired end; somehow, they'll have to trick the adventurer into doing it.
Because the Lords of Dust so often work through pawns and minions, it might take a while for adventurers to realize that an apparently unconnected series of encounters early in a campaign are actually all part of the complex schemes of the Lords of Dust. These fiends are so devious that it is often impossible to discern a pattern to their actions until their plans have come to fruition and the connections have finally been made clear. (You could retroactively decide that what you intended as unconnected encounters were all part of the
plan from the beginning!)
!! Lords of Dust Adventure Hooks
The Lords of Dust Adventure Hooks table presents some ways to get the characters into a fiendish
adventure.
| !<<dr d6>> |!Lords of Dust Adventure Hook |
| 1 |A retainer who died recently shows up again, as if nothing happened and with no memory of having "died," or of the events immediately preceding their supposed demise. |
| 2 |Agents of the [[Chamber]] show up intent on murdering the characters, because their recent actions have unwittingly been at the behest of a Lord of Dust and have twisted a portion of the [[Prophecy|Draconic Prophecy]]. |
| 3 |A trusted mentor changes their tune abruptly and begins sending the characters on unusual tasks. |
| 4 |Everyone the characters used to deal with in town suddenly acts as if they've never seen the characters before. |
| 5 |Increasingly vicious [[fiend]]s attack the camp every few nights. |
| 6 |Agents of a Lord of Dust apologetically kidnap a character's loved one, politely requesting that the character perform a series of favors to secure the hostage's release. |
The Lords of the Hunt are a small but tight-knit cabal of some of [[Xen'drik]]’s most
deadly hunters. Their headquarters is the [[Tusk and Talon Lodge]] in [[Stormreach]].
The Lords are not common hunters. They have no interest in depopulating the [[dream serpent]]s or driving speckled [[dire wolves|dire wolf]] to extinction for profit. These master slayers seek only the most fearsome and dangerous prey: monsters that tower over the
treetops, old rogue [[dragon]]s ensconced in their lairs, and sanity-shattering formless terrors lurking in the darkest reaches of the [[jungles|Jungles of Xen'drik]]. Lords of the Hunt seek only monsters of legend that terrorize the local tribes as well as encroaching [[Stormreach]]er explorers.
The Lords include a bevy of bored nobles who hunt dangerous creatures for sport or to chase away ennui, or for some ridiculous sense of status among their rich peers. A number of the Lords are thrill junkies who only feel alive when they are facing down a 50-foot monstrosity. Some, though, are devoted monster-hunters who kill in revenge for the massacre of their family or village by a rampaging beast, or some other similarly traumatic event.
!! Notable Members
<<list-links-article "[tag{!!title}category[person]sort[title]]">>
!! Legendary Monsters
The wilds of Xen’drik teem with danger. Savage [[drow]], hulking [[giant]]s, and all manner of beasts infest the continent’s [[jungles|Jungles of Xen'drik]], wetlands, and mountain heights. But even among these dangers, a few individual monsters’ predations draw considerable attention. Time and again, these menaces slaughter explorers, adventurers, and even the shrewdest and most mighty members of the Lords of the Hunt.
Tales of expedition survivors have made these [[monstrosities|monstrosity]] living legends. Lords of the Hunt idle away nights discussing strategies to hunt down these
evils, or swapping stories of their sightings over the dying embers of a campfire. Anyone who brings back one of these legends as trophies is guaranteed the respect and awe of the Lords of the Hunt.
* [[Mulraargo]]
* [[Old Silverclaws]]
* [[Lurking Two-Maws]]
* [[Glimmerdoom]]
* the [[Cinder Sisters]]
''Sovereigns:'' [[Aureon]], the [[Shadow]]
Magic flows through every [[dragon]]’s blood. The loredrake devotes their life to harnessing this power and understanding the mysteries of magic. The most
accomplished priests of the [[Dragon Gods]] and students of the [[Draconic Prophecy]] are typically loredrakes, and it is the dragons of this path that uncovered the greatest mysteries of [[arcane magic]]. Most dragons have great respect for loredrakes, but not all loredrakes are noble creatures. Darkness abides in magic along with light,
and a loredrake must decide whether he answers the call of the [[Shadow]].
Lorghalan is a large island in the [[Lhazaar Principalities]]. The island is dominated by a powerful [[manifest zone]] to [[Lamannia]].
Lorghalan was originally settled by [[gnomish|gnome]] explorers fleeing [[Zilargo]] after the founding of the [[Trust]]. The island's proximity to the primal forces of [[Lamannia]] cause the land itself to seem alive. Lorghalen has the highest concentration of [[elemental]]s anywhere on Eberron with the exception of the [[wild zone]]s of [[Sarlona]]; in fact, the nearby [[Hammer]] island is actually a gigantic earth elemental. The leaders of the expedition to the island had long studied elementals, and had developed [[primal magic]] techniques to live in harmony and even convince the spirits and beasts of the wild island to work with them. Rather than [[binding elementals|elemental binding]], the Lorghalen stonesingers communed directly with the spirits and convinced them to help. A Lorghalen ship might be literally pushed by a cooperative water [[elemental]], not powered by a bound one as in an [[elemental galleon]].
Today, the descendants of these explorers are recognized as an independent principality. The [[gnome]]s of Lorghalan share much in common with their [[Zil|Zilargo]] cousins, with one key exception: Lorghali value freedom and honesty above all, and despise secrets. All gnomes of the island consider themselves to be of one house, so one may introduce themselves as "Tara Tan Lorghalen".
The Lorghalan Forest spans most of the area of the island of [[Lorghalan]] in the [[Lhazaar Principalities]].
Not long ago, an ancient evil arrived in [[Stormreach]] in search of its destiny. The [[rakshasa]] [[Kashurashan]] has long watched over the city. Recent
reports he received suggested that a great power bound
in the depths was finally stirring, so he sent for Lorishto, a [[rakshasa]] of the powerful ak’chazar caste, to establish contact with that entity, known as the [[Scar That Abides|Sakinnirot]].
Soon after his arrival in [[Stormreach]], Lorishto
set his sights on what he felt was the perfect identity
to assume: a local innkeeper named [[Harysh]]. Rather
than kill the [[shifter]], he chose merely to incapacitate
her in the event he needed to use her as leverage at
some future date. Her soul remains trapped in a
Khyber [[dragonshard]] that he keeps in the care of his
two most powerful [[mummies|mummy]]. Lorishto has probed
her mind and searched his belongings at length, and he understands her more than well enough to “play” her convincingly. With the stage thus set, Lorishto was free to begin work on the mission for which he was born: the rebirth of his patron [[overlord]], [[Sakinnirot]], the embodiment of the spite and patient rage of the [[Dragon Below|Khyber]].
Prince Lorrister of the [[Heavenly Fleet]] is a planetouched [[aasimar]] of [[Irian]] and [[paladin]] of [[Dol Arrah]]. He appears as a human but for his massive white wings with black tips on the primary feathers, resembling the wings of a pelican. He is dedicated to bringing justice and order to the "uncivilized" [[Lhazaar Principalities]].
Prince Lorrister might come to the aid of player
characters facing the perils of the [[Lhazaar Sea]], sailing to
the rescue like some celestial cavalry riding over the hill.
However, he is likely to ask characters who are indebted to
him to return the favor by striking against one of his many
enemies. He is on a perpetual crusade against evil in the
Principalities, and he recognizes the [[Cloudreavers]] as his
greatest enemies. He also bears a particular grudge against
the [[Emerald Claw]] and actively campaigns in opposition to
that order’s activities.
The other princes scoff at Prince Lorrister’s morals,
but they are leery of his strength. In the future they might
form an alliance to destroy the paladin and his crusaders,
but for now they use their wiles to play him against their
foes. For his part, Lorrister may be idealistic, but he is not
naive, and he remains fully aware of his rivals’ plans.
One of the largest buildings in [[Stormreach]], the Lorsmarch Palace—also called the Throne of Storms—is the [[Storm Lords]]’ seat of power. Diplomats and other high-profile
visitors meet with the lords here, and their [[magistrates|Crime in Stormreach]]
administer justice within the palace’s chambers.
Public executions are held in the square at the base
of the palace steps, one of the few places in the city
where members of the [[Stormreach Guard]] can always
be found. The Storm Lords are said to keep much of
their wealth in vaults beneath the palace, instead of
trusting it to House [[Kundarak]]. If these vaults exist,
they must be heavily guarded.
In a land where a gaze or a song can kill, the
shapeshifting ability of the [[changeling]]s receives little
notice. As a result, these creatures have an easier time
in [[Droaam]] than elsewhere in [[Khorvaire]]. Changelings
are common in [[Graywall]] and the [[Great Crag]], moving
about in their natural forms.
Rumors tell of an entire settlement of [[changeling]]s and [[doppelganger]]s hidden somewhere in [[Droaam]], its location known only to the [[Daughters of Sora Kell]]. The buildings of this place, known simply as Lost, are said
to be giant [[mimic]]s, transforming into cliffs or
trees to deceive the eyes of strangers. The folk of Lost
have mastered a number of powerful rituals, and
some of the greatest unsolved thefts in history are
thought to be their doing.
Lost Isle is an island in the [[Lhazaar Principalities]], located between [[Farlnen]] and the [[Frostfell]].
These districts are peaceful and largely residential; it's the
safest and most pleasant of the lower wards. Goods and
services are largely priced for those with a comfortable
lifestyle, and the [[Sharn Watch]] is plentiful and well paid.
The district of [[Boldrei's Hearth]] has many reasonably
priced inns (most run by House [[Ghallanda]]), and [[Olladra's Kitchen]] has a wide assortment of taverns and
restaurants. [[Myshan Gardens]] is a residential district
that caters to affluent artists, while [[Vallia Towers]] has a
large community of [[half-elves|half-elf]].
!! Districts and Noteworthy Locations
* [[Boldrei's Hearth]]. A haven for travelers, this district contains reliable inns ranging from modest to comfortable quality.
* [[Granite Halls]]. A mercantile district with a large number of art galleries.
* [[Myshan Gardens]]. Myshan Gardens is a downtown residential district.
* [[North Towers]]. A mercantile district with a large number of bookstores.
* [[Olladra's Kitchen]]. Neither the best nor worst Sharn has to offer, Olladra's Kitchen is home to a wide number of taverns and restaurants of modest to comfortable quality.
* [[Vallia Towers]]. Many half-elves call this residential district home.
The aptly named [[Precarious]] district in Lower Dura
leans out over the edge of the cliffs, and the Skydocks—a system using gigantic arcane cranes and levitation—carry material up from [[Cliffside]] and the docks.
Precarious is also filled with warehouses that hold
these goods. Because Precarious plays an important
role in the economy of the city, it's the only district in
Lower Dura where the [[Sharn Watch]] maintains a significant presence.
The rest of Lower Dura, in stark contrast, has been
left to rot. Ignored by the Watch, it is the domain of
gangs and crime lords. The inhabitants of the ward are
often protected from violence by their criminal connections or by virtue of having nothing worth stealing, but
adventurers ought to tread lightly here, especially those who display the trappings of a wealthy lifestyle.
There was a time when Lower Dura was the heart
of [[Sharn]], and remnants of this glory remain. The [[Silvermist Theater]] in [[Callestan]] was built to entertain nobles. The ward boasted manors, temples, and a garrison
for the watch. But all of these edifices were abandoned
long ago, and now most are home to nothing but squatters and vermin.
The district of [[Callestan]] is a nexus of sorts, where all
the major criminal powers of Sharn have a stake.
The district of [[Fallen]] is a haunted ruin; this temple
district was abandoned after it was struck by a falling
tower.
[[Malleon's Gate]] is home to the [[goblinoid]]s of Sharn, along
with other monstrous immigrants from [[Droaam]] and
[[Darguun]]. The district can be an especially dangerous
place for [[halfling]]s or anyone tied to the [[Boromar Clan]].
[[Oldkeep]] and [[Gate of Gold]] are wretched tenement
districts. A significant halfling community lives in the
district known as The [[Stores]], which is also a stronghold
for the Boromar Clan.
!! Districts and Noteworthy Locations
* [[Callestan]]. Home to an assortment of squalid and poor businesses, Callestan is a nexus for criminal activity and known as a stronghold of the [[Boromar Clan]].
** The [[Anvil]]. This fading [[Ghallanda]] inn struggles to maintain its poor to modest quality. It's known to be under the protection of the Boromar Clan, which makes it one of the safest establishments in Lower Dura.
** The [[Crooked Mirror]]. A curious tavern owned by a family of [[changeling]]s, the Crooked Mirror changes its appearance and theme every week. It's rumored to be connected to the [[Tyrants]].
** The [[Silvermist Theater]]. A remnant of Callestan's glory days, this place is a shadow of the grand establishment it once was. The current owners are known for staging bizarre events at the Silvermist. Since the [[Sharn Watch]] stays out of Callestan, anything can happen here.
* [[Fallen]]. Sharn's oldest temple district, Fallen was abandoned after a floating tower crashed into the Lower Dura district during the [[Last War]]. Now it's a collection of wretched ruins.
* [[Gate of Gold]]. A squalid slum, providing miserable housing for desperate people.
* [[Malleon's Gate]]. A poor district originally inhabited by [[goblin]]s, Malleon's Gate has become a haven for monstrous immigrants from [[Droaam]] and [[Darguun]], along with members of [[Daask]].
* [[Oldkeep]]. Another poor slum, largely home to dockworkers from Precarious.
* [[Precarious]]. The skydocks of Precarious pass goods between the towers and the [[port|Cliffside]] on the [[Dagger River]] below. The district is filled with warehouses, along with a handful of poor taverns. A small community of [[Sarlonans|Sarlona]] lives here.
* The [[Stores]]. A warehouse district with a large [[halfling]] population, with ties to the [[Boromar Clan]].
Providing cheap entertainment for the masses, Lower
Menthis is crowded. The [[Firelight]] district is filled with
sketchy taverns and theaters ranging from the innocent
to the risque, as well as gambling halls, brothels, and
spontaneous performances in the streets.
Lower Menthis is also home to the [[Burning Ring]], a
fight club where spectators bet on amateur gladiators.
Technically illegal, the Burning Ring moves around
the ward to avoid the [[Sharn Watch]]. Competitors are armed but unarmored;
matches continue until a contestant yields, but fatalities
do happen.
!! Districts and Noteworthy Locations
* [[Center Bridge]]. An inexpensive residential district that houses many students of [[Morgrave University]], which is located directly above.
* [[Downstairs]]. The Downstairs district is primarily known for food and drink. Though most of its taverns and inns are only modest in quality, the [[Four Sails]] serves some of the finest seafood in [[Sharn]]. The recent success of the [[Diamond Theater]] has also drawn travelers to the district.
** [[Diamond Theater]]. A cheap theater once known for bawdy humor, the Diamond has gained fame due to its playwright in residence and has produced several plays about the impact of the [[Last War]].
* [[Firelight]]. This district is a destination for those who seek illicit forms of entertainment. Many forms of illegal gambling and paid companionship can be found in Firelight. It's also the most common location of the [[Burning Ring]].
* [[Forgelight Towers]]. A surprisingly quiet residential neighborhood amid the rowdy chaos of Lower Menthis.
* [[Torchfire]]. A district with a notorious reputation, celebrated for cheap entertainment and infamous for its dangerous alleys. Its theaters specialize in musical comedy and lowbrow entertainment, and there are lots of opportunities for hopeful amateurs to get on a stage in Torchfire.
** [[Ten Torches]]. The cheapest ticket in Sharn's theater scene, Ten Torches alternates between lowbrow comedy and bizarre shows that no respectable theater would stage.
Although it's poverty-stricken, Lower Northedge is a
significant step up from the slums of [[Lower Dura]]. The
people of Lower Northedge don't look for trouble, and
they don't like it coming to their doorstep. [[North Market]] is one of the largest markets in [[Sharn]], though in
contrast to the [[Bazaar]] of [[Dura]] it mostly offers simple,
everyday goods.
Lower Northedge has a significant [[shifter]] population.
The [[Rat's Nest]] is a tavern that caters to shifters, and the
[[Bear's Rest]] is an inn run by a family of shifters. Apothecaries can be found which specialize in the care of fangs
and claws. Particularly in the districts of [[North Market]]
and [[Stoneyard]], shifter children play [[hrazhak]] in the
streets; this flamboyant sport involves making dramatic
leaps and scaling walls.
The [[Shrine of Fathen the Martyr]] is an infamous spot
in [[North Market]]. It is dedicated to a crusading priest of
the [[Silver Flame]] who uncovered a group of [[wererat|lycanthrope]]s in
the early days of Sharn. Fathen was torn apart by the
wererats he had exposed, and in his honor the Church
of the Silver Flame raised the shrine on this site. It's
said that any [[lycanthrope]] that enters the shrine will be
forced into its true form. Pilgrims devoted to the Silver Flame come from across [[Khorvaire]] to pray at the
shrine, but the local shifter population has no love for
the pilgrims or the church.
!! Districts and Noteworthy Locations
* [[Longstairs]]. The population of this peaceful residential district is mostly made up of [[dwarves|dwarf]], [[human]]s, and [[half-elves|half-elf]]. Neighbors here generally stand together to deal with any trouble.
* [[North Market]]. The open market in this region largely deals in simple, locally produced goods. Due to the significant [[shifter]] population in Lower Northedge, North Market offers goods and services aimed at shifters (grooming services, claw care, and so forth) as well as those reflecting an [[Eldeen|Eldeen Reaches]] influence.
** The [[Bear's Rest]]. A modest inn maintained by a [[beasthide]] [[shifter]] named Leara, who usually gives a discount to traveling shifters. The decor features various exotic hides.
** [[Fathen's Shrine|Shrine of Fathen the Martyr]]. This marker in North Market commemorates a miracle that exposed a network of [[wererat|lycanthrope]]s in Sharn, along with the priest of the [[Silver Flame]] who died while fighting them. Pilgrims devoted to the Silver Flame often visit the shrine.
** The [[Horse and Hearth]]. Though not as colorful as the [[Bear's Rest]], this large inn is maintained by House [[Ghallanda]] and offers rooms of modest and comfortable quality.
** The [[Rat's Nest]]. A modest tavern catering to the [[shifter]]s of Lower Northedge, the Rat's Nest is a haven for gossip and serves food and drink in the [[Eldeen|Eldeen Reaches]] style.
* [[Stoneyard]]. This residential district is home to the majority of Sharn's [[shifter]]s, including both recent immigrants from the [[Eldeen Reaches]] and long-established local families. The district includes a makeshift [[hrazhak]] court and a shrine devoted to the [[Wardens of the Wood]]. Conditions are poor to modest.
Two land routes to [[Sharn]] both end at Lower Tavick's
Landing. The [[Orien]] [[lightning rail]] deposits passengers
in the district of [[Terminus]], while those who travel to
Sharn on the Old Road arrive at [[Wroann's Gate]]. Getting
to the better parts of Sharn from here means passing
through [[Black Arch]], a heavily fortified garrison district designed to repel enemies and withstand a full siege.
The ward offers a variety of services catering to travelers; the [[Dragoneyes]] district is a maze of taverns, inns,
brothels, and gambling halls. Dragoneyes is also noteworthy for being the site of one of the few [[changeling]]
communities in [[Breland]].
House [[Orien]] has a strong presence in Lower Tavick's
Landing, and Orien heirs, laborers, and teamsters can
be found in many of the districts. House [[Lyrandar]] and
House [[Deneith]] are also well represented, with their
representatives arranging matters of trade, transport,
and security.
These days, Lower Tavick's Landing is best known
for [[High Walls]], a former residential district converted
into a home for refugees from the [[Last War]]. High Walls
is filled past capacity, mostly by [[Cyrans|Cyre]] who were displaced by the [[Mourning]]. The gates are open at present,
but High Walls is designed to serve as a fortress
prison if the need arises, and the [[Sharn Watch]]
keeps an eye out for any signs of unrest.
!! Districts and Noteworthy Locations
* [[Black Arch]]. This district is filled with checkpoints and enchanted gates. These portals are generally open, but in times of trouble, Black Arch can become an impassable fortress. The [[Sharn Watch]] maintains the local garrison. House [[Orien]] and House [[Sivis]] both maintain outposts here, ensuring that messages can be swiftly delivered through the city and beyond.
* [[Cogsgate]]. This warehouse district is the gateway to the [[Cogs]], and shipments of ore and other goods regularly pass through here. House [[Kundarak]] has high-security storage facilities for rent, and a House [[Deneith]] outpost hires out [[Blademark|Blademarks Guild]] mercenaries for venturing below.
* [[Dragoneyes]]. Dragoneyes tends to the needs of weary travelers, providing a wide range of lodging, food, and entertainment for tourists. It's also the home of most of Sharn's [[changeling]] population, and many changelings use their gifts to entertain and amuse travelers. Some say that it's the home of the [[Tyrants]] criminal guild, but if so, that place is well hidden.
** [[Chance]]. A legendary gambling hall. In addition to standard games, it's said that the host can cover a wide range of unusual wagers.
** [[Velvet's]]. Staffed by [[changeling]]s, this comfortable inn specializes in fulfilling fantasies; both the staff and the rooms can be adapted to fit any scenario. Though some clients have romance in mind, others come to Velvet's to relive triumphs, to prepare for debates or trials, or for help in developing a new identity.
* [[Foundation]]. A poor residential district.
* [[High Walls]]. This district was converted into an internment center during the [[Last War]]. Since the end of the war, it has been transformed into a refugee camp. Most of the residents are [[Cyrans|Cyre]] who fled the [[Mourning]], but High Walls also includes Brelish citizens who lost their homes in the war. It's a crowded and dangerous place, but it allows residents to maintain a squalid lifestyle at no cost. Currently the gates are open, but the [[Sharn Watch]] could seal them at any time.
* [[Terminus]]. This district is based around Terminus Station, where the [[lightning rail]] enters and leaves Sharn. Most local businesses serve the station or travelers.
** [[Terminus Station]]. An [[enclave]] of House [[Orien]], this site contains the lightning rail station.
* [[Wroann's Gate]]. Travelers who arrive on the main road enter Sharn through Wroann's Gate, passing below a huge statue of the legendary Queen [[Wroann ir'Wynarn]]. Many of the [[dragonmarked house]]s maintain shops here so travelers can send messages, hire bodyguards, or make use of other services.
In the lower city of [[Sharn]], the poor must toil and struggle to survive. Few windows and only the occasional balcony or skybridge can be found among these levels,
where the tower foundations grow close together
and seem to merge with each other in ways almost
unimagined in the higher sections of the city.
<<list-links "[tag{!!title}sort[title]]">>
See also: [[middle ward]], [[upper ward]].
1: A [[minotaur]] holding a large piece of wood that could serve as a maul approaches you and politely asks if you have any copper to spare.
2: Down a nearby alleyway, a [[dwarf]] punches a [[goblin]] in the stomach, then walks away laughing.
3: A thin [[human]] child has been following you, but never gets too close. She keeps coughing, and you can see red marks on her neck that might be an [[aberrant dragonmark]].
4: A [[human]] priest of [[Boldrei]] wheels a cart of bread loaves through the city, giving food to the homeless.
5: A [[goblin]] pushing a cart of rusty weapons and broken clay pots calls out, "Real artifacts of ancient [[Dhakaan]] for sale! Recovered from the ruins below!"
6: A man dressed in the livery of House [[Vadalis]] descends a tower wall mounted on the back of a giant spider. He shouts, "Need a ride? No faster way to get to the middle and upper wards! Reasonable rates!"
7: An [[ogre]] eating several rats on a skewer spits out a rodent skull at your feet.
8: A playful stray mastiff wags its tail as it approaches, drops a very large egg at your feet, and looks up expectantly.
9: A small, jovial crowd gathers around a [[goblin]] and a [[kobold]] that are getting ready to have an arm wrestling match. A [[dwarf]] calls for the crowd to place their bets.
10: Three [[harpies|harpy]] fly through the streets singing a jolly drinking song. Each carries a bucket around her neck, and passersby occasionally drop coins in one.
11: A [[human]] woman and a [[warforged]] with a silvered body are walking down the street together. They're too well dressed for this district, and are looking around as if lost.
12: A Khoravar [[half-elf]] in the robes of an oracle approaches and promises to give you the answer to all of life's problems for 42 copper crowns.
13: A [[human]] and an [[elf]] kiss passionately in an alley near your path. They notice you and quickly move apart.
14: Three [[shifter]] children run by you, yelling and chasing each other with wooden swords. They duck into a boarded-up building.
15: "Stop her! She stole my necklace!" a priest of the [[Sovereign Host]] cries, pointing to a grimy [[halfling]] clutching a silver chain and climbing up the side of a tower.
16: A young woman using a crutch and missing a leg approaches, asking if you can spare any coin to help a [[Brelish|Breland]] veteran of the [[Last War]].
17: Cries of alarm fill the street as a wooden crate from somewhere above crashes down into the lower city.
18: A splash of unidentified, putrid liquid falls from above, soaking you.
19: The generally unpleasant smell of the lower wards is pierced by the scent of something delicious being baked nearby.
20: A [[gnome]] sits at a table with a sign attached to it that reads, "I say [[Breland]] would have won the [[Last War]]. Change my mind."
21: Two [[changeling]]s sit on a bench in front of a tavern, sharing a flask. They take turns changing their forms into the people who enter and exit the building.
22: A [[human]] woman shouts at a group of [[Cyran|Cyre]] refugees, "Go home! Stop taking our jobs. Let the [[Mournland]] have you!"
23: A group of students from [[Morgrave University]] moves through the street, asking for directions to [[Dragoneyes]].
24: You turn down an empty street. A door suddenly materializes on a nearby building that previously showed no entrances.
25: Faded graffiti on a wall reads, "Need someone knifed? [[Tarkanan]]'s got you covered!"
26: A crowd gathers around a [[kobold]] playing a pan flute and leading a group of rats in a merry dance.
27: Four [[orc]]s jab at an [[ochre jelly]] with long staffs, trying to herd the [[ooze]] into the sewers.
28: Several [[Cyran|Cyre]] refugees are gathered in a circle, singing a haunting song.
29: An old [[goblin]] offers to pierce your ears or nose for 5 copper crowns. She claims, "It will be painless. I know magic!"
30: A figure in red robes preaches, "The [[Last War]] was not the last! As long as the monarchy rules in [[Breland]], another war is inevitable. Rise up!"
31: A member of the [[Sharn Watch]] looks uncomfortable as she wanders the street. It's clear she doesn't come down here often.
32: Two [[human]]s run into an alley, drawing daggers as they go.
33: Two drunken [[human]]s exit a tavern singing a [[Karrnath]]i battle hymn. Another human shouts at them to "shut up or get shut up." The drunken pair sings louder in response.
34: Two children reeking of sewage argue over who gets to wear a shiny helmet that sits on the ground between them.
35: You find a pamphlet on the ground advertising the [[Silvermist Theater]]. Someone has scrawled on it, "The real party is in the basement."
The [[Mourning]] was the best thing that ever happened to Loyal Daison. Born to a family of masons and military engineers, Daison earned his first fortune as a contractor during the [[Last War]]. He invested his newfound wealth in property in and around [[Karrlakton]], picking up buildings damaged in battle or abandoned by those fleeing the war. By the time of the Mourning, he owned a full one-eighth of the property in Karrlakton.
When people poured out of [[Cyre]] in the aftermath of the catastrophe, Daison was ready to give them a place to stay... for a price. Daison took his pick of the treasures those refugees had salvaged from their nation. For those who couldn’t pay, Daison offered service contracts; now, many people are bound to him, working off a debt that will take decades to pay. He continues to invest his profits in [[Karrlakton]]; a common joke in the city is that an unlikely event will happen “When Daison stops spending.”
Because of his work in the war, Daison has strong ties to many of the southern warlords of [[Karrnath]], and he has strengthened these bonds with generous contributions and bribes. He has a host of indentured servants; some say that more [[Cyrans|Cyre]] serve Loyal Daison than Prince [[Oargev|Oargev ir'Wynarn]] of [[New Cyre]]. Although Daison has provided the refugees with lodging and work, most of his buildings are wretched slums. He has given homes to the refugees of [[Cyre]]—but he has done little to give them hope.
Loyal Daison is a heavyset [[human]] in his early forties. He lost his left hand in an industrial accident and wears a prosthetic of gold and steel. He has a deep voice and a booming laugh. He’s an exceptional architect and has a keen eye for investments. Since the [[Treaty of Thronehold]], he has been purchasing the rights to territory in the [[Mournland]] from Cyrans, and he is investing considerable capital in Mournland salvage expeditions; convinced that it is possible for [[Cyre]] to recover from the [[Mourning]], he has assembled an impressive think tank of sages and arcanists, the //Daison Institute//, to study its effects.
Like most members of the [[Aurum]], Loyal Daison can serve as a wealthy patron or a dangerous enemy— potentially both in the same campaign. Consider the following ideas.
* At the start of their careers, [[Cyran|Cyre]] characters could have relatives who have signed indentured servitude contracts with Daison in exchange for shelter; alternatively, the characters themselves could be bound by such a contract. Daison could offer release from the contract in exchange for undertaking a dangerous service.
* A family of poor Cyrans asks the adventurers to recover a family heirloom from the [[Mournland]]. However, Loyal Daison also wants this relic, and he has sent his own team to recover it. Can the characters get there first?
* The Daison Institute can be a resource for the characters, and thus might fund an expedition or pay for knowledge or relics from the Mournland. In time, the institute’s sages hope to find a way to push back the [[dead-gray mists]]. Loyal Daison, of course, is interested ultimately only in personal gain. Under his direction, engineers at the institute are looking for ways to harness the force behind the [[Mourning]] and weaponize it on a smaller scale.
//The most remarkable feature about this woman is her skin—truly as pale as snow, it almost seems to possess an opalescent sheen. She wears simple black clothes with no adornments and gloves. She seems to be lost in thought, and her eyes are filled with a deep sorrow. //
Luca Syara, the resident playwright of the [[Diamond Theater]] in [[Lower Menthis]], is an [[archfey]] who has taken on human form. At the start of the [[Last War]] she abandoned her post on the plane of [[Thelanis]]
to participate in what she thought was the righteous
cause of [[Cyre]]. After fighting on Cyre's side for more than half a century, she became disillusioned. On Thelanis, she had watched the world from on high; on
[[Eberron]], she saw thousands of mortals die over words
and lines on a map. She could not return to Thelanis. Her sense of idealism had been torn from her. In addition, she had been forbidden to fight in the war in the first place, and the overlords of Thelanis seek to punish her for her transgression. So she hides, trying to find meaning in this world of mud and death.
When the war ended, Luca came to [[Sharn]] and
chose to live among mortals once more. She began
to produce plays. She found a place in the [[Diamond Theater]], and over the last two years her star has rapidly risen in [[Sharn]] society. Scholars and philosophers spend hours debating her works in the taverns of the [[University District]]. Luca is much sought after
as a guest at social events and [[Morgrave|Morgrave University]] functions.
But Luca rarely makes public appearances. She does
not write in order to gain fame or fortune. Instead,
she writes to ease the torment in her soul.
Luca is one of the most powerful beings in
Sharn, but she labors under multiple handicaps. First
and foremost, she is restrained by her own despair.
She feels that in the long run no physical action will
make a difference—that saving a single mortal life is
merely postponing the inevitable. She defends herself
if she is threatened, but she does not act to protect
others. Even if she should be roused from her despair,
casting a powerful spell—such as raise dead—would reveal her presence to the powers of
[[Thelanis]], who still seek to call her to judgment.
In the long run, Luca could become a valuable ally
for the party. But winning the spirit of the archfey back
from the shroud of gloom should be a long battle—and
one that should not be won until the party is powerful
enough to consider her to be an equal.
Luca's disguise hides her true nature from
mortal eyes, but she cannot fool the [[fiend]]s. While
she is no longer interested in battling evil, the [[Lords of Dust]] do not know that—and they may attempt to
destroy the archfey.
The Lucky Nines casino uses a
remarkable amount of magic in the decoration and
operation of the business. The owner, Fasha Yask
([[human]] [[wizard]]), employs a full staff
of spellcasters—wizards, [[bard]]s, [[artificer]]s, and [[magewright]]s—to keep the place running smoothly. [[Unseen servant|unseen servant]]s attend to customers' needs,
[[continual flame]] spells give illumination, [[illusion]]s provide glamour and glitter, and bouncers with [[detect thoughts]] and [[detect magic]] patrol the floor to catch those who would cheat the establishment. In addition, as
many would-be thieves have discovered, a variety of
magic [[wards|abjuration]] protect the place after hours.
When a mortal dies and their soul goes to [[Dolurrh]], the thread
connecting them to [[Irian]] is severed. Any [[ember]] fueled by
their spark dissolves, and the spark—the essence of the hopes
and brightest moments of the mortal's life—begins to fade.
But the sparks of the dead can merge together before they're
lost completely, creating a new, unique entity—a lumi, formed
from the same positive energy as the embers, but possessing
true consciousness and life. Unlike the embers, who aren't
fully conscious or aware of the memories they hold, lumi
are sentient creatures, each with a unique identity, though
their sparks give them fragments of many mortal lives. So
adventurers may meet a lumi who recognizes them, and who
has a few memories and traits of a fallen friend.
Lumi appear to be formed from solidified light, and generally
take a body shape similar to the strongest of the sparks that
formed them—usually those of sentient creatures. Their most
distinctive feature is their head—a sphere of light suspended
a few inches above their torso. Normally this is pure light,
but with conscious effort, a lumi can sculpt and maintain a
face. Like [[ember]]s, they don't need to eat, drink, breathe, or sleep, they don't
age, and they're immune to poison and disease. When a lumi is incapacitated, its body dissolves and its sparks fade. If an [[angel]] of [[Irian]] is nearby, it can consume these sparks; this won't save the lumi, but at least those memories are preserved.
While most lumi are [[humanoid]]s, there may be lumi formed
from the sparks of other creatures, like [[giant]]s or [[dragon]]s,
that dwell in [[layer]]s of their own kind.
Lumi serve as the caretakers of the [[ember]]s, and believe that
by helping the embers play their roles, they're strengthening
the light in the mortals the embers are connected to. Lumi
help develop and maintain the planar seeds, and some even
surrender their identity in order to become new creatures
within that seed; they believe that in doing this, they're sowing
the new layer with light. On rare occasions, lumi travel to
other [[plane]]s in service of the [[Architect]]s. They are brave and
compassionate, seeking always to spread hope, and ever
prepared to lay down their lives for the greater good. Lumi
can defend themselves, but they prefer to inspire others
when possible, rather than resort to violence.
During the [[Age of Demons]], the [[Thunder Sea]] was the domain of
the Lurker in Shadow. This [[overlord]] embodies the fear of the
unknown, of the evil that could be lurking just beyond sight, and
the fear that our friends could be secretly scheming against us.
The Lurker created the [[aboleth]]s, who conquered and dominated
creatures of the deep—[[giant]]s, [[dragon]]s, and [[sahuagin]]. The
struggle against the [[overlord]]s played out beneath the water
just as it did above. [[Dragon|dragon]]s battled [[kraken]]s and [[giant]]s fought
[[aboleth]]s, while the [[sahuagin]] consumed the fallen on both sides.
The wrath of the Lurker shattered the ocean floor. Dragons were
impaled on spires of [[demonglass]]. But in time, the overlords were
bound and the aboleths fled into the deepest abysses.
This nightmare monster of [[Xen'drik]] is a hulking [[swordtooth titan]] (tyrannosaur)
whose awe-inspiring girth could not be contained
in the [[Livewood Theater]]. Despite that, Two-Maws’
most terrifying attribute isn’t her size—it’s the yawning circle of bristling fangs at the center of her chest, which is surrounded by a morass of grasping tentacles. Survivors of her attacks testify that she can scoop up a dozen men at a time, stuffing one after the other into her razored chest-maw.
The song of this lute can prompt spontaneous celebration even in the most dour creatures.
When you play an enchanting tune from this lute, each creature of your choice within 15 feet must resist the enchantment or else begins to dance in place for up to one minute. Creatures that can't be charmed are immune to this effect.
The magic woven into the music of the lute can be used for a total of 3 minutes, regaining 1 expended minute each day at dawn.
Luunkashtai is sister and Hand to [[Chanaakar]], the Speaker of the [[Keepers of the Word]] and spiritual leader of [[Adar]].
Chanaakar's sister was every bit as precocious as her
brother, though her talents run more to the mastery of
the body than of the mind. Still, she is [[kalashtar]], as was
their mother, and she knows the importance of balance. Luunkashtai has always loved her brother deeply,
and she places her duty to him at the highest priority.
However, since [[Raadu Xeel]] and the [[Endseekers]] attacked
Chanaakar, she has been more watchful and involved
with the community of [[Kasshta Keep]]. Her position as
the Speaker's Hand is a respected one, but she has also
earned the right to lead the Kashtai line of [[kalashtar]] in
the citadel. Some might say that being a member of the
elder council and a servant of the Speaker's is a conflict
of interest, but nobody questions Luunkashtai's sense of
duty and honor.
Luunkashtai has given birth to many children. [[Chanaakar]] appreciates being an uncle more than Luunkashtai likes being a mother, but the communal raising of children in [[Kasshta Keep]] allowed her to fulfill what she felt were her obligations to the future of the kalashtar while remaining a warrior. All six of Luunkashtai's living
children are adults, serving either in Kasshta Keep or
elsewhere in the land of refuge. Three others have died
on the borders in skirmishes with [[Riedra]]ns.
One of the most ancient and feared of all curses, lycanthropy can transform the most civilized [[humanoid]] into a ravening beast. In its natural humanoid form, a creature cursed by lycanthropy appears as its normal self. Over time, however, many lycanthropes acquire features suggestive of their animal form. In that animal form, a lycanthrope resembles a powerful version of a normal animal. On close inspection, its eyes show a faint spark of unnatural intelligence and might glow red in the dark.
Lycanthropes can also shapeshift into a hybrid form of humanoid and beast, granting them fearsome bestial abilities while still allowing them to use tools or weapons.
Werewolves are the most commonly known form of lycanthrope, but were-versions of bats, bears, boars, rats, ravens, and other animals also exist.
Lycanthropes (and later, [[shifter]]s) were the target of the [[Silver Crusade]] over a century ago. The survivors fled to the corners of [[Khorvaire]], including [[Droaam]], where they eventually formed the alliance known as the [[Dark Pack]].
!! Shifters and Lycanthropes
[[Shifter|shifter]]s and lycanthropes are clearly related. Both transform
into a more bestial state. Shifters have affinities for bear, boar,
rat, and wolf; could it be mere coincidence that these are the
most common forms of lycanthrope? And yet, the differences
between shifter and lycanthrope are vast. Being a shifter
isn't a condition that can be passed by a bite. Shifters have
full control over their gifts, while lycanthropes struggle with
them. The beast within may shape a shifter's personality, but
it doesn't overwhelm it. By contrast, lycanthropy attempts
to destroy the victim's original personality and can turn the
most virtuous hero into a bloodthirsty murderer. Wererats
and werewolves are cruel killers... but the totem spirit Grandmother Wolf
doesn't encourage savagery, and Grandfather Rat doesn't
urge murder. And perhaps most important of all: shifters
themselves can become lycanthropes. This isn't in their blood;
lycanthropy is a curse, and it can afflict them just like it can
any other [[humanoid]].
The [[Moonspeaker|Moonspeakers]] [[druid]]s tell a tale of five [[shifter]] champions
who ventured too deep into the [[Towering Wood]]. They hunted
a great evil, but when they caught it, they were overwhelmed;
its evil filled their hearts, and it sent them back to prey on their
friends and families. If anyone survived their attacks, the evil
would seep through the wound and poison their hearts as well.
These, they say, were the first lycanthropes.
The [[Silver Crusade]] began when a dark power surged in
the Towering Wood, amplifying the power of lycanthropy.
The curse became more virulent. Victims fell prey to its
power more quickly, guided by some dark power beyond the
common evil of the curse. Within the Towering Woods, tribes of [[shifter]]s fought their corrupted kin. Beyond it, the farmers of
[[Aundair]] were tormented by raiding wolves and boars. When
the templars responded, the beasts that were slain reverted to
their natural forms, revealing that they were shifters. The word
quickly spread: all shifters were weretouched, capable of turning
into savage beasts. None could be trusted! Meanwhile, among
the [[shifter]] tribes, scouts warned of atrocities committed by
the foreign soldiers. In fact, the demagogues on both sides were wererats working to ensure that these possible allies would instead become bitter enemies... and the trick worked. Frightened templars and paranoid mobs slew many innocent shifters, and to this day the extremist sect known as the [[Pure Flame]] claims all shifters are servants of darkness.
The fact of the matter is that //lycanthropy is a weapon//; it
spreads through violence and turns its victims into killers. Its
origins may never be discovered, but the [[Moonspeaker|Moonspeakers]] tale is
as logical as any. Lycanthropes and shifters are related in that
the first lycanthropes were cursed shifters. The unknown force
responsible was likely also behind the surge that caused the
Silver Crusade—and it could rise again. One logical contender
is the [[daelkyr]] known as [[Dyrrn]] the Corruptor. It's said that
Dyrrn created [[doppelganger]]s by twisting [[changeling]]s; it
could have used this same technique to create lycanthropes
from shifters. Or it could have been the work of an [[overlord]],
an archfiend of the [[Age of Demons]]; some texts speak of the
[[Wild Heart]], an overlord who destroys civilizations and feeds
on primal cruelty. Ultimately, it's up to the DM to decide if the
answer will be revealed, and if so, what it is. In battling the
[[Cults of the Dragon Below]], could you face the original [[shifter]]
champions corrupted by Dyrrn? Or might the schemes of
the [[Lords of Dust]] unleash the Wild Heart?
While [[shifter]]s and lycanthropes aren't the same, the story
and the stereotype is well established. Everyone calls the
shifters “weretouched.” Beyond the [[Towering Woods|Eldeen Reaches]], there
are many shifters who indeed believe they are thin-blooded
lycanthropes. And the wounds caused by the [[Silver Crusade]]
and the [[Pure Flame]] will never completely heal. But despite
the stereotype, the shifters of the Towering Woods fear and
fight evil lycanthropes, and their tribes include rangers who specialize in hunting werewolves. Shifters and lycanthropes resemble one another, but they are not the
same—and shifters are just as vulnerable to the curse of
lycanthropy as humans are.
The arcane researchers of Lyran’s Gift work with House [[Cannith]] to make better, faster [[elemental galleon]]s and [[airship]]s. At secret laboratories in [[Stormhome]] and on islands in the [[Bitter Sea]], they also test magic catapults and other defensive naval [[arcane artillery]].
''Leader:'' [[Esravash d'Lyrandar]] <br/>
''Headquarters:'' [[Stormhome]] ([[Aundair]]) <br/>
''Dragonmark:'' [[Mark of Storm]]
//Sovereigns and Firstborn, grant me the four blessings promised to our people: dominion over the air, dominion over the water, fortune for my family, and fortune for my future.//
<div align="right">—From the //Oath of Lyrandar//</div>
House Lyrandar has long ruled the seas. Their [[kraken]]-marked [[galleon|elemental galleon]]s harness air and water [[elemental]]s and are faster than any mundane vessel. Control of sea and river trade gave Lyrandar considerable power. Now they reach out to the skies. Merely a decade old, Lyrandar [[airship]]s have undermined the [[lightning rail]]'s domination of overland travel.
House Lyrandar also controls the air in a literal way. The [[Raincallers Guild]] can use the [[Mark of Storm]] to control the weather for its clients.
For many of the house's members, the house is more than a family or business—its private island [[enclave]], [[Stormhome]], is the closest thing they have to a homeland. Baron [[Esravash|Esravash d'Lyrandar]] is ambitious and often steers the house to act in what he sees as the interests of all [[half-elves|half-elf]]. Lyrandar heirs help the [[Valenar]] [[elves|elf]] run their young kingdom, and some believe that Valenar could
become a true homeland for the [[Khoravar|half-elf]].
!! History of House {{!!title}}
According to House Lyrandar lore, the
[[Mark of Storm]] first appeared more than
2,000 years ago on two [[half-elves|half-elf]], Lyran and Selavash, who saw visions of [[Arawai]] and [[Kol Korran]] promising that the half-elves would become masters
of both nature and commerce. The duo traveled
across [[Khorvaire]], encouraging half-elves to divorce
themselves from both [[human]] and [[elven|elf]] society.
Over time, the children of Selavash and Lyran—the
//Lyran’dar//—became a [[dragonmarked house]].
!!! The Last War
In the early stages of the [[Last War]], House Lyrandar was less involved than other [[dragonmarked house]]s, since its elemental [[airship]]s hadn’t yet been invented and the [[Five Nations]] had little need for sea transport. But as the war ground on, various
governments approached House Lyrandar about using
weather control to gain an advantage on the battlefield
or to augment farm production at home. House Lyrandar agreed, but limited its manipulation to improving the weather. For the right price, House Lyrandar would provide plentiful spring rainfall or an early thaw in the mountains, but refused to cause a drought or bog down an army in mud or snow. Nations and [[dragonmarked house]]s paid well for such services.
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
The [[Lyrandar]] Enclave in
[[Dragon Towers]] is relatively small, but only because so
much of the house's operations are housed elsewhere
in [[Sharn]]. They have several offices in the waterfront
districts of [[Cliffside]] and [[Lower Dura]] to manage the
house's shipping interests, and a large office near the
[[airship]] docking tower at the top of [[Lyrandar Tower]],
in the [[Highest Towers]] district, manages the house's
air transport business. Though House [[Orien]] controls
the land shipping in and out of the city, House Lyrandar has offices in [[Lower Tavick's Landing]] to facilitate
trade between the two houses. [[Solia d'Lyrandar]] oversees
the [[enclave]] and supervises the operations of all the
smaller offices, as well.
[[Airship|airship]]s arriving from
elsewhere in [[Khorvaire]] dock at the top of [[Lyrandar]]
Tower. [[Skycoaches|skycoach]] linger here to carry arriving passengers to other destinations in the city, along with
guides hoping to win contracts for work in the city.
Of [[Sharn]]'s three arrival points (including the waterfront and the [[Orien]] [[lightning rail]] station in [[Lower Tavick's Landing]]), this is by far the least busy, as
well as the safest.
Once a thriving [[Cyran|Cyre]] town, Lyrenton is a ruin on
the very edge of the [[Mournland]]. It's shunned by the
[[Ghaal'dar]], who believe it to be cursed. Any who visit the place are said to
quickly fall prey to a wasting disease. At night, a terrible wailing that echoes among the ruins can be heard for miles across the plains.
Lysse Lyrriman, Baron of House [[Sivis]], is a brilliant administrator and a cunning
strategist, as demonstrated by her having
held her post for the last ninety years. In
addition to maintaining the traditional
businesses of the house, she has invested
considerable capital in [[Tasker's Dream]]. It is under her direction that
this organization has been investigating the [[Draconic Prophecy]].
The [[half-orc]] Maagrim is the oldest of the [[Tharashk]] [[triumvirs|Tharashk triumvirate]]. A skilled [[druid]], she has ties to the [[Gatekeepers]] of the [[Shadow Marches]].
A sea of liquid shadows laps against black
sands and basalt cliffs. A skull lies half-buried
in the sand, empty sockets gazing
into the roiling mist. The bone
isn't sun-bleached, for there
is no sun here—only a faint
glimmer from the smoky gray
moon that hangs in the sky.
Early scholars studying
reports of Mabar concluded that
it was the Plane of Darkness—that this physical property is its defining concept. However, the plane's eternal gloom is just a symptom of its true nature. Even the brightest day eventually ends in darkness,
and Mabar embodies this idea.
It's the shadow that surrounds
every island of light, patiently
waiting to consume it. It's entropy,
despair, and loss. This isn't the place
where the souls of the living go after death,
but rather, it's the plane of death itself—the hunger that
consumes both light and life.
Mabar is the source of negative energy, and the origin of
most [[undead]]. [[Manifest zone|manifest zone]]s—and most undead—tied to Mabar
consume the life force from the world around them. However,
some people maintain that negative energy itself is just a tool,
and that the power of Mabar can be harnessed for good.
!! Universal Properties
The Endless Night consumes life and light. It's a wellspring
of necrotic energy, where light is swallowed by gloom, and
unprotected creatures quickly die. Mabar has the following
universal properties.
* //''Necrotic Power.''// Living creatures' resistance to necrotic magic and [[necromancy]] is diminished. [[Undead|undead]] creatures are more difficult to destroy or frighten.
* //''Radiant Void.''// In order to cast a spell that deals radiant damage or restores health, any consequences to that roll include one additional stress from casting the spell.
* //''Eternal Shadows.''// There is no bright light in Mabar. Any object or effect that would usually create bright light only creates dim light.
* //''The Hunger of Mabar.''// Mabar consumes the life force of living things. Living creatures rapidly and continuously suffers necrotic damage. A creature that is incapacitated by this damage immediately dies and its body crumbles into ash. Natives of Mabar, creatures that have resistance or immunity to necrotic damage, and creatures under the effects of a [[death ward]] spell are immune to the effects of this property.
* //''Standard Time.''// Time passes at the same pace as on the Material Plane, and is consistent across its layers.
!! The Consuming Darkness
The planes don't usually interact with one another. The
armies of [[Shavarath]] endlessly battle each other; they
don't lay siege to [[Xoriat]]. Each plane is an isolated, perfect
vision of a particular concept. But the concept that defines Mabar is the hunger to consume all light and life, along with the inevitable downfall of all things. When the proper forces align, Mabar pulls fragments of other planes into
the Endless Night; over time, these are drained of light and
hope and transformed into new layers of Mabar.
Initially, these captured planar fragments become part of the
[[Hinterlands]] and night falls in the region, but they don't yet have
any of Mabar's universal properties. Over time, the fragment's
properties from its previous plane are replaced by the properties
of Mabar. Once the fragment acquires the last property in
this process, the //Hunger of Mabar//, it's fully assimilated into
the Endless Night as a new symbol of entropy and despair.
Mortal inhabitants of the fragment are typically transformed
into [[shadow]]s or other forms of [[undead]], while [[immortal]]s might
become [[yugoloth]]s, or twisted into dark mockeries of their former
selves. The conversion is slow and inevitable, and the Dark
Powers of Mabar don't have to take any action—but regardless,
most enjoy tormenting the fragments. [[Undead|undead]] prey on the edges
of fragments besieged by the [[Bone King]], and [[yugoloth]] soldiers
raid fragments claimed by the [[Empress of Shadows]].
As an example of a converted fragment, consider the Drifting Citadel. This floating tower was once a library in [[Syrania]]. Now it drifts through an icy void, grand windows shattered and books fallen from their shelves. [[Shadow|shadow]]s of sages clutch at
books with insubstantial fingers, never able to turn a page. The
angelic librarians have become tormented spirits who hunger
for knowledge, draining the memories from any creature
unfortunate enough to fall into their grasp.
At times, the great powers of other planes have tried to
stop Mabar from capturing fragments of other planes—but
to no avail. The darkness can't be stopped, as it's part of
the machinery of reality—the Endless Night consumes and
fragments are lost. Those pulled into the darkness can fight
against it, but the ultimate outcome is inevitable. Were it not
for [[Irian]], Mabar would eventually consume everything. But
as the Night consumes, the Dawn restores, and so balance
is ultimately maintained.
The process of consumption is slow and ongoing, and there
are always multiple fragments in the [[Hinterlands]]. It may take
Mabar months, years, or even centuries to consume a fragment.
As the properties are replaced, the landscape of the fragment
changes to reflect it. In a former fragment of [[Lamannia]], the
vegetation around the borders begins to wilt. Creatures become
sickly, and totems may not be seen at all, or they might be
terrifying shadows, killing the grass they walk on.
Mabar typically targets other planes, but it can claim pieces
of the Material Plane as well. This initial effect is reminiscent
of the [[Mourning]]; gray fog rolls over the region that's affected,
and all that's caught within the fog is lost. However, Mabar
typically claims a region the size of a town, or perhaps a county;
it's never been known to claim an entire country. Typically
the fog fades within a day, leaving a barren region stripped of
vegetation and structures. Mabar's power is such that it also
consumes the memories of the place; most mortals simply
forget that the affected region ever was anything but barren,
and forget the people consumed in the process. This process
isn't perfect or absolute, but when contradictory information
is presented, people instinctively try to rationalize it. Maybe
they heard a story about the lost town? The uncle who lived in
that town? Didn't he die in the war? In short, player characters
might realize something is wrong, but be unable to convince
others of it. Because of this magical effect and the fact that
it happens so rarely, the common people of [[Khorvaire]] don't
know about this aspect of Mabar. But if a group of strong-willed
player characters investigates it, they might be able to discover
the cause of lost colonies and other mysteries.
!! Denizens
From shadows of mortal souls to Mabar's [[Dark Power]]s, the
Endless Night's inhabitants all embody aspects of darkness,
despair, and death. The plane's denizens fall into these five
general categories.
!!! Shadows
[[Shadow|shadow]]s are the most numerous inhabitants of Mabar.
These semi-sentient spirits linger in places where you
might expect to find people, forlornly pantomiming the
roles of the absent inhabitants. You'll find the shadows of
children playing on the corner of a Mabaran street, and
the shadow of a priest silently praying to an absent and
unknown god in a shattered temple. In his //Planar Codex//,
[[Dorius Alyre ir'Korran]] asserts that every mortal has a
shadow in Mabar, much like the conscripts of [[Shavarath]];
this theory is supported by the shadow-gardeners of the
[[Amaranthine City]]. However, the shadows of Mabar don't
speak, and they're driven by impulse and instinct; if they're
tied to living creatures, they're just a dark sliver of each soul.
The shadows hunger for the lifeforce of mortals, but they
ignore creatures that have resistance or immunity to necrotic
damage or that are shielded by the [[death ward]] spell.
!!! Yugoloths and Other Immortals
The [[immortal]]s of Mabar are spirits of darkness. The
[[yugoloth]]s—embodiments of hunger, despair, and death—are
the citizens of a vast empire centered on the [[Amaranthine City]],
most serving as soldiers. In the [[Hinterlands]], yugoloths battle
[[celestial]]s and [[fiend]]s trapped in these doomed fragments, until
the fragments are ultimately fully drained, assimilated, and
their immortal inhabitants converted to a form more suited
to the Endless Night. It's questionable if these battles actually
speed up the assimilation, or if they're simply a way for the
yugoloths to pass the time. If there are no immortals to battle,
the yugoloths simply spread despair; an [[oinoloth]] may spread
plague through a fragment of the Material Plane, then spend
a year watching the result.
Some [[yugoloth]]s are gardeners, but what they cultivate are
[[shadow]]s. By shaping a mortal's shadow, a [[fiend]] can fill that
mortal with despair or drive them down dark paths. When
the associated mortal eventually dies, the yugoloth can refine
that shadow into [[quintessence]]; this substance is crafted by
yugoloth artists and artisans into tools and weapons that
can cause death and despair, should they make their way to
the mortal world. While most gardeners work with shadows,
some go into the fragments of the [[Hinterlands]] to directly
torment the hostages in slow and subtle ways. Other yugoloths
are philosophers and oracles who contemplate the nature of
entropy and the way in which all things will end. And some
serve menial roles in the [[Amaranthine City]].
The yugoloths make up the majority of the immortals of
Mabar, but there are others. Mabaran [[incubi and succubi|incubus/succubus]]
embody emotional pain and loss. Some prey on hostages in
fragments, while others live alongside the yugoloths and ply
their wiles on them; the suffering of a [[fiend]] is just as satisfying
to them as that of a mortal. Other incubi and succubi are
gardeners, and some believe that these can drain the love from
a mortal heart by bleeding it from their shadow. There are also
immortals from other fragments that have been transformed—[[angel]]s and [[devil]]s reshaped by the Endless Night.
!!! Undead
Mabar is the origin of most [[undead]]. Sentient undead are
created when a dying creature's soul is bound to Mabar
instead of passing to [[Dolurrh]]. The energy of Mabar sustains
the creature—be it [[wraith]], [[mummy]], or [[vampire]]—while the
creature serves as a conduit to the Endless Night. This is
why many undead directly consume the life force of other
creatures. Even those who don't do so directly may drain life
from the world simply by existing; this is why plants are often
withered in areas frequented by the undead. Likewise, this
connection to Mabar has a corrupting effect that pulls most
intelligent undead toward evil alignments. Even people who
were good in life find that Mabar erodes their empathy and
compassion; it's a struggle to maintain your humanity when
your existence is bound to the Endless Night.
There are also many undead in Mabar itself. Many of these
are merely symbolic [[manifestation]]s of Mabar, not actually
the remains of mortal beings; the endless skeletal armies
of the [[Bone King]] are manifestations and the Bone King
himself was likely never mortal. [[Specter|specter]]s and [[wraith]]s are
especially powerful [[shadow]]s; some are the work of gardeners,
while others emerge from the pure darkness of Mabar. The
more desolate planes, like the [[Last Desert]], are inhabited by
[[nightwalker]]s, powerful conduits of negative energy; they often
attack fragments, feeding on the energy of the fragment and
accelerating its assimilation.
Beyond this, the souls of sentient [[undead]] are bound to
Mabar. When a [[vampire]], [[mummy]], [[lich]], or similar creature
is physically destroyed, it doesn't get the release of [[Dolurrh]];
instead, the soul becomes a [[wraith]] in Mabar, forever driven
by the hunger of the Endless Night. Most are driven mad by
this process, but perhaps the adventurers might once again
encounter a vampire they previously killed, now a spectral
lord in the Endless Night.
!!! The Dark Powers
The mightiest and most malevolent beings in Mabar are
known as the [[Dark Power]]s. Each embodies a particular
aspect of Mabar and rules a domain of linked [[layer]]s.
!!! Hostages
The fragments in the [[Hinterlands]] hold all the creatures that
dwelled in each before they were captured. When a mortal dies
there, they return as a [[shadow]] or [[undead]]. [[Immortal|immortal]]s are bound
to their fragment; they can't leave it, and if they die, they're
reborn there. So creatures from any plane could be found here,
including the Material Plane. A chunk of [[Risia]] might hold [[frost giant]]s. A fragment of the [[Endless Ocean]] might have a pod of
[[merfolk]]. But the longer they remain in Mabar, the more the plane
corrupts the fragment and the creatures in it, until they become
shadows, undead, or something worse. A mortal creature that
lives through this process may have all the light drained from its
soul or be consumed by despair. While it might retain its original
appearance, it should be considered an aberration; in the end,
it will seek to spread misery and extinguish both light and life.
!! Layers
It's always night in Mabar, and its shadowy moon, [[Sypheros]],
remains fixed in the sky. While the setting varies across
its countless [[layer]]s—a desert, a ruined city, the withered
remains of fertile farmland—the story is always about loss,
entropy, despair, and death. A layer might contain a massive
battlefield filled with the intertwined bones of [[dragon]]s and
[[giant]]s. Ossuaries and catacombs. Crumbling memorials,
with names too faded to read. Barren orchards and dried
riverbeds. And tombs, from tiny unmarked crypts to the
death-palaces of fallen rulers, necropolises filled with traps
and treasures. And this being the Endless Night, some of
those dead rulers still dominate their domains, whether they
take the form of [[undead]] or simply malevolent will.
Layers are linked in domains, and each one is bound to one
of the [[Dark Power]]s. The denizens of the layers and the overall
themes reflect the influence of that Dark Power, so layers in
the [[Kingdom of Bones]] are largely inhabited by [[undead]], while
[[yugoloth]]s dwell in layers bound to the [[Amaranthine City]].
Some layers are bounded by physical barriers, but most either
loop back on themselves or end in walls of fog—not unlike the
[[dead-gray mists]] of the [[Mournland]]—and any who wander into
the mists reemerge elsewhere in the layer. Within domains,
layers are often connected by physical portals—perhaps a
massive gate or a pool of shadows. Moving between domains
requires //plane shift// or performing a ritual tied to that domain.
These rituals need not be magical; they're simply secrets that
have to be learned. If you're in the [[Kingdom of Bones]] and
you want to get to the [[domain|Last Desert]] of the [[Queen of All Tears]], the
answer is simple: All you have to do is sincerely cry, and your
tears will take you there.
Here are a few examples of Mabar's domains, each of
which could hold many layers.
<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>
!! Planar Manifestations
Here are a few ways Mabar can influence the Material Plane.
!!! Manifest Zones
Mabaran [[manifest zone]]s are infamous and almost universally
shunned, for nearly all are harmful to the flora and fauna of
the region. In some zones, life withers and dies. In others, it's
twisted in strange ways; plants may seek the blood of living
creatures, or grow unnaturally pale and cold. Rot and decay
are often accelerated, and disease can thrive. However, such
regions are also often powerful sources of negative energy.
Mabaran zones often possess the //Necrotic Power// universal
property, and there are epic rituals and [[eldritch machine]]s that
require a Mabaran manifest zone. The [[Odakyr Rites]] that create
[[Karrnathi undead]] are an example of this, and the [[Karrnath]]i
city of [[Atur]] is built on a Mabaran zone. This often has a curious
synergy: if the negative energy of a Mabaran manifest zone is
regularly channeled into rituals or spells, it prevents that energy
from spreading disease or killing vegetation. In his //War and Death: A History of Karrnathi Necromancy//, [[Jolan Hass Holan]]
asserts that the plagues and famines [[Karrnath]] suffered early
in the war were due to the [[Seekers|Blood of Vol]] who normally tended those
zones being pushed out of them due to strategic concerns—which, in turn, forced Karrnath to embrace [[necromancy]] to
counter the effects of those famines.
While Mabaran manifest zones rarely serve as gateways to the
plane, they are powerful sources of negative energy and produce
undead. Skeletons, [[zombie]]s, and [[ghoul]]s can all spontaneously
rise in Mabaran manifest zones, and more powerful undead can
be created under the proper circumstances.
!!! Coterminous and Remote
On nights when Mabar is coterminous, the //Necrotic Power//
property encompasses the entire world, and the radius of all light
sources are halved. During these periods, regions of deepest
darkness can serve as gateways to Mabar, releasing shadows or
other foul things into the world. This primarily occurs in regions
that are suffused with despair or misery, and only at night,
ending as soon as dawn breaks. As a result, during coterminous
periods, friends and family usually huddle together indoors,
keeping the lights burning and telling cheerful tales.
When Mabar is remote, all creatures have resistance to
necrotic damage, and [[undead]] are more susceptible to being turned or frightened.
Traditionally, Mabar is coterminous for three nights in the
month of [[Vult|Khorvaire calendar]]—the nights of the new moon closest to the winter
solstice. The people of the [[Five Nations]] call this time [[Long Shadows]]. Mabar is remote less frequently, for a period of five
days around the summer solstice, but only once every five years.
!!! Mabaran Artifacts
Mabaran artifacts are formed from [[quintessence]], the solidified
energy of Mabaran shadows. Those who wield such items often become
cold and cruel. [[Yugoloth|yugoloth]] artisans can create unique items with
even greater powers, but the purpose of these tools is to spread
despair and misery. Some drain health from their wielders to
pay for their deadly abilities; others cause the bearer to rise as
an [[undead]] creature after death.
The most powerful Mabaran artifacts are [[battleloth]]s—yugoloths that have allowed themselves to be forged into objects to spread death and despair. These are intelligent and powerful, but drive their wielders down dark paths.
When plants do grow in Mabaran [[manifest zone]]s, they're
often poisonous; [[bloodvine]] can produce a variety of deadly
venoms. However, the [[elves|elf]] of the [[Bloodsail Principality|Bloodsails]] have
mastered the art of gardening in Mabaran zones, and there,
you can find wondrous plants that feed on shadows instead of
sunlight—[[darkwood]] trees, [[ebon sedge]] grass, and more. Here,
they produce spices and wines unlike any others in the world.
!! Mabaran Stories
Mabar inspires cruelty and despair. Its necrotic energies can
be a general environmental threat or harnessed as a weapon
by [[warlock]]s or [[necromancer|necromancy]]s. Here are some stories you might
explore about this plane.
//''Fragmented Mourning.''// It's unlikely that the [[Mourning]] was
caused by Mabar. The effect is much larger than any fragment,
the lingering strangeness doesn't resemble Mabar, and people
know it's been destroyed, unlike with most fragments. However,
it's entirely possible that part of [[Cyre]] could have been claimed
by Mabar as the Mourning unfolded—perhaps [[Metrol]] still exists
in the [[Hinterlands]] of Mabar! If so, is there any chance it could
be saved? Is Queen [[Dannel|Dannel ir'Wynarn]] alive? Or could she have somehow
been responsible, sacrificing her own people to become one
of the [[Dark Power]]s herself?
//''Shadow on the Moor.''// While passing across a moor, the
adventurers are set upon by the shadows of wolves and hawks.
The following dawn, they discover that one of the characters
is missing their shadow; it's been lost in the [[manifest zone]]. Do
they need to go back and find it? If so, how? If not, what does it
mean that this character no longer has a shadow?
//''The Master of Shadholt.''// A cruel [[warlock]] holds a small
village in his grip. When the adventurers defeat the villain, they
make an unpleasant discovery: the village of Shadholt is in a
Mabaran manifest zone, and while the warlock was a villain,
his rituals also prevented the zone from spreading plagues
throughout the entire region. Can the adventurers help one
of the villagers take the warlock's place, forging the pact and
gaining the powers needed to contain the threat? What [[Dark Power]] must they deal with?
//''The Drifting Citadel.''// The adventurers are contacted by
Itheriel, a scholar-[[angel]] of [[Syrania]]. The celestial seeks to
recover a tome of knowledge from a library tower that was
consumed by Mabar. If Itheriel goes to Mabar, they'll be trapped
there for eternity; they need the adventurers to recover the
book. What isn't Itheriel telling them about the book? Could this
celestial relic have become the //Book of Vile Darkness//? What
else can be found in the drifting tower?
This dread device draws on the power of [[Mabar]], infusing the dead with the malign energy of the Endless Night. While it is active, any [[humanoid]] that dies within
2 miles of the resonator reanimates 1 minute later as a [[zombie]] under the control of the creature controlling the device.
While holding this magic weapon, you can release a wave of terror. Each creature of your choice in a 30-foot radius extending from you that can't resist the magic becomes frightened of you for 1 minute, taking every opportunity to get as far from you as possible.
Madra Sil Sarin is the deadliest assassin in the service of the
[[Trust]]. She is a disturbing enigma even to the other
[[gnome]]s; she answers only to the Trust, and she has
killed quite a few gnomes to preserve the secrets of the
embassy. [[Doran Del Doras]] can use his telepathic bond to request her
services, but only the Trust can approve an assassination. It is important to remember this: while she is one of the most dangerous women in [[Khorvaire]], she
only acts if she has direct orders from [[Zilargo]]. She
does not use her skills lightly or squander them on
personal vendettas.
Madra spends most of her time in [[Sharn]] under cover of
invisibility, silently watching the city and waiting for
instructions. With her [[ring of sustenance]] and telepathic
bonds, she rarely needs to verbally or physically interact with people (she uses [[prestidigitation]] to keep her clothing clean). When Madra must interact with others, she uses [[disguise self]] to conceal her true appearance; even [[Doran Del Doras]] does not know what she really looks like. She also carries at least three different sets of notarized identification papers.
She is often called out of Sharn
to serve the Trust in other parts of Khorvaire—but
it’s usually impossible to tell. And, of course, there
may be any number of additional Zil assassins hidden
in the [[embassy|Zilargo Embassy (Sharn)]] waiting to be activated—though it is
unlikely that any possess the skills or equipment to
match Madra.
Generally, Madra is only seen when she attacks.
If she can help it, she isn’t seen at all; she strikes from
the shadows and then becomes invisible within seconds, before her opponents have a chance to locate her. She carefully plans out every attack, preparing
specific poisons and spells for the assignment. She
often uses [[feather fall]] to evade enemies if an attack fails,
leaping off of a bridge and disappearing into the
chasms of the city.
The Madwood is a forest in eastern [[Aerenal]]. It is the only place on [[Eberron]] where the [[kieros|kieros leaves]] herb is known to grow.
Madwood Gulf lies off the eastern coast of [[Aerenal]], leading inward towards the city of [[Kathuran]].
This province of [[Syrkarn]] dominated by savannah, where herds of bison and domesticated goats, deer, and horses roam the grasslands. Here, the clanholds of the Marrah Plains maintain order while fending off raiders and aggressive bands of [[Karrak]] cultists.
[[Banigar Bihurrani]] is the sahar of a small village in the Marrah Plains.
Mysterious and remote, the maenads of [[Sarlona]] are beings of tempestuous emotions held in check by rigid
self-control. Because of an ancient
tragedy that befell their race, they
harbor a deep spiritual turmoil. The
maenads know little about their origin. Their
legends, supported by brief and intermittent
contact with [[aventi]] explorers, claim that a great [[human]]
civilization once existed among the islands of the [[Lhazaar Principalities]], and that it sank beneath the waves some
two thousand years ago in a magical cataclysm. Those who
were at sea when the cataclysm occurred sailed east to find
a new home, coming ashore on the [[Tashyvar Islands]] of
northwest Sarlona. There the survivors underwent some
fundamental physical and spiritual transformation, and
a new race was born.
Physically, maenads closely resemble humans,
although they tend to be taller and heavier. Most distinctively, maenads' skin is dusted with bits of living crystal,
giving them an odd and ghostly luster in certain kinds
of light. Maenads also have a racial propensity toward
[[psionics]], with virtually every individual manifesting
[[wilder]] abilities in puberty.
!!! Maenad Lands
The maenads of [[Tashyvar|Tashyvar Islands]] have
built their society in the islands and shores of northwestern [[Sarlona]], colonizing as far south as [[Winterstead]]
at the mouth of the [[Qonama River]]. Maenads in Sarlona
are governed by a strange seasonal rhythm, almost maniacally active in the long days of summer, but withdrawn and torpid during winter's long darkness. New
maenad colonies are apt to appear by the dozens in spring
and summer, only to be apparently abandoned when the
season turns.
In an odd coupling, the maenads have formed close
relations with the [[Saartuk]] [[shifter]]s, and integrated groups
can be found throughout the rivers and frigid beaches of
the [[Tundra|Tashana Tundra]] shoreline. Maenads are expert mariners in
these shallow waters, and they facilitate trade throughout
the region with their ingenious skiffs and boats.
A few elite soldiers of [[Maenya|Sora Maenya]]'s Fist usually accompany an
emissary of [[Katra's Voice]]; if the Voice can't soothe troubles,
the Fist will end them. These armored [[troll]]s and [[ogre]]s are
deadly and utterly devoted to the [[Daughters|Daughters of Sora Kell]]; a single war
troll can crush a band of insubordinate [[minotaur]]s.
The priest Maeran Mendyrian leads religious services in the shrine to the [[Undying Court]] in [[Thaendyr's Rest]], and also acts as the de facto ambassador for [[Aerenal]] in [[Stormreach]]. Maeran is nearly
three hundred years old, and he has been serving in
Stormreach for over fifty years. He is well versed in
the politics of the city and can be a valuable ally for
an adventurer. However, he helps only [[Aereni]], and
even then only if their actions are in the interests of
the [[Undying Court]].
You touch a willing creature who isn't wearing armor, and a protective magical force surrounds it until the spell ends up to eight hours later. The protective force is about as protective as a suit of leather armor, but weighs nothing. The spell ends if the target dons armor or if you dismiss the spell.
A spectral, floating hand appears at a point you choose within 30 feet. The hand lasts for the duration or until you dismiss it. The hand vanishes if it is ever more than 30 feet away from you or if you cast this spell again.
You can control the hand at will. You can use the hand to manipulate an object, open an unlocked door or container, stow or retrieve an item from an open container, or pour the contents out of a vial. You can move the hand up to 30 feet each time you use it.
The hand can't attack, activate magic items, or carry more than 10 pounds.
The widespread use of magic on [[Eberron]] has led to the development of magical enhancements to animal breeding, particularly within House [[Vadalis]]. Some experiments in that direction have created new creatures that are actually magical beasts, with unusual intelligence and supernatural or [[spell]]-like abilities. In general, however, the aim of these breeding programs is simply to create better animals—ones that are more suited for use in the work of daily life. These magically enhanced animals are called ''magebred''.
Today, House [[Vadalis]] identifies three distinct forms of magebreeding.
<ol>
<li>''Incremental'' magebreeding is similar to dog breeders trying to produce a new pedigree. The result is a slight variation in the standard beast well suited toward a particular role: a hen that lays larger eggs, a tiger that’s easier to train, a hound that thrives in colder climates or has a remarkable sense of smell. One concrete example of this is the riding tribex. For thousands of years, the plains [[tribex]] has been bred as a beast of burden and source of food. The riding tribex is smaller and faster—sturdier than a horse and capable of enduring long, sustained trips.</li>
<li>''Enhanced'' magebreeding seeks to magically strengthen a creature, imbuing it with minor supernatural qualities over generations. The creature might be stronger, faster, more resilient, or easier to train, to a level beyond what incremental magebreeding can accomplish. For example, Redleaf hounds are very coordinated and quick, and are extremely good trackers. But other traits can be magebred into enhanced beasts, including but not limited to:<br/><br/>
<ul><li>''Increased fertility:'' increased laying for egg-laying creatures, along with potentially unusual egg characteristics.</li>
<li>''Enhanced meat or dairy:'' Livestock could be magebred to enhance the foods they produce, whether that’s simply increasing the quantity or adding an unusual quality (flavor, color). Imagine a cow that produces chocolate milk!</li>
<li>''Heightened senses:'' a magebred falcon might be able to perceive with even more precision or at greater distances.</li>
<li>''Specific resistances:'' a creature that doesn’t just have thick fur, but that is actually magically resistant to cold.</li>
<li>''Unnatural appearance:'' a horse with metallic, silvery fur; a hound with glowing eyes; cats that always have identical markings.</li></ul><br/>
The goal of enhanced magebreeding is to produce new breeds over multiple generations. Enhanced beasts created by the [[Handlers Guild]] are usually sterilized before they are sold to others. Stories say that there are all sorts of safeguards to deal with poachers—that enhanced animals will die if they aren’t feed special [[Vadalis]] supplements, that they will frenzy and turn on rustlers, that Vadalis has death squads that sneak around the world hunting for unauthorized breeders—but these are probably just rumors.</li>
<li>''Innovative'' magebreeding involves the creation of either an entirely new species or imbuing an existing creature with dramatic supernatural characteristics. Popular legend holds that the house’s first act of innovative magebreeding was the production of the [[hippogriff]]; skeptics claim that [[Vadalis]] simply discovered the first hippogriff after it emerged from a [[manifest zone]] tied to [[Kythri]]. A more recent and dramatic example is the [[tressym]], first produced in a collaboration with House [[Medani]] and the [[Twelve]] just twenty-four years ago. The house is always working on innovative projects, but actual successes are far and few between; innovative creations are often sterile, stillborn, or mentally unstable. Many innovative creatures are considered [[monstrosities|monstrosity]] as opposed to [[beast]]s.</li>
</ol>
Magebreeding is only a tiny fraction of the work of House [[Vadalis]]. Ranches and kennels tied to the [[Handlers Guild]] may perform iterative magebreeding, but enhanced and innovative magebreeding is performed almost entirely within house [[enclave]]s or in conjunction with the [[Twelve]].
Magebreeders often build their facilities on [[manifest zone]]s to [[Kythri]] or [[Lamannia]] for their unique planar properties, but also rely on rare components, [[dragonmark focus item]]s, [[eldritch machine]]s that accelerate beast growth, and [[transmutation]] magic for their work.
!! Non-Vadalis Magebreeders
House [[Vadalis]] may be the most prominent magebreeding organization on modern [[Khorvaire]], but others include:
* the [[Bountiful Horn]] of [[Riedra]]
* the [[Eternal Dominion]] of [[sahuagin]] in the [[Thunder Sea]]
* the [[Kech Ruuska]] of the [[Heirs of Dhakaan]]
* the [[Sulat League]] titans of [[Xen'drik]] during the [[Age of Giants]]
If you are proficient in a specific set of artisan's tools, you can cast this spell to gain advantage on an action using those tools.
In [[Khorvaire]], magic is part of everyday life. A chef might
use [[prestidigitation]] to heat and season food, while a
blacksmith uses [[mending]] to perform minor repairs and
guidance to help inspire their work. Those who work minor magic into their labors are called magewrights.
Most magewright education isn't done at universities. It's handled by trade schools maintained by the associated guild. So if you want to be a healer, you'll study with the [[Healers Guild]] of House [[Jorasco]]; if you want to be a locksmith, you'll get your training from the [[Warding Guild]] of House [[Kundarak]]. When you're done, you'll be licensed by the guild, which will also help place you with a business.
Magewrights weave magic into their work. They are not only
limited spellcasters, but skilled professionals who use magic as a
tool. In addition to a limited range of magic ability, magewrights
are also skilled in the mundane aspects of their specialty. A
magewright chef doesn't make food by snapping their fingers;
they're skilled with cook's utensils, as well as using [[culinary transmutation and Zolan zest|magewright cantrip]] as tools in their repertoire.
[[Magewrights|magewright]] and other lesser spellcasters might not be able to perform every facet of the endlessly useful [[prestidigitation]] cantrip, instead using more limited cantrips when weaving their magic into their work. Examples include:
* //''Boldrei's Broom.''// You clean an object or surface made from wood, stone, or metal no larger than 1 cubic foot.
* //''Culinary Transmutation.''// You chill or warm up to 1 cubic foot of nonliving material.
* //''Grogan's Grime.''// You soil an object or space no larger than 1 cubic foot.
* //''Halan's Dramatic Entrance.''// You instantaneously cause an unlocked door or window within 30 feet to fly open or slam shut.
* //''Incendiary Purge.''// You extinguish a candle, a torch, or a small campfire.
* //''Kellan's Kindling.''// You light a candle, torch, or small campfire.
* //''Phiarlan Whispers.''// You create an instantaneous sound that originates from a point of your choice within 30 feet, such as a rumble of thunder, the hooting of an owl, or ominous whispers.
* //''Shol Flame.''// You cause flames to flicker, brighten, dim, or change color for 1 minute.
* //''Tialaen Tongue.''// Your voice is up to three times as loud as normal for up to one minute.
* //''Verran's Textile Restoration.''// You clean an object made of cloth or leather no larger than 1 cubic foot.
* //''Zolan Zest.''// You flavor up to 1 cubic foot of nonliving material; this lasts for one hour.
The world of [[Eberron]] thrums with the power of magic. [[Artificer|artificer]]s, [[magewright]]s, [[wizard]]s, and other spellcasters produce an abundance of magic items, particularly those with the "common" [[rarity]].
!! Crafting Complications
Sometimes, the process of creating magic items of "uncommon" [[rarity]] or higher can involve complications. The table below includes some options.
| !<<dr d6>> |!Complication |
| 1 |House [[Cannith]] or another [[dragonmarked house]] takes an interest in your work. Do they view you as a threat, or are they impressed by your techniques? |
| 2 |A mishap creates a temporary [[manifest zone]]. |
| 3 |You need to acquire an additional rare component to complete your work. Time for adventure! |
| 4 |The shifting balance of the [[plane]]s interferes with your work; you must wait for the current planar alignment to change. This delays your work by <<dr "2d6">> days. |
| 5 |Your efforts draw the attention of the [[Aurum]], the [[Chamber]], the [[Emerald Claw]], or the [[Lords of Dust]]. |
| 6 |Your item becomes sentient. |
The spellcaster creates three or four glowing darts of magical force. Each dart targets a creature of their choice that they can see within 120 feet. A dart deals a small amount of force damage to its target. The darts all strike simultaneously, and the caster can direct them to hit one creature or several. This spell is highly accurate and almost never misses its marks.
Casting this spell with 5-7 darts would qualify as a "rare" tier spell. Anything more than that would be "legendary".
You implant a message within an object in range, a message that is uttered when a trigger condition is met. Choose an object that you can see and that isn't being worn or carried by another creature. Then speak the message, which must be 25 words or less, though it can be delivered over as long as 10 minutes. Finally, determine the circumstance that will trigger the spell to deliver your message.
When that circumstance occurs, a magical mouth appears on the object and recites the message in your voice and at the same volume you spoke. If the object you chose has a mouth or something that looks like a mouth (for example, the mouth of a statue), the magical mouth appears there so that the words appear to come from the object's mouth. When you cast this spell, you can have the spell end after it delivers its message, or it can remain and repeat its message whenever the trigger occurs.
The triggering circumstance can be as general or as detailed as you like, though it must be based on visual or audible conditions that occur within 30 feet of the object. For example, you could instruct the mouth to speak when any creature moves within 30 feet of the object or when a silver bell rings within 30 feet of it.
A magical implement is a [[magic item]] that serves as a focus for spellcasting. An implement can enhance the effects of certain categories of spells, or even grant the spellcaster access to spells they don't ordinarily have the ability to cast. Some implements allow casting spells using magical energy imbued in the item itself, rather than the spellcaster's; these items usually can only be used a few times per day.
''Wands'', ''staffs'', and ''rods'' are primarily
associated with [[human]] cultures in [[Eberron]]. Both
the [[giant]]s of [[Xen'drik]] and the [[elves|elf]] of [[Aerenal]]
occasionally use scepters as a form of focus, and
although some have adapted the practice, it was
the humans of [[Sarlona]] who first made the wand
a staple and brought it to [[Khorvaire]]. Primarily
an offensive tool that amplifies the aggressive
energies of a spell, wands of naturally magical
woods have been known to increase the potential
of [[evocation]] spells. In Khorvaire, people
recognize wands, staffs, and rods as weapons
and assume the carrier know how to use it.
Those who wave wands around might cause a
panic as if pointing a crossbow at someone and
is likely to find either, or both, aimed squarely
back at them.
''Orbs'' and ''crystals'' (typically [[Siberys dragonshard|dragonshard]]s) have been used as magical implements for far longer than wands. It’s thought that the [[dragon]]s were the first to employ these tools as arcane focuses, but they are also found in the ruins of [[Xen'drik]] and are the primary focuses used in the nation of [[Aerenal]].
<<list-links-article "[tag{!!title}sort[title]]">>
Magical Pigments is a gallery in [[Upper Tavick's Landing]] displaying paintings by
local artists.
Thirty years ago, a pirate named Magwroth thought to
seize control of the [[Cloudreavers]] of the [[Lhazaar Principalities]], challenging the rule of Sea Prince [[Mika Rockface]]. The results
were one-sided. Magwroth was hideously injured, his
vessel //Devourer’s Hand// was severely damaged, and the
rest of his ragtag fleet was sunk. After limping away
under tattered sails, Magwroth was never seen again,
and it was assumed that //Devourer’s Hand// had vanished
beneath the waves.
Would that it had.
Carried on furious currents through the blinding
gray mists east of [[Lastpoint]], //Devourer’s Hand// passed through an unknown [[demiplane]] of anomalous elemental forces. There, Magwroth and the remains of his crew were consumed by a host of inhuman creatures that
now sail the ghostly [[Chaos Fleet]] across the [[Lhazaar Sea]].
Though it wears the face and form of Captain Magwroth, the commander of this fleet is an [[elemental]] being of pure destructive energy. It now occupies Magwroth’s flesh, having transformed him into an [[elemental drudge]].
For the moment, “Magwroth” seems content to
attack and raid lone vessels. However, the ships
and crews he destroys are taken under his control,
and so the [[Chaos Fleet]] has begun to grow. In time,
Magwroth could threaten not just the [[Lhazaar Principalities]] but all of coastal [[Khorvaire]]. Only then might his ultimate objective become clear: to destroy all life.
From a distance, the captain resembles the [[half-elf]] Magwroth from thirty years past, but on closer inspection, the facade falls. The elemental’s gaping wounds reveal burning
fire racing like blood beneath its skin. Ugly bulges
mar its flesh, tearing open as it moves to reveal icy
protrusions beneath. Lightning dances within its
pupils, and a dark smoke hisses from its blackened
teeth and lips.
Lady Warden Maira ir'Talan, a distant relative of the
[[Lord Commander|Iyan ir'Talan]] (from the [[Wroat]] ir'Talans), leads the [[Blackened Book]]. A gifted
[[diviner|divination]], Maira is a highly effective leader. What none
know is that she's also an agent of the [[Dreaming Dark]]. Five years ago, a [[kalaraq]] [[quori]] named [[Tirashana]] implanted a [[mind seed]] in her thoughts. Maira continues to do her job while concealing any evidence of the Dreaming Dark's schemes.
Majarin is a large island in [[Aeren's Sound]] off the northeastern coast of [[Aerenal]].
Many people believe that the city of Making was at the epicenter of whatever caused the [[Mourning]]. The cataclysm reshaped the terrain around the city, creating the great highland formation known as the [[Glass Plateau]]. [[Living spell|living spell]]s and strange creatures gather in and around the city. A secret
[[Cannith]] facility is speculated to lie in the city's subterranean depths.
Mala Boromar d'Jorasco is an unmarked heir of House [[Jorasco]], and
her marriage to [[Saidan Boromar]] has formed important ties between the crime lord and the healers of [[Sharn]]. Jorasco healers help [[Boromar|Boromar Clan]] [[halfling]]s free of charge, with the expectation that Saidan will reimburse them for their efforts; this emergency assistance has saved the lives of many Boromars ambushed and left for dead by [[Daask]] brigands.
Scholars who study the [[sahuagin]] know of malenti, sahuagin that are born
indistinguishable from [[sea elves|sea elf]]; the common belief is that this
is a random mutation that occurs when sahuagin and sea elves
live in close proximity. The sahuagin are happy to support this
myth, because the truth is far more disturbing: Malenti aren’t born, they’re made. One of the sacred rituals of the [[Eternal Dominion]] allows a [[sahuagin]] priest of [[Sha'argon|Devourer]] to guide a subject through ritually
consuming a [[humanoid]]—and in consuming the creature, the
sahuagin becomes that creature, taking both their form and their powers. People know about [[sea elf]] malenti, as they’ve been caught and exposed in the Dominion’s long war with the [[Valraean Protectorate]]. But unbeknownst to the [[Five Nations]], there are
[[human]] malenti in [[Sharn]], [[dwarf]] malenti in [[Stormreach]], malenti
passing as many races and traveling the surface wherever the
Dominion needs eyes and hands.
Maleshari is a member of the [[Thousand Eyes]] and the personal
bodyguard of ambassador [[Jorasesh]]. She accompanies Jorasesh wherever he goes, but rarely speaks. She dislikes her lord’s occasional dealings with the [[Dreaming Dark]], but does not allow her feelings to interfere
with her duty.
High Priest Hass Malevanor is the greatest spiritual leader of the highly individualistic [[Blood of Vol]] faith. He is a powerful [[oathbound|mummy]] abactor who oversees the rites and rituals of blood within the [[Crimson Monastery]] in [[Atur]], [[Karrnath]].
Malevanor has been [[undead]] for over fifty years. While living, he and [[necromancer|necromancy]] Gyrnar Shult developed the [[Odakyr Rites]] for creating [[Karrnathi undead]], and worked with the Order of the [[Emerald Claw]] when they still acted as an official chivalric order of the [[Karrnath]] military. Despite this, Malevanor condemns the actions and mission of the modern-day Emerald Claw.
Malevanor tends to and receives guidance from the [[Crimson Covenant]], a circle of the oldest [[undead]] champions of the faith, who reside in the catacombs beneath [[Atur]].
A creature that inhales this poison and can't resist its effects is blinded for up to 1 hour.
The Zolark family built the [[Red Ring]] in [[Stormreach]] over three hundred years
ago and has firmly controlled the blood sport arena ever since. Storm’s Fury, by far the largest and most successful stable in the Ring, has passed from parent to child for over ten generations. More than thirty championship belts hang above Malketh Zolark’s hearth, a
legacy of blood spilled by gladiators while the Zolarks reaped the fame, glory, and gold.
Malketh inherited the stable and his seat on the [[Blood Council]]
after his father died under mysterious circumstances. He is the youngest Zolark to run the stable, but Malketh is a chip off the old block—indomitable, cunning, and firmly planted at the apex of the pyramid of power behind the [[Red Ring]]’s weekly gore-fests. His reputation for ruthlessness is growing, and many whisper behind closed doors that Malketh had a hand in his father’s untimely demise.
To Malketh, the [[Bloodbound]] are little more than assets to be squeezed dry. His coffers are bottomless, his influence in city affairs extensive. Most highly placed personages (including, he claims, two [[Storm Lords]]) owe him considerable debts that he collects in “favors.”
Malketh is a handsome, rail-thin, 6-foot-tall [[human]] with a mirthless smile and cold blue eyes. He wears gray or black attire at all times. The only accessory Malketh allows is his family signet ring. He abhors color and garish displays of jewelry, and was once heard to say, “Hide your wealth, lest your lessers decide to try to take it from you.”
''District Type:'' [[Goblinoid|goblinoid]] slum<br/>
''Buildings:'' Temple ([[Sovereign Host]]), shrine (The
[[Mockery]]), poor lodging (7), poor food (45), average
trades (4), poor trades (1116), average services (4),
poor services (41), poor residences (344)<br/>
''First Impression:'' Chaos and noise. This district
is run-down and filthy. Smoke fills the air and rats
scurry in the shadows. [[Goblin|goblin]]s are everywhere,
squabbling, haggling, and shouting at one another.
A [[bugbear]] forces his way through the crowd, flinging
goblins aside. A trio of [[hobgoblin]] warriors emerges
from a tavern and the crowd instantly parts.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Oldkeep]] (southwest); [[Gate of Gold]] (south); [[Ashblack]] (below); [[Tumbledown]] (above)
[[Sharn]] was built from the ruins of Shaarat, which
was built atop old Duur'shaarat. All of these cities
had one thing in common: [[Goblins|goblinoid]]. Malleon
the Reaver enslaved the goblins of Duur'shaarat
and forced them to build his city. King [[Galifar I|Galifar ir'Wynarn]]
offered the goblins freedom in exchange for their
service as soldiers and laborers. For many of the
goblins, there was little difference between life as
a slave and life as a free laborer, but over the centuries some learned valuable trades and established
their own businesses. While the goblins were officially citizens of [[Galifar]], few [[human]]s enjoyed their
company, and they found themselves congregating
in Malleon's Gate.
For centuries, goblins were the sole inhabitants
of Malleon's Gate. But with the rise of [[Darguun]], all
manner of [[goblinoid]]s have emerged from the [[Seawall Mountains]], and many have come to [[Sharn]] in search
of opportunity. The relationship between the “city
goblins” and these new immigrants is not entirely
amicable; the [[Ghaal'dar]] [[bugbear]]s and [[hobgoblin]]s are
used to dominating the [[goblin]]s of [[Darguun]], while the
goblins of Sharn value their independence and rights
as citizens. [[Daask]] and the recent immigrants from
[[Droaam]] have brought new stability to the situation, as
bugbear and goblin alike have to respect the power of
a [[medusa]] or [[oni]]. Nonetheless, Malleon's Gate
remains a very dangerous place. While most of the
Sharn goblins happily do business with people of all
races, a number of goblin gangs, [[bugbear]] bullies, and
unpleasant [[ogre]]s enjoy taking out their frustrations
on strangers.
The [[Sharn Watch]] stays out of Malleon's Gate,
but recently the [[medusa]] Gasslak has assumed the responsibility of maintaining order in the district. Gasslak only uses his
power to deal with major disruptions; he doesn't
care if a few [[bugbear]]s throw their weight around.
But if adventurers start killing [[goblin]]s by the score,
Gasslak may take personal action or call on [[Daask]]
to deal with the troublemakers. A few statues scattered around the streets give mute testimony to
Gasslak's power.
!! Noteworthy Locations
* [[Bloodstone Inn]]. A [[Darguun]] mercenary troop known as the [[Ja'khor]] (a [[goblin|goblinoid]] word translating to “Blackbloods”) uses this inn as a base of operations.
Set among the tallest peaks of the [[Ahnadiv Mountains]], Malshashar guards a major point in [[Adar]]'s defenses. Malshashar isn't as close to the foothills as
[[Shalquar]], but the fortress is named after a monastery that
once was. Even so, it has more to worry about in the form
of [[Riedra]]n patrols and potential spies than many other
strongholds. It faces Riedra proper and not the small
settlements on the frontier of the [[Andnemun Desert]] and
[[Syrkarn]]. The fortress is mainly under one mountain,
but it sprawls under two other peaks and connects to the
[[dromite]] city-hive of [[Zi'til'natek]] through [[psionic|psionics]] portals
that function within [[Shroud]] bubbles.
Life is harsh in Malshashar, where even the food must be grown underground. Regular storms and landslides make the surrounding territory hostile and impenetrable. Artificial walls have sealed passes for centuries, but [[magic|arcane magic]] and [[psionics]] make these walls look natural. A particularly discerning [[dwarf]] might be able to see their
real nature, but the dwarves of [[Sarlona]] live far away.
[[Kalashtar|kalashtar]] outnumber [[human]]s in Malshashar. Feeling it is their duty to defend the land of refuge in a war for which they are responsible, they handle all military matters in the stronghold. Supported by kalashtar [[psion]]s and martial artists, a few of the human monks of Malshashar live as they have for ages, some not overtly participating in the ongoing struggle. The kalashtar value
the meditations of these pacifist monks nonetheless.
At certain places in the Material Plane, the barriers
between worlds are thin, and some characteristics of
another [[plane]] can bleed through into the material world.
These places are called manifest zones, and the nature
of each one is strongly shaped by the plane it connects
to. The city of [[Sharn]] is located in a manifest zone linked
to [[Syrania]] that keeps its towers reaching toward the sky
and aids flight. Ghosts might linger in a manifest zone
associated with [[Dolurrh]], while a manifest zone tied
to [[Lamannia]] might have wild vegetation and enhance
[[druid]]ic magic. See each plane's "Universal Properties" section for more ideas on how a plane can directly influence the Material Plane.
A manifest zone might include a portal
that allows free passage from either plane to the other, but might only be open when the planes are coterminous, when the moon associated with that plane is full, or both. Most manifest zones have reliable, persistent effects. Some have only weak connections to their planes, and their properties influence
the world only when the plane is coterminous.
Many of the manifest zones of [[Sarlona]] are [[wild zone]]s, places where the outer [[plane]] and the Material Plane truly overlap.
A [[dragon]] rains fire down on a platoon of
soldiers in [[Shavarath]]. Cheering crowds throng the streets of
the [[Amaranthine City]] of [[Irian]]. Dragon, soldiers, crowds—none
of these things are truly real. When you dream that you're
taking a test at [[Arcanix]], the sarcastic professor and mocking
students aren't fully sentient spirits; they're manifestations
of [[Dal Quor]], created for that scene, and as soon as you wake,
they'll vanish. These creatures can appear to be sentient,
and you might be able to have a conversation with soldiers
in Shavarath—but they won't have anything to say that you
couldn't imagine coming out of the mouth of an extra in a war
movie. As a general rule, manifestations can't leave the layers
of the [[plane]]s that they're in, and like dreams, they usually
don't persist indefinitely; when their purpose is served, they
simply evaporate until they're needed again. Very rarely, a
manifestation might develop a more independent, sentient
existence—like the drifters of Dal Quor—though they're
generally still bound to their plane of origin and unable to
deviate from their central purpose.
Manifestations vary by plane; in Dal Quor they're called
figments, while in Shavarath, they're conscripts. In some
planes, the manifestations are formed from the soul-stuff of
mortals, while in others they're entirely imaginary. A plane
never runs out of the potential for manifestations, but these
creatures typically follow the internal logic of a scene. If you
fight a dragon in Shavarath, it feels just like fighting an actual
dragon, and when you kill it, it seems dead and you can enjoy
your victory. However, if you return a day later, there's no sign
of the corpse, and instead, there's a new dragon in the sky.
Some planes don't have manifestations of creatures,
because the ideas they represent don't need them. Instead,
these planes generally rely on native mortals to make up the
supporting cast. So while Shavarath needs a constant churn
of conscripts in battle, and Dal Quor creates figments to flesh
out mortal dreams, other planes—[[Dolurrh]], [[Fernia]], [[Lamannia]],
and [[Syrania]]—don't create manifestations. For example, Lamannia needs mortal beasts to tell its story; birth, growth,
and even death are part of its concept, and reflecting that
requires a mortal population.
This long key, studded with tiny Siberys [[dragonshard]]s, can
only be used by a creature with the [[Mark of Hospitality]]. You
can trace the outline of a door in the air with
the manor key and conjure a shimmering door to an extravagant extradimensional dwelling. While closed, the portal is invisible.
Beyond the portal is a magnificent foyer with numerous chambers beyond. The atmosphere is clean, fresh, and warm.
You can create any floor plan you like, but the space can't exceed 50 cubes, each cube being 10 feet on each side. The place is furnished and decorated as you choose. It contains sufficient food to serve a nine course banquet for up to 100 people. A staff of 100 near-transparent servants attends all who enter. You decide the visual appearance of these servants and their attire. They are completely obedient to your orders. Each servant can perform any task a normal human servant could perform, but they can't attack or take any action that would directly harm another creature. Thus the servants can fetch things, clean, mend, fold clothes, light fires, serve food, pour wine, and so on. The servants can go anywhere in the mansion but can't leave it. Furnishings and other objects created by this spell dissipate into smoke if removed from the mansion.
The spell ends after 24 hours or when you use the key to lock the door and dismiss
the effect; at that time, any creatures within the mansion are expelled into an open space near its entrance. Once used, the key cannot be used again until the next dawn.
Manta Bay lies off the coast of [[Breland]] and [[Droaam]].
A monster in every sense of the word, a manticore has a vaguely humanoid head, the body of a lion, and the wings of a dragon. A bristling mane stretches down the creature's back, and its long tail ends in a cluster of deadly spikes that can impale prey at impressive range.
//''Evil Predators.''// Manticores are fierce killers that hunt far and wide for prey. They work together to take down particularly large or dangerous creatures, sharing the meal once a kill is made. A manticore begins its attack with a volley of tail spikes, then lands and uses its claws and bite. When outdoors and outnumbered, it uses its wings to stay aloft, attacking from a distance until its spikes are depleted.
A manticore isn't particularly bright, but it possesses a malevolent nature and the ability to converse. In the course of attacking, it denigrates its foes and offers to kill them swiftly if they beg for their lives. If a manticore sees an advantage to be gained by sparing a creature's life, it does so, asking for a tribute or sacrifice equal to its loss of food.
You have advantage to resist the effects of [[spell]]s while you wear this pale yellow cloak. The cloak is hemmed with runes embroidered with blue beads.
\define places() {"filter":"$(filters)$"}
\define coords() $(first)$,$(second)$
\define major-sites-actions() <$action-listops $tiddler="$:/MapTags" $filter="[has[points]!minrelevance{Map!!cutoff}]"/>
\define mapactions() <$action-setfield $tiddler="Map" $field="refresh"/>
\define markeractions() <$set name="first" filter="[{$:/MapTags}split[,]nth[6]]"> <$set name="second" filter="[{$:/MapTags}split[,]nth[5]]"> <$action-setfield $tiddler="$:/Origin" text=<<coords>>/> </$set> </$set> <$set name="first" filter="[{$:/MapTags}split[,]nth[8]]"> <$set name="second" filter="[{$:/MapTags}split[,]nth[7]]"> <$action-setfield $tiddler="$:/Destination" text=<<coords>>/> </$set> </$set><$action-setfield $tiddler="Map" $field="refresh"/>
\define backgeocheck() <$action-sendmessage $message="tm-add-tag" $param="[all[]list[geography]tagging[]!tag[continent]!has[points]var[back]]"/>
\define backgeouncheck() <$action-sendmessage $message="tm-remove-tag" $param="[all[]list[geography]tagging[]!tag[continent]!has[points]var[back]]"/>
<$reveal type="nomatch" state="Map!!showcontrols" text="show">
<$button class="tc-btn-invisible tc-tiddlylink" set="Map!!showcontrols" setTo="show">Show Map Layers</$button>
</$reveal>
<$reveal type="match" state="Map!!showcontrols" text="show">
<$button class="tc-btn-invisible tc-tiddlylink" set="Map!!showcontrols" setTo="hide">Hide Map Layers</$button><br/>
<$fieldmangler tiddler="$:/MapTags">
<$checkbox tiddler="$:/MapTags" tag="[all[]all[]all[]has[polylines]tag[latitude]]"> ''Lines of Latitude'' </$checkbox><$checkbox tiddler="$:/MapTags" tag="[has[polygons]tag[continent]]"> ''Continents''</$checkbox><br/><$checkbox tiddler="$:/MapTags" tag="[has[polygons]tag[sea]]"> ''Seas'' </$checkbox><$checkbox tiddler="$:/MapTags" tag="[all[]all[]all[]list[geography]tagging[]!tag[continent]!has[points]!var[back]]" checkactions=<<backgeocheck>> uncheckactions=<<backgeouncheck>>> ''Geography''</$checkbox><br/>
<$checkbox tiddler="$:/MapTags" tag="[all[]has[polygons]!tag[continent]!tag[desert]!tag[forest]!tag[geography]!tag[island]!tag[lake]!tag[mountains]!tag[river]!tag[swamp]!tag[sea]!tag[province]!tag[$:/Background]]"> ''Nations and Regions'' </$checkbox><$checkbox tiddler="$:/MapTags" tag="[all[]all[]has[polygons]tag[province]]"> ''Provinces''</$checkbox><br/>
<$checkbox tiddler="$:/MapTags" tag="[has[points]]"> ''Cities and Sites'' </$checkbox><$select tiddler="Map" field="cutoff" actions=<<major-sites-actions>>><option value="0">All</option><option value="1000">Many</option><option value="2000">Some</option><option value="3000">Few</option><option value="5000">Very Few</option></$select><br/>
<$checkbox tiddler="$:/MapTags" tag="[all[]all[]all[]all[]var[orientraderoad]]"> ''Roads'' </$checkbox>
<$checkbox tiddler="$:/MapTags" tag="[all[]all[]all[]all[]var[lightningrail]]"> ''Lightning Rail Lines''</$checkbox>
</$fieldmangler>
</$reveal>
<$set name=filters filter="[[$:/MapTags]tags[]sort[]reverse[]]">
<div style="padding:7px;border-style: double;max-width:600px;">
<$leafmap cluster="0" width="100%" places=<<places>>/>
</div>
</$set>
<$button>
<<mapactions>>
Refresh Map
</$button>
<$button>
<<markeractions>>
Reset Markers
</$button>
!!! Distance between markers: ''{{$:/Distance}} miles''
''Origin:''<span style="padding-left:37px"/> {{$:/Origin!!latlng}} (coordinates: {{$:/Origin}})<br/>
''Destination:'' {{$:/Destination!!latlng}} (coordinates: {{$:/Destination}})
[[$:/MapTags]]
This map depicts the geography of a 100-mile square. You can point at two spots on the map and cause it to display the shortest, most direct physical route between the points with a red line. The map then becomes nonmagical, but the line remains.
This map depicts the geography of a 100-mile square. You
can speak a command word and have your
current location appear on the map as a red dot that
persists for 1 minute. Once you have used this property, it
can't be used again until the next dawn.
This map initially appears to be a blank parchment, rolled and sealed with wax. You can break the seal and unroll the map. When you do so, the surrounding geography in a 10-mile radius appears in the middle of the map. As you move, the map continues to fill out the area in a 10-mile radius, centered on itself. The map has enough
space to fill a 100-mile square.
This sunken city in the [[Basira Swamp]] of [[Q'barra]] is one of the numerous ruins dating from the [[Age of Demons]]. Towers and the brass capstone of a great temple rise above
the water and muck of a vast swamp. [[Dragonborn|dragonborn]]
legends tell of how the fell magic that destroyed this
place millennia ago left its buildings open and full of
breathable air—and treasure. Stories also tell of the
Fallen Bones, a [[lizardfolk]] tribe that entered the ruins
and never returned. Some believe that these lizardfolk still dwell within Mar’saval, corrupted and allied with evil [[troglodyte]]s in the ruins.
Margheta Tuvodni oversees the [[House Kundarak enclave|Kundarak Enclave (Stormreach)]] in [[Stormreach]]. She is also a skilled physician and surgeon, as well as a [[cleric]] of [[Kol Korran]]; what medicine cannot heal, she mends with [[divine magic]].
The Marguul [[bugbear]]s threw off the yoke of the
[[Ghaal'dar]] long ago, seizing territory in the [[Seawall Mountains]] in the south of [[Darguun]]. They are infamous raiders, and while they have brokered a truce with the
Ghaal'dar, anyone venturing into the Seawall Mountains
had best travel with a Marguul guide.
The Marguul keep members of
other races (including [[goblin]]s and [[hobgoblin]]s) as
slaves, and only [[bugbear]]s can be full members of a
Marguul tribe.
Despite their xenophobia, some of the Marguul tribes pay homage to the Lhesh [[Haruuc|Haruuc Shaarat'kor]] and the [[Ghaal'dar]]. However, the exceptions can prove
dangerous to travelers. The Kalkor are a Marguul
tribe whose members worship the [[Mockery]], and who
delight in flaying their enemies alive. A veteran warrior named Morgaath rules the Kalkor, frequently
leading hunting expeditions against outsiders who
dare to venture into the [[Seawall Mountains]].
Marishantar is a [[rakshasa]] of the [[Lords of Dust]] who poses as a [[dragonmark]]ed heir of House [[Orien]]'s [[Transportation Guild]] named Dekker. This [[fiend]] sports a bogus
[[Siberys mark|dragonmark]] and conceals that it uses demonic teleportation magic to and from [[Stormreach]] rather than using the mark.
Marishantar is a servant of [[Sul Khatesh]], an [[overlord]] with a number of followers hidden in House [[Orien]] and across [[Aundair]].
Marishantar has no direct ties to other [[rakshasa]]s in
[[Stormreach]]. It serves the interests of Sul Khatesh and
has no need to manipulate the [[Storm Lords]] or delve
into the city’s mysteries. As a supposed heir of Siberys
in the [[Transportation Guild]], Marishantar has access
to [[Khorvaire]]’s rich and powerful, and over the course
of centuries, it has used its skills and spells to draw
knowledge from its clients and to plant ideas.
Marishantar is essentially a tourist with no long-term interests in [[Stormreach]]. It's just passing through on assignment, looking forward to the day when it can use its connections in the service of the [[Keeper of Secrets|Sul Khatesh]].
The Dragonmark of Death has faded from history, and no living creature on Eberron carries it. Its powers are not known.
For more information, see [[Lady Illmarrow]].
The Mark of Detection is an [[inquisitive]]'s dream. It
sharpens powers of observation and intuition, allowing the bearer to draw connections and interpret clues
others might miss. By actively drawing on its powers,
the bearer can discern the presence of threats, from poisoned food to scrying eyes.
Only a [[half-elf]] with ties to House [[Medani]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Finding sharpens the senses, guiding the
hunter to prey. It first appeared in the [[Shadow Marches]], where
clan hunters used it to find their quarry. Today, bounty hunters and prospectors use the mark to track down people of interest or valuable items.
Only a [[half-orc]] (or [[human]] with just a bit of [[orc]] ancestry) with ties to House [[Tharashk]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Handling gives its bearer a primal
connection to beasts and the natural world, granting the power to calm and coax. This extends beyond
purely natural animals; the mark allows its bearer to
guide a [[hippogriff]] as easily as a horse.
Only a [[human]] with ties to House [[Vadalis]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
A [[halfling]] with the Mark of Healing can save a life
with a touch, restoring vitality, curing disease and mending wounds.
When dealing with mundane medicine, the mark
helps its bearer sense the nature of maladies, aiding
them in finding a cure. When equipped with [[dragonshard]] focus items, the mark can even draw the dead back from the depths of [[Dolurrh]].
Only a [[halfling]] with ties to House [[Jorasco]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
They may not always have gold, but a [[halfling]] with the
Mark of Hospitality is sure to be rich in friends. The
magic of the mark allows the bearer to keep a place
clean, and to heat, chill, and season food. But it also
helps the bearer connect with others, with a calming aura that helps guests relax and enjoy themselves. With the help of [[dragonshard]] focus items, a mark bearer can even manifest food or shelter out of thin air.
Only a [[halfling]] with ties to House [[Ghallanda]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Making guides its bearer through any act
of creation. The bearer of the mark can [[mend|mending]] broken
things with a touch, and always has a minor [[magic item]]
they've been working on. An [[artificer]] or a [[wizard]] will
get the most out of the mark, but anyone can find a use
for an enchanted blade.
Only a [[human]] with ties to House [[Cannith]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Passage governs motion, allowing its
bearer to move with uncanny speed. The bearer of the
mark can even slip through space in the blink of an eye.
Only a [[human]] with ties to House [[Orien]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Scribing deals with communication—both
the written and spoken word. A gnome who bears the
mark can //feel// words as though they are living creatures,
struggling to make their meaning known. The mark
provides a range of gifts. It translates languages, but it
also allows its bearer to communicate with others at
a distance.
Only a [[gnome]] with ties to House [[Sivis]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Sentinel warns and protects. It heightens
senses and reflexes, allowing an heir to respond to
threats with uncanny speed. It can shield its bearer
from harm. Whether on the battlefield or the ballroom,
someone who carries the Mark of Sentinel is prepared
for danger.
Only a [[human]] with ties to House [[Deneith]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Shadow lets an [[elf]] weave illusions, crafting
magic to distract or delight. It also allows its bearer to
sculpt shadows, making it easy to avoid detection. Some wielders of the mark can use its power to [[scry|scrying]] using [[dragonmark focus item]]s.
Only an [[elf]] with ties to House [[Phiarlan]] or [[Thuranni]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
Wind and water welcome the half-elves who carry the
Mark of Storm, and some learn to call on the power of
the storm itself. Bearers can resist the elements and endure lightning strikes, command the wind and sea, and with the assistance of [[dragonshard]] focus items, pilot [[airship]]s and [[elemental galleon]]s.
Only a [[half-elf]] with ties to House [[Lyrandar]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
The Mark of Warding helps its bearers protect things of
value. Using the mark, a [[dwarf]] can weave wards with
mystic force. It also provides its bearer with an intuitive
understanding of locks used to protect and seal.
Only a [[dwarf]] with ties to House [[Kundarak]] can manifest this [[dragonmark]].
!! {{!!title}} [[Focus Items|dragonmark focus item]]
<<list-links-article "[tag[dragonmark focus item]search::casesensitive{!!title}!search:title[dragonmark]!search:title[channeling]]">>
''Population:'' Mostly [[human]]s and [[dwarves|dwarf]].<br/>
''Character:'' Lively, industrious, and thriving.<br/>
''Businesses:'' Buying and selling almost anything. <br/>
''Key Personalities:'' [[Calynden d'Lyrandar]], the [[Storm Lords]], [[Nat Gann]], [[Yannick Drumdoom]], and [[Valexa Von Ruthvek|Von Ruthvek's Splendors of the South]].<br/>
''Overseer:'' Lord [[Varen Lassite]].
//Broken arches and fallen columns are covered with awnings
and surrounded by market stalls. The twisting, improvised streets are
crammed with people, most of them visitors, making their way through
the city and stopped at every turn by hawkers trying to sell them one
thing or another.//
//Three great buildings loom over everything in this quarter: [[Falconer's Spire]], with airships docked against it; the [[bazaar|Stormreach Bazaar]], a gigantic tent
sheltering the city’s great open-air market; and the [[Lorsmarch Palace]],
center of the [[Storm Lords]]’ power.//
//This is the heart of the city. Here all the city’s struggles, opportunities, and dangers are gathered and intensified. You can feel it in the air,
and soon something is going to change.//
The Marketplace is the natural center of [[Stormreach]], a city sustained by legitimate and illegitimate trade. The [[Lorsmarch Palace]], the seat of the [[Storm Lords]]’ collective power, is here, near the shops and stalls that are the foundation of the city’s economy. The district
has always been the city’s most defensible, and the
older parts of the palace date back to the age of the
pirate kings.
Centuries ago, the Marketplace was not the center of the city. Coastal erosion has shifted the center to this point, which appears to have been a temple district in the [[Age of Giants]]. Remnants of those days are abundant: carved [[stone heads|Stone Heads of Stormreach]], a [[circle of visions]], towering
pillars, and ancient [[tunnels|Stormreach steam tunnels]] that have been turned into
basements for many of the district’s buildings.
For adventurers, the Marketplace is the best place
to resupply or to sell whatever goods they have discovered in the continent’s interior. Although goods can be expensive here, the Marketplace is the only place to
buy or sell many things.
!! Noteworthy Locations
* the [[Stormreach Bazaar]]
* [[Black Iron]]
* the [[Chapterhouse]]
* [[Falconer's Spire]]
* the [[Lorsmarch Palace]]
* [[Molou's Distillery]]
* the [[Nest]]
* the [[Old Catacombs]]
* the [[Phoenix Tavern]]
* the [[steam tunnels|Stormreach steam tunnels]]
* [[Von Ruthvek's Splendors of the South]]
!! Adventure Hooks
* [[Valexa Von Ruthvek|Von Ruthvek's Splendors of the South]] is sponsoring an expedition deep into Xen’drik in an attempt to find an artifact called the //Vessel of the Infinite Sea//. Von Ruthvek’s mysterious benefactors do not want the artifact returned to her, fearing she might divine their purpose from it. They have dispatched agents to steal the item from the adventurers once they have recovered it.
* [[Hular]] wants his daughter to get “this adventuring nonsense” out of her system, so he has set aside some money to hire adventurers to take her out on an adventure, bribing them to make it difficult and unpleasant in the hope that it will put her off adventuring for life.
* While exploring the [[bazaar|Stormreach Bazaar]], the adventurers witness a potion vendor’s stall burst into flames. The fire will spread rapidly unless someone stops it!
A respectable, if
a bit run-down, option for longer stays in [[Lower Central]], Marquan's offers private rooms with a
common dining room. The building is decorated
with paintings, sculpture, and pottery produced by
local artists, all of whom are past or present residents of Marquan's. Kielsten Marquan, the owner
and sole employee, no longer keeps the place up as
well as he used to. This is because Kielsten runs a
small cult devoted to a [[radiant idol]], and his attention to his
business has slipped as his activity and responsibilities within the cult have increased.
Kielsten's cult holds meetings in a large
private room at Marquan's. Here, the cult members pay homage to their patron, a radiant idol
that calls itself Zotharr, Idol of Death. Zotharr
demands gifts as part of these ceremonies, and
its demands have become increasingly extravagant with the increased loyalty of its cultists. The
cultists have been seduced into acts of robbery,
kidnapping, and—most recently—ritual murder to
please their patron. Kielsten assumed leadership
of the cult in the last month, after the previous
leader balked at performing a human sacrifice
and Zotharr killed him for his disobedience.
Kielsten is nervous but sadistically excited about
his new responsibilities.
The Marsh of Desolation sits near the base of the [[Skyfall Peninsula]] in northern [[Xen'drik]]. The bog is said to carry the taint of some great evil that lies at its heart, sapping the will of those who enter and consuming their minds like fire. Any metal that enters the swamp very rapidly corrodes, crumbling to dust over the course of a few days.
The festering marsh is home to uncountable swamp
predators that hunt and feed on each other. Many of these are [[monstrosities|monstrosity]] not seen anywhere else on Eberron, including green-striped gray tigers with webbed paws. Of the fearsome creatures of the swamp, few
are higher on the food chain than the [[hydra]]. Some hydras have laired in regions riddled with pockets of flammable gas; such creatures can inhale these gases and ignite them as they exhale, breathing jets of fire at their foes.
The ''Temple of Sondar Thaj'' lies in the heart of the Marsh of Desolation. In fact, some corrupted artifact or cursed entity within the temple is said to be responsible for the lingering malaise that seems to hang over that swamp. Legends
say that it is the resting place of the [[Crown of Sondar Thaj]], an incredibly powerful [[draconic|dragon]] artifact from the [[Age of Demons]].
Maru Sakhesh is a [[cleric]] of the [[Church of the Wyrm Ascendant]] and high priest of the [[Temple of the Sovereign Host]] in [[Stormreach]]. Sakhesh is a cruel but charismatic man, and he has brought a considerable fortune to the temple coffers during his tenure. He was killed by a band of adventurers looking to loot the temple in 997 YK, but the [[Jorasco]] healers were able to [[raise him from the dead|raise dead]]; since that incident, he tends
to be somewhat suspicious of wanderers.
In ages past, the [[orc]]s that
eventually became the [[Ghaash'kala]] entered the [[Labyrinth]]
for the express purpose of keeping the horrors of the [[Demon Wastes]]
trapped and cut off from the rest of the world. One of the
oldest of these clans, the Maruk, has a long and bloody
history of fulfilling this mission.
The Maruk clan guards the central passages through the Labyrinth, the routes most often used by the [[Lords of Dust]] and their agents. The sly and clever [[rakshasa]]s often
manage to slip past the vigilant eyes of the Maruk guards,
but the sacred warriors of the binding flame are not without their resources. They can see through disguises used by the [[fiend]]s, and engage in deadly battle with any fiends they uncover in the depths of the canyons. The
Maruk clan suffers terrible casualties as a result of these
constant battles; the only reason the clan has survived to the present day is because of the steady infusion of new blood.
Orc barbarians from the [[Shadow Marches]], human scouts
from the [[Eldeen Reaches]], and even youths from the [[Carrion Tribes]] often hear the call of Kalok Shash, a divine beacon
that draws them to the Maruk [[Ghaash'kala]]. As a result, the
Maruk clan counts more [[human]]s and [[half-orc]]s among its
members than any other Ghaash’kala clan and possesses
slightly better equipment. The Maruk clan also has a higher
percentage of [[paladin]]s than the other three clans.
Members of the Maruk Ghaash’kala are somber
and serious, prepared to die at any time in battle with
the [[fiend]]s of the [[Demon Wastes]] and other horrors spit
up from the depths of [[Khyber]]. ''Torgaan Shashaarat'' ([[orc]] [[paladin]]) leads the clan, while the elderly priest ''Lharc Suusha'' (orc [[cleric]]) guides it.
!! Maruk Dar
Maruk Dar, a small settlement of the Maruk tribe, stands near a large
defile in the southwestern portion of the [[Labyrinth]].
The Maruk folk dwell in concealed caves, reached
by switchback stairs and protected by deadly traps
and watchful eyes. No more than a few hundred
people dwell in such settlements at a time, since the
Ghaash'kala’s mission keeps them on the move.
Maruts are powerful guardians, crafted in the
[[Crucible]] of [[Dolurrh]], forged from [[husksteel]], and tasked to
preserve the cycle of life and death. Maruts are occasionally
dispatched to [[Eberron]] to intervene with acts of [[resurrection|raise dead]], or
when a [[lich]] or [[mummy]] is created. No one's sure what triggers
this deadly intervention—perhaps the resurrection defied the
[[Prophecy|Draconic Prophecy]]—but [[Jorasco]] healers always cast [[augury]] before
raising the dead. If the result is “woe,” they refuse the job, lest
a Dolurrhi marut appear, destroying the resurrected creature,
its healer, and possibly the whole healing house in the process
This painted leather mask covers the upper half of the user's face, and has lenses of heavy red glass. The wearer can examine someone and see everything they are carrying. Objects in pockets, purses, or tucked in belts or sleeves can be easily seen by the wearer.
This mask resembles the face of a "monstrous" [[humanoid]].
You can place the mask on your face and take on the guise of the depicted creature as if you had cast the [[disguise self]] spell. The effect
ends early if you remove the mask. The DM chooses the
kind of mask or determines it randomly.
Once you have used the mask, it can't be used again until
the next dawn.
Maskweavers are the shamans of the Talenta halflings. The Talentans believe that the environs around them are filled with the spirits of their
ancestors, spirits of nature, and even of fringe
realms to this plane. A maskweaver guides
their tribe and serves as an intermediary for the
spirits as part ambassador, part medium. They
create the masks that serve as symbolic tools
when dealing with the spirits and help their
tribal warriors forge the tethering bonds with
their mounts. Like the [[Greensingers]], the Talenta
[[druid]]s often deal with the [[fey]] but, unlike their
[[Eldeen|Eldeen Reaches]] counterparts, the maskweavers see no
distinction between purely natural spirits, the
ghosts of their ancestors, or the fey.
The masquers are the elite spies of the [[Thousand Eyes]] in [[Riedra]]—exceptional [[changeling]]s trained in the arts of subterfuge
and observation. A masquer seldom carries weapons and
never initiates combat, but often wear a psionic form of [[shiftweave]]. Their job is to infiltrate, observe, and report, allowing others to do the messy work. Those
who encounter a masquer rarely know it, but any foreigner
who spends time in a bastion is observed by one.
''Sovereigns:'' [[Kol Korran]], the [[Keeper]]
Although known for their greed, these [[dragon]]s are
shrewd negotiators and students of history. The hoarders
play a critical role in the [[Chamber]], because they have the
strongest grasp of economic forces and their influence
over [[humanoid]] lives.
Some take this one step farther, treating life and
death as simple negotiations and seeking to collect actual
souls in emulation of the [[Keeper]] (a task that can be
accomplished using the [[Keeper's Fang]] weapons and other
binding magics). A few go so far as to become [[dracolich]]es,
but unless this is sanctioned by the [[Eyes of Chronepsis]]—a
rare occurrence indeed—the dragon could be hunted
down and destroyed.
While this looks like a scrap heap assembled from
shattered [[construct]]s, this [[eldritch machine]] possesses
great power. A creature in control of it can sense the
presence and location of all [[warforged]] within 10 miles
of the device and can send a telepathic
message to them laced with [[enchantment]] magic. Such a
message can be sent no more than once every 24 hours.
A warforged who receives the message is compelled
to follow one command contained within it, unless it can resist the magical compulsion.
The affected warforged breaks free of the command
after 24 hours.
These are the council chambers of the Masters—those [[Io'lokari]] of highest level who
choose to dedicate themselves to the administration of the [[city|Io'lokar]]. The council is an unelected body whose membership changes month to month—any Io’lokari of high enough skill or might is free to join.
Council meetings are open to all citizens, but strangers wishing to speak to the council or observe debate are carefully vetted by both interrogation and divination. The [[dragon]]s of the [[Warders]] sometimes observe or offer guidance to the council, with such sessions held on the [[Dragon Green]]. Citizens pack the lawn and line the walls for such special events.
The masthin plant, native to the jungles of [[Q'barra]], produces natural intoxicants during its early growth and is chewed by the native folk; it also often attracts animals in the wild. It can be used to enhance the effects of certain [[enchantment]] [[spell]]s and [[potion]]s.
In the [[Age of Demons]], the region now known as [[Q'barra]]
was the domain of a [[fiend]]ish [[overlord]] of terrifying power.
He drew the light from the sky, and so his slaves called him
Masvirik, “the Cold Sun,” cousin to [[Tiamat]]. Masvirik has
power over creatures of scale and fang and venomous things
that slither through shadows. The dreaming priests of the
[[Masvirik’Uala|Cold Sun Federation]] say that the Cold Sun formed [[kobold]]s and
[[troglodyte]]s from [[lizardfolk]] stock, creating beasts that were
more vulnerable to his power. The existence of these creatures in distant lands calls this into question, but kobolds and troglodytes make up a larger percentage of the [[Poison Dusk]] than any other race.
Like many of the [[overlord]]s, Masvirik’s arrogance was his
undoing. The [[dragon]]s and [[couatl]] freed the [[lizardfolk]] from
his influence, and they rose up against him. In time the Cold Sun was cast down, bound beneath his [[obsidian citadel|Haka'torvhak]], and trapped by the [[Silver Flame]]. The [[couatl]] sacrificed their lives to kindle that flame, but the [[dragon]]s remained.
In time they dispatched the [[black dragon]] [[Rhashaak]]
to watch over [[Q'barra]]. He was accompanied by a host of
[[dragonborn]] soldiers, hand-picked from the legions of the
[[Light of Siberys]]. These sentinels established garrisons at
various demonic sites across the region. The worst of these
was the resting place of Masvirik, which they renamed
[[Haka'torvhak]]. Rhashaak made his home there, with the
best of his soldiers, and there they waited.
For a thousand years the [[dragonborn]] served with
distinction. As their population grew, they spread
across the region. Another thousand years passed,
and the young grew frustrated. They were a race of
warriors waiting for a battle that might never come.
Their skills were wasted, and the [[dragon]] lord of
[[Haka'torvhak]] had little interest in their doings. [[Rhashaak]]’s attention was confined to his city and to a spiritual battle no dragonborn could understand.
So the [[dragonborn]] ventured across the [[Endworld Mountains]] and into the plains that lay beyond. There they encountered a worthy challenge in the Empire of [[Dhakaan]]. Another thousand years passed as the dragonborn carved out their nation in the [[Blade Desert]] and [[Talenta Plains]], the tides of the Goblin Wars waxing and waning. There were great triumphs and terrible defeats. It was a joyful time for a people who thrived in battle. But in building this new empire, they forgot the battle they’d been sent to fight, and this finally came back to haunt them.
In [[Haka'torvhak]], [[Rhashaak]] had been holding the
fiend Masvirik at bay through sheer force of will, until
he finally faltered. The wards around Haka’torvhak
trapped Rhashaak himself. While the fallen guardian
couldn’t leave the fortress, the influence of the Cold
Sun spread across the land, and the [[Poison Dusk]] was
born. [[Kobold|kobold]]s, [[troglodyte]]s, and the transformed [[dragonborn]] of Haka’torvhak rose up in arms. Across the empire, young dragonborn corrupted by Masvirik’s power turned on their kin. As the empire collapsed,
the dragonborn returned to [[Q'barra]] to face the source
of the curse.
The [[dragonborn]] fought valiantly, but it wasn’t a
battle that could be won with courage or skill at arms
alone. To this day, the dragonborn themselves don’t
realize the true source of their salvation.
The [[couatl]] that bound Masvirik left a failsafe in place.
As the [[overlord]]’s power grew, a pulse of radiant energy
flowed across the land, filling Eberron [[dragonshard]]s
with the light of the [[Silver Flame]]. This power weakened
the influence of Masvirik and the [[Poison Dusk]] and woke
ancient memories in the [[lizardfolk]]. This was the creation
of the [[dawn shard]]s, and this web of light has kept the darkness at bay for thousands of years. Now House [[Tharashk]] is
harvesting these shards in record numbers, and Masvirik’s
power is growing once more.
Masvirik has followers among the [[Lords of Dust]], but he
doesn’t have a prakhutu (or "speaker") on the Council of [[Ashtakala]]; [[Rhashaak]] is his voice, and the [[dragon]] is bound in [[Haka'torvhak]].
The [[Poison Dusk]] are his minions, and at the moment he
has little influence beyond [[Q'barra]].
Information about Masvirik is extraordinarily scarce.
Even the [[dragonborn]] of [[Ka'rhashan]] remember little about
this ancient [[fiend]], having focused their attention on their
battles against the [[Poison Dusk]]. The [[lizardfolk]] are among
the only people who know anything about the [[overlord]], and
so far they haven’t shared this lore with outsiders.
This windy village in [[Syrkarn]] is a sprawling mass of farmsteads
and stone buildings flanked by raised berms of rock
and earth. Settlers have lived here since the days of the [[twelve kingdoms|Sarlonan province]]. It is an agrarian village, mostly growing [[sepse]] and flax.
This tag indicates a substance with remarkable or magical properties that can be used in smithing, alchemy, or the creation of [[magic item]]s.
<<list-links-article "[tag{!!title}sort[title]]">>
The //maul of the glacial heights// is one of the [[destiny arms]]—a mighty weapon of the [[giant]]s forged during the war against the [[quori]]. The maul was crafted by a giant [[cleric]] of [[Banor|Rushemé]], a variation of [[Balinor]], the [[Sovereign|Sovereign Host]] of the Hunt.
The maul has a long, pale wooden shaft
made from the heart of a great mountain pine. Wrapped
in silver bands, the shaft ends in a gigantic head made
of sparkling blue ice. Veins of light flash through the icy
head, dancing from one end to the other.
Striking the maul against a creature or surface triggers a powerful icy burst to issue from the point of impact. In addition, the wielder of the maul becomes immune to possession, and gains resistance against all [[psionic|psionics]] powers.
This [[Vadalis]] storefront deals in exotic pets and animal companions, along with barding and other useful gear.
Maza Thadian ([[elf]] councilor for [[Upper Northedge]]) is one of the oldest, richest, and most respected elves in the city. She owns the [[Oaks]], one of
the finest restaurants in [[Sharn]]. Maza is stubborn and
set in her ways, and she constantly fights to maintain
the status quo and uphold tradition; however, she does
tend to put the concerns of the wealthy before those of
the poor, especially the [[goblin]]s and other dregs of the
[[lower ward]]s. While she has the highest regard for the
law, she is in no way naïve; she is capable of surprising
subterfuge in the best interests of Sharn.
Mazalene is the [[Dominion|dominion]] of Rumors, and at her storefront in the [[Immeasurable Market]] of [[Syrania]], she only trades
in kind. Anyone who has a particularly interesting story to
share with her can get an intriguing—and possibly true—tale from this [[angel]].
The chief [[magebreeder|magebreeding]] of the
[[Hearth]], Mazina is also a driving force behind the
[[Feral Heart]]... and a faithful [[cultist of the Dragon Below|Cults of the Dragon Below]]. She is drawing on the forces of [[Khyber]] and binding them to the beasts of the Feral Heart as part of a greater scheme to spread chaos across the world.
In a [[Harbor]] district alley, a filthy sign sways over a ramshackle storefront and proclaims the name of the proprietor within: Mazrath the Maker. Inside is an incongruously clean gallery filled with beautiful marble sculptures of such majesty that they could have
been sculpted in [[Syrania]] by the hands of [[angel]]s.
The artist behind these works is Mazrath, a limping old [[elf]] with milk white eyes as blind as a [[grimlock]]’s. He coaxes wonders from blocks of marble, carving them entirely by feel, and creates gods and angels from clay pottery with the caress of his well-worn hands.
Mazrath did not always spend his days creating. There was a time when his skillful hands lent their talents to endings instead. Before the [[Shadow Schism]]
within House [[Phiarlan]] in 972 YK, Mazrath was called
Tyrellin [[Paelion]] d’Phiarlan and was the favorite uncle of
Lord [[Tolar Paelion d'Phiarlan|Shadow Schism]]. Tyrellin maintained a spy network so vast it reached the upper echelons of every [[dragonmarked house]] and plumbed
the deepest dungeons and darkest alleyways across
Khorvaire. When a strike force of [[Thuranni]] assassins
came for him in the night, Tyrellin slew them to the
last, but not before a sword slash stole his sight.
Now the old elf toils in his gallery, but rumor has it that his ears still hear more than most eyes see. Little goes on in [[Stormreach]] that Mazrath does not know,
and a [[shadowy network|Bloody Shadows]] still reports the goings-on of the powers behind the [[Five Nations]], as well as every move his enemies make in the [[Emerald Claw]], House [[Phiarlan]], and House [[Thuranni]]. No one knows if he plans vengeance, but for the time being, the blind elf is certainly a brilliant sculptor.
While wearing this medallion, you can cast the [[detect thoughts]] spell from it, up to three times per day.
<<<
{{detect thoughts}}
<<<
''Leader:'' Baron [[Trelib d'Medani]]<br/>
''Headquarters:'' [[Tower of Inquisition]] ([[Wroat]], [[Breland]])<br/>
''Dragonmark:'' [[Mark of Detection]]
//If you want a wall of muscle to get between you and a blade, go to House [[Deneith]]. if you want someone to anticipate the threat and make sure you aren't even in the room with whoever's holding that blade, that's what we do.//
<div align="right">—Baron Trelib d'Medani</div>
Represented by the [[basilisk]]'s eye, the [[Warning Guild]] of
House Medani brokers the services of bodyguards and
[[inquisitive]]s. Medani advisors specialize in risk assessment and management, protecting clients from both physical and social threats. While Medani overlaps with
the inquisitives of House [[Tharashk]] and the bodyguards
of House [[Deneith]], the [[Warning Guild]] specializes in subtle threats and complex mysteries. Baron Trelib manages the guild's affairs from the [[Tower of Inquisition]] in
[[Wroat]], where the house also interrogates prisoners for
King [[Boranel|Boranel ir'Wynarn]] of [[Breland]].
The members of House Medani are [[half-elves|half-elf]] with
deep roots in Breland. Medani has little interest in the
power struggles that sometimes break out between
the other [[dragonmarked house]]s. Many Medani heirs
are more interested in helping their communities
than in raw profit, and Medani heirs often work with
local law enforcement or help those who can't afford
their services.
!! History of House {{!!title}}
The Mark of Detection appeared more than 1,500 years ago in the collection of [[half-elf]] families that would become House Medani. Members of the house were so effective at using their power quietly that the other houses initially thought they were bearing an [[aberrant mark|aberrant dragonmark]] when House [[Cannith]] discovered them in the middle of the [[War of the Mark]]. Because House Medani had no aspirations beyond a few provinces in [[Breland]], it took a great deal of negotiation—and not a few veiled threats—to persuade it to join the other [[dragonmarked house]]s.
Even after formally becoming a dragonmarked
house, the Medanis remained at arm’s length from
the politics of the other houses. Many call them aloof
or inscrutable, and the other dragonmarked houses
question whether House Medani is closer to the Brelish crown than it is to the other houses. The distance between House Medani and the other houses is the
result of more than suspicions over Brelish influence, however. Fundamentally, a house that notices everything, apprehends spies (many [[Phiarlan]]s and
[[Thuranni]]s among them), and keeps its secrets to itself
is a house that’s bound to make everyone else nervous.
!!! The Last War
The other houses’ suspicions about House Medani’s connections to the crown of [[Breland]] have some merit. As the [[Last War]] raged on, House Medani increasingly became the counterintelligence arm of the Brelish government. Although the house didn’t engage in espionage directly, it did apprehend dozens of spies from other nations and power groups, and it performed a lot of investigative law enforcement while most able-bodied watchmen and guards were off at war. That connection between house and crown survived the war intact, and House Medani has a subtle but pervasive influence on the [[Brelish king|Boranel ir'Wynarn]].
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
In order to attune to this magic item, you must possess the [[Mark of Detection]].
While holding this wand, you can expend some of its stored magical power, and if a secret door or trap is within 30 feet of you, the wand pulses and points at the one nearest to you. The wand can be used 2-5 times per day before its power is expended and must recharge overnight.
In order to use this magic item, you must possess the [[Mark of Detection]].
These crystal lenses fit over the eyes. While wearing them, you can see much better than normal out to a range of 1 foot. You have advantage to investigate while searching an area or studying an object within that range.
Originally part of the [[Healers Guild]], the Medics Guild became a distinct entity
about fifty years ago, when the [[Last War]] was at its
height. The armies of the [[Five Nations]] wanted healers who could march with them. As soon as the national armies demonstrated that they would pay
handsomely for that privilege, House [[Jorasco]] started
establishing mobile hospitals, relying on House [[Vadalis]] for sturdy draft animals and on House [[Deneith]] for military training. Like House [[Ghallanda]]’s [[Dragontail Guild]] of field provisioners, the Medics Guild has contracted somewhat now that the [[Last War]] is
over. But House [[Jorasco]] has been more aggressive in finding new ways to put mobile healers to use. House [[Tharashk]], for example, is increasingly hiring the Medics Guild to assist its [[dragonshard]] prospecting operations in the [[Shadow Marches]], where diseases (and battle wounds, for that matter) run rampant.
Medusas are scaly monstrous humanoids with writhing serpents in place of hair. They are known and feared for their gaze, which can turn any creature who meets it to stone.
The [[Gatekeepers]] claim that medusas were created by the [[daelkyr]] [[Orlassk]], but the medusa priests of [[Cazhaak Draal]] offer their devotions to the [[Shadow]]. They claim that the Shadow shaped many of the creatures [[human]]s see as monsters, giving the [[harpy]] her deadly voice, hiding the [[displacer beast]] from its foes, and healing the wounds of the [[troll]]. These priests view the deities of the [[Sovereign Host]] as the true evil, comparing the exile of the Shadow to the fear with which many humans respond to medusas and other monsters.
There are relatively few medusas in [[Droaam]], but
their intelligence and mystical power makes them a vital part
of this growing nation. Medusa architects direct construction
in the blended cities, laying the foundations of what this nation
could become. Medusas who choose to serve as [[Katra's Voice]]
are often called upon to resolve disputes and enforce justice,
for who dares challenge the ruling of a medusa? Cazhaak Draal is also the seat of the most organized religious tradition in Droaam—the worship of the [[Dark Six]]—and most powerful priests of the Six are medusas. Compared to many denizens of
the region, medusas tend to be calm and rational; however, they
expect to be treated with respect and aren't above a few harsh
lessons to make a point.
The gaze of a medusa can petrify even an ally, and as a result, a medusa does not meet the gaze of a person with whom it is conversing. Where she directs her eyes indicates her esteem for the person. She drops her eyes toward the ground to show respect, or looks up and over the person if she wishes to indicate disdain; when speaking to an equal, she glances to the left or right. If she wishes to show trust, she directs her gaze to the person, but closes her eyes.
A medusa's gaze is a powerful weapon, but most medusas don't think of it as deadly. A petrified victim can be restored to life, after all; within their own society, medusas often use petrification as a way to preserve mortally wounded kin, so they can be restored at a later time when healing magic is available. Likewise, medusas dying of old age often choose to be petrified before they fully pass on; [[Cazhaak Draal]] contains a great catacomb filled with the stone remnants of respected medusa elders. This ties to the love of stonework common in the culture; when a medusa looks at a statue, she sees the life it represents.
A medusa uses its living mane for many purposes. In addition to serving as weapons and a supplemental form of eyesight, a medusa's serpents also help her communicate. The motions of the serpents often reflect a medusa's mood, and a DM should consider the state of a medusa's mane when describing her actions. The medusas of [[Cazhaak Draal]] have developed a simple language called Serpentine, which is based on the motions and hissing of their snakes.
Once these simple bone studs are donned, the wearer's appearance slowly transforms into that of a [[medusa]] over the course of a couple of days. Their hair slowly transforms into slender snakes, which obey the wearer. You cannot see through their eyes, however, and you do not have the petrifying gaze of the medusa.
If the earrings are removed, the snakes slowly die and fall away, and the wearer's appearance returns to normal after a couple of days.
The Meer River in [[Adar]] flows into the [[Sea of Lost Souls]].
For many years, Mel-Aqat was thought to be mere legend. Mentioned in a variety of ancient texts, this site was supposedly the prison for a mighty demonic [[overlord]] (named "[[Dhavibashta]]", according to the //Serpentes Fragments//) somewhere in [[Xen'drik]]. Until only a few years ago, most scholars had abandoned hope of ever finding it, but then it was unearthed in the [[Menechtarun Desert]] by an ill-fated expedition led by the [[Morgrave|Morgrave University]] scholar Janik Martell.
The [[Ramethene Sword]], a weapon known as the "Sunderer" that was once wielded by the [[rakshasa]] [[Shudra]] the Fleshrender, was hidden in a shrine in Mel-Aqat for tens of thousands of years. However, during Martell's expedition, a member of his party betrayed him and delivered the sword into the hands of the Order of the [[Emerald Claw]].
A meld is formed from the faded souls of mortals—[[husk]]s
whose memories have been consumed by [[Dolurrh]]. These
husks are typically harmless, but sometimes an aggressive
nucleus gathers other husks, forming a deadly gestalt. In
essence, a meld is a fusion of half-formed [[ghost]]s; it has an
amorphous shape, with vague faces and limbs projecting
from the mass, then being consumed once more. It makes
no sound when it moves, but mortals around a meld
hear cries of pain, pleading voices, and unearthly moans.
It can project some of its husks into a mortal body, temporarily overwhelming
the victim with conflicting desires and visions.
//''Denizens of Dolurrh.''// Melds are born in [[Dolurrh]], and
prowl the endless caverns searching for scraps of memory.
This hunger can draw them to [[Eberron]] through [[manifest zone]]s or when [[plane]]s are coterminous. A meld can also manifest when someone is [[raised from the dead|raise dead]], following in the wake of the soul being drawn back to the world of the
living. Melds that enter Eberron rarely stray more than one
mile from the point where they arrived.
//''Hunger for Memory.''// A meld has the barest traces of
dozens of souls. It remembers scraps of the most powerful
moments of its component husks, but it can't place these in
any context. The meld yearns to consume other spirits, to
feast on their memories and emotions. While highly unusual,
it's possible for a powerful personality within a meld to exert
temporary control; this might cause the meld to pursue a
particular individual or draw it to a specific location. When
a meld kills a living creature and consumes its spirit, the
flood of memories can also shift the purpose of the meld,
as it suddenly acts on the desires of its most recent victim.
A meld loose in Eberron retains the spirits it consumes,
preventing them from transitioning to [[Dolurrh]]. This prevents
the spirit from fading; a character could hear the whispers
of a trapped spirit within a meld, and a husk could hold the
souls of people who died long ago. A side effect of this is that
creatures slain by a meld cannot be resurrected or raised
from the dead until the meld is destroyed.
You step into a stone object or surface large enough to fully contain your body, melding yourself and all the equipment you carry with the stone for up to eight hours. Nothing of your presence remains visible or otherwise detectable by nonmagical senses.
While merged with the stone, you can't see what occurs outside it, but you can still faintly hear. You remain aware of the passage of time and can cast spells on yourself while merged in the stone. You can choose to leave the stone where you entered it, which ends the spell. You otherwise can't move.
Minor physical damage to the stone doesn't harm you, but its partial destruction or a change in its shape (to the extent that you no longer fit within it) expels you and deals bludgeoning damage to you. The stone's complete destruction (or [[transmutation]] into a different substance) expels you and deals more bludgeoning damage to you.
Governors of the region surrounding [[Pylas Talaear]],
the [[line|Aereni noble line]] of Melideth produces the finest sailors of [[Aerenal]] and
maintains the Aereni navy. Due to its mercantile tradition,
Melideth Aereni are more comfortable with foreigners than
many of their kin. Facial tattoos are a common practice among
the Melideth.
In 497 YK, Melysse Miron challenged the [[Keeper of the Flame]] Kyra Danth for control of the church of [[Thrane]] during what was later known as the Time of Two Keepers. Born a peasant, Melysse claimed that she had been visited by [[Tira Miron]], the Voice of the [[Silver Flame]], who revealed that Melysse was her direct descendant and the rightful Keeper. She challenged many of the existing doctrines of the church, claiming it had strayed from its proper path. Initially, [[divination]] magic failed to prove or disprove her story, but eventually the truth was revealed: Melysse was the chosen hand of the [[Shadow in the Flame|Bel Shalor]]—the demonic [[overlord]] bound beneath [[Flamekeep]]. Melysse and her followers were brought to justice after a brief but bloody conflict, but the [[Council of Cardinals]] chose not to kill her, as church diviners believed if she were slain the dark voice would find a new agent. Instead, she was petrified and sent to the Stone Ward of [[Dreadhold]], there to remain for eternity.
Melysse has been held in Dreadhold for over five hundred years and has never been revived. She is a skilled orator and powerful [[cleric]] on her own, but within the confines of [[Flamekeep]] she gains access to the power of her dark lord, making her extremely dangerous. The church, meanwhile, has stricken all mention of Melysse from their records and only the highest-ranking clergy know of her existence.
This spell repairs a single break or tear in an object you touch, such as broken chain link, two halves of a broken key, a torn cloak, or a leaking wineskin. As long as the break or tear is no larger than 1 foot in any dimension, you mend it over the course of one minute, leaving no trace of the former damage.
This spell can physically repair a [[magic item]] or [[construct]], but the spell can't restore magic to such an object.
The [[line|Aereni noble line]] of Mendyrian governs the region
around [[Shae Cairdal]], and for most of [[Aerenal]]'s history they
have also been the source and seat of the [[Sibling Kings]]. The
Mendyrian Aereni are devoted to arcane lore, and many of
the most gifted [[wizard]]s and [[artificer]]s are Mendyrian. The
Mendyrian Aereni take particular pride in their appearance,
favoring ornate patterns and decoration in clothing, elaborate
hairstyles, and masks of metal or leather.
The desert of Menechtarun dominates the western portion of the continent of [[Xen'drik]], stretching over a thousand miles in length, and its deadly heat has long
hindered adventurers seeking to claim its secrets. This vast desert is home to the [[bhuka]] and [[asherati]], in addition to [[thri-kreen]] and [[armand]] nomads. [[Dire apes|dire beast]] and other dangerous creatures also inhabit the dunes.
Countless secrets of ages past are hidden in this desert. From the top of a giant pillar in the middle of the arid wilderness, the night sky appears to hold different stars and only three moons. In the center of the desert, a mysterious glacial waste serves as the dwelling of a ravenous [[elf]] [[vampire]]. The ruined city of [[Mel-Aqat]] sits on the eastern edge of the desert, perhaps holding answers to mysteries of the [[Age of Giants]] and earlier.
The hub of [[Sharn]]'s entertainment industry and home
to [[Breland]]'s largest university, Menthis Plateau is one
of the most diverse quarters in Sharn. Whether you're
looking for classical theater, a fine bookstore, or an illegal fighting ring, Menthis has something to offer.
* [[Upper Menthis]]
* [[Middle Menthis]]
* [[Lower Menthis]]
Menthis Plateau is connected by bridge to [[Dura]], [[Tavick's Landing]], and [[Central Plateau]].
!! What's on the Bill?
People come from across Breland to experience the
Menthis art scene. All manner of entertainment can be
found in this quarter, from bawdy Lower Menthis events
to the traditional works of the [[Classic Theater]] in Middle
Menthis. The table below provides a sampling of the many performances staged in Menthis.
| !<<dr d8>> |!Event |
| 1 |''Tira's Tears.'' A speculative drama about the [[founder|Tira Miron]] of the Church of the [[Silver Flame]]. ([[Grand Stage]], Upper Menthis) |
| 2 |''Facade.'' A comedy of errors about a family of changelings, involving a tangled web of mistaken identities. ([[Art Temple]], Upper Menthis) |
| 3 |''Five Lives.'' A bitter reflection on the tragedy of the Last War, as seen through the eyes of five soldiers. Written by up-and-coming playwright [[Luca Syara]]. ([[Diamond Theater]], Lower Menthis) |
| 4 |''Galifar Triumphant.'' A beloved history based on the legendary king and the conflict that established the Kingdom of [[Galifar]]. ([[Classic Theater]], Middle Menthis) |
| 5 |''The Late Count.'' A comic opera by the bard [[Kessler]], revolving around a [[Karrnath]]i count who is resurrected as a [[zombie]]. ([[Sharn Opera House]], Upper Menthis) |
| 6 |''The Carnival of Shadows.'' House [[Phiarlan]]'s traveling circus, a mesmerizing blend of illusions, physical arts, and exotic beasts. The traveling troupe always visits [[Smoky Towers]] (Middle Menthis). |
| 7 |''The Brelish Symphony Orchestra.'' A performance of some of the finest works of Seventh Century Brelish composers. ([[Kavarrah Concert Hall]], Upper Menthis) |
| 8 |''Reflection.'' A one-person show performed by the [[changeling]] Adi, exploring the multitudes that exist within us all. ([[Ten Torches]], Lower Menthis) |
!! Things to Do in Menthis Plateau
Any list of attractions that tries to summarize what
Menthis Plateau has to offer, even without considering
all the performance events, is doomed to be incomplete.
Of the countless possibilities, some of the most popular
reasons to come here are the following:
* ''Consult a sage.'' [[Morgrave University]] might not be the finest institute of learning in [[Khorvaire]], but it's the best Sharn has to offer. Whether you want to conduct your own research in the library or find a specialist in [[goblinoid]] history, Morgrave likely has what you need.
* ''Go into show business.'' Menthis has a wide range of performance venues, from the [[Grand Stage]] to the many taverns of [[Lower Menthis]]. In addition to enjoying the entertainment, you could try to find work—either showcasing your artistic talents on stage or displaying another sort of prowess in the [[Burning Ring]].
* ''Join an expedition.'' Scholars at Morgrave often sponsor expeditions to [[Xen'drik]] and into the ruins below Sharn. Cyran nobles in [[Smoky Towers]] sometimes hire brave souls to venture into the [[Mournland]] to reclaim lost treasures.
* ''See other cultures.'' [[Den'iyas]] brings a touch of [[Zilargo]] to Sharn. You might find a [[clawfoot]] raptor running down the streets in [[Little Plains]], or a [[Gatekeeper|Gatekeepers]] [[druid]] casting bones on [[Cassan Bridge]].
Mephits are capricious, imp-like creatures native to the elemental planes. They come in six varieties, each one representing the mixture of two elements.
When encountered in the wilds, mephits are capricious tricksters and their “pranks” can make life miserable for planar travelers. However, those found in [[Fernia]] in the service of the [[efreet|efreeti]] are generally more polite and well mannered—though this can quickly change if there's an opportunity for mischief too good to pass up.
!! Types of Mephits
* ''Mud'' (water + earth)
* ''Smoke'' (fire + air)
* ''Steam'' (water + fire)
* ''Dust'' (air + earth)
* ''Ice'' (water + air)
* ''Magma'' (fire + earth)
The [[Jhodra]] in [[Dar Jin]] was opened to facilitate trade, and all trade with [[Riedrans]]
occurs in the Mercantile Center. The center is divided
into sections, showcasing textiles, glassworks, medicinal
supplies, and foodstuffs. Basic goods—tools, beasts of burden, and such—can also be purchased at the mercantile center. Weapons and armor are not available; one must deal with the [[Dream Merchants]] to obtain contraband.
The ''Jhodra Inn'' can be found here, a simple inn which provides [[Riedran cuisine|Riedrans]] and sparse dormitory lodging. It's austere,
but inexpensive compared to the [[Gold Dragon Inn]]. Private rooms are not available.
<<list-links-article "[tag{!!title}sort[title]]">>
Meretsega is a [[brass|brass dragon]] [[rogue dragon]] in [[Khorvaire]]. A
brush with the [[Lords of Dust]] many years ago left
Meretsega crippled and near death. She lives now
in a paranoid state, believing the [[rakshasa]] lords will
overwhelm [[Argonnessen]] any day. Having fled to
Khorvaire, she set herself up in a lair surrounded by
deadly traps and guarded by [[dominate]]d or intimidated
servants.
Aquatic [[humanoid]]s with the upper body of a human and the lower body of a fish, merfolk adorn their skin and scales with shell decorations. Merfolk are native to the [[Endless Ocean]] of the [[plane]] of [[Lamannia]].
Merfolk tribes span the seas of the world, and their people are as varied in color, culture, and outlook as the [[human]] races of the surface. Land folk and merfolk rarely meet except by chance, though starry-eyed mariners tell tales of romance with these creatures along the shoals of faraway islands. Other tales tell of [[siren]]s, [[harpy]]-like merfolk that use their alluring voices to weave illusions and lead unwary sailors to their deaths.
!! Kalamer
Merfolk of the [[Karakala]] culture of the [[Thunder Sea]] are known as Kalamer. They are wielders of primal magic (especially the [[stormcaller]]s), and tend the wild [[manifest zone]]s throughout the upper waters. They also serve as intermediaries between the [[sahuagin]] of the [[Eternal Dominion]] and the [[sea elves|sea elf]] of the [[Valraean Protectorate]]. See [[Karakala]] for more information about the merfolk of the [[Thunder Sea]].
!! Tritons
Kalamer are at home in the water, and rarely have any interest in walking on dry land. However, a few do hear the wind calling them to emerge from the water. A Kalamer who embraces this path can gain the ability to transform into a fully [[humanoid]] two-legged form—that of a ''triton''—able to operate freely in dry land.
Most Kalamer tritons have a strong sense of purpose—a
call that’s drawn them to leave their pod and the sea behind.
In general, the Kalamer work to protect the balance of nature;
a triton might be drawn to investigate the [[Mourning]], to help
the [[Gatekeepers]] battle [[aberration]]s, or even to oppose the
[[dragonmarked house]]s.
As a Kalamer triton, you’ve left your entire world behind you.
Do you miss your pod and the songs of the ocean? Or are you
following the basic drives of [[Karakala]]—to always move forward,
and not to let the anchors of the past pull you down? As
someone born in a wild, primal world, how do you deal with
the intense civilization of a city such as [[Sharn]]?
Merrix d'Cannith is the grandson of the creator (also named Merrix) of the first [[warforged]], and he is [[Starrin|Starrin d'Cannith]]'s grandnephew. He is twenty years
younger than his rivals—a fact that both his supporters and his detractors point to. Like his grandfather, Merrix is a brilliant inventor, but his ambitions go
far beyond the laboratory. Merrix has concealed a
functional [[creation forge]] within [[Cannith]]'s [[enclave|Cannith Forgehold]]
in [[Sharn]], and he continues to make new [[warforged]]
there in secret. He is also keen to extend House
Cannith's reach to [[Xen'drik]], which promises new
materials to fuel Cannith creations—and where the
prohibitions of the [[Treaty of Thronehold]] won't apply.
Merrix d'Cannith has been making efforts to improve the
life of the [[warforged]] in the [[Cogs]] and to encourage the [[construct]]s
to take more initiative. The warforged who work at the
[[Cannith Forgehold]] in [[Ashblack]] are treated as equals,
and Merrix secretly helped establish the [[Red Hammer]]
Inn in [[Blackbones]] to help the warforged there socially develop.
These heavy gauntlets are made of steel and leather. The steel is tarnished and the leather is cracked from exposure to heat, and tiny flame-like runes are etched into the metal.
The wearer is able to bend and mold all common metals with ease, if given a moment to focus. Once per day, the wearer can touch a metal object and instantly heat it to a red-hot temperature.
This plate armor was magically crafted from plates of interlocking stone. Tiny rubies inlaid in the chest create a glittering mosaic of flames. When you fall while wearing this armor, you can tuck your knees against your chest and curl into a ball. While falling in this way, flames form around your body. You take half the usual falling damage when you hit the ground, and fire explodes from your form in a 20-foot-radius sphere. Each creature in this area must dodge or else take fire damage equal to the falling damage you took.
Once the seat of a pre-[[Galifar]] kingdom, and then the shining capital of [[Cyre]], Metrol was known as the Rising City, for many of its buildings stood atop soaring columns of rock that dared to scrape the heavens. The [[Cathedral on the Hill]] was the center
for followers of the [[Sovereign Host]]. The [[Wynarn Institute of Art]] was the kingdom's foremost academy of performative [[arcane magic]]. The [[Vault]] served as the mint
and treasury of Galifar, containing cultural treasures
deemed too valuable to be displayed; salvagers dream
of finding this "golden palace." Floating gardens orbited
the towering Royal [[Vermishard|Vermishards]]. Now lost, the beauty of
Metrol lives only in Cyran memory.
!! After the [[Mourning]]
This city was once the capital of [[Cyre]]. Now it lies empty,
seemingly waiting along the [[Cyre River]] for its people to
return. Parts of Metrol have been shattered, their buildings crushed and tumbled by whatever force destroyed the nation. Other portions of the city escaped with
superficial damage; aside from the absence of people
and the shroud of mist that hangs over the area, it looks
much as it did before Cyre fell. The days in Metrol are
quiet, but the nights bring a cacophony of chaos and
violence to the streets—at night, misshapen monsters
emerge from their lairs to prowl and wail as they hunt
each other for food.
The self-styled Empress [[Donata]], a [[magebreeding]] experiment of House [[Vadalis]], "rules" over the wreckage of Metrol from the abandoned [[Vermishards]].
The [[warforged colossus]] WX-5, "Norr", is slumped amid the ruins of Metrol.
Metrol, a [[warforged]] named for the [[city|Metrol]] in ruined [[Cyre]], is a notable member of the terrorist [[militia]] in [[Stormreach]] known as [[Dannel's Wrath]].
This part of the city is a center for intrigue. The district
of [[Ambassador Towers]] contains embassies and consulates from the Thronehold Nations, as well as [[Aerenal]] and [[Sarlona]]. Ambassador Towers is also home to the
[[King's Citadel]], the headquarters of Brelish intelligence.
Across the ward, the district of [[Dragon Towers]] holds the
primary [[enclave]]s of the [[dragonmarked house]]s.
The [[Sovereign Towers]] district has the grandest temples in [[Sharn]]. The [[Pavilion of the Host]] is a complex of nine towers devoted to the [[Sovereign Host]], and the
[[Cathedral of the Cleansing Flame]] is the seat of the [[Silver Flame]] religion. Although these temples are the locations of grand
ceremonies and celebrations, many of the most devout
priests serve in the city's smaller shrines.
!! Districts and Noteworthy Locations
* [[Ambassador Towers]]. This district contains the embassies to the Thronehold nations, along with [[Aerenal]] and [[Riedra]].
** [[Brelish Museum of Fine Art]]. The museum displays work produced by Brelish artists and relics recovered from [[Xen'drik]].
** [[The Citadel|King's Citadel]]. The headquarters of the King's Citadel, [[Breland]]'s elite military and intelligence service. The Citadel is also a high-security prison holding Sharn's most dangerous criminals.
* [[Dava Gate]]. A quiet district of clustered small businesses that provide professional services.
* [[Dragon Towers]]. This is the primary place to do business with representatives of the [[dragonmarked house]]s. All the houses have outposts here, and [[Sivis]], [[Tharashk]], [[Jorasco]], and [[Cannith]] have their primary [[enclave]]s in Dragon Towers.
** The [[Panaceum]]. The largest House [[Jorasco]] [[enclave]] in [[Sharn]] provides high-priced healing services to all who can pay for them.
* [[Sovereign Towers]]. A district filled with a vast assortment of temples and shrines. It is home to the two most important temples in Sharn.
** [[Cathedral of the Cleansing Flame]]. The central temple of the Church of the [[Silver Flame]] serves both as a templar garrison and the site of grand rituals and celebrations.
** [[Pavilion of the Host]]. The center for worship of the [[Sovereign Host]] is a grand open tower surrounded by nine temples, each dedicated to one of the Sovereigns.
* [[Sword Point]]. This garrison district houses the forces that police and defend Central Plateau, including the [[Sharn Watch]] and a detachment of the royal army.
* [[Tradefair]]. A merchant district offering legal goods and services of modest to comfortable quality.
Middle Dura caters to the working class. Its taverns are
modestly priced, but there's gold among the dross.
The [[Bazaar]] of Dura is the largest commercial district in [[Sharn]]. In addition to the dozens of permanent
shops and smithies, the streets of the bazaar are an ever-changing tapestry of stalls and tents. It's said that you
can find anything here, if you're not too worried about
where it came from and if you're prepared to contend
with the cutpurses that prey on the crowds.
A small selection of merchants that regularly do business at the bazaar is given on the table below; roll a <<dr d10>>, or choose a location of interest.
| !<<dr d10>> |!Merchant |
| 1 |''Secondhand Strings.'' A must-stop shop for the [[bard]] on a budget, with a variety of gently used instruments. |
| 2 |''Korryn's Quill.'' A reliable source for cartographers, calligraphers, and scribes of all stripes. |
| 3 |''Seven Leagues.'' Owned by the cobbler Boots, this small stall has a remarkable selection of footwear. |
| 4 |''Borran's Blades.'' Borran is one of the few [[halfling]] smiths in Sharn. He specializes in knives and daggers. |
| 5 |''Hearty Scales.'' A stall serving grilled lizard meat and other [[Talentan|Talenta Plains]] delicacies. |
| 6 |''Roll and Conquer.'' One of Sharn's only game stores. It does most of its business in cards and dice. |
| 7 |''The Old Apothecary.'' Selling supplies for herbalists and [[alchemist]]s, this claims to be Bazaar's oldest shop. |
| 8 |''Illumination.'' This shop sells lamps, lanterns, candles, and torches. Some are magical. |
| 9 |''The [[Magewright|magewright]]'s Miscellany.'' This little shop deals in spell components. The clerks love to discuss magic. |
| 10 |''Sundry's Shop.'' A [[gnome]] named Sundry runs a pawn shop filled with all manner of trinkets. |
Elsewhere in Middle Dura, the district of [[Hareth's Folly]] is a bizarre blend of architectural styles. One of the primary attractions is the [[Hollow Tower]], an enormous
arena that features aerial jousting and racing. The [[King of Fire]] is a grand tavern that hosts a broad range of gambling and bookmaking activities, legal and otherwise.
Many people make their homes in Middle Dura, even if their jobs take them elsewhere. [[Rattlestone]] and [[Tumbledown]] are mostly poor tenements. [[Stormhold]]
contains crumbling manors still occupied by some of
Sharn's oldest families, while many that have prospered
have moved on to more prestigious districts.
!! Districts and Noteworthy Locations
* The [[Bazaar]]. The largest commercial district in Sharn, an excellent place to buy or sell used—and possibly stolen—goods.
* [[Broken Arch]]. Once a proud residential district, Broken Arch has fallen into disrepair. Its housing is poor to modest in quality, though the shells of wealthy manors can still be seen.
* [[Hareth's Folly]]. A jumble of architectural styles, Hareth's Folly is a place to gamble and enjoy modest food and drink. Hareth's Folly is where the [[Race of Eight Winds]] begins and ends.
** The [[Hollow Tower]]. A vertically oriented arena used for aerial jousting and other unusual sporting events.
** The [[King of Fire]]. A comfortable tavern and gambling hall, known as one of the safest places to bet on the Race of Eight Winds and the events at the Hollow Tower.
* [[Rattlestone]]. Rattlestone is a tenement district. Its people have little but their pride, but there's a strong camaraderie between them.
* [[Stormhold]]. A comfortable residential district, Stormhold is home to the few powerful families that have remained in Dura. It's in better condition than most of Middle Dura, and [[Deneith]] mercenaries protect the streets.
* [[Tumbledown]]. A poor residential district, Tumbledown has experienced recent incursions from [[Daask]].
* [[Underlook]]. The center of Sharn's nightlife before [[Menthis Plateau]] was built, Underlook is a collection of poor taverns and inns.
** [[Ghallanda Hall]]. This proud [[Ghallanda]] [[enclave]] continues to operate amid the fading squalor of Middle Dura, and has become a tourist attraction. It offers a range of services, with food and lodging of poor to comfortable quality.
Middle Menthis boasts the most diverse population of
any ward in [[Sharn]]. The [[Little Plains]] district is the destination for [[halfling]] immigrants from the [[Talenta Plains]].
[[Cassan Bridge]] has a significant population of [[orc]]s and
[[half-orc]]s from the [[Shadow Marches]]. Immigrants from
the [[Lhazaar Principalities]] have settled in the [[Warden Towers]] district, which is primarily a garrison for the
[[Sharn Watch]]. The district of [[Smoky Towers]] had a significant [[Cyran|Cyre]] community even before the [[Last War]];
now, this area has become a haven for Cyrans wealthy
enough to escape the refugee camps of [[High Walls]].
One of the most prominent attractions In Smoky Towers is the [[Classic Theater]]. The place lives up to its name
by staging only traditional works written before the start
of the Last War. Although the [[Grand Stage]] in the [[University District]] also performs more recent works echoing the classical style, the Classic has a stated policy of
not even considering new works.
The [[Everbright]] district might be of particular interest
to adventurers. A wide assortment of [[magewright]]s ply
their trade here, and the shops have a good selection
of [[magic item]]s (of common and uncommon rarity). The
people of Middle Menthis are law-abiding folk; visitors
looking for spellcasters to help with illegal activities or
who want to sell stolen artifacts will likely have better
luck in [[Lower Dura]].
!! Districts and Noteworthy Locations
* [[Cassan Bridge]]. A mercantile district with goods of modest to comfortable quality. Home to a significant number of immigrants from the [[Shadow Marches]], Cassan Bridge is the place to visit for exotic Marcher herbs and cuisine.
* [[Everbright]]. This district is a source of magical goods and services. Exotic components, [[magewright]]s for hire, common or uncommon [[magic item]]s—all of these and more can be found here.
* [[Little Plains]]. Founded by [[Talenta|Talenta Plains]] [[halfling]]s, this district includes a central campground for visiting halfling nomads. The permanent residents are mostly halflings as well. Talentan foods and crafts can be found here, along with displays of traditional skills and pastimes.
* [[Smoky Towers]]. Safer than the lower wards and less expensive than [[Upper Menthis]], Smoky Towers has plenty of entertainment options. The [[Classic Theater]] is its most popular venue, but Smoky Towers offers a wide variety of more exotic fare. Dinner theater, [[changeling]] burlesque, and other diversions can be found in Smoky Towers. [[Thovanic Hall]] has begun performing works from [[Darguun]] and [[Droaam]] featuring monstrous performers. Smoky Towers has also become a haven for [[Cyran|Cyre]] refugees wealthy enough to avoid [[High Walls]].
** [[Classic Theater]]. A small and inexpensive theater, the Classic performs only works written before the start of the [[Last War]].
* [[Warden Towers]]. This district is the primary garrison of the [[Sharn Watch]] in Menthis. It's home to a community of [[Lhazaar|Lhazaar Principalities]] immigrants, and the [[Broken Anchor]] is a tavern catering to Lhazaar travelers.
This ward caters to the middle class of [[Sharn]], offering
a wide range of comfortable housing. [[Dwarves|dwarf]] make up
most of the population, with the highest concentration
in the district of [[Holdfast]]. In contrast to the residents of
[[Highhold]] in [[Upper Dura]], the dwarves of Holdfast have
deep roots in Sharn and feel no strong connection to the
[[Mror Holds]] or its traditions.
[[High Hope]] is a temple district; although the city's
most impressive churches and shrines are located
in [[Upper Central]], it's commonly known that if you're
looking for a truly devoted priest, you should go to High
Hope. The most notable feature of the district is [[Daca's Watch]]. Twelve feet high, this pillar is thought to have
once held a statue or monument. Over a century ago,
a [[gnome]] named [[Daca]] climbed atop the pedestal. She
has remained there ever since, and shouts advice to
anyone who passes by. Although Daca doesn't claim to
be a priest, the people of the community say that she's
blessed by the god [[Boldrei]] and speaks with the [[Sovereign|Sovereign Host]]'s voice. True or not, Daca's advice has proven to be
remarkably sound, and she and her pillar have become a
tourist attraction.
!! Districts and Noteworthy Locations
* [[High Hope]]. A center for worship for the people of Northedge, High Hope includes temples of the [[Silver Flame]] and the [[Sovereign Host]], along with many smaller shrines. It lacks the grandeur of [[Sovereign Towers]] in [[Central Plateau]], but has an atmosphere of solemn devotion.
** [[Coldflame Keep]]. A garrison temple of the [[Silver Flame]], this place once housed a hundred templars dedicated to protecting Sharn from supernatural threats. It has largely been abandoned; only a dozen devoted templars and adepts remain in residence.
** [[Daca's Watch]]. A [[gnome]] named [[Daca]] has been sitting on a pillar in Northedge for over a century, offering advice and encouragement. Though she doesn't claim to be a priest, many believe that Daca is blessed and guided by [[Boldrei]].
* [[Holdfast]]. Holdfast is the heart of Sharn's native [[dwarf]] population. The ancestors of the Holdfast dwarves helped build Sharn, and many of its people are stonemasons, architects, and smiths. Holdfast dwarves are proud of their Sharn roots and have little interest in [[Mror|Mror Holds]] customs or traditions.
* [[Oakbridge]]. A safe and friendly residential district.
Unlike the [[upper ward|Upper Tavick's Landing]], Middle Tavick's Landing welcomes travelers and tourists. The ward features a host
of lively taverns and excellent inns. The [[Cornerstone|Cornerstone (arena)]] is
a huge arena that hosts events ranging from circuses to aerial jousting. The [[Deathsgate]] district caters to adventurers, much as the [[Clifftop]] district of Upper Dura does.
Like Clifftop, the district has an adventurer's guild—though the [[Deathsgate Guild]] has a dark reputation, and
its members often pick fights with Clifftop adventurers. House [[Jorasco]] has a large house of healing in the
ward, and House [[Deneith]] maintains a recruiting station
for would-be mercenaries.
The [[Grawand]] district has deep roots in [[Karrnath]]i
culture that predate the [[Last War]]; [[Slogar's]] and the
[[Bloody Mug]] are places where homesick Karrns can
enjoy blood sausage and Nightwood ale. The district is a
haven for Karrnathi soldiers who want to avoid Brelish aggression and a place where followers of the [[Blood of Vol]] can practice their faith.
[[Tavick's Market]] is one of [[Sharn]]'s major market districts; located directly above the [[Terminus]] [[lightning rail]] station, it's filled with stands selling produce and goods brought in by local farmers.
!! Districts and Noteworthy Locations
* [[Cornerstone]]. A haven for travelers, Cornerstone has a range of comfortable inns and taverns. It's built around the vast Cornerstone arena and is a center of activity for many major sporting events.
** The [[Cornerstone|Cornerstone (arena)]]. A massive arena that hosts a wide array of sporting events. These include jousts and races, both on foot and through the air. The ''Stone Trees'' is an offshoot of the Cornerstone that serves as the playing field for [[hrazhak]] competitions.
** The [[Tooth and Nail]]. A comfortable tavern devoted to the sport of [[hrazhak]]. Most of the clientele are [[shifter]]s, but anyone willing to talk hrazhak will find friends here.
* [[Dancing Shadows]]. This district offers middle-of-the-road accommodations to the many people who arrive in Sharn every day.
* [[Deathsgate]]. Named for the nearby [[City of the Dead]], this district houses the [[Deathsgate Guild]] and businesses that cater to adventurers. House [[Deneith]] recruits mercenaries at its outpost here.
** The [[Deathsgate Guild]]. A society where adventurers can hone their skills and seek profitable work. The Deathsgate Guild has a sinister reputation, earned because its members will do anything in pursuit of success.
** The [[Guild of Starlight and Shadows]]. The guildhall of one of Sharn's most prestigious [[arcane order]]s. A reliable source for arcane spellcasting services.
** [[Maynard's Menagerie]]. This [[Vadalis]] storefront deals in exotic pets and animal companions, along with barding and other useful gear.
** [[Redblade's]]. A comfortable tavern catering to the adventurers of the [[Deathsgate Guild]]. Redblade is rumored to have a side business selling [[poison]] and venoms.
* [[Grawand]]. This district was founded long ago by [[Karrnath]]i immigrants, and its people are proud of their heritage. It is a haven for any Karrnathi travelers passing through Sharn. Rumors say there's a temple devoted to the [[Blood of Vol]] in Grawand, but if that's the case, it's kept hidden.
** [[Slogar's]]. This modest restaurant serves traditional Karrnathi cuisine. The ambience is a bit gloomy, but the prices are reasonable, and the food is very filling.
* [[Kenton]]. A residential district with a significant [[shifter]] population.
* [[Little Barrington]]. A quiet middle class residential district.
* [[Tavick's Market]]. This district specializes in produce and other goods brought in by the farmers from the surrounding countryside.
The middle city of [[Sharn]] is a bit more enclosed than the section above it, but there are still open-air balconies and platforms here and there. A wide range of middle-class citizens live and work in this region.
<<list-links "[tag{!!title}sort[title]]">>
See also: [[upper ward]], [[lower ward]].
A creature that ingests this poison suffers no effect until the stroke of midnight. If the poison has not been neutralized before then, the creature suffers extreme poison damage.
Prince Mika Rockface of the [[Cloudreavers]] is an aggressive and boisterous woman with remarkable strength and an uncanny ability to inspire terror in her enemies. She believes that she has been blessed by the [[Devourer]] and that she gains strength for every vessel she sends to the bottom of the ocean. Whether this is true or simply a delusion remains to be seen.
Thirty years ago, a pirate captain named [[Magwroth]] tried to usurp the [[Cloudreavers]] from Prince Mika. Magwroth was soundly defeated, last seen at the helm of his damaged ship, //Devourer’s Hand//, as it limped out to sea into the gray mists of [[Lastpoint]].
<ul>
<$list filter="[tag[military]tags[]tag[nation]] [tag[military]tags[]tags[]tag[nation]] [tag[military]tags[]tag[dragonmarked house]] [tag[military]tags[]tag[plane]] [tag[military]tags[]tags[]tag[plane]] +[sort[title]]">
<li>{{!!article}}<$link overrideClass="graylink"/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[military]] [tag<currentTiddler>tagging[]tag[military]tags[]tag<currentTiddler>category[location]] [tag<currentTiddler>tagging[]tag[military]tags[]tag<currentTiddler>!title[military]category[organization]] +[sort[title]]">
<$list filter="[<currentTiddler>tag[military]]" emptyMessage="""<li>{{!!article}}<$link overrideClass="graylink"/></li>""" variable="noop">
<li>{{!!article}}<$link/></li></$list>
<ul>
<$list filter="[tag<currentTiddler>tag[military]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[military]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[military]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
A militia is a military force that is raised from the civil population to supplement a regular army in an emergency. Alternatively, a militia is any private force not necessarily directly supported or sanctioned by a government.
!! Militias of Stormreach
Life is cheap on the edge of [[Xen'drik]], and the only way to ensure a safe future is to have a weapon close at hand. Throughout the history of [[Stormreach]], many ethnic and religious groups have formed militias—people ready to defend their friends and neighbors from any threats.
Whereas gangs like the [[Bilge Rats]] and [[Golden Lions]] are
largely driven by greed, the militias of Stormreach are
bound together by political or religious agendas. Even
as they fight against their enemies, most of the militias
work to defend their wards from gangs and criminals.
The people of [[Whitewash]] are grateful for the presence of
the [[Ninth Wands]], and [[Grindstone]]’s residents regard the
[[Swords of Karrn]] with a mixture of fear and respect.
Militias provide a DM with an opportunity to pull
adventurers into the conflicts within [[Stormreach]] and
to draw on their ties to the [[Last War]]. If a PC [[wizard]]
served in the [[Aundair]]ian army, the [[Ninth Wands]] might
appeal to her patriotism and demand her assistance in
an upcoming strike against the [[Knights of Thrane]].
[[Dannel's Wrath]] presents a dilemma for [[Cyrans|Cyre]]; does
their love for their fallen country justify their deadly
acts? Beyond this, the militias also oppose criminal
adventurers. The [[Stormreach Guard]] won’t pursue a PC
who kills a blacksmith. But if that blacksmith lives in
[[Grindstone]], the [[Swords of Karrn]] avenge his death.
The militias don’t provide a picture of the typical inhabitants of [[Stormreach]]. Many of the soldiers are veterans of elite units, and [[Drago Thul]] and the
[[Dragonhawk]] were heroes of the [[Last War]]. Beyond the
exceptional skills of their soldiers, the militias have
the sympathy of the inhabitants of their wards, and
this support can be a valuable weapon.
<<list-links-article "[tag{!!title}sort[title]]">>
The mimaxe is a living weapon, the result of a [[mimic]]'s unlucky encounter with a creative [[artificer]]. It has a predatory intelligence, and is able to see and hear as well as communicate with simple grunts (usually to convey hunger). In addition to serving the wielder as a powerful magic battleaxe, the mimaxe has the following properties.
''//False Appearance.//'' While the mimaxe remains motionless, it is indistinguishable from an ordinary battleaxe.
''//Hungry.//'' The mimaxe has 3 charges, and recovers spent charges by consuming corpses. A small creature such as a [[goblin]] restores 1 charge, a [[human]]-sized creature restores 2 charges, and a large creature such as a horse restores 3 charges. A full mimaxe refuses to consume any additional corpses.
The process of consuming a corpse is loud, obvious, and messy. Once consumed, the corpse is completely destroyed and any magic equipment on it is spat out into a nearby pile. The mimaxe does not change weight, regardless of what it has consumed.
If the mimaxe goes 24 consecutive hours without eating a corpse, it loses 1 charge. If it goes 24 hours at 0 charges, it will search for the nearest source of food on its own... which may be the owner.
''//Roar.//'' You may expend one charge to cause the mimaxe to roar menacingly, striking fear into the hearts of your foes, and granting advantage on attempts to intimidate.
''//Teeth.//'' When you hit a creature with this weapon, you may expend a charge to deal extra damage.
Mimics are shapeshifting predators able to take on the form of inanimate objects to lure creatures to their doom. In dungeons, these cunning creatures most often take the form of doors, chests, and furniture, having learned that such forms attract a steady stream of prey.
Mimics can alter their outward texture to resemble wood, stone, and other basic materials, and they have evolved to assume the appearance of objects that other creatures are likely to come into contact with. A mimic in its altered form is nearly unrecognizable until potential prey blunders into its reach, whereupon the monster sprouts pseudopods and attacks.
When it changes shape, a mimic excretes an adhesive that helps it seize prey and weapons that touch it. The adhesive is absorbed when the mimic assumes its amorphous form and on parts the mimic uses to move itself.
Mimics live and hunt alone, though they occasionally share their feeding grounds with other creatures. Although most mimics have only predatory intelligence, a rare few evolve greater cunning and the ability to carry on simple conversations. Such mimics might allow safe passage through their domains or provide useful information in exchange for food.
Scholars believe that the mimics of [[Eberron]] either immigrated from [[Kythri]], the Churning Chaos, or were created by its influence.
Mind flayers, also called illithids, are the scourge of sentient creatures across [[Eberron]]. Psionic tyrants and slavers, they are insidious masterminds that harvest entire races for their own twisted ends. Four tentacles snake from their octopus-like heads, flexing in hungry anticipation when sentient creatures come near.
Mind flayers possess psionic powers that enable them to control the minds of other creatures. Illithids prefer to communicate via telepathy and use their telepathy when issuing commands to their thralls.
Solitary mind flayers are likely rogues and outcasts. Most illithids belong to a colony of sibling mind flayers devoted to an [[elder brain]]—a massive brain-like being that resides in a briny pool near the center of a mind flayer community. From its pool, an elder brain telepathically dictates its desires to each individual mind flayer within 5 miles of it, for it is able to hold multiple mental conversations at once.
Illithids subsist on the brains of [[humanoid]]s. The brains provide enzymes, hormones, and psychic energy necessary for their survival. An illithid healthy from a brain-rich diet secretes a thin glaze of mucus that coats its mauve skin. An illithid experiences euphoria as it devours the brain of a humanoid, along with its memories, personality, and innermost fears. Mind flayers will sometimes harvest a brain rather than devour it, using it as part of some alien experiment or transforming it into an [[intellect devourer]].
Mind flayers are native to the plane of [[Xoriat]], and were part of the initial incursion of the [[daelkyr]] into Eberron along with other [[aberration]]s from the plane of madness. They are closely associated with the daelkyr known as [[Dyrrn]], the Corruptor.
//''Ceremorphosis.''// Mind flayers don't reproduce in the traditional sense.
Instead, they lay eggs from which hatch tadpole-like
creatures that are used to make more of their kind
through a process called ceremorphosis. First, a captured [[humanoid]] is rendered docile by a blast of [[psionic|psionics]] power. A newly hatched tadpole is inserted into the victim's cranium, usually through a nostril or ear canal.
The tadpole grows as it devours the humanoid's brain,
attaching to the victim's brain stem and becoming its
new brain. Over the course of a week, the humanoid
body changes form, and a new mind flayer comes into
being. The emergent mind flayer often retains a few dim
memories from its previous form, but these vague recollections seldom have any bearing on its new life as a brain-eating monster.
Rarely, one of these tadpoles mutates (either accidentally or deliberately) and becomes a fearsome [[neothelid]].
!! Varieties of Illithid
<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
[[Kalaraq|kalaraq]] [[quori]] have the ability to devour the thoughts
of a victim, slowly replacing that being's personality and rendering the victim a willing servant of the
kalaraq. The process is a mental disease that attacks
the victim's will instead of the body. It is used sparingly by the kalaraq, since there have been incidents
where the victim of a mind seed has gone rogue.
Nonetheless, it's an effective means of placing a mole
in an enemy organization.
!! The Limits of Mind Seed
The mind seed power is perhaps the most powerful weapon
in the [[quori]] arsenal. So why don't the quori control the
world? Why don't they mind seed everyone in [[Khorvaire]]?
To begin with, mind seed is no common tool. Only a master telepath can manifest the power, and it requires a significant expenditure of energy. Only a
select handful of the [[Inspired]] can manifest the power,
and they can't use it on a regular basis. The [[kalaraq]] are few in number and have many important duties in [[Sarlona]] and [[Dal Quor]].
Furthermore, mind seed is an uncertain tool. The
user has no control over the newborn seed. The [[quori]] are
fanatically dedicated to [[il-Lashtavar]], and usually this is
sufficient to ensure the loyalty of seeds—the victim's personality mirrors that of the quori, and usually they serve [[Dal Quor]] with unswerving devotion. Nonetheless, a seed
occasionally turns against the [[Inspired]] and the [[Dreaming Dark]]. These rogue seeds possess all the knowledge (if only a fraction of the power) of a potent quori. They can
be the most dangerous dissidents of all.
If a party dedicates itself to battling the [[Dreaming Dark]], it is possible that a PC will be targeted with mind seed. Mental [[abjuration]]s can prevent a seed from germinating,
but only [[psionic chirurgery]], [[reality revision]], [[wish]], or miraculous [[divine magic]] can remove a seed. Few people in Eberron possess such power. The Venerable [[Thatari]] of [[Tashalatora]] is one; the [[Keeper of the Flame]] is another.
The spellcaster drives a disorienting spike of psychic energy into
the mind of one creature they can see within 60 feet.
You psychically lash out at one creature you can see
within 90 feet. On a hit, the target suffers some psychic damage and is dazed for a few seconds.
If you are able to cast [[rare-tier|spell tier]] spells, you can cast this as such to target up to two additional creatures. The creatures must all be within 30 feet of each other when you target them.
Minharkhad, an [[Inspired]] [[psi warrior]], is the commander of the guard at the [[Riedra]] [[Embassy|Riedra Embassy (Sharn)]] in [[Sharn]]. The embassy guard is comprised of 12 highly trained [[human]] soldiers. To date, the embassy guard has never been called into service, so the people of Sharn know nothing about the extent of their skills. Minharkhad himself is cold and cruel. Unlike [[Helkashtai]] and [[Jorasesh]], Minharkhad has trouble concealing his disdain for humanity, and as a result he is rarely seen outside of the embassy.
This small [[mimic]] is in the shape of a chest that can hold up to 1 cubic foot of material.
You can speak a command word and cause the chest to open. If you attempt to open the chest without first speaking the command word, the chest grows
teeth and attempts to bite your hand.
A minotaur's roar is a savage battle cry that most civilized creatures fear. Shaggy humanoids with the heads of bulls, minotaurs are savage conquerors and carnivores that live for the hunt.
Minotaurs are native to [[Khorvaire]] and [[Xen'drik]]. On Khorvaire, most minotaurs dwell in the monstrous nation of [[Droaam]], many of whom serve the warlord [[Rhesh Turakbar]].
Some minotaurs also live in [[Sharn]], serving as House [[Tharashk]] mercenaries or agents of [[Daask]].
The minotaurs believe that they are the chosen warriors of a
being commonly known as the Horned Prince, and they hone
their skills in battle so they may join the Prince after death.
Each clan has their own private name for the Prince and their
own beliefs about the conduct he expects of his followers. In
most cases, the Horned Prince seems to be an analogue to the
[[overlord]] [[Rak Tulkhesh]], desiring only bloodshed. However, the
Red Hooves worship He Who Walks Behind, who is much like
the [[Mockery]]; they focus on the use of terror and in deceiving
their enemies. The Blade Breakers worship One Horn, who
rewards strength and courage—much like [[Dol Dorn]]. The Dawn
Harvest was a clan whose version of the Prince—the Dawn
Gorer—encouraged followers to fight with honor and to defend
the weak, two traits rarely seen in Droaam. The Dawn Harvest
was destroyed by [[Maenya's Fist]] after refusing to accept Rhesh Turakbar as the warlord of their region; a few members of the clan survived and are now scattered across Droaam.
Miraan is the charismatic leader of the [[Storm Hammers]]. She is a [[sorcerer]] with a wide variety of magical abilities, including but not at all limited to [[charm]], [[shocking grasp]], and [[lightning bolt]]. If threatened, she retreats using an unusual version of the spell [[mislead]]; instead of turning invisible, she teleports a short distance, leaving behind an illusory duplicate.
Rumor has it that she keeps a menagerie of [[living cantrip|living spell]]s and other creatures of the [[Mournland]] in her hideout. Some believe that Miraan’s powers are far greater than she has revealed; she likes to claim that she is linked to the [[Mourning]] itself, and a DM looking for a recurring villain could increase her abilities with each encounter.
The head of [[Thuranni]] in [[Stormreach]], a powerful [[wizard]] and [[necromancer|necromancy]] named Lady Miravella, has more important matters on her mind than to extort minor secrets from the patrons of [[Shadows]]. In order to attend to these matters, she requires the freedom and anonymity that neutrality and innocuousness provide. More important, she needs the city’s wealthy
and powerful—the [[Storm Lords]] and the other [[dragonmarked house]]s in particular—to realize that she knows as much as she does and yet still stays out of their
affairs. This détente of sorts provides the very freedom
that she and her family members require.
That is not to say that Lady Miravella shies away
from the work for which her house is known; she
accepts the occasional bid for assassination or other
dirty work, but she chooses such jobs carefully and
almost always turns down requests to rid the city of
one of its most public or powerful figures. When she
does take on such a job, she typically sends her nephew
[[Vaedin|Vaedin Uruvai d'Thuranni]], a gifted killer who never leaves a trace.
For internal security, she relies on her other nephew,
[[Jaye|Jaye Uruvai d'Thuranni]], who is always on the lookout for the intrusive
snoopings of House [[Phiarlan]]’s [[Serpentine Table]] and its many agents.
Lady Miravella is the head of the [[Uruvai family]] in [[Stormreach]] and leads their secret agenda.
Most believe Miron's Tears to be an urban legend—an secret
order of spies and assassins deep within the Church of the [[Silver Flame]], hidden even from the [[Keeper|Keeper of the Flame]] and the Cardinals.
According to the stories, [[Tira Miron]] foresaw the danger of the
Shadow in the Flame. On the eve of her battle with [[Bel Shalor]],
Tira charged her trusted companion [[Samyr Kes]] to monitor the
Church that was to come for signs of [[fiend]]ish [[corruption|Silver Flame Heresy and Corruption]]—to save those who could be saved, and eliminate those who
could not. Those who believe these tales say that it was agents
of Miron's Tears who recognized the threat of [[Melysse Miron]]
and exposed her as an agent of Bel Shalor.
It's up to the DM to decide if this order exists or if it died
out long ago. If he still lives, Samyr Kes—an [[elf]] whose long
life has been extended by the Flame—could be disgusted by the
corruption of the modern church. Beyond combating fiendish
corruption, Miron's Tears could target greedy priests in
[[Breland]], fight the extremism of the [[Pure Flame]] in [[Aundair]], or
even seek to bring down the [[Thranish|Thrane]] theocracy, seeing it as a
corrupting influence on the church. Virtuous player characters
could be recruited into the order. Or chaos could ensue when an ally of the player characters—secretly a servant of the [[Lords of Dust]]—is targeted by the Tears.
Three illusory duplicates of yourself appear within 5 feet of you. Until the spell ends (up to one minute), the duplicates move with you and mimic your actions, shifting position so it's impossible to track which image is real.
Each time a creature targets you with an attack during the spell's duration, there's a chance it will instead target a duplicate. If the duplicate is hit by an attack, it is destroyed. The spell ends when all three duplicates are destroyed.
A creature is unaffected by this spell if it can't see, if it relies on senses other than sight, or if it can perceive illusions as false, as with [[truesight]].
This large lake sits in the center of the [[Mror Holds]], surrounded by the [[Ironroot Mountains]]. The lake is fed from streams from the mountains, then empties into the [[Glimmergleam]] river out into the [[Karrn Bay]].
When King [[Jarot ir'Wynarn]],
the last ruler of [[Galifar]], died in 894 YK, his daughter
Mishann, governor of [[Cyre]], was the rightful heir to the
throne. However, her coronation was not to be. Her
brother [[Thalin|Thalin ir'Wynarn]] of [[Thrane]] asserted that he should take
the throne. [[Kaius|Kaius ir'Wynarn I]] of [[Karrnath]] and [[Wroann|Wroann ir'Wynarn]] of [[Breland]] shared Thalin’s notion that succession of the eldest was
a worn-out tradition. Only [[Wrogar|Wrogar ir'Wynarn]] of [[Aundair]] stood
with Mishann and her rightful claim. Before the year
had ended, the [[Last War]] began. Galifar collapsed into
hostile nations, with each ir’Wynarn sibling eventually
claiming rights to the Galifar crown.
In 908 YK, Mishann was assassinated by the Order of the [[Emerald Claw]]. Mishann was succeeded by her son Brusst ir'Wynarn.
//‘Duty before Glory.’ So says the inscription on the gates of [[Ka'rhashan]]. Our ancestors carved this when they fled the western lands and returned to watch these dusty ruins. For a hundred generations we have been told that this is all we can aspire to, that we must guard these [[cursed cities|dragonborn clanhold]] until the end of time. I say no more! I say it is our duty to regain the glory we once possessed, to fulfill the promise of our blood. We have fallen from our path, and it is this that makes our children weak. Join me. Heed the call of battle. Let us know glory once again!//
<div align="right">—Mishva the Conqueror</div>
In southwestern [[Q'barra]], a threat grows against the
settlers of that land that could one day spread to the
rest of [[Khorvaire]]. A prescient [[dragonborn]] leader,
Mishva Garodya of the [[Stormhorn Clan|Stormhorn Clanhold]], has taken
the stories of her people’s lost empire and glory to
heart. With vengeful eyes trained on [[Hope]], she
dreams of seeing the dragonborn raised to a mighty
power in Khorvaire, no matter what the cost.
The [[dragonborn]] warlord has erected a [[fortress|Castle Garodya]]
in the forested foothills not far from [[Stormhorn Clanhold]] and [[Wyrmwatch]]. Her forces have conducted raids on settlements in [[Hope]], as well as forays
into [[Valenar]] and the [[Blade Desert]]. King [[Sebastes|Sebastes ir'Kesslan]] is
watching the situation, seeing a potential threat to
[[New Galifar]].
Stormhorn elders are at odds with Mishva, who claims that honor compels the
clan to seek redress for past wrongs, and to lead the [[Q'barra]]n [[dragonborn]] to glory. Though her detractors claim that Mishva’s only goal is personal aggrandizement, she has announced her plan to attend the upcoming ritual war in [[Ka'rhashan]] with a contingent loyal to her vision. A victory will place her in an influential position, perhaps even birthing a new [[dragonborn]] clan.
!! Mishva's Motives
Mishva was an undistinguished
warrior of the Stormhorn Clan until her brother
Shamash was killed in [[Wyrmwatch]] a decade ago.
When a trade dispute turned violent, the local
militia drew weapons against Shamash and his
compatriots, who killed several guards before being
subdued. Elder Nevillom ordered Shamash and two
other [[dragonborn]] executed, and Mishva has sworn
to take vengeance on the [[Silver Flame]] zealot and his
followers.
Mishva’s true motivations are more complex than even her closest allies
know. Shortly after Shamash’s death, Tarmahkan,
an elder [[blue dragon]] of the [[Vast]] in [[Argonnessen]],
sent envoys to Mishva. The elder blue plans to use the young [[dragonborn]] warrior to establish a new dragonborn kingdom in [[Khorvaire]], seeing that as the first step to placing his own [[dragon]] clan in control of [[Haka'torvhak]]. With the power of Argonnessen behind her—including a magic sword and a number of young dragon allies already provided by Tarmahkan—Mishva is a more dangerous foe than any in [[Q'barra]] realize.
You become invisible at the same time that an illusory double of you appears where you are standing. The double lasts for up to one hour, but the invisibility ends if you attack or cast a spell.
You can move your illusory double up to twice your speed and make it gesture, speak, and behave in whatever way you choose.
You can see through its eyes and hear through its ears as if you were located where it is. You can switch from using its senses to using your own, or back again. While you are using its senses, you are blinded and deafened in regard to your own surroundings.
This 1-foot square glass panel is resistant to all physical damage from non-[[adamantine]] materials, and is immune to the effects of the [[magic missile]] spell. This material is used for windows in banks, government offices, strongholds, and other prominent locations.
\define chimera-counts-filter() $(boo)$ +[sortan[]reverse[]] +[limit[50]]
\define scares-ghost() [[$(scares)$: $(ghost)$]]
\define chimera-counts()
<$list filter="[all[tiddlers]!is[system]!has[draft.of]links[]is[missing]]" variable="ghost">
<$list filter="[<ghost>backlinks[]count[]]" variable="scares" >
<$text text=<<scares-ghost>>/>
</$list>
</$list>
\end
\define common-counts()
<$list filter="[all[tiddlers]has[category]!is[system]]" variable="ghost">
<$list filter="[<ghost>links[]is[missing]]" emptyMessage="" variable="noop">
<$list filter="[<ghost>backlinks[]count[]]" variable="scares" >
<$text text=<<scares-ghost>>/>
</$list>
</$list>
</$list>
\end
\define search-actions() <$action-setfield $tiddler="$:/temp/advancedsearch" text="[title[$(ghostname)$]backlinks[]]"/><$action-setfield $tiddler="$:/temp/advancedsearch/input" text="[title[$(ghostname)$]backlinks[]]"/><$action-navigate $to="$:/AdvancedSearch"/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/><$action-setfield $tiddler="$:/state/advancedsearch/currentTab" text="$:/core/ui/AdvancedSearch/Filter"><$action-sendmessage $message="tm-focus-selector" $param="""[data-tiddler-title="$:/AdvancedSearch"] .tc-search input""" preventScroll="true"/>
[[To Do]]
<$wikify name="boo" text=<<chimera-counts>>>
<$list filter=<<chimera-counts-filter>> variable="ghostnamecounts">
<$wikify name="ghostname" text="{{{ [<ghostnamecounts>split[: ]nth[2]] }}}">
<$set name="ghostcounts" filter="[<ghostnamecounts>split[: ]nth[1]]">
{{{ [<ghostnamecounts>split[: ]nth[2]] }}} (<$button class="tc-btn-invisible tc-tiddlylink"><<search-actions>><<ghostcounts>></$button>)<br/>
</$set></$wikify>
</$list>
</$wikify>
...
<$wikify name="boo" text=<<common-counts>>>
<ul>
<$list filter=<<chimera-counts-filter>> variable="ghostnamecounts">
<$wikify name="ghostname" text="{{{ [<ghostnamecounts>split[: ]nth[2]] }}}">
<$set name="ghostcounts" filter="[<ghostnamecounts>split[: ]nth[1]]">
<li>{{{ [<ghostnamecounts>split[: ]nth[2]] }}}</li>
<ul>
<$list filter="[<ghostnamecounts>split[: ]nth[2]links[]is[missing]]">
<li><$link/></li>
</$list>
</ul>
</$set></$wikify>
</$list>
</ul>
</$wikify>
This small village in the county of Clarn chiefly houses
farmers who take advantage of the fine soil and weather
along the southern edge of the Mistmarsh Swamp. The
citizens of Mistmarsh enjoy an above-average standard
of living, and many families have one or more daring
youths who partake in the annual treks into the [[Faded Forest]] to gather the magical acorns that grow there. While dangerous, these expeditions are highly organized and well prepared, with each family keeping secret records of where particular dragonseye and
ghost oaks can be found.
Briefly surrounded by silvery mist, the spellcaster teleports up to 30 feet to an unoccupied space that they can see.
Mithral is a rare, silvery, glistening metal that is lighter than iron but just as hard. When worked like steel, it becomes a wonderful material from which to create armor or other items. It also acts as silver when used as a weapon against creatures with a weakness to silver, such as [[lycanthrope]]s and [[devil]]s.
On [[Eberron]], the largest known mithral deposits are on the continent of [[Khorvaire]], in the [[Mror Holds]] and in the [[Blackcaps|Blackcap Mountains]] of northern [[Breland]].
''District Type:'' Wealthy residential<br/>
''Buildings:'' Upscale residences (250), average
residences (30)<br/>
''First Impression:'' The homes in this district are
large and well kept, showing clear signs of great
wealth. True to the district's name, many of the
houses boast [[mithral]] filigree.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Korranath]] (northeast); [[Highest Towers]] (south); [[Skysedge Park]] (southeast); [[Dava Gate]] (below)
Mithral Tower is [[Sharn]]'s most desirable downtown residential district, comparable to the more
suburban [[Oak Towers]] and [[Crystal Bridge]] districts
in [[Upper Northedge]]. Mithral Tower's most noteworthy resident is its representative on the [[city council|Sharn Council]], [[Javan Tomollan]].
Mizano Rupa's is one of three
important dinner theater venues in Smoky Towers
that give rising stars a stop on their ascent between
[[Gailan's]] and [[Upper Menthis]]. Self-consciously named
and styled in imitation of Gailan's in the [[Torchfire]]
district below, Rupa's offers decent food and high-quality entertainment in a variety of styles. Mizano Rupa ([[dwarf]]) is hardly a connoisseur
of fine music, but he knows what he likes and—fortunately—his tastes seem to compare with those of many
in [[Middle Menthis]], making his establishment quite
popular. Reservations are recommended.
Moar'donn, a [[black|black dragon]] [[rogue dragon]] in [[Khorvaire]], hatched in a [[Poison Dusk]] [[lizardfolk]] encampment in [[Q'barra]]; how the reptilians acquired his egg, the dragon doesn’t know. Unlike their more civilized cousins in the [[Cold Sun Federation]], these savage lizardfolk enslaved and tormented the black wyrmling. In time, Moar’donn grew powerful enough to escape from his captors. Now only bitterness and rage lives in his heart. He ruthlessly destroys all nondragons who cross his path.
[[Dol Arrah]] will show you how to fight with honor, [[Dol Dorn]]
will grant you courage, and when you die, at least you'll know
you did so bravely and honorably. The Mockery will drag you
through mud and blood, drive you to betray your principles and
employ tactics that horrify your allies and enemies alike—but
at the end of the day, you'll be standing over the corpse of your
foe. Which path will you follow?
Those who despise the [[Dark Six]] condemn the Mockery as
a villain, a monster who encourages cruel and treacherous
behavior. This can be as simple as ambushing an enemy,
using stealth instead of facing them openly. Or it can mean
slaughtering innocents, torturing your foes, breaking a truce—anything to bring you victory. Those who embrace the path of the Mockery may say that such tactics are the only way to bring down a superior foe. Honor is a luxury for the strong; for those
who are weak and oppressed, victory is all that truly matters.
Others who follow the Mockery assert that the very idea
of honor in war is delusional. Pain, terror, and death are the
inevitable results of violence; at least those who follow the
Mockery acknowledge the truth others deny. The assassin
who kills without warning, the barbarian who sees mercy as a
weakness, the pirate who cultivates a terrifying reputation—all
these might view the Mockery as an ally. While this can be a
dark path for a player character to follow, a hero could use the
techniques of the Mockery in pursuit of a noble cause. A grim
vigilante who uses stealth and fear to terrify cowardly criminals
into changing their ways could be guided by the Mockery.
According to legend, the Mockery was
once the brother of [[Dol Dorn]] and [[Dol Arrah]], but
he was stripped of his skin and his name (Dol Azur) after betraying them. His symbols include five blood-spattered blades or a flayed [[dragon]].
//Period: 5,000–0 years ago//
Scholars at [[Morgrave University]] call the last five thousand
years the Age of Humanity, contending that its defining trait
is the rise of [[human]] civilization and its spread from [[Sarlona]]
to [[Khorvaire]]. The [[gnome]] sages of the [[Library of Korranberg]]
call it the Dragonmarked Age, asserting that the appearance of
the [[dragonmark]]s and the achievements of the [[dragonmarked house]]s are more significant in the grand sweep of history than
mere human achievements. Most people dodge this debate by
simply referring to it as the ''modern age''.
Regardless of where you stand on this argument, a great
deal has happened over the last five thousand years.
!! Abbreviated Timeline
| !Year|!Event |
| -4,100|The greatpine [[Oalian]] is awakened—some say by a [[Gatekeeper|Gatekeepers]] [[druid]], others by [[Vvaraak]] herself. Over time, Oalian becomes recognized as the Great Druid, a spiritual authority respected by all the druids of the [[Eldeen Reaches]]. |
| -3,200|The [[Mark of Hospitality]] appears among [[halfling]]s of the [[Talenta Plains]]. The [[Mark of Shadow]] and the [[Mark of Death]] appear among the [[elves|elf]] of [[Aerenal]]. First recorded contact with the [[Seren]]s. |
| -3,000|The adventurer [[Lhazaar]] leads a wave of [[human]] settlers from [[Sarlona]] to the eastern shores of [[Khorvaire]], establishing what comes to be known as the [[Lhazaar Principalities]]. <br/>The [[Mark of Healing]] appears among [[halfling]]s of the [[Talenta Plains]]. |
| -2,975|[[Malleon the Reaver]] builds a fortress amid [[goblin]] ruins on the edge of the [[Dagger River]], naming his keep [[Shaarat|Sharn]]. Over time, it expands to become a powerful city. |
| -2,800|Humans are aggressively expanding across [[Khorvaire]], fighting and oppressing the [[goblin]]s and other natives. <br/>The [[Mark of Scribing]] appears among the [[gnome]]s of [[Zilargo]]. |
| -2,650|The [[Mark of Sentinel]] appears among [[human]]s in the expanding city-state of [[Korth]]. |
| -2,600|The [[Aereni]] discover that the [[line|Aereni noble line]] of [[Vol]], which carries the [[Mark of Death]], has been performing [[magebreeding]] experiments with rogue [[dragon]]s in hopes of enhancing the mark. The [[Undying Court]] joins forces with [[Argonnessen]] and completely wipes out the line of Vol. [[Elves|elf]] that supported Vol are exiled to [[Khorvaire]], and the elves of House [[Phiarlan]] choose to relocate there. |
| -2,500|Humans have spread across [[Khorvaire]], and the city-states that will eventually become the [[Five Nations]] are now well established: [[Daskara]], [[Korth]], [[Metrol]], [[Thaliost]], and [[Wroat]]. <br/>The [[Mark of Making]] appears among [[human]]s of Metrol. <br/>The [[Mark of Warding]] appears among the [[dwarves|dwarf]] of the [[Ironroot Mountains]]. |
| -2,400|King Bregor of [[Wroat]] destroys the rival city of Shaarat, asserting his power over the region. He eventually rebuilds the city and renames it [[Sharn]]. |
| -2,000|[[Karrn the Conqueror]] seizes control of [[Korth]] and establishes the nation of [[Karrnath]]. After defeating the remaining [[goblinoid]] settlements, he unsuccessfully attempts to conquer [[Daskara]], [[Metrol]], [[Thaliost]], and [[Wroat]]. <br/>The [[Mark of Storm]] appears among half-elves of Daskara. |
| -1,900|The [[Mark of Passage]] appears among [[human]]s in [[Thaliost]]. |
| -1,800|The [[Mark of Handling]] appears among humans in western [[Thaliost]].<br/>[[Adar]]an monks become voluntary vessels for [[quori]] spirits in [[Dal Quor]], creating the [[kalashtar]]. |
| -1,600|In [[Sarlona]], the [[Sundering]] begins. Over the next two hundred years, the [[quori]] use manipulation and greed to stir up riots and wars across the continent. These conflicts lead to a wave of [[human]] refugees settling on [[Khorvaire]], notably in the [[Shadow Marches]] and the [[Demon Wastes]]. [[Tiefling|tiefling]] and human refugees from Sarlona establish the [[Venomous Demesne]] in what is now [[Droaam]]. |
| -1,500|The [[Mark of Detection]] appears among [[half-elves|half-elf]] of [[Wroat]]. The [[Twelve]] is established, forging a strong alliance between the [[dragonmarked house]]s and standardizing many practices. This leads to the [[War of the Mark]], as the Twelve works to eradicate [[aberrant dragonmark]]s. The city of [[Sharn]] is ruined in one of the final battles of the war. |
| -1,300|[[Riedra]] is unified under the [[Inspired]]. Riedran calendars count forward from this year, which they call 1 Unity. |
| -1,043|[[Galifar Wynarn|Galifar ir'Wynarn]] is born in [[Karrnath]]. |
| -1,022|Galifar assumes rulership of [[Karrnath]]. |
| -1,012|Galifar begins his campaign to unite the [[Five Nations]]. He abolishes the practice of slavery in his domain and promises freedom to the oppressed subjects of his enemies. This draws a significant number of [[goblin]]s to his cause. |
| -1,005|Galifar meets with the [[Twelve]] and establishes the [[Korth Edicts]], establishing that the houses will remain a neutral force—forbidding them from holding land or noble titles—while promising them regulatory power and industrial preeminence in exchange for their support. |
| -1,000|The [[Mark of Finding]] appears among the people of the [[Shadow Marches]]. |
| 1 YK <br/>(–998)|After a long campaign of conquest and diplomacy, [[Galifar I|Galifar ir'Wynarn]] unites the nations of [[Khorvaire]] under his rule, declaring this realm the United Kingdom of [[Galifar]]. During the later reign of [[Cyre|Cyre ir'Wynarn]]’s son, [[Galifar the Dark]], a new calendar establishes this year as the first Year of the Kingdom (YK). |
| 2 YK|Galifar I appoints his five eldest children as governors of the provinces of the new kingdom. He renames these regions after his children. [[Daskara]] becomes [[Thrane]], [[Metrol]] becomes [[Cyre]], [[Thaliost]] becomes [[Aundair]], and [[Wroat]] is named [[Breland]] after his daughter [[Brey|Brey ir'Wynarn]]. Galifar’s son [[Karrn|Karrn ir'Wynarn]] governs [[Karrnath]], which remains unchanged. |
| 5 YK|Galifar I and Princess Brey begin the reconstruction of the ruined city of Sharn. The [[ir'Tain family]] invests heavily in the construction. |
| 15 YK|Galifar I establishes the [[Arcane Congress]]. |
| 22 YK|The [[rogue dragon]] [[Sarmondelaryx]] carries out a reign of terror. When Prince [[Thrane|Thrane ir'Wynarn]] raises an army to face her, she slays him and scatters the army. The area devastated in the battle becomes known as the [[Burnt Wood]]. Sarmondelaryx isn’t seen again for centuries. |
| 28 YK|The decade-long [[Galifar-Lhazaar War]] begins. |
| 40 YK|Galifar I, now eighty-five years old, steps down and passes rulership of the kingdom to his eldest daughter, [[Cyre|Cyre ir'Wynarn]]. |
| 53 YK|Galifar I dies. |
| 88 YK|The [[Edgewalkers]] are founded in [[Riedra]] in response to a disastrous planar incursion in the province of [[Nulakesh]]. |
| 106 YK|House [[Kundarak]] is recognized by the [[dragonmarked house]]s and becomes part of the [[Twelve]]. |
| 298 YK|The Year of Blood and Fire. The [[overlord]] [[Bel Shalor]] is partially released from his bonds, and [[fiend]]s terrorize [[Thrane]]. |
| 299 YK|The [[paladin]] [[Tira Miron]] sacrifices herself to rebind Bel Shalor. Her allies establish the Church of the [[Silver Flame]], and the cathedral of [[Flamekeep]] is built around the pillar of fire marking her sacrifice. |
| 347 YK|House [[Lyrandar]] takes possession of an island off the coast of [[Aundair]] to create [[Stormhome]]. |
| 498 YK|House [[Sivis]] discovers heirs with the [[Mark of Finding]] while exploring the [[Shadow Marches]]. Sivis helps the Marchers build House [[Tharashk]], which is quickly recognized by the [[Twelve]]. |
| 512 YK|King Daroon orders the construction of the [[Starpeaks Observatory|Starpeaks]] in [[Aundair]], now used by the [[Arcane Congress]] to study the moons and stars. |
| 778 YK|A group of [[medusa]]s emerge from [[Khyber]] and take possession of [[Cazhaak Draal]], a [[Dhakaan]]i ruin in what is now [[Droaam]]. |
| 789 YK|House [[Sivis]] [[message station|speaking stone]]s begin operations, dramatically improving long-distance communication. |
| 802 YK|The Kingdom of [[Galifar]], in cooperation with the [[dragonmarked house]]s, funds the upgrade of the trade city of [[Stormreach]] on the northern peninsula of [[Xen'drik]]. |
| 811 YK|The first [[lightning rail]] connects [[Flamekeep]] and [[Fairhaven]]. |
| 830 YK|[[Lycanthropy|lycanthrope]] surges in the [[Towering Wood]]. The people of western [[Aundair]] suffer a wave of attacks and wererat infiltration. |
| 832 YK|[[Keeper of the Flame]] Jolan Sol launches the [[Silver Crusade]] to eliminate the threat of lycanthropy. An army of templars is dispatched to [[Aundair]], and templars across [[Khorvaire]] seek to expose and eliminate hidden [[lycanthrope]]s. |
| 845 YK|King [[Jarot|Jarot ir'Wynarn]] begins a public works project to connect all of central [[Khorvaire]] via [[lightning rail]]s. Within twenty years, lines connect the [[Five Nations]], [[Zilargo]], the [[Mror Holds]], and the [[Talenta Plains]]. |
| 878 YK|House [[Deneith]] begins to provide clients with [[goblinoid]] mercenaries from the [[Darguun]] region. |
| 882 YK|[[Keeper|Keeper of the Flame]] Jovor Daran declares an end to the [[Silver Crusade]]. |
| 894 YK|King [[Jarot|Jarot ir'Wynarn]], the last ruler of [[Galifar]], dies. [[Thalin|Thalin ir'Wynarn]], [[Kaius|Kaius ir'Wynarn I]], and [[Wroann|Wroann ir'Wynarn]] reject the succession of [[Mishann|Mishann ir'Wynarn]]. [[Wrogar|Wrogar ir'Wynarn]] backs his sister’s claim, and the [[Last War]] begins. |
| 896 YK|King [[Kaius I|Kaius ir'Wynarn I]] of [[Karrnath]] embraces the [[Blood of Vol]] as Karrnath’s state religion. The Order of the [[Emerald Claw]] is established. |
| 910 YK|[[Kaius II|Kaius ir'Wynarn II]] ascends to the throne of [[Karrnath]] after the mysterious death of Kaius I. |
| 913 YK|Miners in the [[Mror Holds]] break through into the deeper halls of the [[Realm Below]]. |
| 914 YK|The [[Mror Holds]] declares its independence in the first [[Iron Council]].<br/>[[Thalin|Thalin ir'Wynarn]] of [[Thrane]] dies and the Church of the [[Silver Flame]] assumes control of the nation. |
| 918 YK|Unknown saboteurs destroy the [[Glass Tower]] of [[Sharn]]. |
| 928 YK|[[Ven ir'Kesslan]] leads settlers from the [[Five Nations]] to forge the nation of [[Q'barra]]. |
| 956 YK|[[Tairnadal]] mercenaries annex Eastern [[Cyre]] and declare the sovereignty of the [[elf]] nation of [[Valenar]]. |
| 958 YK|The [[Eldeen Reaches]] declares itself an independent nation under the protection of the [[Wardens of the Wood]] and the guidance of the Great Druid [[Oalian]]. |
| 959 YK|The first [[warforged titan]]s are deployed in [[Cyre]]. |
| 961 YK|[[Boranel ir'Wynarn]] becomes king of [[Breland]]. |
| 962 YK|[[Zilargo]] formally aligns with [[Breland]]. |
| 965 YK|House [[Cannith]] perfects the modern-era [[warforged]], living [[construct]]s designed to fight the [[Last War]]. |
| 969 YK|The mercenary leader [[Haruuc|Haruuc Shaarat'kor]] leads a [[hobgoblin]] rebellion. The [[goblinoid]] nation of [[Darguun]] is established. |
| 972 YK|The [[Shadow Schism]]. House [[Thuranni]] splits off from House [[Phiarlan]]. |
| 976 YK|Regent [[Moranna]] of [[Karrnath]] condemns the [[Blood of Vol]] and restores the [[Sovereign Host]] as the state religion of Karrnath. Seeker orders are disbanded, but the Order of the [[Emerald Claw]] refuses to disarm, its members going into hiding. |
| 980 YK|Queen [[Aurala|Aurala ir'Wynarn]]’s reign over [[Aundair]] begins. |
| 986 YK|A trio of [[hag]]s known as the [[Daughters of Sora Kell]] arrive at the [[Great Crag]] with an army of [[troll]]s, [[ogre]]s, and [[gnoll]]s. |
| 987 YK|King [[Boranel|Boranel ir'Wynarn]] pulls settlers back and seals off the land west of the [[Graywall Mountains]]. The [[Daughters of Sora Kell]] declare the sovereignty of the nation of [[Droaam]]. |
| 988 YK|House [[Tharashk]] begins brokering the services of monstrous mercenaries from [[Droaam]]. The criminal organization [[Daask]] establishes a presence in [[Sharn]]. |
| 990 YK|The first elemental [[airship]]s go into service for House [[Lyrandar]]. |
| 991 YK|[[Kaius III|Kaius ir'Wynarn III]]’s rule of [[Karrnath]] begins. |
| 992 YK|A group of disavowed [[Brelish|Breland]] commandos establishes the criminal organization known as House [[Tarkanan]] in [[Sharn]]. |
| 993 YK|[[Jaela Daran|Keeper of the Flame]], then six years old, assumes the power of the Keeper of the [[Silver Flame]]. |
| 994 YK|[[Cyre]] is destroyed in the [[Mourning]]; the [[Mournland]] is created. |
| 996 YK|The [[Treaty of Thronehold]] officially ends the [[Last War]]. The treaty officially recognizes the nations of [[Aundair]], [[Breland]], [[Thrane]], [[Karrnath]], the [[Talenta Plains]], [[Zilargo]], [[Q'barra]], the [[Lhazaar Principalities]], the [[Mror Holds]], the [[Eldeen Reaches]], [[Darguun]], and [[Valenar]]. House [[Cannith]] is ordered to destroy all [[creation forge]]s; the remaining [[warforged]] are granted the rights of sentient beings. |
| 998 YK|The default starting point for an [[Eberron]] campaign. |
Modrons are [[construct]]s of absolute law that adhere to a hive-like hierarchy. They inhabit the plane of [[Daanvi]], their existence a clockwork routine of perfect order.
Mokush is a town of [[ogre]]s and [[oni]] on the
[[Borunan]] frontier near [[Syrkarn]]. Ostensibly ruled by
an aging [[Chosen]] lady, Mokush's residents are builders,
miners, and farmers. Quarterly caravans come from other
[[Riedra]]n settlements to pick up rock, iron, and [[Khyber shard|dragonshard]]s from
the town, and perhaps some ogre laborers for other parts
of the [[Inspired]]'s empire. The [[ogre]]s of Mokush are honest
and hard-working—they believe wholeheartedly in the
[[Path of Inspiration]].
Lady [[Galshani]] supposedly rules Mokush, but the [[oni]] [[Yrnuxi]] often masquerades as Galshani and rules in her stead. Yrnuxi and a sizable percentage of the town are members of the [[Horned Shadow]].
!! Notable Features
!!! Wall and Barbicans
Mokush's wall is an edifice
of earth and stone built to withstand an attack from
[[Syrkarn]] that has never come. It is about 30 feet thick, and
its inside halls are big enough for [[ogre]]s to fit through.
While the officers of Mokush are almost all [[human]]s or [[shifter]]s, the ogres are expected to form a militia if the
town is attacked.
The gate towers are massive structures obviously
built by giant hands. Each houses a small indoor courtyard overlooked by murder holes and two portcullises. All the barbicans have ballistae.
!!! Monolith
In the center of Mokush stands a [[monolith|hanbalani alta]] that is smaller than those commonly seen in the
bastions of [[Riedra]]. The village's two large wells flank
the structure.
This monolith is only about 60 feet wide and 200 feet
tall. A mute representative of the [[Path of Inspiration]], the
"small" monolith is still a point of pride for the [[ogre]]s.
They and their [[priest|Ignra]] gather at the monolith for the Feast
of Founding, sharing the customary meal in the large
community hall south of the hanbalani.
Unknown to most of Mokush, the hall has a secret
area underneath, dug secretly from the mines. In this
secret chamber, the members of the [[Horned Shadow]] meet
and plan to free Mokush. Stored here are a good amount
of [[Khyber dragonshard|dragonshard]]s (some tainted), iron bars, and
finished weapons.
!!! Town
In the town, [[ogre]]s live communally in small
buildings, each rotating living spaces regularly to better
know one another. Ogres are usually segregated by gender,
though some groups are allowed to mingle on a schedule
dictated by the [[Inspired]] long ago. New ogres are essential
to keeping Mokush alive. The races of Mokush do not mix,
though—the [[Path of Inspiration]] forbids such behavior.
!!! Manor
In the deepest section of Mokush, walled
away from the ogres and protected in the west by a tall
mesa, live the elderly [[Chosen]] lady [[Galshani]] and her small
staff. Many of the buildings in this compound are empty,
showing signs of neglect. However, Galshani maintains
a stable of [[quorbound|quorbound beast]] creatures that she dearly loves,
including horses, hounds, and even a few birds. Those
few who care for the animals are the luckiest of citizens
in Mokush, treated better by Galshani (and [[Yrnuxi]] in
her stead) than any others.
[[Yrnuxi]] and the inner circle of the [[Horned Shadow]]
have a secret shrine under the manor, which can be
entered from the mines as well. This foul place is dedicated to [[fiend]]s. It's also where Yrnuxi keeps some [[magic item]]s she has managed to acquire in clandestine trades
with [[dromite]]s from the nearby city-hive [[Talcheka]].
!!! Watch Towers
On rotating shifts, [[ogre]]s stand watch
at these squat towers set atop pinnacles of red rock. The
towers cannot be accessed other than by climbing the
rough stone or flying. Within the towers are stores of
stones for throwing and horns for warning the town.
Most ogres see their time on watch as a restful reward,
and they don't shirk their duty.
!!! Mine and Quarry
Behind a stone wall thinner
than the main fortifications and a small watch tower is
Mokush's mine. Iron is the principal product of the excavation, but a few years ago the [[ogre]]s stumbled onto small deposits of Khyber [[dragonshard]]s. Mokush is supposed to export all such shards, but [[Yrnuxi]] has been skimming the
production and replacing a few of the shards with tainted
ones she has received from the [[dromite]]s.
The upper level of the mine is also a quarry. Here the ogres dig and cut blocks of rock to ship to other parts of [[Riedra]]. Red blocks from Mokush can be found in buildings as far away as [[Dar Jin]].
!!! Ruins
The ruins of an ancient village stand near
the mine. Mokush's [[ogre]]s have tumbled most of it to the
foundations and plundered the structures for useful
building materials. The place is abandoned.
!! Notable People
* Lady [[Galshani]]
* [[Yrnuxi]]
* [[Roorprek]]
* [[Ignra]]
* [[Korac]]
!! Encounters
The [[ogre]]s of Mokush are largely dispersed to the fields or
the mine during the day, with a few in the town practicing
some craft or another. Most rest inside the town walls at
night. They don't trust visitors unless they are members
of the [[Riedra]]n military or agents of the blessed [[Inspired]].
Hostile intruders have a hard fight ahead of them. Unlike
typical [[citizens|Riedrans]] of Riedran villages or cities, the ogres
take up arms to defend themselves.
For invaders, almost every encounter in Mokush is
with a gang or band of [[ogre]]s, or one or two [[oni]].
The ogres fear the taint of the oni (according
to the [[Path of Inspiration]]), and they prefer not to fight
alongside them. Officers lead the militia. Mokush's citizens fight bravely and to the death.
If invaders seem likely to win, however, those who follow
the [[Horned Shadow]] (about 10% of the ogre population)
switch sides immediately.
The quarry and upper mines are usually safe, protected by soldiers and ogres. Underground creatures do live in the deep earth here, though, and if the PCs enter the deep caverns to investigate or look for more [[dragonshard]]s, they may encounter hostile [[dromite]]s or creatures such as [[ankheg]]s, [[folugub]]s, or [[xorn]]s.
!!! Development
[[Riedran|Riedrans]] PCs are likely to come to Mokush to track tainted
[[Khyber shard|dragonshard]]s. In the mines, they find no evidence of such
shards, so investigating the village becomes necessary. In
doing so, they might eventually uncover the [[Horned Shadow]]
and root out the evil and its connection to the [[dromite]]s.
War with [[Yrnuxi]] could follow. In so doing, however, they
also have to deal with [[Galshani]]'s utter incompetence and
their feelings about the obvious failings of this [[Chosen]].
Infiltrating Mokush isn't difficult if such a plan is
worked out with [[Yrnuxi]] through [[Syrk|Syrkarn]] intermediaries.
The [[ogre]]s accept that strange folk sometimes arrive with
caravans or at other times when the mysterious and glorious [[Inspired]] order them to appear. Yrnuxi plays the part
of the downtrodden serf if possible, hoping to ally with
those powerful enough to improve her position. If foreign
adventurers come to Mokush, Yrnuxi is a willing ally—and
she has the means to disguise her evil if she must.
!! Treasure
Within Mokush, Khyber [[dragonshard]]s are the most valuable treasure. [[Yrnuxi]]'s stores amount to a small fortune
in shards, and the mine still has small deposits as well.
Getting the shards out of the mine is the hard part.
Despite the backcountry setting, [[Galshani]] lives in
the comfort any petty noble might enjoy. She has plenty
of pretty baubles and even a few [[psionic|psionics]] items. Yrnuxi
has enjoyed the comforts of masquerading as the [[Chosen]]
lady—as mentioned, she also has a small store of [[magic item]]s. Some of these items are cursed by [[fiend]]ish magic.
You choose a portion of dirt or stone that you can see within 30 feet and that fits within a 5-foot cube. You manipulate it in one of the following ways:
* If you target an area of loose earth, you can instantaneously excavate it, move it along the ground, and deposit it up to 5 feet away. This movement doesn't involve enough force to cause damage.
* You cause shapes, colors, or both to appear on the dirt or stone, spelling out words, creating images, or shaping patterns. The changes last for 1 hour.
* If the dirt or stone you target is on the ground, you cause it to become difficult terrain. Alternatively, you can cause the ground to become normal terrain if it is already difficult terrain. This change lasts for 1 hour.
If you cast this spell multiple times, you can have no more than two of its non-instantaneous effects active at a time, and you can dismiss such an effect at will. A [[full success]] or bonus effect on this spell might grant additional area of effect, duration, or range.
Lord Molou [[Lassite|Lassite family]] was one of the five original [[Storm Lords]] of [[Stormreach]].
Around 800 YK, Molou Lassite was one of the greatest
smugglers of [[Stormreach]]. He was also a master brewer,
and the Lassites were beloved by the buccaneers and
scoundrels of the region. Molou Lassite contributed little military force to the [[Storm Lords]], but he gained the invaluable good will of the common people, and many say that he bought the peace with [[kuryeva]].
[[Molou's Distillery]] in the [[Marketplace]] bears his name.
Molou’s Distillery, owned by the [[Lassite family]], produces most of the [[kuryeva]] drunk
in Stormreach and across southern Khorvaire. Recently the distillery has started
selling [[sooka]], a form of kuryeva with a touch of [[dreamlily]].
The distillery has a taproom where the dedicated drinker can get kuryeva straight from the tap. [[Storm Lord|Storm Lords]] [[Varen Lassite]] often throws parties at the distillery, and the taproom is the center of these wild storms.
The ascetic warriors known as monks make careful study of a magical energy within themselves that many monastic traditions call //ki//. By honing their minds and bodies, they harness this power to create magical effects and exceed their bodies' physical capabilities, channeling uncanny speed and strength into their unarmed strikes.
!! Monastic Orders
<<list-links-article "[tag{!!title}sort[title]]">>
Monstrosities are monsters in the strictest sense—frightening beastlike creatures that are not ordinary, not truly natural, and almost never benign. Typically they exhibit properties of one or more natural [[beast]]s. Some are the results of magical energies of [[Lamannia]] or [[Kythri]] (such as [[owlbear]]s) either incidental or through intentional [[magebreeding]], and others are the product of terrible curses (including [[minotaur]]s and [[yuan-ti]]).
<<list-links-article "[tag{!!title}category[creature]] -[tag{!!title}tagging[]category[creature]] +[sort[title]]">>
<<list-links-article "[tag{!!title}category[location]sort[title]]">>
This thick, black paint is stored in a small jar, containing enough paint to apply moodmarks to one creature. The paint is dabbed on the face in spots or markings that often resemble the eyes of insects or spiders. Applying the paint in this way takes 1 minute.
For the next 8 or so hours, the marks change to reflect your mental state. Other creatures can discern whether you are happy, sad, angry, disgusted, surprised, or afraid, as well as the main source of that emotion.
The sky of [[Eberron]] is full of wonders. The Ring of [[Siberys]] stretches over the equator, its glittering stones standing out even in the light of day. Sages trace images of celestial dragon patterns of the stars. And twelve moons circle the planet, filling the night sky with color and light.
This multitude of moons affects Eberron in many ways. While [[Zarantyr]] has the greatest influence over the tides of Eberron, each moon has its own impact on wind and water, and lunar conjunctions can have dramatic effects that can spawn adventures. A confluence of moons can pull back the waters, revealing ancient ruins along the shores of [[Xen'drik]]. Sailors speak of maelstroms that arise when [[Zarantyr]] eclipses [[Aryth]]—vast whirlpools that can draw a ship into the elemental oceans of [[Lamannia]] or the endless frozen sea of [[Risia]]. The sage Galeoin, who lived among the [[Seren]]s, claimed that the moons influenced the tides of magic as well as water and that his barbaric hosts had learned to weave lunar power into their arcane rituals; however, the magi of the [[Arcane Congress]] have yet to find any solid evidence supporting Galeoin's claims. A DM could certainly decide that a particular ritual, [[magic item]], or [[eldritch machine]] can be completed only during a particular conjunction of moons, or that a full moon can enhance the effects of a particular [[manifest zone]].
Each moon has an "ascendant phase"—a 28-day period during which it is unusually bright. To date, scholars have found no natural explanation for this phenomenon, and it remains one of the mysteries of the skies. This cycle of radiance is the basis for the [[lunar calendar|Khorvaire calendar]], and each month is named for the moon that is in its ascendant phase. Some stargazers claim that the ascendant moon has a profound impact on the skills and spirit of children born beneath it; a child born in the month of Zarantyr will be wild and mercurial, while a child of Therendor will be gentle and kind. [[Druid|druid]]s and rangers also believe that the ascendant moon can be a source of strength—that a child of [[Dravago]] has a special gift for calming animals when this moon is full in the sky.
When the [[dragonmark]]s appeared, sages were quick to note the similarities between the powers of the marks and the mythic qualities of the moons. According to popular legend, each dragonmark first manifested during the month of its associated moon. One common belief is that a child born in the month of his mark has a greater chance of developing a powerful dragonmark, and superstitious dragonmarked couples often time pregnancies to end in the appropriate month. As there were once thirteen dragonmarks, some sages believe that there is a [[thirteenth moon|Crya]] that has either vanished or simply cannot be seen with the naked eye, and the existence of such a moon has been hinted at by dragons and carvings found in ruined [[Xen'drik]]. If this moon was once visible in the sky, it vanished long before the rise of [[human]] civilization, and the common races do not know its name or place in the heavens.
!! The Twelve Moons
<<list-links-article "[tag{!!title}!title[Crya]sort[title]]">>
The Moon Court is a social entourage of the [[fey]] of the [[Moonlit Vale]] of [[Thelanis]]. It is split into factions corresponding with the four seasons, and whichever faction is currently dominant, its associated season unfurls onto the Moonlit Vale. Court intrigues and revels abound at the [[Palace of the Moon]], the seat of the Moon Court.
While most of the [[Carrion Tribes]] worship the demonic [[overlord]]s and their lesser servants, the Moon Reavers revere the [[night hag]]s—[[fiend]]s who spread
fear by the dark of the moon. This clan specializes in terror tactics
and guerrilla warfare. Whenever possible, the Reavers prefer
to stalk isolated prey using methods designed to frighten
them prior to making a kill. They draw this fear out for
as long as possible, reveling in the terror of their victims.
Clan members make masks and other decorations using
the bones and skin of their victims. They file their teeth
and let their nails grow long in emulation of the fiends
they admire.
''Karka Darkbane'' leads the Moon Reavers. She is a cruel woman twisted
in mind and body by a night hag while she was still within
her mother’s womb. In battle, Karka wields a [[mace of terror]],
a gift from her sinister patron, the [[night hag]] who marked
her as its own before she came into the world.
In darkness, the unsheathed blade of this sword sheds moonlight, creating bright light in a 15-foot radius and dim light for an additional 15 feet.
This is the largest [[layer]] of [[Thelanis]] and the heart of the [[plane]].
The Moonlit Vale is essentially a country, with the [[feyspire]]s
spread across it as cities; it's possible to spend days traveling
from spire to spire. While it's largely arboreal, there are
beautiful valleys, glittering lakes, and a vast mountain. It's
always night here, and the moon [[Rhaan]] radiates bright light,
always seeming to hang just above the viewer. While the moon
doesn't move or change, the seasons do; in winter, the court
is covered in snow, while in spring, it's in brilliant flower. This
has nothing to do with the passage of time, and everything to
do with the intrigues of the [[Palace of the Moon]]; the current
season indicates which seasonal court is currently dominant.
This is a crucial aspect of the Moonlit Vale: //things change//.
The [[baronies|barony]] are fixed in their stories, but the intrigues of the
four seasons are the story [[Thelanis]] tells itself.
The Moonlit Vale embodies the general idea of the [[fey]]—otherworldy beauty and magic. There are many natural displays of [[illusion]]—streams of glowing mist, ethereal music, distant song. Motes of light drift slowly through the trees. The
beasts of the region are sleek and graceful, and have unusual
colors and patterns. The land is fertile, game is easy to hunt, and adventurers have advantage on foraging attempts... though hunting without permission may incur the
wrath of the local fey.
A peaceful [[Khoravar|half-elf]] village built on the Old Road,
Moonshadow is a young community, built by immigrants
who hope that [[Valenar]] can become a home for their people. Though small, Moonshadow has drawn half-elves from across [[Khorvaire]], and a surprising number of
gifted scholars and artisans thrive in the village.
The Moonspeakers are a [[druid]]ic sect of the [[Eldeen Reaches]] tied specifically to [[shifter]] traditions. Moonspeaker druids respect the totems
associated with the beast within—Grandmother Wolf, Cousin
Bear—but they don't see these spirits as gods. These beasts
guide shifters from within—they don't shape the world itself.
These totem spirits may share a connection with the totems of [[Lamannia]].
Jutting from the walls of [[Io'lokar]] like upswept spears, the thirteen Moontowers serve
as watch points and guard posts for the [[Arnaaracaex]].
Connected to the city by great arched stairways, each tower is ringed with [[dragon]] skulls magically embedded into the stone, a dark reminder of how seriously
the Arnaaracaex take their duties. The great towers
also provide landing sites for dragons and other
flying visitors, and are where any visiting dragons
lodge while in the city. Beneath the top-level living
quarters of the [[stone giant]]s lie a series of spacious
draconic guest chambers accessed from the outside
tower walls.
The [[Arnaaracaex]] keep a constant watch for agents of the dominion lords who openly challenge the city, but for the most part, the [[dragon]]s stopping in [[Io'lokar]] are long-range travelers seeking a safe layover in the [[Vast]]. Such dragons are an excellent source of intelligence and campaign hooks from elsewhere in [[Argonnessen]].
Dragons also sometimes come to the city seeking nondragon agents for missions of the [[Chamber]] or individual [[dragon]] lords. The rare [[Io'lokari]] adventurers are particular about the types of assignments they accept, so foreign parties are coveted as heroes for
hire—especially those willing to be paid in treasure the Io’lokari disdain.
The [[Mror|Mror Holds]] spirits served at Moraggan's might be the strongest drink in [[Sharn]]. However,
Moraggan's is a far cry from the rough and tumble
saloon one might expect from a place with such a
reputation. This posh, luxurious establishment has
considerable security and a number of private, soundproofed rooms. Moraggan's caters to [[Kundarak]] agents
and other Mror merchants—traders and crafters who
believe that strong drink and business negotiation
go hand in hand.
Lady Moranna continues to serve as regent of [[Karrnath]] since the ascendancy of [[Kaius ir'Wynarn III]], a post that has been transformed from a stewardship to an
advisory position. She never ventures far from the court or
from Kaius’s side, except when he sends her out in his name to
handle crises near and far. Moranna, a large, strong woman,
has a commanding manner and a no-nonsense approach
that leaves most of her underlings shaking in her wake.
During the [[Last War]], Lady Moranna, serving as steward of [[Karrnath]], gave the order to reinstate the [[Sovereign Host]] as the state religion of the nation in place of the [[Blood of Vol]], and to disband the Order of the [[Emerald Claw]], the Onyx Skull, and all other chivalric orders of Seekers.
//"The executioners tried everything. He was bathed in acid, burned at the stake, drowned, even dismembered. And after each attempt, he rose again, his vigor unchecked and flesh rebound. No lesser mage could set his will over the flesh of Mordain."//
<div align="right">—Salyon Syrralin d'Sivis</div>
Mordain the Fleshweaver, one of the most powerful [[wizard]]s in history and the subject of dark fireside tales, lives in exile in western [[Droaam]]. Though the [[Twelve]]
have attempted to imprison Mordain for his disturbing attempts
to master the magic of the [[daelkyr]], few have the
power to directly oppose him.
!! Lore of the Fleshweaver
Near [[Droaam]]’s border with the
[[Shadow Marches]], [[Mordain's Hall]] reaches into the
sky like a massive malformed arm. The area that
surrounds it is filled with [[foulspawn]] and other horrors of Mordain’s own creation. His servants search constantly for ancient [[daelkyr]] sites within Droaam
and the Shadow Marches, and some say that the mad
mage hopes to reopen the gates to [[Xoriat]].
More than two centuries ago, Mordain d’[[Phiarlan]] was one of the [[Twelve]], but the
ambitious mage began delving into forbidden lore,
choosing to experiment with the magic of the daelkyr. Though he was captured, tried, and found guilty of capital offenses, the mages could not find a way to execute the aberrant wizard. He was then petrified and sent to [[Dreadhold]], but escaped before reaching the island prison.
The first confirmed sighting of the twisted hall of [[Mordain the Fleshweaver]] occured in 873 YK, during the [[Silver Crusade]]. A troop of [[Aundair]]ian templars pursued a few [[werewolves|lycanthrope]] far to the south of the [[Towering Wood]]. Weeks later, another patrol encountered a lone survivor, half-mad and delirious. He spoke of a tower "with blackened, leathery walls, twisted as the limb of a dragon reaching up to grasp the sun." The soldier couldn't account for his companions, and his own condition was testimony to the horrors he had seen. His body had been magically conjoined to the body of a werewolf. His mental state quickly deteriorated and he soon died of self-inflicted wounds.
The location of Mordain's Hall has long since been confirmed, though the tower is shielded from [[scrying]] and other [[divination]]. Virtuous champions have set out to destroy the foul wizard and his works. Emissaries from the [[Five Nations]] sought his aid the [[Last War]], and mages have dreamed of stealing his secrets. However, few gaze on the face of [[Mordain|Mordain the Fleshweaver]] and return unchanged... if they return at all.
In the age when [[fiend]]s and [[dragon]]s waged war across [[Eberron]], [[rakshasa]]s served the fiendish [[overlord]]s as strategists and generals. A rakshasa named Mordakhesh rose up through the ranks to become one of the greatest commanders of his age, and a dragon-slaying specialist. For this, he earned the nickname Shadowsword, along with a legendary reputation for leaving death in his wake.
Mordakhesh serves as the prakhutu or "speaker" of his imprisoned master, [[Rak Tulkhesh]], and he seeks to free his lord by bathing the world in blood. Like a spider with multiple webs, he has agents and pawns (which he calls his "claws") established in armies across [[Khorvaire]]. The most significant of those is the barbarian horde he amasses in the [[Demon Wastes]]—warriors who threaten to sweep into [[Aundair]] on a tide of blood.
Many of the horrors of the [[Last War]] were instigated—or at least encouraged—by Mordakhesh's operatives, and his claws are known to have perpetrated some of the most brutal massacres of that conflict. No one knows how far the Shadowsword's reach extends, or which commanders in the armies of [[Khorvaire]] serve him.
Mordalyn ir’Tanar is the daughter of a
[[Karrnath]]i warlord who has abandoned her birthright
to pursue [[Drago Thul]]’s dream and join the [[Swords of Karrn]]. Mordalyn is a diplomat as
well as a warrior, and between her skills and her history
she has helped Drago sway many from blind loyalty to
the Wynarn line.
//“A beacon of knowledge shining from the tallest towers of the city, illuminating the forgotten secrets of the past.” //
That's how Lord Lareth ir'Morgrave envisioned his university when it opened its doors in [[Sharn]] over 250 years ago. From its earliest days, however, the university has been plagued by suspicions and accusations that it's more of a front for unscrupulous treasure-hunters than a serious institution of academic study. Although the vast majority of the university's faculty and students are serious scholars, enough items disappear from the university's holdings, only to reappear on the black market, to keep the accusations alive.
Morgrave University owns most of the buildings in [[Upper Menthis]], even ones not used for University purposes. The University itself fills Dalannan
Tower, which is crowned by the enormous dome of Lareth Hall. Five slender spires ring Dalannan Tower, representing and named after the [[Five Nations]], and they house most of Morgrave's students. The university library is located just below
Lareth Hall, and the Commons—atop [[Breland]] Spire—is a popular gathering spot for students and faculty alike.
Morgrave also has a campus in the capital city of [[Wroat]].
!! Campus Destinations
* The [[Bridge]]
* The [[Commons]]
* [[Dezina Museum of Antiquities]]
* The [[Great Hall of Aureon]]
* [[Lareth Hall]]
* [[Morgrave University Library]]
* [[Shava House]]
!! Morgrave Faculty
* Lady [[Dara ir'Rael]]†
* [[Tym Bessel]]
* [[Tig Boromar]]
* [[Cord Ennis]]
* [[Jolan Hass Holan]]
* [[Birra Oak]]
* [[Ange Thornlong]]
* [[Talaen Tolaoi]]
* Lord [[Dirge Tiriandara d'Kundarak]]†*
* [[Ohnal Caldyn]]*
* [[Fang]]*
* [[Alemayehu Marjani]] (registrar)
†: distinguished faculty<br/>
*: adjunct faculty
Centrally located on the [[University|Morgrave University]] campus near the top of Dalannan Tower (just below the dome of [[Lareth Hall]]), the
Morgrave University Library has the most extensive
collection of books in all of [[Breland]]. It pales in
comparison to the great [[Library of Korranberg]], but
a significant number of [[Zilargo]] expatriates live in
[[Den'iyas]] and work to make the Morgrave Library the
best resource it can be.
History is clearly a specialty of the University,
and those using the Morgrave Library for research
into the history of [[Sharn]] or [[Xen'drik]] gain two advantages on their attempts. The Library offers one advantage on attempts to research other scholarly topics.
Those without formal ties to Morgrave University must pay a fee of 1c per week to conduct research at the Library. Students, alumni, and those working
for Morgrave can use the Library for free.
Viceroy Morian Shol leads House [[Phiarlan]] operations in [[Stormreach]]. From the house's [[enclave|Phiarlan Enclave (Stormreach)]] in the [[Temple District]], Morian arranges entertainment for the taverns, inns, and theaters in the city. Although the
[[Serpentine Table]]—[[Phiarlan]]’s espionage division—has operatives scattered in the city, Morian deals in the arts, not in intelligence. The eyes of the house study anyone who comes in search of secret services; if the job is worthwhile and the resources are available, a Phiarlan agent approaches the prospective client to discuss the deal. Morian doesn’t even know the identity of the Serpentine spymaster, though he’s certain that this agent works out of the [[Onyx Fountain]].
Morrikan has ruled House [[Kundarak]] for more than a century—he is the only head of a [[dragonmarked house]] (besides the Houses of [[Shadow|Mark of Shadow]]) who remembers life before the [[Last War]]. Accordingly, he has an attitude that outsiders would call world-weary. His memory is sharp enough that he remembers the last four times over the century that his advisors have suggested a given course of action. In keeping with the nature of his house, Morrikan is cautious and circumspect.
Although Morrikan is known for caution, once he has decided on a course of action he backs it to the hilt. In the last five years, he has been urging younger members who bear the [[Mark of Warding]] to travel to the [[Eldeen Reaches]] and the [[Shadow Marches]] to establish “ties of honor” with the [[Gatekeeper|Gatekeepers]] [[druid]]s. A natural connection exists between the work of the Gatekeepers and the work of House [[Kundarak]]: The Gatekeepers are essentially engaged in a large-scale warding project, and more specifically their expertise in dealing with [[aberration]]s might provide insight into the [[Realm Below]] problem.
The Mosswood is a small forest in the [[Eldeen Reaches]], near the towns of [[Mossmantle]] and [[Alvirad]].
Mount Kapaerian is a large volcanic mountain on [[Kapaerian Island]] off the coast of [[Xen'drik]].
Mount Kel is a mountain on the island of Ohr Kel, the largest island in the [[Ohr Kaluun]] archipelago in [[Riedra]].
The {{!!title}} is a [[Sharn]] street gang of
[[Cyran|Cyre]] veterans who present themselves
as a vigilante militia that protects Cyran
refugees, but some say they're just pursuing selfish interests.
The nation of [[Cyre]] was once the heart of the kingdom of
[[Galifar]]. The [[Last War]] took a heavy toll on Cyre and its
citizens, as the nation became a primary battleground
where the [[Five Nations]] crossed swords. But no one was
prepared for the disaster that struck in 994 YK.
Accounts of the Mourning vary. Some say that a
blinding light engulfed the battlefield near the Saerun
Road. Others say that [[dead-gray mists]] rose in the capital
city of [[Metrol]] and spread from there. Still others swear that the disaster began in the [[Cannith]] stronghold of [[Making]]. Within the space of
one day, the nation of Cyre had been engulfed in a wall of mist, and anything caught within the mists was horrifically transformed. Over ten million Cyrans were killed on
the day of Mourning. Those who survived were soldiers
fighting in enemy territory, those living on the borders
who were able to flee from the advancing mists, and
those few who were able to escape the interior through
magical means. On 20 Olarune 994 YK, the nation of
[[Cyre]] ceased to exist.
The Mourning threw [[Khorvaire]] into a state of shock.
Who could unleash such power? Was this a weapon,
and if so, when would those responsible issues their demands? Were the borders of the lingering walls of mist stable, or could they expand at any moment? What was
to be done with the Cyran refugees surging into every
adjacent nation? Fear of the Mourning ended the war.
But all those questions remain unanswered.
[[Breland]] opened its borders to refugees, and Prince [[Oargev|Oargev ir'Wynarn]] serves as de facto ruler in the area now called [[New Cyre]]. Despite its grand name, New Cyre is little more than a vast refugee camp. Other refugees scattered across [[Khorvaire]]; some are treated with pity, others with suspicion or anger. And fear of the Mourning
hangs like a shadow across Khorvaire. Could it happen
again? Is this how the world ends?
Over the last four
years, people have ventured into the [[mist|dead-gray mists]] for many reasons. Some sought to plunder the abandoned treasures
of the richest nation in [[Galifar]]. Others hoped to find lost
loved ones, or some explanation for the disaster. Few of
these explorers have returned, and those survivors all
tell tales of a [[land|Mournland]] twisted in unpredictable and inexplicable ways.
The Mourning Dawn is a loose network of [[Cyran|Cyre]] vigilantes and terrorists that operates across [[Khorvaire]], dedicated to making everyone on a long roll of [[Cyre]]’s enemies pay. The Dawn places House [[Cannith]] at or near the top of its list, since it holds them personally responsible for the [[Mourning]], despite insubstantial evidence.
Once, [[Cyre]] shone more brightly than any of its sibling
nations in the kingdom of [[Galifar]]. It was the center of
the kingdom's wealth, a monument to its artistic and arcane achievements, and the site of great centers of learning where preeminent masters of magic, architecture,
and artifice taught at the forefront of their craft. It was
also the home of House [[Cannith]] and its massive foundries: some of them built on mountains or in mountains,
some gracefully spanning canyons, and others erected
in vast labyrinths deep underground.
Today, this region is a festering wound across [[Khorvaire]]. A wall of [[mist|dead-gray mists]] surrounds a land twisted into
strange and terrible shapes. Cyre was once called the
Jewel of Galifar. Now it is the Mournland.
!! Mournland Environment
The arcane energies that caused the Day of [[Mourning]]
and that linger in the remains of Cyre are mysterious
and unpredictable, so they can be the cause of any
bizarre magical effect you want to bring to bear in
your game.
Maps of Cyre from before the Day of Mourning are of
limited use nowadays. The land beyond the [[gray mist|dead-gray mists]]
has been twisted and warped, and distances seem to
expand and shrink even as one treks across the wastes.
As a result, any attempt made to navigate the Mournland
is made with disadvantage. Explorers must also bring their own provisions into the
Mournland, unless they want to risk the danger of ingesting tainted food and water.
!!! Terrain Features
The Day of [[Mourning]] redefined the geography of Cyre.
The cataclysm raised land, swallowed lakes, and moved
whole cities. In some areas, the earth has been torn and
gouged as if by some colossal beast. In others, it has become iridescent glass or semiliquid sludge. Trees in one place turned to crystalline onyx; the flowers in another
place begin eerily buzzing when touched by a breeze. Nothing in the Mournland is as it was; the entire land is a scar left by the catastrophe of the Mourning.
//''Mist Wall.''// The borders of the Mournland are defined
by a wall of thick, [[gray mist|dead-gray mists]] that rises thousands of feet
into the air and forms a canopy that hides the ruined
realm even from above.
//''Glowing Chasm.''// The northern part of the Mournland
is dominated by a great crack in the ground that emits a
cold purple light. This supernatural glow emanates from
deep within the [[Glowing Chasm]], so far beneath the surface that its source hasn't been identified. The mutated
monsters that roam the Mournland seem drawn to this
location, and those that spend any significant time near
the Glowing Chasm mutate further, becoming more
twisted and misshapen than before.
//''Crimson Water.''// Before the Mourning, a spring in the
eastern part of [[Cyre]] fed the Rushing River as it traced
a short but fertile path south to [[Kraken Bay]]. The bed
of the Rushing River is now as dry and barren as the
rest of the Mournland, and the location of the spring is marked by the [[Crimson Water]], a stagnant lake of blood-colored liquid. At the lake bottom is the ruined town of Eastwood Springs, which once served as a resort for the leisure classes of Cyre. As yet, no one has been brave or foolish enough to search for lost treasures
in the depths of the Crimson Water.
''//Unusual Locations.//'' At places smaller in scale than
the major features described above, explorers in the
Mournland might encounter any kind of terrain feature
with bizarre magical properties. The table below offers some ideas.
| !<<dr d6>> |!Unusual Location |
| 1 |A pool of glowing water sits in the middle of a ruined and abandoned village. Anyone who looks into the water sees brief reflections of the long-dead villagers going about their lives in harmony and joy. |
| 2 |In the middle of the wreckage of a carnival stands a perfectly preserved carousel. If the carousel is ridden, the characters doing so see visions of [[Cyre]] as it was before the [[Last War]]. |
| 3 |All the trees and plants in a forest have been turned to objects of glossy white stone with blood-red flecks. |
| 4 |The battlefield before the characters contains no bodies, only the clothing and weapons of thousands of missing soldiers. |
| 5 |The broken bodies of soldiers lie scattered across a battlefield, refusing to decompose. |
| 6 |The characters find a fallen [[warforged colossus]]. |
!!! Creatures of the Mournland
Many creatures were slain outright by the [[Mourning]].
Others were mutated as the land was transformed.
Sometimes the result was an entirely new life form; any
previously unseen monster could appear as a spawn of
the Mourning. Other creatures retained a semblance of
their original physiology while taking on some sort of alteration. The table below has options for
altering existing monsters to reflect this phenomenon.
| !<<dr d6>> |!Monstrous Mutation |
| 1 |The creature has grown to an unusual size. |
| 2 |The creature has developed magical camouflage. |
| 3 |The creature's body has been infused with one kind of energy: acid, cold, fire, or lightning (your choice, or determine randomly: <<dr d4>>). |
| 4 |The creature has a resistance to magical spells. |
| 5 |The creature has a supernatural ability to heal its wounds. Its regeneration ability may not function if it is subjected to acid, fire, or some other type of damage. |
| 6 |The creature has two heads. |
Most [[warforged]] were unaffected by the Mourning, and
the race as a whole seems immune to many of the lingering effects that plague the Mournland. As such, the
warforged who follow the [[Lord of Blades]] constitute the
closest thing to a humanoid society that can be found in
the Mournland. Similarly, [[golem]]s and other [[construct]]s
were largely unaffected by the Mourning.
The [[Mourning]] had no effect on existing [[undead]], and a
large number of new undead came into being when the
cataclysm occurred. Various spirits (such as ghosts and
specters) linger near the places where they died, and the
corpses that litter an abandoned battlefield might rise
up to continue fighting whenever a living creature comes
near. Some of these entities are similar to undead that
might be encountered outside the Mournland, but others
have alterations that are tied to the unusual manner of
their deaths. You can use the mutations table above to generate some details.
Many Mournland creatures have mutations that are
purely cosmetic and don't change their stat blocks. For
example, one might have eyes that look like gemstones
or might display glowing patterns on its skin or fur.
!!! Magical Effects
The catastrophe of the [[Mourning]] altered more than the
landscape and living creatures. The devastation caused
localized alterations in the way magic functions. In
some places, magic barely functions, or certain magical
functions are warped. In other places, spells persist past
the instant of their casting and start behaving as if they
were independent, living creatures.
A common misunderstanding about the Mournland is
that healing spells refuse to work. The fact is that healing spells are impeded within the [[dead-gray mists]], and occasionally in other areas, making it harder for someone to cast them effectively. Because so few expeditions
make it far past the mist, the inability to heal is widely
assumed to be a property of the Mournland as a whole.
The table below provides suggestions
for weird magic that might pervade a small or large area
of the Mournland. Effects might shift from day to day or
even hour to hour.
| !<<dr d8>> |!Effect |
| 1 |Healing spells are impeded here. |
| 2 |A creature who casts a spell experiences psychic feedback and a wave of fatigue. |
| 3 |Any humanoid that dies in the area reanimates as a [[zombie]] 10 seconds later. |
| 4 |The area is affected by a [[silence]] spell. |
| 5 |Each creature that enters the area either increases or decreases dramatically in size, with an equal chance for each effect. The effect lasts until the creature leaves the area. |
| 6 |The pull of gravity is lessened. Creatures can jump twice the normal distance in any direction, and everything effectively weighs half its actual weight. |
| 7 |All creatures are telepathically linked to every other creature in the area, enabling them to instantaneously share words, images, sounds, and other sensory messages. |
| 8 |A creature that casts a spell experiences a [[random magical effect]]. |
!! Sites and Ruins
Of all the bizarre and horrific spectacles of the Mournland, perhaps the greatest tragedy is represented by
the ruins of the once-glittering cities of [[Cyre]]. Some
have been reduced to rubble, while others are eerily
preserved, devoid of life but otherwise unharmed. In
some of them, treasures left behind by the former inhabitants await discovery, and many people across [[Khorvaire]] are eager to get their hands on such spoils for a
wide variety of reasons.
<<list-links-article "[tag{!!title}category[location]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Mournland Villains
Few people have reason to spend time anywhere near
the Mournland. Among the exceptions are those who
seek to plunder the riches of lost [[Cyre]], such as [[Ikar's Salvage]]. These treasure hunters are
also the kind of people who make interesting villains,
teaming up with adventurers one day and betraying
them the next.
In addition to these salvagers, the [[Lord of Blades]] is a major force in the Mournland. The table below suggests other possible evil schemes and influences that might arise in connection with the Mournland.
| !<<dr d6>> |!Villain |
| 1 |The [[Lord of Blades]] maintains a detention center where experiments are performed on adventurers and scavengers that his forces capture in the Mournland. |
| 2 |The leader of a cult devoted to [[Belashyrra]], the Lord of Eyes, uses [[daelkyr]]-made tentacles to tear out the eyes of victims and attaches them to members of the cult. |
| 3 |A powerful member of House [[Cannith]] hopes to find something in the Mournland that will guarantee the ascendancy of her branch of the house. |
| 4 |A [[Karrnath]]i [[bone knight]] wants to raise up an [[undead]] army from the corpses in the Mournland. |
| 5 |A [[rakshasa]] works to free a fiendish [[overlord]] trapped in a whirlwind of stone and sand somewhere in the Mournland. |
| 6 |A servant of the [[Lords of Dust]] maintains an extensive collection of severed heads and continues to draw on the knowledge in their brains. |
!! Adventures and Encounters
In contrast to the salvagers and treasure hunters who undertake most of the expeditions to the Mournland, some individuals enter the churning mist with good intentions in mind. Most of these adventurers are displaced Cyrans or are hired by such people, ranging from common folk hoping to retrieve family heirlooms to servants of Prince [[Oargev|Oargev ir'Wynarn]], who hopes to recover the lost regalia of the Cyran crown.
Two of the [[dragonmarked house]]s, [[Orien]] and [[Cannith]],
also have vested interests in investigating the Mournland's ruins and often hire adventurers to pursue those interests. House Orien wants to restore the [[lightning rail]] line that crosses the Mournland, which would reconnect the western and eastern halves of [[Khorvaire]]. House Cannith wants to recover trade secrets, experimental artifacts, and magic items from the [[creation forge]]s, foundries, and secret laboratories it lost on the
Day of [[Mourning]].
The table below includes a range of potential opportunities that could lead a group
of adventurers into the Mournland.
| !<<dr d6>> |!Adventure Hook |
| 1 |A [[Gatekeeper|Gatekeepers]] [[druid]] wants a rock sample from the [[Glass Plateau]]. |
| 2 |A [[magewright]] from House [[Cannith]] wants the party to escort him to a [[warforged colossus]]. The magewright wants to retrieve the docent network from the colossus before an unscrupulous House [[Phiarlan]] operative does so. |
| 3 |On her deathbed, the visionary artist who designed the [[lightning rail]] station at [[Metrol]] reveals that she hid a treasure map within a lamp in her old office. |
| 4 |A wealthy eccentric asks the party to go into the Mournland and retrieve his most prized possession (a letter from a lover, a mechanical caterpillar, or anything else you devise) from his mansion. |
| 5 |A young Cyran [[paladin]] is morose because she was away from Cyre on a mission when the Day of Mourning occurred and never got to say goodbye to her family. She longs to retrieve her father's sword. |
| 6 |An elderly knight is strapping on his armor one last time so he can ride into the Mournland and die on the battlefield where his companions perished and "where I should have been ." |
!!! Encounters and Trinkets
The Mournland is a dangerous place full of bizarre,
inexplicable, and often localized magical effects—literally anything can happen in this place. The Mournland
Encounters table and the Mournland Trinkets table offer
just a glimpse of the weirdness that adventurers might
come across in their travels into the ruins of Cyre.
| !<<dr d6>> |!Mournland Encounter |
| 1 |The party meets flickering images of their future selves who are trying desperately to communicate, but their message is garbled. |
| 2 |The party encounters a [[revenant]] who was murdered by House [[Cannith]] assassins after she learned too much about the house's secret research. The characters can appease her by promising to help her get revenge. |
| 3 |A tiny kitten mews from inside a hollow log. Within a few hours after being freed, it grows into an adult [[displacer beast]]. |
| 4 |The apparition of a parent searches for their lost child. As soon as the two are reunited, parent and spirit child both vanish. |
| 5 |The [[mist|dead-gray mists]] congeals into the form of a long-lost love of one of the adventurers. The mist apparition wants the character to stay here forever. |
| 6 |The characters come across the skull of a buried [[warforged colossus]]. |
| !<<dr d10>> |!Mournland Trinket |
| 1 |The favorite childhood toy of one of the adventurers, floating in midair |
| 2 |A tin whistle that makes beautiful colors and patterns magically appear when it's played |
| 3 |A toy [[lightning rail]] car |
| 4 |A glass eye |
| 5 |A silver lapel pin of a finely detailed [[gorgon]]'s head with ruby eyes |
| 6 |A monocle that can be used as a telescope |
| 7 |A six-inch-tall mechanical marmoset in need of minor repairs |
| 8 |A small medallion made of silver, depicting a tower with an eye at the top of it and other smaller eyes embedded in the sides |
| 9 |A cloak pin made of iron in the shape of two hammers joined by a semicircular haft |
| 10 |A wooden [[dinosaur]] toy that has movable legs |
Mournlode is a very rare and recently-discovered variety of iron ore found only beneath the [[Field of Ruins]] in the [[Mournland]]. When mined, this ore has a mottled purple color; when it is refined, it takes on a more vibrant silvery hue, streaked with veins of purple.
The material properties of mournlode are identical to that of ordinary iron, with one curious exception: it is extremely effective against [[Mabar]]an [[undead]].
The [[Mror Holds]] are a feudal society, comprised of holds,
spires, and families. There are twelve active holds, each
governed by a ruling clan, which gives its name to the hold—
so Droranathhold is ruled by Clan [[Droranath]]. Each hold is
then broken up into smaller territories known as spires, each
ruled by a clan; there are ancient ties of kinship and marriage
between clans and the ruling clan. Within a spire, families
maintain tenant relationships with the local clan. Land is
held by a clan or family, and most businesses are family
businesses. Families are long established, and the creation
of a new family is an extremely rare event.
The Mror engage with their history through stories,
and clans and families are the characters in those stories.
Typically, a Mror tale refers to heroes and villains solely by
their family names. So in //Mroranon and the Troll King//, it
doesn't matter exactly when the story took place or which
specific Mroranon it was; it's a story about [[Mroranon]].
In one tale, he is a heroic youth, and in another, she is a
battle-scarred veteran, and yet they're depicted as the same
Mroranon. And in both cases, all Mroranon [[dwarves|dwarf]] should
strive to live up to that example. Where the [[Tairnadal]] [[elves|elf]]
seek to emulate specific ancestors, Mror dwarves view their
family as a greater whole. Your family is a direct extension
of your identity; it's only natural that you'd help a family
member in need, and betraying a family member is like
stabbing yourself in the hand. This drives feuds and alliances;
if you're wronged by a Hronnath [[dwarf]], the blame lies with
Clan Hronnath, not simply the individual. To draw another
comparison to the [[elves|elf]], the [[Aereni]] preserve their ancestors
as [[deathless]] undead. In contrast, the Mror don't feel that need
to preserve individuals; you preserve your //family// by living
up to its character and by adding to its story. The Mror also
aren't as particular about precisely following the traditions
of ancestors, as shown by the clans that are embracing
[[symbiont]]s; what you do is less important than how you do it,
the values you stand for, and the lines you refuse to cross.
This doesn't mean that Mror don't take personal
responsibility for their actions or feel pride in their personal
deeds. The deeds of living dwarves are generally acknowledged
by name, but when they take their place in history, their names
are unlikely to be remembered. Instead, every dwarf hopes that
their grand deeds will be added to the trove of stories told of their family—and that they won't shame their family with the
memories of their misdeeds.
In creating a Mror character or NPC, consider your family.
Are you part of a clan or ruling clan? If so, are you close
enough to power to take the noble background, or are you
a lesser heir? Are you from a tenant family, and if so, what
is your family's business? Even more crucial, what is your
family's //character//? When people tell stories about your family,
what are the virtues they highlight? Are there any particular
things your family is known for, any celebrated deeds you
might emulate, or anything a member of your family should
never do? Some families have specific taboos; a Tronnan must
never break their word, while a Holladon never turns away
a guest. Does your family have any such traditions?
Also consider how your family was affected by the [[Dol Udar|Mror History]]. Did they invest deeply in the depths, only to suffer
grievous losses when the horrors rose? Did they fight on the
front lines, or largely remain above? Do they have a family
treasure recovered from the [[Realm Below]]—a legendary item
or artifact you might someday have the honor to wield? Are
they willing to embrace [[symbiont]]s, or are they disgusted by
the tools of the [[daelkyr]]?
Finally, what is your standing with your family? If it's good,
consider why you left the [[Mror Holds]]. If your standing is bad, what happened? Is it a situation you hope to fix, or have you turned your back on your family? As
a player, talk to your DM about the role your family might play
in a campaign; do you want to have cousins showing up in need
of assistance or to be drawn into new feuds, or would you
rather your family remain in your backstory?
!! The Ruling Clans
The [[Mror Holds]] are divided into twelve holds, each bearing
the name of the ruling clan that exercises authority within
that region. These twelve clans are the foundation of Mror
culture, and every citizen owes allegiance to one of these clans.
But there are many lesser clans, and below those, tenant families. In creating
a Mror character, it's up to you whether your character is tied
directly to a ruling clan or if you're part of a lesser family. While
many Mror take inspiration from their ruling clan, they don't all
share the same virtues; in creating a Mror family of your own,
you can decide what their celebrated virtues are.
<<list-links-article "[tag{!!title}] [title[Kundarak]] +[sort[title]]">>
The [[Mror Holds]] are a loose confederation of [[clan|Mror clan]]s,
each with its own mercantile interests. Each of the
holds has a representative at the Mror consulate,
who negotiates on behalf of their clan. These consuls
are devoted to their work, and compared to the
[[Lhazaar|Lhazaar Embassy (Sharn)]] ambassadors there is little conflict among
the [[dwarves|dwarf]]. The dwarf consuls rarely have any use
for adventurers, and it would be extremely unusual
for a party to be called to the consulate.
The most noteworthy consul is ''Lain'' of Clan
[[Soldorak]], a socialite who often hosts lavish galas at his estate
in [[Highhold]]. Lain is a member of the [[Aurum]] and
reports to [[Antus Soldorak]], the chairman of the
Platinum Concord. In [[Sharn]], [[Kalphan Riak]] is the
highest-ranking member of the cabal, but Lain may
make a good opponent for lower-level adventurers.
The Soldorak family has an ancient grudge against
House [[Kundarak]]; if the party includes a Kundarak
heir, Lain may send misfortune their way.
[[Dwarves|dwarf]] aren't native to [[Khorvaire]], but no one knows exactly
how or when they arrived. Most spinners concur that the
dwarves came from a land of ice and frost, though not all stories agree. While
that's enough for the [[Mror|Mror Holds]], other scholars continue to debate
where they might have originated and how they traveled to
Khorvaire. The most popular theory is that the first dwarves
came from the [[Frostfell]], traveling by way of a [[demiplane]]
passage through [[Khyber]]. Proponents of this idea believe that
there may be an undiscovered dwarven civilization—or ruins
of it—waiting to be found in the Frostfell. A second popular
theory is that the dwarves originated in the [[Tashana Tundra]]
of [[Sarlona]], sailing to Khorvaire and landing in the [[Lhazaar Principalities]] millennia before human settlers. However, the
modern [[Akiak]] dwarves have little cultural overlap with the
[[Mror|Mror Holds]], and there's no evidence that they ever built ships. The
most exotic story is that the dwarves of [[Sarlona]] and [[Khorvaire]]
both came from [[Risia]], and that there may still be a grand
hidden civilization deep in the Risian ice. While origin stories
vary from [[clan|Mror clan]] to clan, the talespinners all agree on the broad
eras of Mror history that followed.
!! Sol Udar: The Realm Below
Wherever the dwarves came from, they sunk their roots into
the soil of [[Khorvaire]]. [[Dhakaan]]i [[dirge singer]]s sing of battles
between [[dwarf]] and [[dar|goblinoid]] that took place in vast halls below the
earth. Dhakaani records—which are more accurate than those
of the dwarves—show that the Dhakaani encountered dwarves late in the golden age of the Dhakaani Empire and drove them
east, eventually reaching a stalemate. The ancient dwarves
lacked the numbers or resources to threaten [[Dhakaan]], but they
established a line below the [[Ironroot Mountains]] and held it
against countless onslaughts. The dar had no need of the
territory, and in time, decided the effort of conquest wasn't
worth the rewards. This was the origin of what the dwarves call
//Sol Udar//, the [[Realm Below]].
!! Mallanok: The Exile
The next major era in Mror history was //Mallanok//, the Exile.
At some point—whether years or centuries later is unclear—a
group of dwarven warriors were exiled from the [[Realm Below]],
and found a new home in the mountains above, along with
their families and followers. The reason for the Exile depends
on who you ask. [[Mroranon]] talespinners say King Mror of
Sol Udar couldn't decide which of his thirteen heirs should
inherit his throne, so he pushed these heroes out onto the
mountain to prove themselves worthy of his kingdom. The
[[Soldorak]] say that King Mror was a weak tyrant, and he exiled
the thirteen heroes because he feared an uprising. Professor
Melian Mit Davandi of [[Korranberg]] has advanced the theory
that the ancient dwarves may have exiled criminals to the
surface world instead of maintaining prisons, and the founders
of the [[Mror Holds]] were a broad assortment of criminals
and undesirables. The truth is buried beneath the weight of
thousands of years and may never be known.
!! Dul Krok: Bloody Stones
The Exile was followed by //Dul Krok//, Bloody Stones. When
[[human]]ity came to [[Khorvaire]], the [[Ironroot Mountains]] were
divided between thirteen powerful [[clans|Mror clan]] of [[dwarves|dwarf]]. These
mountain dwarves were proud and warlike, but they were
mired in feuds—and these ancient conflicts kept them from
substantially advancing their culture or their influence in the
world. Even as [[human]]s spread across the land, the dwarves
continued to devote their energy and resources to their own
ongoing vendettas. While they were unquestionably fierce
warriors and made fine weapons, their deep division prevented
any progress. The Ironroot dwarves weren't the only dwarves
on Khorvaire; some had spread east into what's now the
[[Lhazaar Principalities]]. It was largely these Lhazaar dwarves
who integrated with humanity, spreading west with them,
though there were also a few Mror who left their feuds behind
to help build the foundations of the new kingdoms.
!! Bal Dulor: The Great Sorrow
As the [[Five Nations]] took form, [[human]]ity largely shunned
the [[Ironroot Mountains]] and left the [[dwarves|dwarf]] to their feuding.
Following the rise of the united kingdom of [[Galifar]], Prince
[[Karrn|Karrn ir'Wynarn]] finally made a concerted effort to pacify the mountain
dwarves. This time is known as //Bal Dulor//, the Great Sorrow.
The soldiers of Galifar were disciplined and took advantage of
the existing feuds, isolating the [[clans|Mror clan]] or pitting them against one
another. The central fortresses of the holds were impregnable,
but Galifar held the surrounding lands; the compromise that
followed left the dwarves as lords of their territories, but as
subjects of Galifar, forced to pay tribute and taxes.
!! Korran Hal: Korran's Blessing
While the Great Sorrow was a source of deep shame to the
[[dwarves|dwarf]], it brought a forced end to their violent feuds and
forced them to raise the funds to pay their tribute. Warriors
became miners, and the [[Ironroot Mountains]] proved to be an
astonishingly rich source of mineral wealth. [[Mror|Mror Holds]] talespinners say that the [[Sovereign|Sovereign Host]] [[Onatar]] had his forge in the mountains,
and that [[Kol Korran]] kept his hoard beneath it; other scholars
have speculated that there could be a more unsavory
supernatural force at work, an overlord tied to greed bound
beneath the peaks. Whatever the truth, this led to the period
known as Korran Hal, Korran's Blessing. Even with the taxes
owed to [[Galifar]], the Mror prospered and built a thriving society.
While the ancient feuds were never forgotten, violence was
no longer their first answer. The bearers of the [[Dragonmark of Warding|Mark of Warding]], Clan [[Kundarak]], were drawn into the [[Twelve]] and
became House Kundarak. Working closely with House [[Sivis]],
Kundarak parleyed its wealth and the power of its [[dragonmark]]
to establish the [[Banking Guild]], and the influence of Kundarak
helped to drive a further wave of cultural advancement.
!! Tra Halor: the Revelation
As the dwarves expanded their mines and fortress holds, they'd
occasionally find tunnels and outposts that seemed to be tied
to [[Sol Udar|Realm Below]]—outposts that appeared to have been abandoned
many thousands of years ago. The dwarves continued to dig
deeper toward the [[Realm Below]], and this led to a wave of
breakthroughs in the early tenth century, an event broadly
known as //tra Halor//, the Revelation. Miners and masons
found evidence of a vast, wondrous subterranean empire,
with enormous city-halls below all of the modern holds. Early
explorers found finely crafted treasures, along with evidence of
even deeper mines and fortresses. It was clear that these cities
had been built by [[dwarves|dwarf]], and it speaks to Mror character that
rather than pondering the fate of the builders of this abandoned
realm, the dwarves simply embraced this as a miraculous
stroke of fortune and proof of their collective destiny.
!! Mror Solu: The Realms of Iron
By this time, the [[Last War]] was underway. For the last decade,
[[Karrnath]] had been steadily raising taxes and demanding troop
levies. But the dwarves were conquered long ago by [[Galifar]],
whereas Karrnath was just a piece of that broken kingdom.
Inspired by Sol Udar and recognizing how far their people had
come since the Great Sorrow, the lords of the holds convened
in Mror Aulan, the [[Iron Council]]. The lords of the Iron Council
affirmed their union and declared the sovereignty of Mror Solu—
the Realms of Iron—a name which even the Mror themselves
usually translate into Common as the [[Mror Holds]]. It's worth
noting that in calling themselves the Mror, dwarves aren't
professing fealty to Clan [[Mroranon]] or the ancient king of Sol
Udar; rather, they're simply calling themselves “the Ironfolk.”
!! Dol Udar: The War Below
The time that followed was initially known as //Aul Aur//, the
Age of Gold. While [[Karrnath]] engaged in retaliatory actions
during the [[Last War]], it was struggling with famine and against
its neighbors, and lacked the power to stop the rebellion. The dwarves expanded and explored [[Sol Udar|Realm Below]], reclaiming wondrous relics and facilities. But soon they learned what had become of the ancient [[dwarves|dwarf]] of the Realm Below, and
why the kingdom had never reached up to the exiles. The
ancient dwarves had been wiped out thousands of years ago
by the [[daelkyr]], for Sol Udar abutted on the [[demiplane]] [[prison|Palace of Sinew]]
of [[Dyrrn]] the Corruptor, one of the mightiest of the daelkyr.
The first explorers found curious [[tools|symbiont]] formed from flesh and
bone—and then they discovered the creatures that made them.
[[Dolgrim|dolgrim]] hordes rose from the depths. Entire colonies were lost
and consumed by [[illithid|mind flayer]] corruption. While the [[Five Nations]]
fought the [[Last War]], the Mror fell into //Dol Udar//, the War Below.
Today, the Mror Holds are in a stalemate against the
[[aberration]]s below, and remain balanced between the Age of
Gold and the War Below. Even with their current holdings,
the dwarves continue to draw vast wealth from their mines.
Clans take pride in the treasures reclaimed from the depths,
and Mror [[artificer]]s continue to learn from studying ancient
artifacts. Though the dwarves are few in number, their
economic power and strong fortifications have deterred any
[[Karrnath]]i retribution, and no one challenged their recognition
under the [[Treaty of Thronehold]]. The dwarves are proud and
prosperous—and yet, old feuds linger. The [[Realm Below]]
remains both a glorious lure and a deadly threat. And tensions
are further exacerbated by the other [[treasures|symbiont]] recovered from
the depths—tools made not by dwarves, but by the [[daelkyr]].
''Capital:'' [[Krona Peak]]<br/>
''Hallmarks:'' Banking, dwarves, metalwork, mining (precious and non-precious metals)
When [[humanity|human]] first came to [[Khorvaire]], they found
the [[dwarven|dwarf]] [[clans|Mror clan]] of the Mror Holds locked in endless
feuds. This division kept the [[clans|Mror clan]] from uniting against
the new arrivals, and the dwarves were forced to swear
fealty to [[Karrnath]] and [[Galifar]]. Over the centuries, they
turned their energies to harnessing the astonishing
natural resources of their mountain home. The dwarves
were then reborn as merchant lords.
In the early days of the [[Last War]], Mror miners made
an astonishing discovery: the ruins of an ancient dwarven empire, vast halls deep within the [[Ironroot Mountains]]. Explorers uncovered mines still brimming with
jewels and precious ores and vaults filled with riches
and powerful artifacts. The Mror restored these ancient
fortresses and worked to reclaim the secrets of their
ancestors. Seeing the untapped potential of the [[Realm Below]] and the broken Kingdom of Galifar, the clan lords
joined together to form the [[Iron Council]] and to declare
the independence and sovereignty of the Mror Holds.
One question remained: What had become of the ancient [[dwarves|dwarf]]? The answer soon became apparent. As
the Mror delved deeper into the Realm Below, they woke
an ancient evil: [[Dyrrn]] the Corruptor, a [[daelkyr]] lord of
madness. Hordes of [[aberration]]s and [[derro]] rose from the
depths to challenge the explorers. For decades, the Mror
lords have been fighting a battle in the depths, struggling to drive the darkness from their ancestral halls.
Many dwarves revile anything to do with the [[daelkyr]].
Others believe that the daelkyr can grant the Mror
dwarves the power to overcome any enemy. Some clans
have taken up [[symbiont]]s and living weapons recovered
from the depths, and cabals of [[warlock]]s draw on the
power of the Plane of [[Xoriat]].
For more information on the history of the dwarves, see [[Mror History]].
The Mror Holds consist of a loose confederation.
Twelve noble [[clans|Mror clan]] each govern a hold and have a
representative on the [[Iron Council]], which resolves disputes and issues affecting the entire nation. Each hold
includes a number of lesser clans, who owe fealty to the
noble line. Those who occupy land above have the right
to claim the halls that lie below if they can.
The [[Sovereign Host]] is the dominant faith of the Mror
Holds. [[Kol Korran]] is the most beloved of the Sovereigns, but the dwarves also revere [[Boldrei]], [[Dol Dorn]], [[Olladra]], and [[Onatar]].
See also [[Culture of the Mror Holds]], as well as [[Mror clan]]s.
!! Interesting Things About {{!!article}}{{!!title}}
* The Mror Holds contain deep reserves of gold, silver, and other rare and precious metals, along with iron and other ores. The Mror [[dwarves|dwarf]] are skilled miners and artisans.
* A clan of [[orc]]s called the [[Jhorash'tar]] live among the [[Ironroot Mountains]]. The Jhorash'tar have been slowly crowded into the least hospitable regions of the mountains. A few dwarven clans seek to incorporate the Jhorash'tar into Mror society, but others wish to drive them out once and for all.
* The dwarves have recovered artifacts and arcane secrets from the [[Realm Below]]. Dwarf [[artificer]]s are still working to master the techniques of their ancestors, while [[warlock]]s strive to harness the powers of the [[daelkyr]]. Mror communities are shaped by the artifacts they possess or by their interactions with the daelkyr. A Mror lord might serve guests from a bottomless cauldron of wine, while another studies strangers using a [[crown of eyes|Belashyrra's beholder crown]], claiming that this living artifact reveals all evil intent.
!! Mror Characters
As you develop a Mror character or NPC, consider the
following:
* ''Clan Focus.'' The [[dwarf]] [[clan|Mror clan]] is the heart of Mror culture. Is your clan known for mercantile power or martial skill? Are you a noble—even if you're a few steps removed from true power? Or are you a guild artisan or soldier? Most Mror have embraced modern martial techniques, but a few minor clans still cling to barbarian traditions of the past. What caused you to leave your hold? Are you serving your clan and honing your skills, or have you been exiled from your homeland?
* ''The Realm Below.'' How has the [[Realm Below]] affected your family and your character? Do you oppose the foul forces that infest your ancestral halls, or do you see them as a source of power? You might be a [[paladin]] sworn to oppose the horrors that dwell in the deep, or you could be a [[warlock]] who's forged a pact with a Great Old One patron, one of the dark powers in the depths.
* ''Pride in Possessions.'' From the wealthiest clan lord to the humblest miner, the Mror take great pride in their possessions. Quality is more important than appearance, and you are interested in the history of the items you carry. If you find a magic weapon, you want to know the battles it has seen and the warriors who have wielded it before you. This is especially true of the relics recovered from the Realm Below. Who forged the blade you carry? Do you bear a trinket from a forgotten age?
!! Cities and Sites
The Mror Holds spread across the [[Ironroot Mountains]].
Most Mror communities are at least partially subterranean, extending down into the mountains. The [[Realm Below]] is deep beneath the surface, and not every town
has a passage to it.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
The Mror Holds declared independence during the [[Last War]]. Many nations depend on the resource of the Holds, and the [[Treaty of Thronehold]] affirmed its sovereignty.
To the casual observer, the Mror [[dwarves|dwarf]]' star appears to be rising. Their mines seem to offer limitless resources. Mror [[artificer]]s make amazing strides as they study the relics of their ancestors. The dwarves are proud of their ancient past and optimistic about the future. Most Mror are generous and courageous, eager to show off their wealth and accomplishments.
Those who dig deeper realize that this prosperity is
built on an unstable foundation. The Last War may be
over, but the war against the [[daelkyr]] has barely begun.
The clan lords hold their reclaimed halls in the [[Realm Below]], but no one knows the full extent of the power of the daelkyr. A renewed assault could come at any time,
whether it's a force of monsters boiling up from below or
a creeping madness that infects the weak-willed.
The dwarves are also divided by their attitude toward
the [[aberration]]s. Some of the clans—notably [[Soldorak]]—embrace [[symbiont]]s and other [[daelkyr]] gifts; some even experiment with flesh-warping techniques and create
their own monsters. Others—notably Clan [[Mroranon]]—avoid contact with the [[aberration]]s. Such dwarves treasure the relics of their ancestors but despise those who
use [[symbiont]]s or form pacts with the darkness.
Long ago, the dwarves engaged in vicious feuds that
kept them from uniting as a nation. This new divide
could reignite those rivalries, leading to a civil war on
the surface even as evil gains strength in the depths.
''Capital:'' [[Krona Peak]]<br/>
''Primary Resources:'' Iron, [[mithral]]<br/>
''Enemies:'' [[Soldorak]]<br/>
''Celebrated Virtues:'' Charisma, leadership, wisdom. Lead the way, but lead wisely.
Clan Mroranon has always been the largest and strongest
of the ruling [[clans|Mror clan]]. The mythical Mroranon is said to have
been the son of the last king of the [[Realm Below]], and to have
rallied the exiles to establish the [[Mror Holds]]. Talespinners say
that it was [[Kol Korran]]'s bargain with Mroranon that ensured
prosperity for the dwarves, and [[Krona Peak]] is home to both
the [[Iron Council]] and [[Kol Korran's Throne]], the largest temple
dedicated to the [[Sovereign|Sovereign Host]] in [[Khorvaire]].
While Mroranonhold has a wide variety of mines, it's best
known for iron and [[mithral]]. It has established strong ties with
House [[Cannith]], though all of the [[Five Nations]] import Mroranon
steel. It has the strongest general industrial base of the holds,
and [[Krona Peak]] is the largest single city in the region.
Mroranon [[dwarves|dwarf]] are proud of their skills as warriors and
negotiators, even if they acknowledge [[Doldarun]] and [[Kolkarun]]
to be the best in those fields. What sets the Mroranon apart is
leadership. Mroranon sees the future and inspires others to
follow. Mroranon unites, and makes wise decisions for the good
of all. This ties to the mythic story of Mroranon as the leader—[[Doldarun]] is a mighty champion, but Mroranon has the vision. Mroranon are strong supporters of the [[Sovereign Host]] and believe that the dwarves are blessed; many of the most devout
Mror priests and powerful adepts hail from Mroranonhold.
With the largest and most industrialized territory, Mroranon
has the deepest investment in the [[Realm Below]]. It has multiple
colony outposts, including one tied to a [[demiplane]] mine and
another holding an ancient fortress, and is holding a firm line
while building power for another surge. Mroranon and its vassal
clans have recovered many legendary relics and artifacts from
the depths. While they don't oppose [[symbiont]]s as strongly as
[[Doldarun]], they refuse to make use of //dularash// (Mror word meaning "foul blood") items and assert that any contact with the [[daelkyr]] or their creations is dangerous.
Acolyte, noble, and soldier are common backgrounds for
Mroranon dwarves. While [[paladin]]s are more likely to be found
in [[Doldarun]], [[cleric]]s, fighters, and [[bard]]s are all sound choices for Mroranon. With its big cities, it's also a reasonable option for criminals and rogues.
''District Type:'' Shantytown<br/>
''Buildings:'' Poor residences (400)<br/>
''First Impression:'' Lean-tos, smoky fires, and makeshift hovels cling to the side of the cliff and spread into tiny caves in the great rock wall.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Ship's Towers]] (west); [[Sharn's Welcome]] (northwest)
The southern expanse of cliff face, away from the
wharves where the Hilt flows into the [[Dagger River]],
is dotted with small caves. Some of the poorest of
[[Sharn]]'s poor find shelter in wretched hovels built in
and around these caves. The populace is a destitute
mixture of [[human]]s, [[dwarves|dwarf]], [[gnome]]s, [[halfling]]s,
[[shifter]]s, [[changeling]]s, [[goblin]]s, [[hobgoblin]]s, [[bugbear]]s,
[[orc]]s, [[ogre]]s, and even a [[troll]] or two.
Deep in the soggy fens and stinking bogs of [[Xen'drik]]
lurks a thing as silent as shadow, whose form shifts
from a towering, taloned fury to a slinking, putrescent sludge of black oil. Mulraargo appears as a [[troll]] with oil-slick black skin sporting boils and sores that
weep a vicious sludge at all times. More than a few
reports claim that the monstrous troll can melt away
into a puddle of black [[ooze]]. This would account for
the troll’s unrivaled skill at stealth and ambush and
explain why no hunter can track the creature. Mulraargo enjoys picking off members of an expedition one at a time, savoring the mounting fear among the
survivors almost as much he does the flesh of their
captured companions.
Undead mummies are created when a priest of the [[Blood of Vol]] or other faith ritually imbues a prepared embalmed corpse with [[necromantic magic|necromancy]]. This process is one of only three techniques known by practicers of [[Mabar]]an necromancy that can extend a person's existence and preserve their personality and memories (the other two creating [[vampire]]s and [[lich]]es).
[[Seekers|Blood of Vol]] and [[Bloodsails]] call these undead //oathbound//. The reason for this is that a mummy is bound by a set of oaths that they must obey, and it is these oaths that bind its essence to its body and prevent it being dragged to [[Dolurrh]]. Many oathbound are bound to specific temples or villages, forbidden by its oath never to leave its domain. Many Bloodsail mummies are bound to their ships. The looser these oaths, the more power and components are required for the ritual. For example, [[Malevanor]], the High Priest of [[Atur]], has far fewer restrictions than most oathbound; but it's not a simple matter to create mummies with such freedom.
Mummies are not driven by the hunger of the [[vampire]], and do not need to consume the blood of the living to survive. They are sustained directly by the dark energy of [[Mabar]]. This is why the touch of the mummy causes flesh to rot and why its gaze causes dread; it is a vessel for Mabar, which embodies the death of all that lives and the end of all hope.
Murephan is an enigma. Born as the result of some
heinous crime against the [[Inspired]], and once one of
the [[Chosen]] of [[Riedra]], he is a permanent amalgam of
[[quori]] spirit and [[human]] flesh. He came to Adar long
ago—even he doesn't know how long—without memories
or possessions. He expected to die. But the [[kalashtar]] of
[[Malshashar]] slowly influenced Murephan even as they
imprisoned him, and his suppressed hatred for the
[[Inspired]] resurfaced. He began to work for the [[Summit Road]] and now spends much of his time in [[Syrkarn]], helping others out of situations all too familiar to him. The
ranger and [[psion]] has proven his loyalty and ability
time and again, but his race keeps him eternally an outsider. Only in the city-hive [[Zi'til'natek]] does he find any true company.
Murephan is hard-nosed, and he speaks unkind
truths more often than he should, but he is fair-minded
overall. His gruffness is perfect for testing others'
patience, which means it can be an asset in the risky business he's in. He is less likely to carry out threats of abandoning those he aids than he seems. He is, however,
a merciless killer of [[Riedrans]], and he's likely to give
anyone who attacks him a good thrashing. His closest
friend is the [[dromite]] [[Kelki]], who doubles as Murephan's
soft side.
Mutiny Harbor is a small bay off the coast of southern mainland [[Lhazaar Principalities]]. It connects to the [[Far Strait]].
{{!!title}} is a street gang of
[[bugbear]]s in [[Lower Dura]], [[Sharn]] who have been
"protecting" [[Malleon's Gate]] for decades
(recently they've aligned with [[Daask]], but
their focus is their home district).
Acolyte Myla Flamesworn is a priest of the [[Silver Flame]], one of three serving the [[Keep of the Silver Flame]] in [[Stormreach]].
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Orderly collections of townhouses
ring the towers of this quiet district. Children play
in the streets, couples stroll arm in arm.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[North Towers]] (northeast); [[Vallia Towers]] (southwest); [[Boldrei's Hearth]] (east); [[Ashblack]] (below); [[Ambassador Towers]] (above)
Myshan Gardens is an unremarkable residential district. Its downtown location in Lower Central makes it particularly attractive to younger residents, particularly those with an artistic bent, radical political ideas, or untraditional lifestyles.
Deep in an unnamed forest exists a glade rumored to
hold great power. Legend tells that the [[dragon]] [[Vvaraak]]
once spread [[druid]]ic teachings from this glade, over
sixteen thousand years ago. Although not as holy a site
as [[Vvaraak's Cave]], which lies somewhere in the [[Shadow Marches]], the Mystic Glade still bears the touch of the [[Draconic Prophecy]].
No one knows the exact location of the Mystic Glade, but
it likely exists in the [[Shadow Marches]] or the [[Eldeen Reaches]]. Even those who have found the glade before can have difficulty locating it on subsequent visits.
The Mystic Glade possesses two distinct aspects. As the site of [[Vvaraak]]’s teachings, it retains a special significance for [[Gatekeepers]]. The glade itself is one of nature’s
bastions; it repels blight and disease and always seems healthy and verdant. [[Druids|druid]] find the glade a peaceful, safe haven in which to meditate or simply retreat from the civilized world.
The Mystic Glade also plays an important role in the [[Draconic Prophecy]]. It reflects Prophecy marks in every leaf and blade of grass. The [[Chamber]] seeks out the glade for this reason, as does anyone who wishes to decipher and influence the Prophecy.
Are these two aspects related? Some [[Gatekeepers]] theorize that [[Vvaraak]] chose the glade as a teaching place because of its magical qualities. Some wonder if Vvaraak’s actions changed the world so fundamentally that her very presence shaped the Mystic Glade, creating a visual representation of the myriad strings of the Prophecy.
The white tower of the
[[Esoteric Order of Aureon]] is surrounded by a host
of lesser magic businesses. The Mystic Market consists mainly
of [[magewright]]s and adepts. Businesses in the market
include
* The ''Mithral Blade,'' a smithy that produces steel and [[mithral]] weapons and armor with magical enhancement
* ''Wise Wood'', a shop that buys and sells wands and staves
* The ''Moonlit Loom'', which sells magic clothing
* The ''Dragon's Hoard'', which sells a wide assortment of minor wondrous items and does a brisk business in feather fall talismans (not to be confused with the [[Dragon's Hoard]] in [[Skyway]])
* ''Boldrei's Tears'' and ''Good Spirits'', which sell potions.
Born into the large, semi-nomadic Naartoq tribe of
the [[Qiku]] nation, Naar-Esqa chose the path of the shaman
after his first hunt. His affinity for the land and command of powerful spiritual magic led him to become the
tribe's shaman leader at a relatively young age. But it was
Naar-Esqa's uncommon wisdom and foresight that led to
his destiny as Qiku Sky Teller.
Along with emerging leaders from other tribes,
Naar-Esqa has been instrumental in maintaining the
current peace among the [[shifter]] nations. He established
a system of regular communication, dispatching pipers
and lorekeepers to constantly circulate in [[Qiku]], [[Saartuk]],
and [[Chuniigi]] territories, settling local disputes before
they worsened.
Naar-Esqa was elected to his current post at the last
Summit of Nations, joining representatives from the other
two nations in an unofficial triumvirate leadership. Since
then, he has been able to rally the tribes to common causes.
The Qiku Sky Teller has dispatched scouts and rangers to
investigate the threat of the [[Kalaak]] barbarians, and has
met with other [[Tashana|Tashana Tundra]] groups to assess the situation,
including the [[human]] barbarian
tribes. In the south, Naar-Esqa fears open warfare with the
[[Riedra]]ns should [[Qiku]] involvement with the [[Akiak]] progress, and he has forbidden [[shifter]] warriors from directly
participating in the conflict.
Naar-Esqa has no permanent residence and tends
to travel constantly and secretly—either alone or with
a small retinue. He relies on his network of scouts,
runners, and pipers to keep him informed. In person,
Naar-Esqa is remarkably reserved and diplomatic, while
projecting at all times a steely resolve. Tufts of silvery hair
cover his wiry, muscular frame. He is always interested
in forging new alliances, with the good of the [[Tashana shifter nations|Culture of the Tashana shifters]] foremost in his mind.
This small glass bottle contains enough paint for one
application. Applying the paint takes 10 minutes and the
paint lasts 10 days. While your nails are painted,
scratching them on any surface leaves behind a trail of
color that lasts for 24 hours.
The [[dao]] Naja Ash sculpts fire, producing masterful artifacts and tools
that channel or produce flame. She creates the majority
of the [[azer]], and she can create other [[elemental]] creatures,
[[construct]]s, or unique blends between the two concepts. She's
the foremost expert on [[elemental binding]] in the multiverse,
though it would take a great deal to convince her to share her
knowledge with mortals.
Overseeing the daily needs of the eastern arm of
[[Dar Myan]] and reporting both to [[Baalnakosh]] and the
[[Thousand Eyes]], Naldhuna is an ambitious and vindictive [[tsucora]] [[Inspired]] who uses any tool available to her in her subtle
quest for prominence. Naldhuna must approve any
business or operations of significant scale in Dar Myan's
eastern arm. Her subordinates handle lesser concerns.
Lord [[Varen Lassite]]’s oldest daughter, Naleen, is being groomed to take the
position of [[Storm Lord|Storm Lords]]. She is a year younger than her
brother Vasken, but Naleen has proven to be far more
adept at the game of politics. As heir apparent, she
engages in a fair amount of diplomacy and is brought
in when a situation calls for mediation.
Nalfeshnee [[demon]]s patrol the [[Catacombs]] of [[Dolurrh]],
dispersing [[meld]]s and [[lemure]]s and dealing with mortal intruders.
They appear as large [[humanoid]]s whose features are shrouded
in gray mist, and they delight in crushing mortals and pulling
the [[shade]]s from their corpses, as well as consuming lemures.
The aged Nalyna led the [[Union of the Shield]] for half his life before retiring to write a definitive encyclopedia of combat styles. He is greatly interested in meeting characters who have exotic combat-oriented training, and such PCs can usually lodge in his palatial [[Terrace]] apartments for as long as they are in the city. To those he judges trustworthy, Nalyna confides a deep secret—his plan to create a covert army of
[[dragon]]slayers within the city. He has seen too many near attacks from the [[Vast]] over the years, and believes that the [[Io'lokari]] must take the fight to the [[rogues|rogue dragon]] before it is too late.
''Capital:'' Shadowspire<br/>
''Primary Resources: ''Precious stones, wizardry<br/>
''Enemies:'' [[Doldarun]], [[Droranath]], [[Toldorath and Tordannon]]<br/>
''Celebrated Virtues:'' Arcane knowledge, beauty, mystery. Solve mysteries, but remain unknown.
Narathun is a small [[clan|Mror clan]], but has always had power. The mythic
hero Narathun was the lone [[wizard]] of the exiles, and their
people hoarded this knowledge. Narathun was renowned for
its [[magewright]]s, especially its oracles; while they draw rubies
and sapphires from their mines and produce beautiful jewelry,
secrets have always been one of Narathunhold's primary exports.
Narathun [[dwarves|dwarf]] appreciate tragedy and sacrifices. The clan
is known for its artists and its [[bard]]s; its work is unquestionably
beautiful, but certainly more morbid than that of other clans;
it's no accident that its largest city is called Shadowspire.
In the modern age, the [[dragonmarked house]]s and
traditions of [[Galifar]] have brought [[magewright]]s to all holds.
But its oracles are still respected, and the Ebon Library of
Shadowspire is the one of the finest schools of [[divination]]
in [[Khorvaire]]. Narathun sages have always asserted that no
knowledge should be forbidden, and Shadowspire holds
temples both to the [[Shadow]] and to the [[Blood of Vol]]. Clan
Narathun is fascinated by the [[Realm Below]], though it lacks
the forces to push as deeply into Sol Udar as it would like, and
Narathun patrons might well employ adventurers willing to risk
their lives in the depths. Narathun [[artificer]]s have embraced
the study of fleshcrafting; while they are no match for [[Mordain the Fleshweaver]], they have made remarkable developments
over the past few decades.
Narathun dwarves hold long grudges. They have never
forgiven [[Toldorath and Tordannon]] for thefts that occurred
before the [[Great Sorrow|Mror History]], and despise [[Droranath]] for a murder that
occurred eight centuries ago. [[Doldarun]] has long condemned
Narathun for its “foul practices,” and its pursuit of fleshcrafting
has exacerbated this. However, the other clans value its jewels
and its knowledge, and others have always stood in between
Narathun and [[Doldarun]]. [[Soldorak]] and Narathun are staunch
allies, reinforced by their interest in the [[Realm Below]].
A character from Narathun lends itself more to introspection
than interaction and bargaining, and Narathun dwarves are
more likely to be [[artificer]]s or [[wizard]]s than [[warlock]]s. Narathun
entertainers and [[bard]]s produce haunting works; the College
of Whispers is an appropriate choice. This is also an excellent
clan for hermits, acolytes, or clerics tied to the [[Dark Six]] or the
[[Blood of Vol]]. Despite the propaganda spread by Clan [[Doldarun]],
Narathun dwarves are no more likely to be evil than any others.
This strange stone found in the [[Demon Wastes]] is believed by some to be the petrified remains of [[demon]] bones. It can be used in rituals involving the [[conjuration]] of [[fiend]]s.
Nat Gann can be found in the [[Stormreach Bazaar]] performing acrobatic tricks with a pole to earn some coin from amused passersby. Nat makes considerably more money as an information hunter for [[inquisitive]]s and various powers in the city. Few spots in the rigging and ruins of [[Stormreach]] are beyond Nat’s agility and cleverness to reach. Because he has worked for both sides in various conflicts, he’s bound to offend someone sooner or later.
Some have speculated that Nat is secretly the independent burglar known as the [[Stirge]].
<<list-links-article "[tag{!!title}sort[title]]">>
When you put on this ring and attune to it, thick, leafy vines sprout from the ring and run up your arm, stopping just short of your shoulder. This ring allows you to cast [[awaken]] on a plant at will. You can only animate one [[plant creature]] at a time.
The largest city in [[Syrkarn]] and unofficial capital of the region, Nderitese is built on the foundations of ancient [[yuan-ti]] ruins in [[Khunan]], just north of the [[Tese Hills]]. The sahar of the city is sometimes asked to broker disputes between other settlements and larger clans.
To learn more about the people of Nderitese, see [[Syrks]].
!! Notable People
* [[Gerazan Sandaili]]
* [[Laddin Tho]]
* [[Ky]]
While wearing this necklace, you can breathe normally in any environment, and you have advantage resisting harmful gases and vapors (such as [[cloudkill]] and [[stinking cloud]] effects, inhaled [[poison]]s, and the breath weapons of some dragons).
This choker of black ribbon is dotted with tiny diamonds. When worn, it gives the wearer a beautiful singing voice.
The School of Necromancy explores the cosmic forces of life, death, and [[undeath|undead]]. As one focuses their studies in this tradition, they learn to manipulate the negative energy of [[Mabar]] to animate once-living things. As they progress, they learn to sap the life force from a creature as their magic destroys its body, transforming that vital energy into magical power they can manipulate.
Most people see necromancers as menacing, or even
villainous, due to the close association with death.
Not all necromancers are evil, but the forces they
manipulate are considered taboo by many societies.
A more challenging form of necromancy involves infusing the once-living with positive energy from [[Irian]], and sustaining the resulting [[deathless]] being with the devotion of the living. This is the form of necromancy that animates the [[Undying Court]].
Powerful bearers of the [[Mark of Healing]] and [[cleric]]s with potent conduits to divine power can [[raise the dead|raise dead]]; technically this qualifies as necromancy, even though the recipient of the spell is truly living, not undead.
!!! <<showspells-school {{!!title}}>>
For thirty generations, the people of [[Io'lokar]] have lived and died within their city
walls. At the end of a nondescript lane in the [[Terrace]], an unlocked black
onyx gate opens to a well-worn spiral staircase leading
down into the mountain.
Along miles of magically carved corridors stand the burial chambers of the [[Io'lokari]]. Their placement follows no pattern; old and new tombs can be found side by
side throughout the complex. No map or plan of these
caverns exists—the Io’lokari who come here to meditate
know where their loved ones lie.
Though few contemporary city folk have ever explored the full extents of the necropolis, it is rumored that its thousand-year-old caverns connect to
an even older series of caves where the remains of great
[[dragon]]s are entombed. If this draconic ossuary has
any connection to the [[Warders]]’ placing [[Io'lokar]] here, it
remains unknown.
This weapon is a magic dagger disguised as a sewing needle. When you hold it and speak its command word, it transforms into a dagger or back into a needle. While holding it, you can cast the [[mending]] cantrip from it.
<<<
{{mending}}
<<<
A slime-covered worm of immense size, a neothelid is a mutated [[illithid|mind flayer]] tadpole that was never implanted in a donor brain. As a feral thing, a neothelid knows nothing beyond the predatory existence it has lived so far and struggles to comprehend its new [[psionic|psionics]] abilities. Neothelids prowl subterranean passages in search of more brains to sate their constant hunger, growing ever more vicious. These creatures can spray tissue-dissolving enzymes from their tentacle ducts, reducing victims to a puddle of slime and leaving only the pulsing brain unharmed.
The cryptic and exclusive [[Wayfinder Foundation]] considers [[Stormreach]] to be one of its most important venues. This collective of explorers, scholar-adventurers, and unprincipled treasure hunters operates out of a large ruin of a temple dating back to the [[giant]]s’ custodianship of [[Stormreach]]. The dark, cavernous structure has been converted into a headquarters, museum, and training ground for the Foundation’s Stormreach regulars as well as itinerant members who need a place to bunk down, resupply, and gather information. Foundation members affectionately call this home away from home The Nest. A [[shifter]] named [[Kharva Crack-Tusk]] runs the Nest, with the help of a [[half-orc]] named Klintros Drovomar.
!! The Wayfinder Foundation in Stormreach
More [[Wayfinders|Wayfinder Foundation]] are drawn to [[Stormreach]] than to
any other locale frequented by these brave explorers.
Every year dozens of initiate Wayfinders and would-be
explorers flock to the city. Few survive the tests that
[[Xen'drik]] presents.
A good number of Wayfinders arrive in Stormreach determined to pursue the interests of historical societies of [[Khorvaire]], or even to seek a cure for their
Lord [[Boroman|Boroman ir'Dayne]]’s bizarre wasting illness. [[Xen'drik]] is a
tempting mistress, however, and even the organization’s most idealistic and stalwart members lose their way once they reach this gateway to the dark mysteries
of the savage continent. Some fledgling Wayfinders
are seduced by [[Stormreach]]’s wild urban life and never
make it into the jungles. Whether gambling over the
blood sport of the [[Ring|Red Ring]], being captivated by the silken
pleasures of the city’s lurid brothels, or becoming
addicted to one or more mind-warping narcotics,
many young explorers who arrived seeking their
fortunes instead wind up as drooling degenerates.
Their last coin spent on their chosen vice, they turn
to crime or simply end up prey of the street predators
of Stormreach’s urban jungle.
Other Wayfinders who arrive here plunge wildly into the enticing mysteries of [[Xen'drik]] with a dangerous zeal. Many never look back. They "go native" in Xen’drik’s mist-laden wilds, losing interest in the Foundation’s goals and seduced by the unfettered and
exciting existence of the jungle's inhabitants. Others fall
in love with the wisdom and traditions of the people
who refuse to bow to gold or politics. One marries a [[drow]] priestess, another becomes the sworn scorpion-brother of a chieftain, a third joins the work of the [[giant]] [[Scriveners of the Sky]] in their efforts to reclaim their lost heritage.
The wilderness of [[Xen'drik]] is vast as any ocean, and some simply drown in its feral depths. An expedition into Xen’drik is no jaunt into the [[Eldeen Reaches]] or the [[Shadow Marches]]; it is an expedition into the wild heart of savagery itself. The [[Traveler's Curse]] can cause a day trip to turn into a months-long expedition spent foraging for food and fending off beasts more terrifying than any [[Khorvaire]] holds, not to mention tribes of cannibals. Even the steadiest mind can snap out in the thick jungle. Witnessing the brutal rites of [[grimlock]]s, barbaric [[giant]]s, and bloodthirsty [[drow]]
tribes breaks explorers’ souls, and the secrets long buried in giant ruins can drive anyone to madness. More than a few Wayfinders go insane, some of whom were the very best and brightest of the Foundation before they lost their minds. Nevertheless, their expertise is still highly sought after by the desperate or those who wish insight into the same horrors that sundered their spirits.
Although madness grips some, the native lifestyle lures others away, and a few are drained of purpose by debauchery, most of [[Stormreach]]’s [[Wayfinders|Wayfinder Foundation]] are corrupted by something far simpler and more powerful: greed. Nothing pollutes a good heart faster than a touch of avarice. More than a few Wayfinders become
corrupted when they realize just how much untold wealth lies in the ruins of [[Xen'drik]]. Guides are quick to look for more lucrative means of using their skills. Why collect a meager fee to take a bunch of soft city slickers out to the ruins to find some secret treasure, when you could slit their throats while they sleep and claim the riches yourself?
This region is set aside for the
youngest [[dragon]]s of the [[Vast]]. It is essentially a training
ground, where newcomers can test their wits against each
other before claiming a dominion in the Vast proper. It’s
rare to encounter a dragon older than a young adult here;
most monsters are [[tier 3|creature tier]] or lower. However, if adventurers or other non[[dragon]]s take advantage of this—slaying too many of the dragons or stealing their rightful prey—it should attract the attention of one of the great wyrms who
maintains the Vast.
Nethatar is a [[rakshasa]] residing in the [[Workshop of Tyrial Dashar]] in [[Khyber's Gate]] deep below the city of [[Sharn]]. Along with her companion [[Zathara]], Nethatar plots on behalf of the [[Lords of Dust]], working with [[Silver Flame]] Archierophant [[Ythana Morr]], and sometimes posing as [[Helais ir’Lantar|Aundair Embassy (Sharn)]], [[Aundair]] ambassador to [[Sharn]].
After the [[Mourning]], King [[Boranel|Boranel ir'Wynarn]] welcomed
refugees from [[Cyre]], permitting them to set up encampments within [[Breland]]’s borders. Most settlements were
squalid and confused. Sickness ran rampant, worsening the people’s suffering. As the number of refugees
grew, it was clear that the camps would not suffice.
Boranel granted the Cyran ambassador, Prince [[Oargev ir'Wynarn]], permission to found a town for his people.
By king’s edict, the residents would be subject to Cyran
authority and live as they saw fit. The Cyrans appreciated the gesture and named the town New Cyre, but
most remain aware that they were granted territory
no one else wanted. Many of them resent the fact that
they’re trapped inside their former enemy’s lands, with
nowhere else to go.
Though resources are scarce, New Cyre
remains a symbol of hope for many refugees. It's also a
last stop for those determined to explore the [[Mournland]].
New Galifar is the older of the two colonized territories of [[Q'barra]] (the other being [[Hope]]), founded on the [[Adder River]] by [[Galifar]] patriots fleeing the [[Last War]] in 928 YK. The territory's ruler is King [[Sebastes ir'Kesslan]], grandson of Duke [[Ven ir'Kesslan]] of [[Cyre]] who initially petitioned for the rights to settle the land east of the [[Endworld Mountains]]. The borders are defined by the Newthrone Accords the meridians 29.1° E and 33° E.
The law in New Galifar is modeled on that of the kingdom of [[Galifar]] before the [[Last War]]. The people of New Galifar live in the capital [[Newthrone]], [[Adderport]], fortified towns surrounding those cities, or along the [[Adder River]].
The [[Inspired]] of [[Riedra]] have made alliances with [[Sebastes|Sebastes ir'Kesslan]]'s tiny kingdom. Little does the king realize, they are using [[Q'barra]] as a beachhead for expansion into [[Khorvaire]].
\define mblink() [[Code
<$button>
<$action-chooserandom $filter="[category[organization]]" $field="var" $unique="true" $number="5" $opt="hashes"/>Random Orgs
</$button>
<ul style="list-style-type:none;">
<$list filter="[{New Tiddler!!var}removesuffix[###]split[###]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
`[category[organization]!regexp<capitalized>]`
<<list-links-article "[search::literal[Code of]search[Galifar]!search<mblink>!is[system]sort[title]]">>
---
<!--<ul>
<$list filter="[tag[organization type]sort[title]]">
<li>{{!!article}}<$link/></li>
<$macrocall $name="table-body-org" item=<<currentTiddler>> firstitem=<<currentTiddler>>/>
</$list>
</ul>-->
\define tagged-location-type() [list[geography]tagging[]] [list[building]tagging[]] [list[settlement]tagging[]] [list[city division]tagging[]] [list[region]tagging[]] [list[planar realm]tagging[]] [tag[location type]tagging[]]
{{{ [category[location]!is[system]regexp<capitalized>] -[subfilter<tagged-location-type>] +[sort[title]] }}}
<ul>
<$list filter="[list[geography]] -[title[island]]">
<li><$link/></li>
<ul>
<$list filter="[tag<currentTiddler>!is[system]] -[tag[continent]tagging[]] +[sort[title]]">
<li><$link/></li>
</$list>
</ul>
</$list>
</ul>
<<list-links-article "[tag{!!title}sort[title]]">>
To do:
* local papers
** [[Vathirond Journal]]
** [[Vedykar Sentinel]]
** [[Write of Passage]]
* mainstream
** [[Breland Ledger]]
** [[Aundairian Scroll]]
* propaganda
** the [[Voice of Breland]]
** (and the other four nations)
The capital of [[New Galifar]] and the seat of King [[Sebastes|Sebastes ir'Kesslan]], Newthrone is the largest city and port in [[Q'barra]]. This fortified port stands where the [[Adder River]] meets [[Adder Bay]]. Newthrone is built on the model
of the great cities of the old kingdom of [[Galifar]]. No hostile force has
ever breached its walls.
The city offers all the amenities of central [[Khorvaire]], including [[house|dragonmarked house]] [[enclave]]s and businesses, in particular those of [[Jorasco]] and [[Ghallanda]]. Alongside
these enterprises, merchants and crafters from [[lizardfolk]] tribes, [[dragonborn]] clans, and the [[Lhazaar Principalities]] work and trade. Newthrone even has a
small [[Riedra]]n ward, which only the folk of that land
have access to.
This whistle is carved from transparent crystal, and it resembles a tiny [[carrion crawler]] curled up like a snail. The name "Night Caller" is etched on the whistle in Dwarvish runes.
If you blow the whistle in darkness or under the night sky, it allows you to cast the [[animate dead]] spell. The target can be affected through up to 10 feet of soft earth or similar material, and if it is, it takes 1 minute to claw its way to the surface to serve you. Once the whistle has animated an [[undead]] creature, it can't do so again until 7 days have passed.
Once every 24 hours, you can blow the whistle to reassert control over one or two creatures you animated with it.
Night hags are among the first children of [[Khyber]], and roamed [[Eberron]] freely during the [[Age of Demons]] when the [[overlord]]s ruled the Material Plane. After the overlords were defeated and bound, the night hags were scattered, each pursuing their own agenda.
Resembling a humanoid crone with [[troll]]-like features, blue-purple skin, and black hair, night hags are terrifying creatures to behold. Legend has it that all other [[hag]]s are the children or grandchildren of the [[immortal]] night hags.
Today, night hags are a rare sight, but can be found in the [[Demon Wastes]] (like the "ambassador" [[Kyrale]]) or [[Droaam]], or wandering the [[plane]]s. Amazingly, night hags are the only known creature that can freely enter and leave [[Dal Quor]], the Region of Dreams, and can haunt the dreams of mortals, harvesting emotions and memories. In order to pass into Dal Quor, a night hag must have a [[heartstone]] in her possession.
When the [[Akiak]] [[dwarf]] clans split from their [[Dorann|Dorann Holds]] forebears
hundreds of years ago, they initially settled in the passes
and valleys of the [[Paqaa|Paqaa Mountains]] mountain range. Leaving behind
the destructive clan violence of their forebears, they made
great leaps in metallurgy and [[alchemy|alchemist]]. The [[psionic|psionics]]-tending
[[duergar]] in particular developed advanced techniques for
working with the abundant metals and deep crystal found
in the mountains of their adopted home. Previous to the rise
of the [[Inspired]], the Akiak were in great demand as technicians in all [[Sarlona]]n nations, and some clans migrated even
farther south, approaching Adar borders. During this
period, the Akiak began building //dalnans//, small structures
of crystal and steel designed to harness the psychic energy
of a community. Many of these early monoliths can still
be found throughout Sarlona.
When the [[Inspired]] came to power, they hired many
of the [[Akiak]]—who functioned nearly like a guild in this
period—and the clan coffers swelled with [[Riedra]]n gold. The
Akiak and the Inspired worked together to build the first of
the massive [[hanbalani|hanbalani alta]], with the dwarves supplying the basic [[alchemical|alchemist]] and metallurgical building blocks. Although
the basic framework was derived from the Akiak design, the
Inspired also brought [[quori]] insights to the work, ensuring
that the monoliths could be used in ways the Akiak never
considered. Once the Inspired had appropriated the knowledge they needed to build hanbalani on their own, they turned
on the Akiak in a massive coordinated betrayal that has come
to be known as the Night of Razor Dreams. Planned assassinations, both physical and [[psionic|psionics]], wiped out nearly all the
Akiak leaders, engineers, and skilled technicians in the hanbalani construction facilities. Meanwhile, the [[shifter]] warriors
of the [[Taskaan Legion]]—already garrisoned near many of the
clan homes as "protection"—swarmed the Akiak villages and
towns in the [[Paqaa Mountains]], killing or enslaving all who
remained. Only a fraction of the once-great Akiak nation
survived this horrifying betrayal, fleeing to the northern
foothills of the Paqaa Mountains and the free lands of the
southern [[Tashana Tundra]]. The Night of Razor Dreams burns in
the heart of every Akiak, a terrible price paid for an unwise
and greedy collaboration with the [[Riedra]]n leadership.
[[Stormreach]] has a thriving black market, more expansive than most cities three times its size. The market is called the Night Tide, a name dating from the days
when smugglers came in with the night tide to sell their
wares. Nearly everyone in the city relies on its services
on a daily basis.
The constant influx of [[dragonshard]]s, ancient relics, and other treasures from the [[continent|Xen'drik]]’s interior feed the underground market well. The luxuries and amenities brought legally into the city and tariffed by the [[Harbor Lord|Jonas Wylkes]] cannot fully satisfy the residents’ demands. In the Night Tide, [[Brelish|Breland]] sausages and [[Aundair]]ian fine wines can be purchased alongside [[Siberys shard|dragonshard]]s the size of a gnome’s head and sacrificial daggers
used in blood rites over twenty thousand years ago.
When the PCs are looking to buy illegal goods discreetly or fence loot from their latest adventure in [[Xen'drik]], the Night Tide is the way to go. The following persons work the Tide and can be found by any interested buyers or sellers who know who to ask.
* [[Baudry Cartamon]]
* [[Tyrl Gol Garin]]
* [[Three-Fingered Thad]]
Part apothecary, part tavern, Nightshade caters to those who wish to explore the mysteries
of death. Some of its patrons are [[necromancers|necromancy]] or
devout followers of the [[Undying Court]], while others
are jaded youths or thrill-seeking aristocrats. In
addition to the traditional funerary dishes of [[Aerenal]], Nightshade serves beverages tainted with weak
[[poison]]s designed to bring the diner to the edge of
death. It is unusual for a client to actually die; the
servers are trained in resuscitation and keep antitoxin
on hand. But accidents do happen.
Nightwalkers are huge horned [[manifestation]]s of shadow that emerge from the pure darkness of [[Mabar]]. They are powerful conduits of negative energy that roam the [[Last Desert]], or feed on fragments in the [[Hinterlands]].
South of [[Atur]] and the [[Ashen Spires]] lies the Nightwood. The forest’s fringes serve
as a hunting preserve, but not far inside, the woods
become trackless, filled with dark and terrible creatures. Some foresters claim that burgeoning evil swells from an oozing wound at the wood’s center, a
deep chasm leading into the bowels of [[Khyber]]. Few
can substantiate these assertions, but the hideous
things emerging from the shadows suggest some
truth to the rumors.
Ninebay is an island in the [[Lhazaar Principalities]].
''Leaders:'' The [[Dragonhawk]], [[Jorian Thiel]]<br/>
''Notable Members:'' [[Blackwind Beleth]], [[Tyrnan Thiel]]<br/>
''Base of Operations:'' [[Whitewash]]
[[Aundair]] has long been the seat of the [[Arcane Congress]] and the focal point for mystical research within
[[Galifar]]. Aundair is the smallest of the [[Five Nations]]
and lacks the industrial resources of [[Karrnath]] or
[[Breland]]. During the [[Last War]], the nation relied on
[[arcane magic]] to offset these limitations.
As the war continued, King [[Aarott|Aarott ir'Wynarn]] charged [[Arcanix]] to produce more efficient weapons of war. The
mages assigned to the //Seven Stones// project delved into
the techniques of the [[daelkyr]], the magic of the [[Age of Demons]], and [[eldritch machine]]s in the quest to end the
war. Their achievements were terrifying. Even [[Aundair]]ians grew fearful of [[Arcanix]], and young [[Aurala|Aurala ir'Wynarn]] was
horrified when she learned that her own [[wizard]]s were
actively seeking to produce even deadlier effects. When
[[Breland]] demanded the execution of the Seven Stones
mages as a condition for alliance, Aurala agreed, creating a rift between throne and tower that remains to this day. Brelish envoys witnessed the executions of the
seven wizards. That should have been the end of it.
At the end of the [[Last War]], [[Aundair]] released a
number of its soldiers from service. Most dispersed to
their families, but one elite infantry unit—the Queen’s
Ninth Wands—traveled to [[Stormreach]]. Over the course
of the past two years, they have fought off gangs and
criminals that threatened the people of [[Whitewash]], dealt
with drunken adventurers, and clashed with the [[Knights of Thrane]] and the [[Swords of Karrn]]. To all appearances,
the Ninth Wands are [[Aundair]]ian patriots with no interest in peace, soldiers who traveled to [[Stormreach]] so they
could continue fighting the war.
The truth is more complicated. The Ninth Wands
are still serving [[Aundair]]—or, more specifically, Royal
Minister of Magic [[Adal ir'Wynarn]]. See the [[Dragonhawk]] for more information.
The Ninth Wands are an elite military unit of [[wandslinger]]s. The members know each other well and have developed group tactics. The group’s greatest firepower is in the
hands of its commander, [[Jorian Thiel]].
Nolan Toranak ([[dwarf]] councilor for the [[Cogs]]) represents the industrial powers behind
[[Ashblack]] and [[Blackbones]]. The nobles and merchant princes of [[Skyway]] and the [[Upper City|upper ward]] own many of the foundries and forges in the [[Cogs]], and Nolan usually aligns himself with one of the more eloquent councilors. The one issue that he does feel strongly about is the status of the [[warforged]]. His children were killed by warforged during the [[Last War]], and he has never forgiven House [[Cannith]] or the warforged as a whole. If Nolan had his way, all warforged would be melted down or banished. As it is, he tries to find ways to bypass the stipulations of the [[Treaty of Thronehold]], so [[warforged]] can be treated as property. There are a few groups of people in [[Sharn]] who share Nolan's fear and hatred of the warforged, and he often channels funds to these organizations. He might hire adventurers to take action against House [[Cannith]] or the prominent warforged of [[Blackbones]]; or if there is a warforged among the party, Nolan could use his power to try to discredit the adventurers and drive them from the city.
There are twelve holds in the [[Mror Holds]], including House
[[Kundarak]]—but there were thirteen exiles in the stories. Noldrun
was clever and curious, an explorer who was always finding
new things. Noldrun was never a large [[dwarf]] [[clan|Mror clan]], but its greatest
mine—Korran's Maw—was a rich source for a seemingly
impossible array of minerals, including Eberron and Khyber
[[dragonshard]]s. This made it a strong ally of House [[Kundarak]]
and [[Zilargo]], and brought tremendous wealth to the clan. ''Noldrunthrone'' was the capital of the [[clan|Mror clan]]’s holdings—a great city to rival [[Krona Peak]].
And then, approximately four hundred years ago, Noldrunhold
fell silent. Messengers sent into the hold never returned. Noldrun
had previously fought many fierce battles with the [[Jhorash'tar]],
and blame immediately fell to the [[orc]]s; but none could explain
how the Jhorash'tar could have achieved such a massacre.
The fate of Noldrunhold remains a mystery to this day. Most
contemporary records of what explorers found were passed
down orally and are unreliable. In some accounts, corpses were
skinned; in others, there were no corpses, as if the Noldrun
had all simply vanished. Some suggest that the Noldrun all
gathered together and descended into Korran's Maw; others
say the [[Jhorash'tar]] killed them and threw the bodies into the
Maw. Neighboring clans [[Soldorak]] and [[Droranath]] both sought
to expand into the abandoned territory and claim the empty
spires, but all attempts were abandoned—again, the stories of
why are unreliable. Some say the new settlers killed each other
in an irrational frenzy, others say they simply disappeared. The
Droranath blame the Jhorash'tar orcs, and mysteriously, there
are tribes of Jhorash'tar still living on old Noldrun lands, though
even they shun the empty cities and Korran's Maw.
Today, many assume that the Noldrun must have been the
first victims of the [[War Below|Mror History]]—that they dug too deep and
were destroyed by [[Dyrrn]]. Some assume the [[derro]] found in [[Sol Udar|Realm Below]] are the remnants of the Noldrun dwarves. But that's all
just conjecture. Perhaps it was the work of a fiendish [[overlord]]
imprisoned in the region. Perhaps it was an early impact
of whatever caused the [[Mourning]], or some sort of [[Cannith]]
experiment. Or perhaps it was the [[Jhorash'tar]] after all, and the
[[orc]]s possess some hidden power they have yet to reveal.
The northern steppes of [[Aerenal]] are the domain of
the [[Tairnadal]] (primarily the [[Silaes Tairn]]), the warrior elves who seized control of
[[Valenar]]. Although much of their population now resides
in Valenar, many Tairnadal noncombatants—children,
artisans, and the [[druid]]s who raise their remarkable
[[beasts|Valenar beast]]—remain in Aerenal.
The North Circle is the southernmost latitude in the Northern Hemisphere at which the sun can remain continuously above the horizon for 24 hours during the [[Lharvion|Khorvaire calendar]] equinox (or below the horizon during the [[Zarantyr|Khorvaire calendar]] equinox).
''District Type: ''Marketplace<br/>
''Buildings:'' Open-air market, temple ([[Sovereign Host]]), shrine ([[Silver Flame]]), average lodging (9), average food (45), exotic trades (15), upscale trades (50),
average trades (140), poor trades (40), upscale services
(20), average services (60), poor services (20)<br/>
''First Impression:'' North Market is one of the oldest
business districts in Sharn. The cobblestone streets
have been repaved time and again, and the walls of
the towers are worn smooth with age. People always
fill the streets, but there is less noise and bustle than
one might expect from such a crowd; the locals are
surprisingly patient and polite.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Stoneyard]] (northwest); [[Wroann's Gate]] (bridge, southeast); [[Terminus]] (bridge, south); [[Boldrei's Hearth]] (bridge, southwest); [[Holdfast]] (above)
The open market of this district is one of the oldest
in [[Sharn]]. In addition to local residents, crafters from
the regions around Sharn come to sell their wares at
the open market, and [[Far|Khorvaire calendar]] and [[Sar|Khorvaire calendar]] are excellent times
to purchase textiles and other crafted goods. A marketplace permit costs 3 sp. Most of the businesses and
merchants in the district follow solid, simple trades:
blacksmiths, brewers, carpenters, and tailors who
produce sturdy clothes for the lower classes. However,
Lower Northedge is home to a significant portion of
Sharn's shifter population, and there are a few exotic
trades and restaurants catering to the shifting folk,
including an apothecary who specializes in the proper
care of fangs and claws.
In addition to the private businesses, there are a
number of workhouses in North Market, primarily
textile factories. The district also contains a small
temple to the [[Sovereign Host]], which primarily
honors [[Kol Korran]] and [[Onatar]].
!! Noteworthy Locations
* The [[Bear's Rest]]. A modest inn maintained by a [[beasthide]] [[shifter]] named Leara, who usually gives a discount to traveling shifters. The decor features various exotic hides.
* [[Fathen's Shrine|Shrine of Fathen the Martyr]]. This marker in North Market commemorates a miracle that exposed a network of [[wererat|lycanthrope]]s in Sharn, along with the priest of the [[Silver Flame]] who died while fighting them. Pilgrims devoted to the Silver Flame often visit the shrine.
* The [[Horse and Hearth]]. Though not as colorful as the [[Bear's Rest]], this large inn is maintained by House [[Ghallanda]] and offers rooms of modest and comfortable quality.
* The [[Rat's Nest]]. A modest tavern catering to the [[shifter]]s of Lower Northedge, the Rat's Nest is a haven for gossip and serves food and drink in the [[Eldeen|Eldeen Reaches]] style.
''District Type:'' Shops<br/>
''Buildings:'' Temple ([[Aureon]]), shrine ([[Kol Korran]]),
average lodging (15), average food (40), exotic trades
(15), upscale trades (50), average trades (140), poor
trades (40), upscale services (10), average services
(40), poor services (8)<br/>
''First Impression:'' Quirky boutiques and small
bookstores stand out among a host of more
mundane shops.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Myshan Gardens]] (southwest); [[Boldrei's Hearth]] (southeast); [[Stoneyard]] (bridge, northeast); [[Ashblack]] (below); [[Tradefair]] (above)
North Towers is one of [[Lower Central]]'s two mercantile districts. It has a higher concentration of
bookstores than any other district in [[Sharn]] except
the [[University District]].
When this gold ring etched with two opposing arrows is worn, the wearer fully believes that north is to the south. Nothing can be said or done to convince the wearer otherwise. Once donned, the user becomes very possessive of the ring and will not willingly take it off.
The Northedge residential area is the quietest quarter
of [[Sharn]]. At first glance there's little to attract adventurous sorts, unless someone is interested in purchasing
top-quality real estate. At the same time, you never
know when this charming and innocuous area could be
the site of a nefarious cult or a devilish plot.
* [[Upper Northedge]]
* [[Middle Northedge]]
* [[Lower Northedge]]
Northedge is connected by bridges to [[Central Plateau]] and [[Tavick's Landing]].
!! Things to Do in Northedge
Northedge is the most peaceful quarter in Sharn. It does
have a few taverns and temples, but if you're looking for
excitement or a wide selection of goods and services,
you'll want to go elsewhere. Even so, Northedge boasts
some notable special attractions:
* ''Settle down.'' If you're looking for a place to live in Sharn, Lower Northedge residences are of reasonable quality and price and offer more security than [[Lower Dura]].
* ''Die in style.'' The elves of Shae Lias are experts in funerary customs and embalming. In addition, the high priest of the [[Gates of Passage]] is capable of raising the dead.
* ''Find a patron.'' Many eccentric nobles make their homes in Upper Northedge. A patron of the arts could take an interest in the career of a bard or an entertainer. A collector might keep capable adventurers on retainer with the understanding that they'll deliver any [[Dhakaan]]i artifacts they come across in their travels. You never know what benefits a patron will provide; at the very least, having a patron can provide you with an introduction to high society.
This septum ring gives its wearer the ability to smell magical auras, and track the scent left behind by [[magic item]]s or spellcasters.
When worn, this brass nose ring makes the user's irises appear streaked with green. Three times per day, the wearer can exhale a cloud of poisonous gas that fills a 30-foot diameter sphere.
The Notaries Guild of House [[Sivis]] oversees services tied to the written word. In addition to producing legal documents and authenticating letters of credit for House [[Kundarak]], the guild licenses cartographers, bookbinders, scribes, translators, accountants, and others in related professions. A number of smaller branches within the Notaries
Guild handle specialized work: ''Aureon’s Press'' is
the primary source of arcane ritual scrolls in the
[[Five Nations]], and the ''Hidden Word'' is a division
that works on cryptography and code-breaking
techniques.
A variation on the common [[smokestick]], this
object pours forth extremely foul-smelling smoke when it
is ignited.
The Nulakesh Empire dominated central [[Sarlona]] for centuries before the [[Sundering]]. Nulakesh lacked the magical or philosophical sophistication of many of the smaller kingdoms, but it had a large, dedicated population and extensive natural resources, along with a superbly disciplined army. Nulakesh went through many periods of expansion
and decline over the centuries, and it was fading when the [[quori]] came to [[Sarlona]]. Dream manipulation helped inspire the Nulakesh war leaders to reclaim their ancestral glory and, later, to convert the disgruntled populace
to the [[Path of Inspiration]]. The strong martial tradition
continues to the present day, and much of the [[Harmonious Shield]] is recruited from this province.
The Nulakeshi despise nonhumans; as a result,
[[shifter]]s and [[ogre]]s are rarely deployed in this province.
The Nulakeshi are deeply devoted to the [[Inspired]], and
the daily exercises of the peasants often have a martial
theme. Many people who would be commoners in other
provinces are trained as warriors.
One of the largest [[layer]]s of [[Shavarath]], Nullius Terram is a battlefield the
size of a small nation. It's divided by several deep, heavily
fortified trenches, which are separated by blasted regions of
scorched earth, blast craters, and bones. Nullius Terram's
multiple trench lines twist and curve throughout the region,
and in the lands between the trenches lie strategic outposts.
The region is marked by constant barrages and terrible
tools of mass destruction—widescale [[cloudkill]], curses that
transform conscripts into killers, and worse.
[[Tyranny]], [[Cruelty]], and [[Justice]] are the three active [[legion|legion of Shavarath]]s in this region. Justice has a difficult position in Nullius Terram, but
has been slowly gaining strength. Periodically, the commanders
send troops to clash in the fields between the lines, either in
simple skirmishes or full offensives. Ultimately, the theme of this layer is that of slow, agonizing stalemate, and the suffering war can inflict on both the land and the soldiers.
Nullius Terram is noteworthy for its flowing time; for every
10 minutes that pass in this layer, only 1 minute passes
in [[Eberron]]. So it's a long, slow struggle—you could spend
months here and only miss a week in Eberron.
''Color:'' Yellow-gold<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Hospitality|Mark of Hospitality]]<br/>
''Associated Plane:'' [[Daanvi]]
The golden disk of Nymm is most typically associated with royalty. Those born when Nymm is ascendant are said to be sociable and charismatic, gifted orators and con artists. The [[halfling]]s of House [[Ghallanda]] frequently offer discounted rates at their hostelries on nights when "King Nymm" is in its ascendant phase.
Nymphs are [[fey]] of [[Thelanis]] representing nature’s imagined embodiment of physical beauty, and they guard the sacred places of the wild. They are so unbearably lovely that even a glimpse of one can blind an onlooker. A nymph’s demeanor is wild and mercurial.
Nymphs are typically bound to a specific place or type of geography, and are often divided into subgroups depending on their chosen habitat. ''Meliae'' cling to groves of trees, and often cavort with [[dryad]]s. ''Naiads'' are bound to rivers and lakes, while ''nereids'' are bound to seas. ''Oreads'' are mountain nymphs.
''District Type:'' Wealthy residential<br/>
''Buildings:'' Upscale residences (244), average
residences (36)<br/>
''First Impression:'' The smooth lines of [[elven|elf]] architecture can be seen throughout this district, and
most of the towers are formed of polished densewood. Manors and palatial estates line the wide
avenues, and private gardens can be seen stretching
out on walled balconies.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Shae Lias]] (northwest); [[Crystal Bridge]] (southeast); [[Platinum Heights]] (bridge, southwest); [[Korranath]] (Korran-Thiven) (bridge, south); [[Oakbridge]] (below)
Like [[Crystal Bridge]], Oak Towers is a peaceful
neighborhood that is home to many of [[Sharn]]'s
wealthiest citizens. The elven influence of [[Shae Lias]]
is clearly visible in the architecture of the district,
and much of the population is made up of [[elves|elf]] and
[[half-elves|half-elf]]. Between the [[Sharn City Watch|Sharn Watch]], private
guards, and the magical wards employed by many
of the households, Oak Towers remains a quiet and
peaceful district.
!! Noteworthy Locations
* [[Stormwind Keep]]. The private estate of [[Dantian d'Lyrandar]].
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Towers and houses of polished
[[densewood]] fill this district. While simple in design,
the buildings are comfortable and well designed,
and the district has been carefully maintained. The
streets are quiet and the people are friendly, and
after a few minutes, it feels like home.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[High Hope]] (northwest); [[Holdfast]] (southeast); [[Tradefair]] (bridge, southwest); [[Sovereign Towers]] (bridge, south); [[Stoneyard]] (below); [[Oak Towers]] (above)
While the majority of the townhouses and apartments
in Oakbridge fall into the “average” category, they
are of the highest quality within that category. The
district is not ostentatious and an Oakbridge address
conveys no status on its owner, but the buildings are
large, well constructed, and very safe, and the inhabitants are friendly and always keep an eye out for one
another. If someone purchases a home in Oakbridge,
within a week he has dozens of new friends.
!! Noteworthy Locations
* [[Bright Wind]]. A comfortable townhouse, home to the Milana family, which could serve as a possible launching point for adventures.
Known as one of the finest restaurants in the city, the Oaks rests on one of the vast
balconies of the Nowen Tower. Patrons dine in an
elaborate, two-story open-air pavilion, surrounded
by the living trees from which the restaurant takes
its name. The Oaks specializes in exotic [[Aerenal]]
cuisine, but also serves a variety of traditional
[[Brelish|Breland]] dishes, including pepper cider and spiced
daggertrout. The owner, [[Maza Thadian]], has served as head chef for over
300 years, and is respected throughout the district
for her wisdom and common sense. Six years ago,
Maza assumed the position of [[Councilor|Sharn Council]] for [[Upper Northedge]], and today she leaves most of the restaurant work to her sons, Meryn and Malys; however, she can still be coaxed to perform her culinary
miracles for special patrons.
Great Druid Oalian, ruler of the [[Eldeen Reaches]], is like no other creature in [[Eberron]]. Some claim he was once a tree, [[awaken]]ed by powerful magic wielded by the original [[Gatekeepers]]. Others say he is the first tree, as old as the world. If Oalian knows the truth of his origin, he does not share it.
At the center of [[Greenheart]] stands the Great Druid's grove. Trees and [[treant]]s form a ring around a pool of mirror-still water where the Great Druid channels the primal power that enriches the land.
Prince Oargev ir'Wynarn, son of Queen [[Dannel|Dannel ir'Wynarn]], is the last scion of [[Cyre]]’s ruling family. He was serving as an ambassador to [[Breland]]
when the mysterious [[Mourning]] befell his nation and has
since become the unofficial leader of the Cyran refugees
scattered throughout the other domains. He hopes to one
day gather all of Cyre’s homeless children to [[New Cyre]], his refuge
in Breland. His other desire revolves around discovering
the truth behind the destruction of his kin and country,
and exacting revenge on the guilty parties. Until then, he
graciously accepts the hospitality of Breland (even if the
Brelish have given him unwanted land in the middle of
nowhere) and works to rebuild the confidence and honor
of his subjects. He serves as mayor of New Cyre while also
playing the role of a king in exile.
Prince Oargev regularly seeks out news and information
from those foolish or brave enough to venture into the
[[Mournland]]. He has been known to fund expeditions into the blasted, wasted remains of his once-proud nation,
hoping to discover some hint or clue that points to the
cause of [[Cyre]]’s demise. In the meantime, Oargev works to
improve the plight of his people and dreams of rebuilding Cyre—either in a restored Mournland or someplace
else entirely.
When you nock an arrow on this longbow and choose a target you can see, you can speak the bow's command phrase. The target of your attack becomes your sworn enemy until it dies or until dawn seven days later. You can have only one such sworn enemy at a time. When your sworn enemy dies, you can choose a new one after the next dawn.
You have a large advantage when attacking your target, and deal extra damage on a hit. You do not suffer disadvantage for the target hiding behind cover.
While your sworn enemy lives, you have disadvantage on attack rolls with all other weapons.
These earrings can only be removed by the person who put them in. The wearer must obey and follow the orders of anyone who speaks the command word.
Across the street from the [[House Phiarlan enclave|Phiarlan Enclave (Stormreach)]],
this small magic shop benefits from its association with
the [[house|Phiarlan]]. The shop specializes in theatrical illusions,
signs, scenes, and sounds and mostly caters to the
needs of the wards’ performers. The shop stocks a few
wondrous items and wands that fit this theme. Panlamin Felwrought, the [[elf]] [[wizard]] proprietor, is particularly noted for her prowess with [[illusion]]s and is much sought after by theater groups.
The ruins known as the Obsidian City are located in the [[Skyfall Peninsula]] of [[Xen'drik]], about 700 miles up the [[Koronoo River]] from [[Stormreach]]. Once occupied by the titans of the [[Sulat League]], the Obsidian City is now inhabited by members of the [[Sulatar]] [[drow]] tribe.
In truth, the [[Sulat League]] once maintained many such "obsidian cities", but this one (once named "Gundrakul") is the only one left standing.
A vast expanse of psychic space surrounds [[il-Lashtavar]], home to
millions of mortal dreams. The islands in the Ocean of Dreams
range from the complex dreamscapes of sentient creatures,
humans and dragons alike, to the simple dream of a dog that's
imagining chasing a ball. From the outside, these islands appear
as glittering bubbles, each with an image of its dreamer within
it. They're loosely arranged based on the physical location of
the dreamer, so there's a stretch of the ocean that contains
dreamers near [[Breland]], another for [[Thrane]], and so on—including regions for any dreamers currently on other planes.
''District Type:'' Wealthy residential<br/>
''Buildings:'' Upscale residences (250), average
residences (30)<br/>
''First Impression:'' The towers of Ocean View are
among the highest in the city, allowing a beautiful
view of the water to the south. The central spires are
surrounded by luxurious mansions and well-kept
gardens. Private guards stand at the gates of most of
the manors, and strangers are watched carefully.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Sunrise]] (west); [[Dalan's Refuge]] (northeast); [[Platinate]] (bridge, north); [[Little Barrington]] (below)
The manors of Ocean View are the most luxurious on
the east side of [[Sharn]], and they are extremely exclusive. Gold alone cannot purchase a mansion in Ocean View; by the laws of the ward, at least 30 current
residents must sign a petition allowing the newcomer
to purchase property. In addition to the beautiful
homes, there are a number of pleasant parks and public gardens. The most notable of these is ''Lavalla Park'', which provides the best view of the ocean.
!! Noteworthy Locations
* The [[Gray House]]. One of the oldest manors in the district, the Gray House has no windows.
Ochre jellies are yellowish blobs that can slide under doors and through narrow cracks in pursuit of creatures to devour. They have enough bestial cunning to avoid large groups of enemies.
An ochre jelly follows at a safe distance as it pursues its meal. Its digestive enzymes dissolve flesh quickly but have no effect on other substances such as bone, wood, and metal.
The Odakyr Rites are a set of magical rituals that produce [[Karrnathi undead]]. The Rites work only when performed on the remains of a soldier slain in battle, and only in [[manifest zone]]s tied to the [[plane]] of [[Mabar]]. They were developed during the [[Last War]] after years of research at [[Fort Bones]] by the [[necromancer|necromancy]] Gyrnar Shult and the [[Vol|Blood of Vol]] high priest [[Malevanor]], when he was still a living person.
The [[Karrnathi undead]] these rituals create are tremendously efficient
solders, imbued with a malign intelligence and purpose. A normal [[zombie]] requires some sort of necromancer to sustain and command it, but the sentient Karrnathi undead can integrate with any unit. One of the few limitations of the undead derives
from their utter lack of mercy or compassion. Left on
its own, a Karrnathi skeleton will slaughter all opposing
forces—soldiers, civilians, even children. A commander
must exercise close control if he wants his undead to
leave anyone alive.
Gyrnar Shult believed that the [[Karrnathi undead]]
were animated by the martial spirit of Karrnath
itself. This is why they can be produced only from
the corpses of elite Karrnathi soldiers: an enemy
corpse lacks the connection to Karrnath, while a
fallen farmer has no bond to war. However, the [[Kind]]
fears that the undead aren't animated by the soul of
Karrnath, but rather by an aspect of [[Mabar]] itself—that
the combat styles of the undead might be those of
the [[dark fiend|yugoloth]]s of Mabar. Over the years, he has felt
a certain malevolence in his skeletal creations that he
can't explain, not to mention their love of slaughter.
He has also considered the possibility that they are
touched by the spirits of the [[Qabalrin]] [[elves|elf]] of ancient [[Xen'drik]]. The Kind hasn't found any proof for these
theories, but they haunt his dreams.
Ogres are as lazy of mind as they are strong of body. They live by raiding, scavenging, and killing for food and pleasure. The average adult specimen stands between 8 and 10 feet tall and weighs close to a thousand pounds.
!! Ogres in Droaam
Physically powerful but somewhat dimwitted, ogres pursue simple pleasures: food, drink,
and crushing small creatures that annoy them. The warlords of [[Droaam]] charm them with [[harpy]] song and fill them with [[grist]], then set
them to work lifting heavy things and smashing things that need
to be smashed. They're often recruited in local “brute squads”
and serve as basic shock troopers in the armies of Droaam.
Ogres fall well below human standards on intelligence and wisdom; not only do they struggle with rational thought, they're impulsive and relatively weak-willed, and in many ways can be treated as mighty children. While physically powerful,
they're easily swayed by strong personalities and compelling
stories. They are very emotional—though they can shift between
emotions rapidly—and love stories and songs, even if stories
need to be kept simple. It's not uncommon for an ogre to develop
a deep attachment to its favorite [[harpy]] or [[changeling]] storyteller.
The skullcrusher ogres of [[Maenya's Fist]] ([[creature tier]] ''3'') are a different
subspecies from common ogres. They are devoted to their
duties and don't socialize with other creatures. They are shrewd and proficient, and
typically wear plate armor and wield sophisticated weapons. Skullcrushers are well trained and act with military discipline.
!! Ogres of Sarlona
[[Sarlona]] might be known as the cradle of [[human]]ity, but
it is also the birthplace of the ogre race. The ogres of
[[Khorvaire]] are the descendants of settlers who crossed the
[[Barren Sea]] long ago, though this knowledge lives on only
in the tales of [[oni]]. Once, the ogres of [[Borunan]]
were a proud warrior culture, and their [[oni]] were
mighty creatures spoken of in song and story. Had the
ogres ever sought to conquer humanity, the history of
Sarlona might have been quite different. But the ogres
considered humans unworthy foes. This overconfidence
was their undoing, and in the last days of the [[Sundering]],
the [[Inspired]] unified the human kingdoms against this
army of monsters.
Today the ogres are a subdued populace. Most are
not allowed to even touch weapons; they are miners and
laborers, and their immense strength is used to haul
stone and metal for the [[hanbalani alta]]s. Not the brightest of
creatures, most ogres have accepted the philosophy of the
Inspired, and they live lives of happy slavery, dreaming
of attaining humanity in the next life.
The majority of the ogres on Sarlona
are concentrated in the province of [[Borunan]] in Riedra.
However, ogres can be found throughout Riedra, serving
as laborers and occasionally as soldiers. A few ogres can
be found in [[Syrkarn]], but they are rarely seen in [[Adar]] or
the [[Tashana Tundra]].
Beyond [[Riedra]], most of the ogres of Sarlona are
simple folk, more interested in solitude and survival than
in war. However, there is a movement within Riedra that
seeks to rekindle the martial spirit of old. This force is
known as the [[Horned Shadow]].
[[Morgrave University]] is honored to have Ohnal Caldyn as an adjunct professor this term. While some have called Professor Caldyn’s work on the [[Draconic Prophecy]] “the ravings of a lunatic,” Morgrave stands by Caldyn’s scholarship and believes that history will vindicate his remarkable work. When speaking to the professor, please avoid making
any sudden movements or loud noises.
[[Riedra]] built its empire on the foundation of a dozen shattered nations following a period known as the [[Sundering]]. Scholars consider the loss of these nations to be a tragedy... except for Ohr Kaluun. The lords of this ancient kingdom were driven by deep paranoia and an all-consuming thirst for power. The sages of Ohr Kaluun studied the darkest paths of magic and bargained with [[fiend]]s and other foul creatures. They warped their bodies through mystical rituals and pacts, creating the first [[skulk]]s and [[tiefling]] bloodlines, and perhaps even the first [[changeling]]s. Ohr Kaluun was ultimately consumed by the feuds of its paranoid mage-lords and the crusading legions of its neighbors, fueled by the dream manipulation of the [[quori]]. Today, it is a shunned region, haunted and cursed. Dark secrets and great treasures remain in the vast war labyrinths of Ohr Kaluun, but [[fiend]]s, [[ward|abjuration]]s, and far deadlier threats linger in this fallen kingdom.
The [[Inspired]] wield considerable influence on Ohr Kel, the largest island of the chain, while many of the smaller islands are uncivilized by the standards of the
Inspired. These places are home to smugglers, monsters, and the dissident group known as the [[Heirs of Ohr Kaluun]]. Adventurers seeking to enter Riedra by stealth
might be able to find assistance at a smuggler's port. However, the Riedran military is always hunting for these criminals, and safe havens frequently move about.
!! War Mazes
The people of Ohr Kaluun were obsessed with protecting their dark secrets from the world. Engaged in endless struggles within and outside Ohr Kaluun, the
Kaluunite [[wizard]]s devoted vast material and magical
resources to their labyrinthine fortresses. Although the
mazes couldn't save the Kaluunites from the cunning of
the [[Inspired]], many of these wondrous edifices remain,
testaments to the power and skill of their builders. Ancient
treasures and hideous dangers, all created by human
magicians, still wait within the remaining war mazes.
For someone who knows its keys, a war maze is a
sanctuary, but to others, all war mazes are deathtraps.
Walls and doors are reinforced with magical hardening, and most
war mazes are shielded against [[scrying]] and teleportation.
Ancient restless spirits and constructs roam many war
mazes. Today, [[skulk]]s, smugglers, and other rebels have
taken shelter in these crumbling wonders.
This sticky black unguent is thick and heavy in the container, but it flows quickly when poured. It is extremely slippery, a magically-enhanced property that persists for up to eight hours. There is enough oil to cover a 10-foot-diameter circle on the ground, or cover a human-sized creature.
A creature that makes physical contact with this poison and can't resist its effects falls unconscious for up to 24 hours. The creature wakes up if it takes damage.
Grim specters of death, oinoloths bring pestilence wherever they go. They have a hunched humanoid body with a head resembling that of a ram. Their skin is covered with patches of wool surrounding foaming boils and blisters.
''Color:'' Pale orange<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Sentinel|Mark of Sentinel]]<br/>
''Associated Plane:'' [[Lamannia]]
To the naked eye, the orange disk of Olarune seems to have a slight fringe that vaguely resembles the rim of a shield. The [[druid]]s say that those born when Olarune is ascendant have a strong bond to community and to order, and a natural desire to protect others; superstition holds that more paladins are born in this month than any other. Scattered [[lycanthrope]]s, especially weretigers, revere Olarune as a sort of demigoddess-protector.
Near the wall shared with [[Dannel's Pride]], the Old
Catacombs were once used as a sanctuary and prison by servants of the [[Silver Flame]]. Long before [[human]]s came to [[Stormreach]], this fallen tower was built by [[giant]]s.
Parts of it project above the street, but most of the old
building is buried. Five years ago, the catacombs were
overrun by [[undead]]. Many of them were destroyed, but
enough remained that the [[lower levels|Undercity]] were sealed with
wards and stone to contain the evil, and the upper levels
were abandoned. Secrets remain in the catacombs for
those prepared to brave the darkness.
[[Yannick Drumdoom]] can often be found here, endlessly reciting the names of the dead.
[[Sharn]] was built on the foundations of an older city,
which was itself built atop [[goblin|goblinoid]] ruins. This old city was
destroyed by dark magic, courtesy of the elemental powers of the infamous [[Halas Tarkanan]] and his consort, the
[[Lady of the Plague]]. It is said that vile powers still linger
in these ruins, and for this reason King [[Galifar I|Galifar ir'Wynarn]] had all
the passages to this undercity sealed with gates of metal
and magic. These portals remain sealed today, and it's
illegal to tamper with them. But it's generally assumed
that many treasures are hidden in the ruins of Old
Sharn, along with untold secrets of the past.
No one knows exactly what lurks in Old Sharn. The
ruins could contain ghosts or other [[undead]], the vengeful
spirits of the [[aberrant-marked|aberrant dragonmark]] people who took refuge
in the fallen city. In olden times, the Lady of the Plague
had power over vermin and disease, and a fanciful
tale says that even today the undercity is inhabited by
swarms of sentient rats and beetles.
The jungles of [[Xen'drik]] are awash with sound. An orchestra of birds,
the chatter of chimps, and the drone of a million insects
blend into a cacophonous roar. Suddenly a shrieking
howl tears through the din, and the jungle sound goes
dead. Silence reigns for a time in deference to Old
Silverclaws, lord of the burning jungle. A tremendous
[[girallon]], by some reports towering up to 20 feet in
height, Silverclaws has prowled the jungles for as long
as the oldest [[Stormreach]] residents can remember.
His shining silver-white fur accents his black face and
enormous hands. The beast’s otherwise impressive coat
is marred with thousands of scars, a legacy of the countless battles fought over his years as the king of Xen’drik’s wilds. He lost an arm five years ago to a [[fire giant]]’s axe,
but he makes up for the maiming injury with an even
greater level of cantankerous ferocity. His approach
can be heard a mile off, the sound of splintering trees
and his rumbling snarl heralding his coming.
Varkaar is a [[Bloodbound]] of the [[Red Ring]], the Splintered Shield’s mightiest gladiator, a longtime fighter with plenty of kills on his record. He lost his right eye a few weeks back during a hail of death match, during which spectators can shoot crossbows into the ring as the gladiators fight, and the [[manticore]] now loathes no match more than this type of bout.
''Population:'' A mix of races, mostly of [[Aundair]]ian and [[Thrane]] descent.<br/>
''Character:'' Orderly but sly.<br/>
''Businesses:'' Food markets, [[magewright]]s, small-scale agriculture.<br/>
''Key Personalities:'' [[Jorian Thiel]], [[Surrinek|Surrinek Riverboats]], and [[Valen Vanatar]].<br/>
''Overseer:'' Lady [[Kirris Sel Shadra]].
//You’d heard that Oldgate was one of the oldest and most significant parts of the city, but passing through it doesn’t give you that impression. Oldgate seems too ordered and polite, too clean and safe. Contrary to its name, this area feels newer than the rest of the city, and the people seem as if they’re in a city of their own, far from the chaos in the neighboring districts.//
Compared to the rest of [[Stormreach]], Oldgate is in good
order, with rubble cleaned up and many buildings
sporting new coats of paint. In the [[Age of Giants]], the
district housed the city’s main inland gate, the ruins of
which loom over the westernmost part of the district.
In recent decades, Oldgate has become the home
of expatriate communities from [[Aundair]] and [[Thrane]]
and is considered a model district by the [[Storm Lords]].
However, under its respectable face, the district contains intrigues between its [[militia]]s—the [[Knights of Thrane]] and the [[Ninth Wands]]—and other power groups
in the city.
!! Wards and Noteworthy Locations
* [[Embers]]
** the [[Candlelight]]
* [[Whitewash]]
** [[Surrinek Riverboats]]
!! Adventure Hooks
* Something is hiding in the [[Koronoo River]] and has been attacking [[Surrinek|Surrinek Riverboats]]’s captains and their passengers. River travel has come to a standstill when the sun is not in the sky, inconveniencing passengers and cutting into Surrinek’s profits. The captains have promised free river travel and some gold to anyone who can get to the bottom of the mystery, which the [[Stormreach Guard]] is brushing off as bad luck and superstition.
* A saboteur has corrupted the magic of the [[Whitewash]] well, and it now spews out stinking filth instead of cleansing water. Although most of [[Stormreach]] regards this event as comeuppance for the [[Aundair]]ians’ arrogance, the ward’s residents are not amused and will pay good coin to have the culprit found. The [[Ninth Wands]] have had no luck so far.
* Back in [[Thrane]], one of the [[cardinals|Council of Cardinals]] in [[Flamekeep]] is convinced that the [[heresies|Silver Flame Heresy and Corruption]] of [[Stormreach]] are greater than anyone suspects. He is looking for people to infiltrate some of the private societies at the [[Candlelight]] to gain the proof needed to convince the [[Keeper|Keeper of the Flame]] to restore order in this far-flung place.
!! Overheard in Oldgate
//“Dastard! Just another cup, one more cup of [[kuryeva]].
That isn’t going to bankrupt you; you’ve got vats of
the stuff! You can spare me one cup, can’t you? Hey,
mister, spare an old salt a few coins to buy a drink?”//
//“I don’t know how the darned things work or what
they’re for. All I know—all I care about—is that the
bloody pipe has started blowing steam through my
house. Everything’s wet and hot, and the wood’s warping. I want to know what the [[Guard|Stormreach Guard]], what the [[Storm Lords]], are going to do about it!”//
//“Thief! Stop her! She’s got my coin purse! Grab her! Don’t let her get away! Oh wait... no, here it is. My mistake. I do apologize—wait, it’s empty! Somebody stop her! She’s got my money!”//
''District Type: ''Apartment townhomes<br/>
''Buildings:'' Average residences (40), poor residences
(220), upscale trades (2), average trades (3), poor
trades (5)<br/>
''First Impression: ''Over the course of centuries, old
fortresses and garrison halls have been converted into
apartment buildings and shelters for the poor.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Malleon's Gate]] (northeast); [[Gate of Gold]] (east); [[Precarious]] (southwest); [[Callestan]] (south); [[Broken Arch]] (above)
Once, [[Sharn]]'s [[City Watch|Sharn Watch]] operated out of a great set
of towers and buildings known as the Keep, located
in [[Lower Dura]]. When the City Watch spread out to
[[Daggerwatch]] and the new garrisons springing up
in other, higher-level districts, a number of land
barons bought up the old property and converted
it into housing. Now the place is called Oldkeep, in
memory of its more glorious occupants.
Most of the residents of Oldkeep work in [[Precarious]], the [[Stores]], or in [[Middle Dura]]. Many work for businesses with ties to the [[Boromar Clan]].
Recently, bands of monsters with ties to [[Droaam]]
have begun making surgical strikes in the district—thugs or burglars appear, hit a target with ties to the
Boromars, and vanish into the [[Cogs]]. The Boromar
Clan has hired [[Deneith]] mercenaries to patrol the
district, but these guards can't be everywhere at
once. While they can handle a few [[gnoll]]s or even an
[[ogre]], these mercenaries have a difficult time dealing
with [[medusa]]s or [[troll]]s.
All trades available in this district are illegal
in nature. While most criminals do business in
other districts, it may be possible to find a fence, a
burglar, or a source for [[dreamlily]] or [[dragon's blood]]
in Oldkeep.
Olladra is the Sovereign of Feast and Fortune. She is the giver of joy and the granter of luck, patron to entertainers, gamblers, and anyone who takes a chance. Her symbols include a domino or a [[black dragon]].
This restaurant, one of the
brightest spots in [[Dura]], is considered to be one of
the finest restaurants in the [[city|Sharn]]. In addition to a few
private rooms, it features a vast central hall suitable
for enormous parties or feasts. The menu consists
of traditional [[Brelish|Breland]] cuisine, but choices are limited. The master chef, Halean Doss, chooses a single menu each night.
However, quantities are generous and the quality of
the food is outstanding.
''District Type:'' Tavern district<br/>
''Buildings:'' Temple ([[Olladra]]), average lodging (44),
poor lodging (50), average food (45), poor food
(80), poor trades (40), poor services (40), poor
residences (80)<br/>
''First Impression:'' Conversation wafts from the
open doors of a half-dozen taverns and restaurants,
and the tantalizing aroma of food fills the air.<br/>
''Social Class:'' Lower middle class<br/>
''Neighbors:'' [[Boldrei's Hearth]] (northeast); [[Vallia Towers]] (northwest); [[Granite Halls]] (southwest); [[Torchfire]] (bridge, south); [[Sword Point]] (above)
The restaurants and taverns of Olladra's Kitchen
are neither the dens of drunken revelry common in
other lower wards nor the high-class, high-priced
eateries of [[Upper Central]] or [[Skyway]]. They are generally subdued, specialty restaurants and taverns that
serve as meeting places for artists and ideologues.
!! Noteworthy Locations
* [[Ellfate's Eatery]]. A small restaurant specializing in omelets with a bohemian clientele.
''Founder:'' [[Delera Omaren]].<br/>
''Current Leader:'' [[Paulo Omaren]].<br/>
''Primary Sphere of Influence:'' City infrastructure.<br/>
''Family Business:'' The [[Stormreach Forge]].<br/>
''Districts:'' [[Forgelight]], [[Temple District]].<br/>
''Allies:'' House [[Cannith]], House [[Deneith]], the [[Iron Watch]].<br/>
''Enemy:'' [[Yorrick Amanatu]].
Though charismatic, the pirate queen [[Delera Omaren]] was no politician. After the [[Stormreach Compact|History of Stormreach]], Delera overcommitted her family to the tasks of maintaining the infrastructure of the [[city|Stormreach]] and outfitting the [[Stormreach Guard]], at too low a cost. Over the years, this generosity caused the Omaren fortune to fade as the other [[Storm Lords]] profited.
Some of the Omaren lords have done their best to
live up to their obligations. Others have tried varying
approaches to break the Omaren curse. In 890 YK,
[[Castal Omaren|Omaren Revolt]] sought to eliminate the other lords
and seize control of the city. He misjudged [[Yorrick Amanatu]]’s influence over the [[Stormreach Guard]], and the mistake cost him his life. The lords allowed Castal’s heir to retain his title, but further penalties were assessed, and the new lord was deeply subservient to the rest of the council.
Lady [[Paulo Omaren]] is determined to restore her family’s honor. Presenting herself as an innovator, she looking for new solutions to the challenges that face [[Stormreach]]. Lady Paulo has been working with [[Cannith]] South, allowing
the house to establish facilities inside the [[Foundry]] and
the [[Stormreach Forge]]. She also approached the [[warforged]]
[[Steeljack]] and created the [[Iron Watch]], and has made alliances with House [[Deneith]].
Lady [[Paulo|Paulo Omaren]] isn’t the oldest member of her family. The Omarens have an unusual tradition dating back to their buccaneer heritage: Leadership is held through force of arms, and any heir of the family can challenge the current lord to a duel to claim the title. Such duels are uncommon, since the best warriors of the house have no interest in administration. However, this tradition means that the Omaren lords have to be skilled in two arenas, and if an Omaren lord wants to rule until an old age, he or she might have to use trickery to deal with young challengers.
In [[890 YK|History of Stormreach]], the Storm Lord Castal Omaren attempted to eliminate the other [[Storm Lords]] and seize control of [[Stormreach]]. The coup failed. The
[[Omaren family]] was allowed to retain its lordship but was forced to make reparations and to operate under strict penalties, which remain in effect to this day.
Onatar is the Sovereign of Fire and Forge. He guides both mundane smiths and [[artificer]]s, inspiring anyone who performs an act of creation. His symbols include a crossed hammer and tongs or a [[brass dragon]].
This secret order of [[magewright]]s and [[artificer]]s believe they're directly inspired by the [[Sovereign|Sovereign Host]] [[Onatar]]. Members can be found scattered throughout other centers of artifice, such as the [[Fabricators Guild]], [[Arcanix]], or the [[Zil|Zilargo]] [[elemental]] binders. Onatar's Chosen believe that artifice should serve the greater good, and they seek to drive their organizations toward such positive purposes.
By contrast, artificers who revere the [[Traveler]] pursue innovation at all costs, creating weapons or tools that could change the world, for better or worse.
Light emitted from this lantern can only been seen by the attuned creature.
Oni look like demonic [[ogre]]s with blue or green skin, dark hair, and a pair of short ivory horns protruding from their foreheads. Their eyes are dark with strikingly white pupils, and their teeth and claws are jet black.
Oni are sometimes called "ogre mages" because of their innate magical ability, but are at most distantly related to true [[ogre]]s. By the light of day, an oni hides its true form with shapeshifting magic, gaining the trust of those it intends to betray when darkness descends. These creatures can change their size as well as their shape, appearing as [[humanoid]]s as they pass through towns, pretending to be travelers, woodcutters, or frontier folk. In such a form, an oni takes stock of the selection of humanoids in a settlement and devises ways to abduct and devour some of them.
The origins of the oni are a mystery. Some people
believe oni are the offspring of [[hag]]s and [[giant]]s, and that some
are children or grandchildren of the [[Daughters of Sora Kell]] themselves.
Other stories claim there's a kingdom of oni in [[Khyber]],
likely a demiplane, and that the oni of the surface world are
criminals banished from this wondrous realm. While rare, their
intelligence and power make them valuable to the Daughters in [[Droaam]]. The oni [[Tzaryan Rrac]] is a trusted warlord, while other oni serve as commanders in [[Maenya's Fist]], inquisitors in [[Katra's Voice]], or administrators throughout the realm.
Oni are cunning and curious. Some serve the Daughters in
exchange for treasure, others for arcane lore, while some are
simply content with the power they hold as agents of the hags.
You could tie their broader goals to their true origin—if the
oni are exiles from a hidden kingdom, they might be building
power to reclaim that kingdom. If they are the children of
the Daughters, they could be competing with one another to
impress their parent, and generally engaging in sibling rivalry.
!! Oni of Sarlona
The [[Path of Inspiration]] teaches that the oniis a vessel for a lesser //altavar//. That fact
explains the oni's mystical powers and fiendish appearance. According to the doctrine, the ogre mage has been crafted as a prison for the [[fiend]] within; if the oni lives a noble life of service to the [[Inspired]], they can actually redeem the evil spirit trapped within them. Such a tremendous victory surely earns the ogre mage great
advancement in their next life. Of course, the evil spirit
tempts the oni, encouraging them to use their power
for personal gain or even trying to get them to turn against
the [[Inspired]]. To do so might bring power in this life, but
it forever dooms the soul. Regardless of conditioning,
oni are constantly watched by the [[Thousand Eyes]],
the [[Inspired]], and by their own kind.
The people of [[Sarlona]] consider [[oni]] and [[ogre]]s to be of one race, despite the fact that they cannot interbreed. The majority of oni and ogres in Sarlona are concentrated in the [[Riedra]]n province of [[Borunan]]. They make up a small percentage of the population, but are more common in Borunan than they are anywhere in [[Khorvaire]]. Young oni undergo intense indoctrination to ensure they become weapons of the [[Inspired]], and they usually serve in Riedra's [[Horned Guard]] or [[Savage Legion|Taskaan Legion]]. Dissident oni who have overcome this indoctrination can be found among the [[Horned Shadow]].
A hive of small performance spaces, rehearsal rooms, and studios, the Onyx Fountain is House [[Phiarlan]]’s training ground—for stage performance and intrigue.
House [[Phiarlan]] protects and patronizes artists in
[[Stormreach]] based on their talent, not their political or
ethical views. To this end, the house created the Onyx
Fountain, a stronghold of studios, galleries, small
recital halls, rehearsal spaces, and small theaters in the
[[Temple District]]. The Onyx Fountain is named for the
imposing fountain of glossy black stone at its entrance.
The fountain’s waters flow into a [[dragon]]-shaped basin,
and potent magic shapes the flowing waters into wings
and scales upon the dragon’s back.
The Onyx Fountain is a warren of corridors, niches, and chambers, each of which is unique. One chamber houses an elaborate illusion of frolicking [[fey]],
dancing wildflowers, and talking animals in the [[Faerie Court|Thelanis]]. Another contains sculptures from the [[Dhakaani Empire|Dhakaan]], complete with a towering relief of the [[Graywall Mountains]]’ [[Six Kings]] monument. Others are
filled with swirling spheres of emerald light and illusions of otherworldly beings whose translucent forms slowly transform. Most of the building’s spaces are
illuminated with multihued [[everbright lantern]]s.
The Fountain is not just a refuge for artists and
performers, but also a hive of intrigue. Performance
spaces double as training rooms for [[Serpentine Table]] agents honing the arts of stealth and infiltration. Acrobatic skill, a hypnotic voice, the ability to turn light and
shadow into allies and weapons, and an imagination
capable of ingenious solutions to split-second crises are
what make [[Phiarlan]] spies some of the best in the world.
The Fountain also hosts clandestine meetings masquerading as rehearsals or private performances.
Oozes are gelatinous creatures that rarely have a fixed shape. They are mostly subterranean, dwelling in caves and dungeons and feeding on refuse, carrion, or creatures unlucky enough to get in their way. [[Black pudding|black pudding]]s and [[gelatinous cube]]s are among the most recognizable oozes.
Oozes thrive in the dark, shunning areas of bright light and extreme temperatures. They flow through the damp underground, feeding on any creature or object that can be dissolved, slinking along the ground, dripping from walls and ceilings, spreading across the edges of underground pools, and squeezing through cracks.
The first warning an adventurer receives of an ooze's presence is often the searing pain of its acidic touch. Oozes are drawn to movement and warmth. Organic material nourishes them, and when prey is scarce they feed on grime, fungus, and offal. Veteran explorers know that an immaculately clean passageway is a likely sign that an ooze lairs nearby.
An ooze kills its prey slowly. Some varieties, such as black puddings and gelatinous cubes, engulf creatures to prevent escape. The only upside of this torturous death is that a victim's comrades can come to the rescue before it is too late.
Since not every ooze digests every type of substance, some have coins, metal gear, bones, and other debris suspended within their quivering bodies. A slain ooze can be a rich source of treasure for its killers.
Oozes are thought to be the creation of the [[daelkyr]] [[Kyrzin]].
!! Types of Ooze
<<list-links-article "[tag{!!title}sort[title]]">>
Haddie Malewud likes to keep her inn a restful place,
and the Open Palm, next door to the [[House Jorasco enclave|Jorasco Enclave (Stormreach)]] in [[Respite]], is first and foremost a place to stay. The inn’s
ale is some of the worst around, but the food and
beds are among the best in [[Stormreach]]. Haddie loves
mothering her guests, something that even the most
embittered like, even if they refuse to admit it.
The Open Sky is the vast blue expanse from which the Azure
Sky of [[Syrania]] takes its name. The clear, bright, sunless sky shows no
signs of passing time; the moon [[Therendor]] can be seen, but it
doesn't move or have phases. Despite the Open Sky's seemingly
infinite space, it wraps around on itself, effectively making it
a 300-mile cube. So while it takes a significant time to travel
between the farthest points, it is possible. There are no native
threats in the Open Sky, and all visitors to Syrania have the
ability to fly; the catch is knowing where to go, as there are
hundreds of spires.
The local commander of the [[Harmonious Shield]] in [[Dar Myan]] is
in direct control of any response to unwanted visitors. A
large number of officers serve under Orakhun, and his
death could cause some disarray.
Warden Oralys d’[[Kundarak]] served as a lawkeeper for decades before rising to her current post as a warden of [[Dreadhold]]; she is as icy and determined as Lord Warden [[Zaxon|Zaxon d'Kundarak]], with whom she has a telepathic bond.
This item is a hollow, 5-inch-diameter orb that weighs 5 pounds. Its outer shell is composed of notched bronze rings, which can be turned so that the notches line up. Aligning the notches causes the orb to gong loudly until the notches are no longer aligned. The sounds are spaced 6 seconds apart and can be heard out to a range of 600 feet.
An //orb of shielding// is a polished, spherical chunk of crystal or stone aligned to one of the [[plane]]s of existence. Often the stone will have been quarried from within a [[manifest zone]]. Spellcasters can use this orb as a spellcasting focus. While holding the orb, one can withstand the destructive effects associated with that plane. [[Fernia]]n basalt makes one more resistant to fire; [[Mabar]]an obsidian allows one to withstand necrotic energy; [[Xorian|Xoriat]] marble makes one more psychically resilient; and so on.
This orb of granite is about the size of an adult human's fist. The [[giant]] rune for "stone" appears on it in the form of crystalline veins that run across the surface. The orb has the following properties, which work only while it's on your person.
* You can channel the orb's magic to hold your ground. For the next minute or until you move any distance, you have advantage on all attempts to resist effects that force you to move.
* You can't be petrified.
* Once every few hours, you can cast [[meld into stone]].
Thousands of years before [[human]]s came to [[Khorvaire]],
the land was dominated by wild orcs and [[goblinoid]]s of
the [[Dhakaan]]i Empire. The goblin empire scattered the
orc tribes and forced them into harsh and unwanted
lands: the swamps of the [[Shadow Marches]], the [[Demon Wastes]], and the depths of the [[Ironroot Mountains]]. But
in the Shadow Marches, the orcs learned the secrets
of [[druidic magic|primal magic]] from the [[dragon]] [[Vvaraak]], becoming
the first of the [[Gatekeepers]]. With the invasion of the
alien [[daelkyr]] from [[Xoriat]], the Gatekeepers put the
dragon's teaching to the test, creating magical seals
that bound the daelkyr in the depths of [[Khyber]] and protected [[Eberron]] against further incursion from the plane of madness.
Three prominent groups of orcs have survived into the
present age:
* The [[Ghaash'kala]] are servants of the [[Silver Flame]] (which they call Kalok Shash, the "binding flame"), who devote their lives to battling the [[fiend]]s of the [[Demon Wastes]]. [[Humans|human]] from the [[Carrion Tribes]] of the wastes sometimes hear the call of Kalok Shash and join the Ghaash'kala, leading to a significant population of [[half-orc]]s there.
* The [[Jhorash'tar]] orcs are a perpetual threat in and around the [[Ironroot Mountains]], shaped by their resentment of the [[Mror|Mror Holds]] [[dwarves|dwarf]] who drove them underground. These orcs are isolated from humans, so [[half-orc]]s here are rare.
* The [[Shadow Marches]] holds the largest numbers of orcs and the most significant population of [[half-orc]]s.
!! Appearance and Longevity
Orcs typically resemble broad, well-built humans with stooped postures, low foreheads, and piggish faces with prominent lower canines that resemble tusks. Their skin tones range from green to dark gray.
Orcs reach adulthood at age 12 and live up to 50 years.
!! Orcs of the Shadow Marches
The orc [[Gatekeepers]] played a crucial role in defeating
the [[daelkyr]] and binding their evil in [[Khyber]], and their
descendants continue to maintain the ancient seals and
fight [[aberration]]s spawned by the daelkyr's corruption.
However, many orcs succumbed to that same corruption
and embraced the madness of the [[Cults of the Dragon Below]]. Orcs who follow both of these paths continue to
live in the [[Shadow Marches]], and centuries of battles between them have diminished both sides.
[[Humans|human]] settled in the Shadow Marches long ago, and
the first [[half-orc]]s helped to cement the bond between
these outsiders and the native orcs. Certain Marcher
clans contain humans, orcs, and half-orcs in roughly
equal numbers.
When playing an orc or half-orc character from the
[[Shadow Marches]], consider what circumstances brought
you into the wider world. The table below offers some inspiration.
| !<<dr d8>> |!Reason for Leaving |
| 1 |You're associated with the [[Gatekeepers]], and you're on a quest to combat a [[daelkyr]]-related threat beyond the bounds of the Shadow Marches. |
| 2 |House [[Tharashk]] recruited you from the Marches to serve as a mercenary in the [[Last War]]. |
| 3 |You're a simple hunter, but you've decided to seek your fortune or a real challenge in the world beyond the Marches. |
| 4 |Your village was destroyed by monsters from [[Droaam]], so you're looking for a new place in the world. |
| 5 |As a [[cultist of the Dragon Below|Cults of the Dragon Below]], you believe that slaying powerful foes is the only way to earn your passage to the paradise that lies deep within the hollow world. You've ventured beyond the Marches in search of worthy enemies. |
| 6 |Your clan works with House [[Tharashk]], and you've been recruited as a bounty hunter or investigator even though you're not a member of the house. |
| 7 |The leader of your clan committed a great wrong against another clan , which has now sworn to exterminate every last member of your clan. What better time to see the world? |
| 8 |Your work as an investigator has set you upon a trail of mysteries that leads far beyond the Marches. |
!! Orcs of Droaam
Over countless generations of life in the Barrens (now the nation of [[Droaam]]), the
orcs of the region developed two distinct cultures. The larger
of the two are the //Gaa'aram//—Children of Wrath. The Gaa'aram
embraced the chaotic, raiding lifestyle of the Barrens. Where
the [[goblin]]s and [[kobold]]s were often forced into service by more
powerful creatures, the Gaa'aram voluntarily rallied around the
most powerful leaders and served as fierce warriors. To an orc
of the Gaa'aram, who you fight for is less important than the
fact that you fight and fight well. As such, Gaa'aram orcs were
often encountered as raiders; they're the reason for the name of
the [[Orcbone]] fortress that guards the [[Gap of Graywall|Graywall Mountains]]. Gaa'aram orcs can be found in all of the diverse cities of [[Droaam]], and they're usually
passionate supporters both of the [[Daughters of Sora Kell]] and their local warlords.
In the days before Droaam, few people of the [[Five Nations]] had even heard of the smaller of the two cultures, the //Gaa'ran//—Children of Sacrifice. The Gaa'ran orcs are pacifists and farmers—one of the only cultures to farm in the open Barrens. They believe that violence stains the soul—that those whose souls are pure pass beyond [[Dolurrh]], but that killing another forever destroys a piece of your soul. The Gaa'ran held firm
to their beliefs even in the face of torture and death, and over
time it became common for the Barrens chibs (chieftains) to allow Gaa'ran
settlements to stand—with the understanding that the local
raiders would regularly show up and take their produce. While
this was a harsh life, the Gaa'ran have prospered under the
[[Daughters of Sora Kell]]. Though [[grist]] is the primary source of
sustenance in Droaam, the Daughters recognize the value of
agriculture, and Gaa'ran tribes have been given resources and
placed in charge of a number of agricultural projects.
The Gaa'aram and Gaa'ran are both local cultures with no
direct ties to other orcs of [[Eberron]]. Gaa'aram orcs are among
those monstrous mercenaries House [[Tharashk]] has recruited
in [[Droaam]]. The Gaa'ran have a talent for primal magic
that suggests they were once tied to the [[Gatekeepers]] of the
Shadow Marches, but they are not Gatekeepers and don't fight
[[aberration]]s; their interest lies solely in cultivation.
Orcbone Fort in [[Breland]] valiantly attempts to secure the gap
between the [[Graywall Mountains]] and [[Silver Lake]].
Raised to prevent [[Droaam]] raiders from breaching the
borders, Orcbone is a grim fortress with steep walls,
surrounded by churned earth littered with bones.
Since its founding, Orcbone has known little peace.
[[Gaa'aram orc|orc]]s, [[goblin]]s, [[troll]]s, [[ogre]]s, and others spill through the
gap from Droaam and fling themselves at Orcbone’s
walls, repulsed each time by its doughty defenders.
Orcbone holds fast, but soldiers dread assignments
here since there is little respite from the fighting.
See also [[Droaamish History]].
The Order of the Ethereal Blade was founded in the fifth century (YK) in [[Aundair]] as a duelist’s society, where members of other [[arcane order]]s could test their skills and spells in battle with fellow mages. What began as a mystical "fight club" became the core of the original [[Knights Arcane]]. Today, the Ethereal Blade focuses on the study and development of war magic, but it remains a dueling society whose members are always ready to prove their mettle in battle. Many of Aundair’s finest warmages are members of the Order, along with officers of the [[Knights Arcane]] and Knights Phantom.
While it began as a [[wizard]]’s circle, today the Order of the Ethereal Blade welcomes [[eldritch knight]]s, [[arcane trickster]]s and others who blend martial and mystical techniques. There are other societies that cater purely to duelists and [[wandslinger]]s, including [[Fairhaven]]’s ''League of ir’Lain'' and the ''Darkwood Wands'' of [[Passage]].
Clan Orgaal is a branch of the ambitious ruling
Clan [[Velderan]] of House [[Tharashk]]. These clans seek to increase [[Tharashk]]’s influence across [[Khorvaire]] and to ensure Velderan’s ultimate dominance within the house. Velderan has no interest in the [[Gatekeepers]] or the [[Cults of the Dragon Below]],
and the clan exploits their squabbles to weaken its
rivals. The ruling clans pay little attention to the small,
[[orc]]-dominated Orgaal, which allows Velderan to use it
for covert activities. Orgaal could employ adventurers
to sow discord among other clans or embark on missions that aid Velderan at the expense of its rivals.
Clan Orgaal has a camp north of [[Zarash'ak]], and they bring goods into the city on the wings of [[wyvern]]s.
Orgalos is an island in the [[Lhazaar Principalities]]. The people of Orgalos have held on to their [[Sarlona]]n heritage from the time of [[Lhazaar]], and speak a unique dialect of the ancient [[Rhiavhaar]] language. Much trade with the nation of Sarlonan nation of [[Riedra]] passes through Orgalos's small port town of [[Piritar]].
<<list-links-article "[tag{!!title}sort[title]]">>
In order to attune to this magic item, you must possess the [[Mark of Passage]].
While you wear these boots, you can click the boots' heels together. If you do, the boots double your walking and running speed. If you click your heels together again, you end the effect.
When the boots' property has been used for a total of 10 minutes, the magic ceases to function until they are allowed to recharge overnight.
Orichalcum is a lightweight, strong metal alloy made in [[Xen'drik]] by the [[Sulatar]] [[drow]]. It is very similar to [[mithral]] in many of its material properties, but it is a golden-bronze color rather than silvery. It is also called “firebrass” to the inhabitants of [[Stormreach]].
''Leader:'' [[Kwanti d'Orien]] <br/>
''Headquarters:'' [[Journey's Home]] ([[Passage]], [[Aundair]]) <br/>
''Dragonmark:'' [[Mark of Passage]]
//We get things where they need to go. It doesn't matter if it's a letter, a person, or a hundred tons of steel. Whether we have to cross mountains, rivers, or the [[Mournland]] itself, Orien finds a way.//
<div align="right">—Bali d'Orien, veteran courier</div>
The House of Passage manages land transportation.
The [[lightning rail]] is the house's most dramatic tool, but
Orien also runs caravans and coaches across the length
of [[Khorvaire]] on magically-enhanced [[trade roads|Orien trade roads]]. [[Dragonshard|dragonshard]] focus items ensure that
the fastest vehicles are those driven by heirs with the
[[Mark of Passage]], but the house also licenses unmarked
teamsters. The [[Couriers Guild]] of House Orien delivers
mail and packages and has a branch that handles more
covert and dangerous deliveries. Orien also maintains an extensive network of [[teleportation circle]]s in cities throughout the [[Five Nations]]. However, teleportation is difficult, expensive, and widely regarded as unsafe.
Orien has dominated transportation for centuries,
but now the house is facing challenges. The [[Mournland]]
is a dramatic obstacle for ground transportation, and
Baron [[Kwanti d'Orien]] has had tremendous difficulty securing funds to rebuild the lightning rail line across the blasted landscape. Indeed, he spends most of his time
away from his headquarters in [[Aundair]], trying to raise
funds for the project while keeping an eye on house
operations. He travels across western [[Khorvaire]] in his
personal [[lightning rail]] coach, the Silver Unicorn—a reference to the house's [[unicorn]] emblem.
House Orien's problems don't end with the Mournland, though. The expanding role of [[Lyrandar]] [[airship]]s threatens the house's business. Baron Kwanti would
like to be able to offer more instantaneous transportation, but long-distance teleportation is a service only the strongest Orien dragonmarks can provide. So the house
is working with House [[Cannith]] in an effort to unlock
and enhance this gift of the Mark of Passage. Orien
heirs might be caught up in these experiments or in the
rivalry with House Lyrandar.
!! History of House {{!!title}}
The [[Mark of Passage]] appeared in the region of
[[Aundair]] about 1,900 years ago. The merchants and
teamsters who developed the mark were experienced
travelers who soon discovered their common bond.
Initially, there was some competition between the
marked families, but members soon realized what
they could accomplish by working together.
Through a combination of magic and diplomacy,
House Orien secured safe passage for its caravans.
As its fortunes grew, the house improved existing
roads and developed [[new ones|Orien trade roads]]. In the days before the
[[Sivis]] [[speaking stone]] network, House Orien ran a post
system that was used across the [[Five Nations]].
The [[lightning rail]] was developed with House
[[Cannith]] and the [[elemental]] binders of [[Zilargo]]. This
technology revolutionized House Orien’s business, and soon the [[Trailblazers]] were laying [[conductor stone]]s across [[Khorvaire]].
!!! The Last War
The [[Last War]] was difficult for House Orien. Bridges were destroyed. [[Lightning rail|lightning rail]] lines were broken. And toward the end of the war, House [[Lyrandar]] took to the air. House Orien’s dominance in the field of transportation is no longer
assured. With this changing situation in mind, House
Orien has redoubled its work with teleportation.
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
Centuries before the creation of
the [[lightning rail]], House [[Orien]] built the major trade
roads connecting the [[Five Nations]]. Rune-carved stones
are buried beneath the surface of these roads. Orien’s
caravans and the tack of their messengers’ mounts are
inscribed with arcane sigils. A bearer of the [[Mark of Passage]] can perform a ritual to increase the speed of a caravan or a mount that travels these roads.
//Stone is immortal. It listens. It remembers. It chooses to be still, but anyone who's seen a gargoyle knows it can move whenever it chooses. So respect the stone, for it'll still be here long after you've turned to dust.//
<div align="right">—A cultist of Orlassk</div>
The [[daelkyr]] Orlassk is the master of stone. Orlassk's traditional
cults say that it is the Still Lord who carves out caverns, and
that it is the Voice in the Stone that guides the miner to the ore.
Orlassk can breathe life into stone, as seen in the [[gargoyle]]; but
it can also turn living creatures into stone, and it's thought that
most creatures with this power—[[medusa]]s, [[gorgon]]s, [[basilisk]]s,
[[cockatrice]]s—are its creations. Cults may associate with such
creatures, but they can also venerate stone itself. Orlassk's
cultists could venerate a sacred stone that whispers when
it's fed fresh blood, or maintain a deep chamber where all
the secret knowledge of the cult is engraved into the walls.
Orlassk is one of the lesser known daelkyr. Its cults are
found where people live around stone, in high mountains and
deep caves. Orlassk's cults often form around those
who work with stone: masons, sculptors, stone [[giant]]s, or even
just people who dwell in stone towers. When the walls start
whispering to you, Orlassk has found you.
Orlassk is thought to have feuds with other daelkyr. Orlassk
and [[Kyrzin]] are fundamentally opposed: solid against liquid,
static against change. Some scholars suggest that Orlassk's
creation of medusas and basilisks is a blow against [[Belashyrra]],
as seeing these creatures is what triggers their deadly power.
Orlassk's citadel is carved into the body of a gargantuan gargoyle that roams the chasms of [[Khyber]].
Ortak Seven-Claw is a [[silver|silver dragon]] [[rogue dragon]] in [[Khorvaire]]. Some say Ortak suffered a head injury in his youth, others that he came from poor stock. Whatever the cause, Ortak displays a lower level of intelligence than most of his peers, and politics annoy and frustrate him. Ortak retired to [[Khorvaire]] so that he could live out his life hunting, fighting, and gorging himself.
The icy island of Orthoss in the [[Lhazaar Principalities]] is a haven for the [[Khoravar|half-elf]], and half-elves from across [[Khorvaire]] have found their way to the town of [[Blackrock]]. Notably, the Lhazaar lifestyle has attracted a number of members of House [[Medani]] and House [[Lyrandar]] over the centuries—young rebels seeking an escape from the smothering traditions of their [[houses|dragonmarked house]]. Their blood has been spread across the island, and it has been spread quite thin—but occasionally a child of Orthoss develops a [[dragonmark]].
The town of [[Blackrock]] is the seat of power of the [[Wind Whisperers]].
Ostavar is an island in the [[Lhazaar Principalities]].
According to the legends of the draconic faith [[Thir]], the [[blue dragon]] Ourelonastrix was a champion of the [[Age of Demons]] who fought against the fiendish [[overlord]]s. He is credited with the discovery of [[arcane magic]] and the [[Draconic Prophecy]]. Some believe that [[Aureon]] of the [[Sovereign Host]] was inspired by the legendary deeds of this dragon.
After the mighty [[fiend]]s of [[Khyber]] consolidated their hold on the
surface world at the beginning of the [[Age of Demons]], they ruled over a nightmare kingdom for hundreds of thousands of years. The once-proud
[[dragon]]s were forced into slavery and servitude. The
demonic dominion might have continued until the end of time, if not for the [[couatl]] Hezcalipa and a [[blue dragon]] named Ourelonastrix. Working together over
the course of centuries, these two visionaries studied the
sky and stars, and compared their findings with mysterious patterns that appeared on the earth. They became convinced that such study could reveal a map of the future, an outline of the myriad paths history might follow. Ourelonastrix believed it to be the wisdom of
the [[Progenitors|Progenitor Dragons]], the very blueprint of reality. He called it the [[Draconic Prophecy]], authored by Eberron and Siberys themselves.
The Draconic Prophecy gave Ourelonastrix insights into
the weaknesses of the [[overlord]]s. Even more, it
gave the [[dragon]] and his kin a sense of hope, the belief
that dragons were part of something greater. Following
the path of prophecy, Ourelonastrix and Hezcalipa rallied their peoples against the children of Khyber, setting in motion a war that would continue for thousands
of years, culminating in the sacrifice of the [[couatl]] to forge their immortal essence into a pure force that could hold the overlords and their followers. A few [[fiend]]s escaped, but the war was won.
[[Tiamat]], the Daughter of [[Khyber]], has the power
to corrupt any [[dragon]], but the chromatic dragons
seem to be more vulnerable to her influence. After Tiamat
stirred in the [[Age of Giants]], the gold [[loredrake]]
Ourenilach proclaimed that the “dragons of the base colors” were inherently flawed.
“The shorter life span of our cousins is proof,” he said. “When the blood of mighty [[Siberys]] fell from the sky, it mingled with [[Eberron]] and the [[Dragon Below|Khyber]]. In the case of our chromatic cousins, it is clear that the blood was corrupted by contact with Khyber.” Ourenilach’s calls for a crusade to eliminate all chromatic dragons have found few supporters, either then or now, but some [[rogues|rogue dragon]] and even entire flights subscribe to this theory of metallic supremacy. It has even inspired young
and rebellious chromatic dragons to join the [[Talons of Tiamat]], embracing this perceived
bond to [[Khyber]].
''District Type:'' Apartment townhomes<br/>
''Buildings:'' Shrine ([[Path of Light]]), exotic trades
(4), average food (3), average services (1), average
residences (80), poor residences (440)<br/>
''First Impression:'' The spires of over a dozen identical towers rise to the sky. While the towers are drab
gray granite, bits of color are scattered about—an
occasional window of stained glass, a small hanging
garden, a tapestry of [[Riedran|Riedra]] design.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Highwater]] (northeast); [[Redstone]] (east); [[Daggerwatch]] (south); [[Underlook]] (below)
Built with the fortune of the [[ir'Tain family]], Overlook
is one of the largest residential districts in [[Sharn]].
The remarkably bland stonework creates a vast, gray
vista that can be disconcerting. The ir'Tains were
interested in getting the most for their gold, however,
and aesthetics were not a concern. While the townhouse apartments in Overlook are not as pleasant as
those in [[Lower Northedge]], they are inexpensive and
far safer than the wards that lie below. Plus, the area
offers breathtaking views of the [[Dagger River]] and the
surrounding countryside.
Over the centuries, Overlook has developed a
significant [[Adaran|Adarans]] and [[kalashtar]] community, and
the district draws most of the kalashtar who come to
[[Sharn]]. A variety of businesses catering to the Adarans hide in the depths of Overlook: a crystalworker,
a school of meditation and martial arts, a tailor
specializing in Adaran fashions, and a few restaurants serving Adaran cuisine. Few people outside
the community know about these places, and unless
a character is recommended to one of these businesses by an Adaran, they must do some work to find one of them.
There are no inns in Overlook, but the [[Adarans]]
take care of their own. [[Kalashtar|kalashtar]] or Adarans who
come to Overlook can usually find shelter with one
of the local families, although they are expected to
behave graciously and in some way to repay the generosity of the host; however, the Adarans value news
or wisdom as much as gold.
While the Adarans add exotic color to Overlook, they only account for a third of the population
of the district. Most of the other inhabitants are
[[human]]s, [[halfling]]s, and [[dwarves|dwarf]] who work in [[Upper|Upper Dura]] or [[Middle Dura]].
!! Noteworthy Locations
* The [[Gathering Light]]. A community center for [[Adar]]an immigrants.
* [[Hilatashka]]. A restaurant specializing in Adaran vegetarian cuisine.
* The [[Shrine of il-Yannah]]. A shrine of the [[Path of Light]].
In the first days of the world, the children of [[Khyber]] rose from the darkness to reign over [[Eberron]]. The greatest among them were the overlords, who held dominion over a world of fear, war, and death until the children of Eberron and Siberys rose up against them. Armies of [[dragon]]s fought against the [[fiend]]s of Khyber. And though the overlords couldn't be destroyed, the [[couatl]] sacrificed their lives to build a prison of celestial light: a silver flame that bound the overlords in Khyber once more. These bonds have held for countless generations, but the overlords still yearn to break free and reclaim the world above.
As long as the overlords are bound by the [[Silver Flame]], they can't physically manifest in the world. But each overlord embodies a particular aspect of evil, which grows in strength as their servants—the fiends known as the [[Lords of Dust]]—scheme to unleash their ancient masters. The overlords gain strength when mortals embrace the dark paths laid down for them. And as they grow stronger, they gain more influence.
Some thirty overlords are bound in Khyber, including [[Rak Tulkhesh]] and [[Sul Khatesh]], both of whom remain imprisoned and can't take physical form.
!! Known Overlords
<<list-links-article "[tag{!!title}sort[title]]">>
Oversight is the security arm of House
[[Sivis]]. Oversight is charged with protecting the house
from all manner of spying and theft of information,
but it also polices the house’s members. House Sivis’s
reputation relies on the assurance of absolute confidentiality for clients; if an heir leaks confidential information, Oversight will act swiftly and ruthlessly.
Oversight has strong ties to House [[Phiarlan]], House
[[Thuranni]], and the [[Trust]] of [[Zilargo]], and might call on
these groups for assistance.
An owlbear's screech echoes through dark valleys and benighted forests, piercing the quiet night to announce the death of its prey. Feathers cover the thick, shaggy coat of its bearlike body, and the limpid pupils of its great round eyes stare furiously from its owlish head.
The owlbear's reputation for ferocity, aggression, stubbornness, and sheer ill temper makes it one of the most feared predators of the wild. There is little, if anything, that a hungry owlbear fears. Even monsters that outmatch an owlbear in size and strength avoid tangling with it, for this creature cares nothing about a foe's superior strength as it attacks without provocation.
An owlbear emerges from its den around sunset and hunts into the darkest hours of the night, hooting or screeching to declare its territory, to search for a mate, or to flush prey into its hunting grounds. These are typically forests familiar to the owlbear, and dense enough to limit its quarry's escape routes.
An owlbear makes its den in a cave or ruin littered with the bones of its prey. It drags partially devoured kills back to its den, storing portions of the carcass among the surrounding rocks, bushes, and trees. The scent of blood and rotting flesh hangs heavy near an owlbear's lair, attracting scavengers and thus luring more prey.
Owlbears hunt alone or in mated pairs. If quarry is plentiful, a family of owlbears might remain together for longer than is required to rear offspring. Otherwise, they part ways as soon as the young are ready to hunt.
!! Owlbears as Companions
Although they are more intelligent than most animals, owlbears are difficult to tame. However, with enough time, food, and luck, an intelligent creature can train an owlbear to recognize it as a master, making it an unflinching guard or a fast and hardy mount. People of remote frontier settlements have even succeeded at racing owlbears, but spectators bet as often on which owlbear will attack its handler as they do on which will reach the finish line first.
!! Owlbear Origins
The origins of the owlbear are contested by scholars. Some say the creature is simply a [[magebreeding]] experiment gone wrong by House [[Vadalis]], a theory which the [[dragonmarked house]] denies. Others point out its proximity to areas of [[fey]] influence, such as [[Thelanis]] [[manifest zone]]s, suggesting perhaps this vicious creature originated in the [[Endless Weald]]. Another possible origin is the influence of [[Kythri]], the Churning Chaos, which is thought to have spawned other similar [[monstrosities|monstrosity]] such as the [[chimera]].
Five family lines—the Tialaen, Shol, Elorrenthi, [[Thuranni]],
and Paelion—were the most prominent and influential
families in House [[Phiarlan]] before the [[Shadow Schism]]. The Paelions were considered the most talented assassins in the [[dragonmarked house]]. After learning of an alleged plot in which the Paelions would exterminate the other lines and other prominent leaders, the [[Thuranni]] family killed nearly every member of the Paelion family in 972 YK, sparking the [[Shadow Schism]].
Today, some survivors of the Paelion line have formed an organization called the [[Bloody Shadows]], dedicated to exacting vengeance.
[[Dyrrn]]'s prison [[demiplane]] is the Palace of Sinew, a horrid site shaped from the leftover flesh and bones of the [[daelkyr]]'s sculpting. The walls of the palace undulate as air flows through them, as if the space were breathing. Dyrrn can invoke the ambient magic in this place to corrupt creatures native to Eberron, or drain their intellect until their brain shuts down.
The grandest city in the [[Moonlit Vale]] of [[Thelanis]] is the Palace of the
Moon. Its towers are built into the trunks of four vast trees,
each one reflecting the influence of a particular season.
The Summer Tree is in full bloom, while the Winter Tree
is withered and bare. The four seasons are factions among
the [[fey]] of the [[Moon Court]], and those who dwell within the
palace live within the tree of their season. The palace is
full of endless intrigues, and envoys negotiate alliances
with the [[feyspire]]s and the [[anchor barons|archfey]]. To mortals, many
of these intrigues would seem trivial and strange, but for
the [[fey]], they determine the ruling season, which sets the
tone for the layer. At the apex of each season—perhaps a
strangely arbitrary declaration in a realm with such a casual
relationship to time—the fey of the ruling season host a
grand revel, which draws [[archfey]] from all throughout the
[[plane]]; this is a moment when intrigues bloom and stories are
shaped, a time for duels and grand declarations.
Paladins are holy warriors and casters of [[divine magic]] who are called to uphold justice and righteousness, as interpreted through the lens of their particular [[faith|religion]]. They do not need to perform religious rituals to perform miraculous deeds like the [[cleric]]; their power is rooted in their convictions and commitment to their divine cause.
Paladins wield the power to heal the sick and injured, to smite
the wicked and the [[undead]], and to protect the innocent
and those who join them in the fight for justice.
A creature that ingests this poison and can't resist its effects takes a small amount of poison damage and is poisoned for 1-3 weeks, suffering this poison damage each day, which can't be healed until the affliction ends.
This ancient [[Dhakaan]]i city was one
of the centers of imperial [[goblin]] power before it was
destroyed by the [[daelkyr]]. Over the centuries, [[gnome]]s
and [[kobold]]s have explored the ruins, but some believe
that its greatest secrets still lie hidden within. A powerful priest of the [[Dragon Below|Cults of the Dragon Below]] has recently returned to Paluur Draal, and whispered rumors speak of the vile relic he plans to seize from the darkness there.
A city with over a million residents
keeps its healers busy, and House
[[Jorasco]] has several hospitals scattered
throughout the [[City of Towers|Sharn]]. The
grandest of all is in the [[Dragon Towers]]
district. Those in need can find accomplished
ritual healers there, including those
capable of raising the dead and
removing grievous afflictions. Healers at the
Panaceum (also called the "Great Healing Hall") are also familiar with many
of the exotic diseases and poisons brought back
from [[Xen'drik]].
In the grand tower of the Panopticon, a host of [[immortal]]s
monitor events occurring across [[Eberron]]'s [[plane]]s. Countless
[[modron]]s observe [[crystal ball]]s. There are chambers in which
[[angel]]s and [[devil]]s stand around wide scrying pools, replaying
recent events. And in the highest chamber of the Panopticon,
twelve [[solar]]s—with one seat empty—contemplate the events
occurring in the planes they are bound to and wait to be
summoned by the authorities of those planes.
The Panopticon is larger than the entire city of [[Sharn]].
Different sections are devoted to each of the planes, and
some immortals have spent countless years monitoring a
particular location or creature. It holds the most powerful
and sophisticated scrying network in existence, dwarfing the
capabilities of even the [[dragon]]s of [[Argonnessen]]. However, this
system is not intended to benefit mortals. Adventurers must
have an exceptional reason to secure a travel pass allowing
admittance to the Panopticon, and the immortals who work
there are not inclined to answer questions.
Many of the fiercest predators of the jungles of [[Xen'drik]] prefer to attack at night. To combat this, [[alchemist]]s have invented panther tears, a dark purple
oil that is dripped into the eyes. Those who use this oil gain darkvision for up to 1 hour.
While you wear these bedraggled brown cotton pants, you can cast the [[levitate]] spell on yourself at will, even if it is a bit uncomfortable.
<<<
{{levitate}}
<<<
After you write a message of fifty words or fewer on this magic sheet of parchment and speak a creature's name, the parchment magically folds into a tiny paper bird and flies to the recipient whose name you uttered. The recipient must be on the same [[plane]] of existence as you, otherwise the bird turns into ash as it takes flight.
It travels to within 5 feet of its intended recipient by the most direct route, whereupon it turns into a nonmagical and inanimate sheet of parchment that can be unfolded only by the intended recipient. If the bird is damaged or immobilized, it turns into ash.
Paper birds usually come in small, flat boxes containing <<dr "1d6 + 3">> sheets of the parchment.
The Paqaa Mountains in [[Sarlona]] stretch from the [[Tashana Tundra]] south through the [[Riedra]]n provinces of [[Dor Maleer]] and [[Nulakesh]]. The [[Riedrans]] call these mountains the ''Frostblades''; Paqaa is the [[Akiak]] name, and the [[Inspired]] intend on wiping every trace of the [[dwarves|dwarf]] from their ancestral home, including the mountains' indigenous name.
A few [[rogue dragon]]s have laid claim to the abandoned dwarven holds deep beneath the mountains.
This cloak is lightweight and billowy, made of white silk woven with dove feathers. The hem is embroidered with silver wind imagery.
The user can slip their arms into loops inside the cloak and leap from high places, gliding efficiently to safety. If the user is skilled, they can catch updrafts and glide for huge distances. If the user takes an accidental fall, this cloak will parachute out and deliver them gently to the ground (as a [[ring of feather falling]]).
This item is a sheet of parchment with a magical sigil in
the center. You can press it against another sheet of parchment and speak a command word to cause it to become an identical copy of that parchment. It copies any writing and stains but doesn't duplicate magical effects. Once you have used this property, the parchment of facsimile becomes nonmagical.
Pardrengo is a gruff individual who grates on everyone, but he is
one of the most skilled freelance guides in [[Stormreach]]. Pardrengo was born in a small [[shifter]] community established on the outskirts of Stormreach
over fifty years ago (since disbanded). He is in love
with [[Xen'drik]]. He sees the land’s savage heart as the
perfect place for his people to embrace their wild
instincts. The shifter knows the continent better than
most, but presses those he guides to near exhaustion
and doesn’t hesitate to lead his charges into perilous
environs. Pardrengo either forgets that not everyone
is as in touch with [[Xen'drik]]’s ferocious temperament
as he, or he simply disdains those who cannot endure
the land’s many challenges. He mocks those who are
unable to brave the perils he faces daily and shows no
mercy to anyone who can’t keep his breakneck pace. If
the characters weather his rude veneer and arrogance
without complaint, the shifter leads them to wondrous
locales avoided by or completely unknown to most
guides. If a PC gains his respect, Pardrengo proves a
stalwart ally in battle.
Parliament Hall dominates
[[Wroat]]’s southern banks. The building serves the [[legislature|Breland Parliament]], providing accommodations, offices, and
meeting halls for members of both chambers. The
wall dividing the two chambers can be removed
when both chambers must vote on state issues of
highest import.
After rolling dice, if your highest die is a 4 or 5, that's a partial success; you do what you were trying to do, but there are [[consequence]]s, such as [[stress]], reduced effect, or a complication.
[[Aundair]]’s population has always been more heavily concentrated in the east, but Passage is a notable
exception. Situated on [[Lake Galifar]]’s shores, it is the
last major city before Aundair gives way to the [[Eldeen Reaches]]. Passage owes its booming growth and prosperity to House [[Orien]], which has its headquarters [[enclave]] in the city, [[Journey's Home]]. Indeed, the [[dragonmark]]ed members control
the city’s government.
People arrive in the city from
all over the continent thanks to the [[lightning rail]]
repair depot, which maintains most rail carts in service throughout the [[Five Nations]]. Passage is also the
door to the Eldeen Reaches—through the city flow produce and grain from the rich farmland to the
west, while finished materials are shipped out from
[[Fairhaven]] and elsewhere to the east.
''Sovereign:'' the [[Fury]]
Passion, madness, and truth—all are threads on the same skein. The [[dragon]]s that follow this path might be great artists or poets. They might gain insights into the [[Prophecy|Draconic Prophecy]] that even the wisest [[loredrake]] cannot see. But passion can lead to fury, and when a dragon falls into a blind rage she poses a deadly threat to any creature that crosses her path.
A passage appears at a point of your choice that you can see on a wooden, plaster, or stone surface (such as a wall, a ceiling, or a floor) within 30 feet, and lasts for up to 1 hour. You choose the opening's dimensions: up to 5 feet wide, 8 feet tall, and 20 feet deep. The passage creates no instability in a structure surrounding it.
When the opening disappears, any creatures or objects still in the passage created by the spell are safely ejected to an unoccupied space nearest to the surface on which you cast the spell.
The Path of Inspiration is the prescribed faith of the
[[Riedra]]n people, and the [[Inspired]] form the pinnacle of
that faith's mortal hierarchy. However, in contrast to the
half-whispered rumors that circulate around Riedran
outposts in [[Khorvaire]], the Inspired are only the emissaries of this faith, not its focus. Instead, the lords of [[Riedra]] are seen as vessels of the great spirits, known as
//il-altas// in the [[quori]] tongue. These are mortals ascended
to a higher state of being—a state to which all who follow
the Path of Inspiration aspire.
To Khorvairian worshipers of the [[Sovereign Host]],
the Path of Inspiration and its tight control of social
order might bear more than a passing resemblance to
the Church of the [[Silver Flame]], though followers of that
latter religion find little cause for comparison. For followers of the Path of Inspiration, the Silver Flame and the Sovereign Host are nearly the same. [[Riedrans]] believe
the faiths of other cultures all worship dark spirits, or
//altavars//—[[fiend]]s that corrupt all about them for the sake
of power, be it material, arcane, or divine.
The massive monoliths ([[hanbalani alta]]s, or "sanctuaries for the soul") that dot the [[Sarlona]]n landscape are the most overt symbols of the Path of Inspiration. To the
[[Riedrans]] who build the monoliths, they are temporary resting places for the souls of the dead—tombs that prepare the dead for movement into the next life. Those who
know the [[Inspired]] understand a much darker truth.
!! Social Hierarchy of Humanoids
Under the precepts of the Path of Inspiration, the races of [[Sarlona]] are each seen
to occupy a specific niche. At the top of the social order
are the [[Inspired]]—beings blessed by grace and as close to
enlightenment as mortals can be. Beneath them are the
[[Chosen]], with Riedran [[human]]s below them. The Path of
Inspiration marks all nonhuman races by their degree
of spiritual evolution, and [[Riedrans]] accept this. Thus,
[[ogre]]s and [[shifter]]s are subhuman, while [[changeling]]s are
acknowledged as superior and singularly blessed.
!! The Path and the Quori
No [[Inspired]] views the Path of Inspiration as a true religion; it is merely a
tool. [[Cleric|cleric]]s among the [[quori]] worship [[il-Lashtavar]].
Aside from the quori, only the shadow
lines—those [[Chosen]] specifically
raised to serve as vessels for the
agents of the [[Dreaming Dark]]—know
of this faith.
Although the Path of Inspiration was created as a tool to manipulate the masses,
nothing is inherently evil about the faith.
The divine power of the path is ultimately independent of the Inspired or
the Dreaming Dark. Perhaps spells of
the [[Riedran|Riedrans]] [[cleric]] are drawn from the
magical energy of the [[Dragon Above|Siberys]].
Maybe the power flows from the raw
faith of millions of Riedrans. It could
be that the //il-altas// truly exist, unbeknownst to the Inspired. For most
[[Riedrans]], the Path of Inspiration
is inseparable from their country as
a whole, and the source of its power
is [[Riedra]].
* We live in an age of darkness. We must find the path that leads to the light.
* Act with compassion and courage. Each noble act is a step on the path.
* Hone your body and your mind. You are the tool you will use to change reality.
Practiced by many [[kalashtar]], the Path of Light seeks to change reality by first bringing change within, using meditation to focus the mind and athletic discipline to improve the body. The next step brings light into the world, using courage and compassion to banish the darkness in the people around you. Mediate disputes. Extinguish hatred by guiding people out of darkness. Inspire people to be better than they are. Even the smallest change is a victory, yet lightbringers—the followers of this path—hope that this is merely a step on a greater journey.
The Path of Light teaches that this age is dominated
by [[il-Lashtavar]], "the great [[darkness that dreams|Dreaming Dark]]." This
force poisons the world and promotes darkness. But all
things change. If enough light can enter the world, it will
lead to a tidal shift: the age of il-Lashtavar will end and
usher in the time of il-Yannah, the great light.
Some followers of this faith believe that meditation
alone is sufficient to change the path of the world, that
merely contemplating the light is sufficient to bring
about the change. Most believe that it is necessary to
take action, but that darkness must fought with light.
Violence is never the answer, and the only way to defeat
evil is to redeem it. Lightbringers seek to inspire those
who live in fear and enlighten those whose evil is driven
by ignorance. The faith has followed this path for over
a thousand years, but now a splinter sect advocates
greater action. These shadow watchers believe that evil
must be fought, that sources of darkness that poison
communities can and should be ruthlessly eliminated.
The Path of Light is taught to the [[kalashtar]] by the
spirits bound to their bloodlines. It is widespread in the
nation of [[Adar]] in distant [[Sarlona]], but in [[Khorvaire]], it is
largely unknown outside kalashtar communities. The
shadow watchers champion a sect born in Khorvaire,
and the elders of Adar have condemned its methods.
If you follow the Path of Light, you must choose your
side. As a lightbringer, you seek to spread hope and
goodwill. As a shadow watcher, you hunt down and eliminate sources of darkness. Which path will you follow?
!! Symbol
The symbol of the Path of Light is a shard of brilliant
crystal, carried or worn as an amulet. This crystal may
be used as a holy symbol; if it's worn as a necklace, the
priest must place one hand on it to use it as a focus. The
formal garb of a priest includes a headdress with curving horns and points made from a Sarlonan shell-like material called [[sentira]].
!! Rites
Physical and mental discipline are important virtues of
the Path of Light. Martial arts (see [[Path of Shadows]]) and guided meditation become a form of devotion and prayer. A [[kalashtar]] priest
conducts services telepathically, using shrines designed
to amplify psychic abilities and allowing them to share
thoughts and images directly with the congregation. To
an outsider, a service can appear silent and tranquil despite being an ecstatic experience for the faithful.
!! Temples
The nation of [[Adar]] in [[Sarlona]] is home to vast fortress
monasteries devoted to the Path of Light. In [[Khorvaire]],
a mere handful of shrines appear in cities with large
kalashtar communities. These shrines are calm and
peaceful, the air scented with Sarlonan incense. The
chambers are open, providing space for martial arts.
Labyrinthine patterns engraved on the floors serve as
an aid to meditation, while the walls hold crystals that
focus and amplify the psychic abilities of the priests.
Many [[kalashtar]] practice //sheshan talarash dasyannah//, a Quor phrase that roughly translates to "dancing with the shadows on the path to light", or, more commonly, "the path of shadows". This is a martial art form that serves as exercise, meditation, combat training, and artistic expression. The path of shadows is a soft, fluid art, full of smooth, sweeping motions that are beautiful and hypnotic. A character who focuses on the pure movement of the dance is said to be "staying in the light", while one who trains for combat is "facing the shadows".
Lady Paulo Omaren is a [[Storm Lord|Storm Lords]] of [[Stormreach]] and is determined to restore her [[family|Omaren family]]’s honor. She bears a special grudge toward Lord
[[Yorrick|Yorrick Amanatu]] and the [[Amanatus|Amanatu family]]. Not only was the [[dwarf]] directly responsible for the death of Lord Castal during the [[Omaren Revolt]], but the Amanatus’ power is derived from the [[Stormreach Guard]]—soldiers outfitted by the [[Omaren|Omaren family]] [[forge|Stormreach Forge]]. Nonetheless, her thirst for power and vengeance is tempered by a wisdom her predecessors lacked. She knows that it will take more than ambition to unseat the Amanatus. She presents herself as an innovator, looking for new solutions to the challenges that face [[Stormreach]]. Lady Paulo has been working with [[Cannith]] South, allowing
the house to establish facilities inside the [[Foundry]] and
the [[Stormreach Forge]]. She approached the [[warforged]]
[[Steeljack]] and created the [[Iron Watch]]; Lord [[Yorrick|Yorrick Amanatu]] might hold the loyalty of the [[Stormreach Guard]], but as the [[Iron Watch]] grows, so does Lady
Paulo’s confidence. She has also fought to increase the power and influence of House [[Deneith]]. She has recently taken Lord [[Greigur d'Deneith]] as a lover, and she thinks of Deneith as her own personal army, just waiting for her command. Secretly, she envisions a day when the [[Iron Watch]] and House [[Deneith]] will sweep aside the [[Stormreach Guard]] and crown her the
sole ruler of [[Stormreach]]. These dreams might never
come to pass; despite his genuine affection for her,
Lord Greigur has to balance his duties to his house
and his own ambitions. But Lady Paulo’s alliance with
him gives her hope for the future, and for now that’s
all she needs.
Whatever comes of her current schemes, there
is no question that Lady Paulo is the most ambitious
[[Storm Lord|Storm Lords]] and that she is always looking for new
sources of power. If a group of adventurers gains a
reputation in [[Stormreach]], there’s an excellent chance
that Lady Paulo will seek out their services. The only
question is whether she employs them openly—like
the [[Iron Watch]]—or seeks their assistance with more
secret matters.
The largest temple complex devoted to the [[Sovereign Host]] in [[Sharn]], the
Pavilion of the Host consists of a grand open tower
ringed by temples dedicated to each of the nine deities in the pantheon. In the central pavilion, sacrifices offered in major festivals and on important holy
days honor the pantheon as a whole. The ranking
priest in Sharn, High Priest [[Phthaso Mogan]], leads most of these rituals and
sacrifices. Homes for the many clergy working here
occupy several tower levels below the Pavilion.
This small bead is filled with swirling, purple smoke. You
can throw the bead at a point you can see within 30 feet of you. When it hits a surface, you create the image of an object that is no larger than a 5-foot cube, centered on the pearl. The image can't create any sensory effects. Physical interaction with the image reveals it to be an illusion. If a creature discerns the illusion for what it is, the illusion becomes
faint to it.
The image lasts for 1 hour, until you move more than 30
feet away from the pearl, or until the pearl is picked up.
Once you have used the pearl, it can't be used again until
the next dawn.
While this pearl is on your person, you can speak its command word and recover stress you recently expended on a common- or rare-tier [[spell]]. Once you use the pearl, it can't be used again until the next dawn.
Despite its name, the peasants’ market in [[Taer Valaestas]] is a good source of quality wares from [[Aerenal]] and across [[Khorvaire]]. The market is so named because of the fact that few [[Valenar]] [[elves|elf]] can be bothered to undertake tasks as mundane as shopping, entrusting such jobs to the [[Cyran|Cyre]] peasants and laborers who take responsibility for the elves’ land.
The white winged horses known as pegasi soar through the skies, a vision of grace and majesty. When they touch down on solid ground, they linger only for a moment, drinking from mountain springs and pristine lakes. Any sound or sign of another creature startles them, sending them off to fly once more among the clouds.
Pegasi are native to the plane of [[Syrania]], the Azure Sky.
While House [[Vadalis]] conducts
most of its business in [[Dragon Towers]], the head
of the household has always resided in the Pegasus
Spire in [[Highwater]]. The [[Sharn]] Vadalis have always
enjoyed participating in the [[Race of Eight Winds]]
and the Highwater Wind Guard has always included
members of the family. In addition to serving as the manor for the Vadalis family, Pegasus Spire provides
the stable and training facilities for the [[pegasi|pegasus]] used
in the race.
This pendant is shaped like a large feline claw, and is etched with geometric designs. It allows the wearer to communicate fluently with all feline creatures. Cats, panthers, lions, and other such felines will behave amicably towards the wearer, and are more likely to aid the wearer when called upon.
This tiny vial contains magic perfume, enough for one use. You can apply the perfume to yourself, and its effect lasts 1 hour. For the duration, you have advantage on charming or persuading affected [[humanoid]]s. Those subjected to the perfume's effect are not aware that they've been influenced by magic.
You are immune to contracting any disease while you wear this pendant. If you are already infected with a disease, the effects of the disease are suppressed while you wear the pendant.
The Pestle is an apothecary and [[alchemical|alchemist]] supply shop founded by a family of expatriate [[Zil|Zilargo]] [[gnome]]s. Today it is run by [[Tyrl Gol Garin]], a rather mad connoisseur of poisons with connections to the [[Night Tide]] of [[Stormreach]].
You craft an illusion that takes root in the mind of a creature that you can see within 60 feet. If the target cannot resist the illusion, you create a phantasmal object, creature, or other visible phenomenon of your choice that is no larger than a 10-foot cube and that is perceivable only to the target for up to 1 minute. This spell has no effect on [[undead]] or [[construct]]s.
The phantasm includes sound, temperature, and other stimuli, also evident only to the creature. If the target realizes that the phantasm is an illusion, the spell ends.
While a target is affected by the spell, the target treats the phantasm as if it were real. The target rationalizes any illogical outcomes from interacting with the phantasm. For example, a target attempting to walk across a phantasmal bridge that spans a chasm falls once it steps onto the bridge. If the target survives the fall, it still believes that the bridge exists and comes up with some other explanation for its fall—it was pushed, it slipped, or a strong wind might have knocked it off.
An affected target is so convinced of the phantasm's reality that it can even take damage from the illusion. A phantasm created to appear as a creature can attack the target. Similarly, a phantasm created to appear as fire, a pool of acid, or lava can burn the target. Any damage taken is psychic in nature, but the target perceives the damage as a type appropriate to the illusion.
(requires a missing limb)
This item takes the form of a simple bracelet made from shining black stone, etched with golden runes. When worn just above the cut-off point of a missing limb, the bracelet creates a fully-functioning phantom replacement for the limb. The ghostly appendage functions as normal and feels fully solid (though a bit icy to the touch), even though it appears faintly pale and transparent.
You can make the limb incorporeal at will, allowing it to pass through solid objects. You can switch it back to solid form at will as well, but not while it is currently occupying the space of a solid object.
''Leader:'' [[Elvinor Elorrenthi d'Phiarlan]] <br/>
''Headquarters:'' the [[Demesnes]] (various)<br/>
''Dragonmark:'' [[Mark of Shadow]]
//We are the shadow—the border between light and darkness. We are not simply spies or assassins. We are agents of balance, and through our dance, we shape the future.//
<div align="right">—Kaleth Shol d'Phiarlan, ghost of the [[Serpentine Table]]</div>
The [[elves|elf]] of House Phiarlan carry the [[Mark of Shadow]],
a gift that lends itself to illusion and deception. It
comes as no surprise that House Phiarlan has two
faces. To the public, it is the house of entertainment,
a source of actors, bards, and artists of great skill. But
those who have the wealth to afford its services might
learn of the house’s dark side—the [[Serpentine Table]], an
organization of spies with eyes in every shadow.
The primary enclaves of House Phiarlan, known as the [[Demesnes]], are the foremost centers of the arts in the [[Five Nations]], each focusing on a specific artistic tradition:
the written word, movement arts, music, material arts,
and the arts of illusion, puppetry, oratory, and acting.
Baron [[Elvinor Elorrenthi|Elvinor Elorrenthi d'Phiarlan]] leads the house from the last
of those, the [[Demesne of Shadow]], which is located in
[[Sharn]]. The [[hydra]] serves as House Phiarlan's emblem.
House Phiarlan has close ties with
House [[Ghallanda]], because Phiarlan
performers often work at Ghallanda’s
hostels. The houses generally stand
together when there are disagreements
among the [[Twelve]].
!! History of House {{!!title}}
House Phiarlan traces its history back to when the
enslaved [[elves|elf]] of [[Xen'drik]] rose up against their [[giant]]
masters. A traveling band of scouts and bards raised
morale and brought news and information to the scattered tribes. They called themselves “phiarlans,” an Elven word that translates roughly as “spirit keepers.”
When the elves founded the island nation of [[Aerenal]], the Phiarlans traveled between the city-states as troubadours and mediators. Sometimes mediation worked, but the Phiarlans also learned the power of passing information to the right people. With the rise
of the [[Undying Court]], they served the [[Sibling Kings]] as
spies in an effort to help maintain order in the land.
Then the [[dragonmark]]s appeared. Though their
nature was a mystery, it was clear that they were connected to the [[Draconic Prophecy]]—and the [[dragon]]s had long been enemies of Aerenal. Suspicion fell
upon the dragonmarked and grew worse when it
was shown that the line of [[Vol]], bearers of the [[Mark of Death]], were allied with dragons. Fearful that they might share Vol’s fate, the Phiarlans fled to [[Khorvaire]], where they joined to become House Phiarlan. Their artistic skills earned them a place in the [[Five Nations]], and in time the [[Serpentine Table]] offered its
services to those in power there.
!!! The Last War
During the [[Last War]], House Phiarlan served every nation in the conflict. As the
war raged on, however, different family lines within the house developed conflicting loyalties and found themselves working at cross-purposes. The resulting [[Shadow Schism]] split the house, resulting in the creation of House [[Thuranni]] and the near extermination of the [[Paelion]] family. In the wake of the Shadow Schism, House Phiarlan retains greater resources and better intelligence-gathering capabilities, while House Thuranni has trained assassins and the willingness to use them. Today, Phiarlan influence is strongest in [[Aundair]], [[Thrane]], and [[Breland]]; the house lost most of its holdings in [[Karrnath]] and the [[Lhazaar Principalities]] during the Shadow Schism.
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
House [[Phiarlan]] has an economic interest in the
[[Chapterhouse]] in the [[Stormreach]] [[Marketplace]], but it maintains a
separate [[enclave]] in the [[Temple District]]. House Phiarlan’s enclave is a buttressed stone building next to the [[river|Koronoo River]]. Viceroy [[Morian Shol d'Phiarlan]] oversees the house’s interests in Stormreach.
[[Phiarlan]] heirs can always find lodging at the
enclave, provided they are willing to perform for a few
hours or share interesting news from the wider world.
One frequent guest is [[Eiras Tialaen d'Phiarlan]].
The first time it was built, the enclave sank into
the boggy ground. The second time, it was built on the
same ground and endured. Rumors persist that the
first attempt was not a mistake but a way of sinking part
of the enclave underground so that much of the house’s
business would be away from prying eyes.
This item functions only for a wielder of the [[Mark of Shadow]].
The image projector can be used to record and play back a short scene or illusion. A Shadow mark wielder can either record a 1-minute illusion (as the spell [[lesser illusion]]), or all activity within 10 feet of the projector for 1 minute. When played back, the projector replicates the scene stored within it, replaying the events as a [[lesser illusion]] spell. Though some sound is replicated during playback, it is usually not clear enough to decipher speech.
The projector consists of a Siberys [[dragonshard]] suspended by metal wires inside a 1-foot diameter hoop of silver. The hoop floats in mid-air when activated, with barely perceptible lines of light expanding outward to create the recording stored within the shard.
The Phoenix Basin is a body of water that lies between mainland [[Xen'drik]] and [[Kapaerian Island]], and connects to the [[Barren Sea]]. Before the cataclysmic destruction of the civilization of the [[giant]]s during the [[Age of Giants]], this basin was once solid ground.
A half-subterranean drinking hole in [[Stormreach]], the Phoenix
Tavern is built into the district wall southwest of the
[[Lorsmarch Palace]]. The tavern is favored by criminals
and dissidents and is stuffy year-round. A group of
minstrels performs weekly here, and many of the
tavern’s regulars sing along.
This enchanted lock appears no different than its mundane equivalent. Each time anyone attempts to pick the lock and fails, the lock suddenly absorbs the lockpick and incorporates the material into its mechanism.
This small pigeon figurine can balance perfectly on its
beak. While the pigeon is balanced on your finger, you can
speak its command word to cause it to point
north until it is removed from your finger.
Less expensive than [[Shadows]], the Pink Conch is a
comfortable and discreet brothel in [[Stormreach]]. The Conch claims
that “what you see is what you get,” that the house does
not employ [[changeling]]s or use illusions in its work.
Whether this is true is an open question. Many of the
people who work at the Conch are also actors
in the [[district|Temple District]]’s theaters.
''District Type:'' Temple district<br/>
''Buildings:'' Temples ([[Sovereign Host]], [[Silver Flame]],
[[Aureon]], [[Balinor]]), shrines ([[Boldrei]], [[Kol Korran]]),
upscale lodging (5), average lodging (15), upscale food (15), average food (30), exotic trades (23),
upscale trades (26), average trades (40), upscale services (40), average services (100), upscale residences
(20), average residences (80)<br/>
''First Impression:'' While not quite as impressive as
the grand temples at Sovereign Towers, the churches
and shrines of Pinnacle are dripping with precious
metals and jewels. Appearance and opulence may
be more important than faith to the congregations
of Pinnacle.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Silvergate]] (west); [[Twelve Pillars]] (south); [[Crystal Bridge]] (bridge, northwest); [[Cornerstone]] (below)
The temples of Pinnacle serve more of a social function than a religious one. The primary duties of a Pinnacle priest are managing donations, ensuring that the people who pay the most get prominent seating during services, and performing formal (if ultimately meaningless) blessings at the parties and
galas of the wealthy. The one exception is the Temple
of [[Balinor]]; while it happens to have been built in
Pinnacle, its priests are dedicated and its services
draw the faithful from across [[Sharn]].
While smoking this pipe, you can exhale a puff of smoke that takes the form of a single creature, such as a [[dragon]], a [[pixie]], or a [[slaad]]. The form must be small enough to fit in a 1-foot cube and loses its shape after a few seconds, becoming an ordinary puff of smoke.
If you are proficient with wind instruments, you can play these magical pipes to summon and control swarms of rats.
''Date: '' [[20 Dravago|Khorvaire calendar]]
This spring festival in [[Stormreach]] commemorates
the death of pirate lord Jaldrin Arekarn, whose
descendants would have been among the [[Storm Lords]]
if he had had any. During the city’s beleaguered early
days, Jaldrin turned back assaults both from [[Xen'drik]]’s
interior and from rival captains who sought to seize
the port for themselves. Jaldrin and his beloved, the
dread captain Kilen Razorheart, engaged an entire
armada of pirate vessels in the harbor. They broke the invading fleet but were both mortally wounded by a traitor’s arrow as they embraced in victory. The two
fell overboard, their bodies never found. Now, on the
anniversary of their victory and demise, the citizens
of Stormreach celebrate in their honor, hurling offerings into the sea in the hope that the [[Devourer]] will consume the offerings instead of feasting on the two
captains. Pirate’s Moon is also the festival of love in
[[Stormreach]], a time of blossoming romance.
This small port town in [[Orgalos]] receives much trade with the nation of [[Riedra]] across the [[Lhazaar Sea]].
A pit fiend is a hulking monster with a whip-like tail and enormous wings that it wraps around itself like a cloak. Armored scales cover its body, and its fanged maw drips a venom that can lay the mightiest mortal creatures low. Fearless on the fields of [[Shavarath]], a pit fiend takes on the most powerful foes in single combat, demonstrating its supremacy and an arrogance that prevents it from acknowledging any chance of defeat.
With an inflated sense of superiority and entitlement, pit fiends form a grotesque aristocracy in whichever [[plane]] they inhabit. In [[Daanvi]], these domineering and manipulative tyrants conspire to eliminate anything that stands between them and their desires, even as they negotiate the convoluted and dangerous politics of the [[Iron Ward]].
The most infamous site in [[Argonnessen]], this is the prison of [[Tiamat]], the Daughter of [[Khyber]]. A dome of force covers the top of this cavernous well, with garrison aeries carved into the walls of the abyssal shaft. Shifting light rises from the bottom—the
pulsing colors of the immense [[Khyber shard|dragonshard]] that holds the spirit of Tiamat, slowly shifting through the ten colors of true [[dragon]]s. Even in her slumber, Tiamat’s
mind is so powerful that anyone who passes beyond the dome of force can feel her presence. It is assumed that no [[dragon]] can resist her touch forever. A dragon of the [[Light of Siberys]] must volunteer for guard duty in the Pit, and when their tour of
duty is complete, they are executed, to ensure that their spirit has remained pure. It is a one-way mission, but those who survive it untainted and accept execution with dignity
bring great honor to their flights.
The Pit of Five Sorrows holds many secrets, and it is
one of the most carefully warded and secured locations
on [[Eberron]]. An effort to penetrate the Pit should be a
challenge for advanced epic-level characters.
Pitchwall is a small prospecting town [[Hope]], [[Q'barra]], located near the [[Stormhorn Clanhold]].
Standing barely a foot tall, pixies resemble diminutive [[elves|elf]] with gossamer wings like those of dragonflies or butterflies, bright as the clear dawn and as luminous as the full moonrise. Curious as cats and shy as deer, pixies go where they please. They like to spy on other creatures and can barely contain their excitement around them. The urge to introduce themselves and strike up a friendship is almost overwhelming; only a pixie's fear of being captured or attacked stays its hand. Those who wander through a pixie's glade might never see the creatures, yet hear the occasional giggle, gasp, or sigh.
Pixies array themselves like princes and princesses of the [[fey]], wearing flowing gowns and doublets of silk that sparkle like moonlight on a pond. Some dress in acorns, leaves, bark, and the pelts of tiny woodland beasts. They take great pride in their regalia and beam with joy when they are complimented on their ensembles.
//''Magical Faerie Folk.''// With their innate power of invisibility, pixies rarely appear unless they wish to be seen. In [[Thelanis]] and on the Material Plane, pixies etch patterns of frost on winter ponds and rouse the buds in springtime. They cause flowers to sparkle with summer dew, and color the leaves with the blazing hues of autumn.
//''Pixie Dust.''// When pixies fly visibly, a shower of sparkling dust follows in their wake like the glittering tail of a shooting star. A mere sprinkle of pixie dust is said to be able to grant the power of flight, confuse a creature hopelessly, or send foes into a magical slumber.
Only pixies can use their dust to its full potential, but these fey are constantly sought out by mages and monsters seeking to study or master their power.
//''Tiny Tricksters.''// While the arrival of visitors piques their curiosity, pixies are too shy to reveal themselves at first. They study the visitors from afar to gauge their temperament or play harmless tricks on them to measure their reactions. For example, pixies might tie a [[dwarf]]'s boots together, create illusions of strange creatures or treasures, or use dancing lights to lead interlopers astray. If the visitors respond with hostility, the pixies give them a wide berth. If the visitors are good natured, the pixies are likely to be emboldened and more friendly. The fey might even emerge and offer to guide their "guests" along a safe route or invite them to a tiny yet satisfying feast prepared in their honor.
This [[Carrion Tribe|Carrion Tribes]] reveres an
imprisoned [[overlord]] of filth and pestilence. Its members seek
to turn the power of their lord against their enemies. Plaguebearers smear their weapons with filth; a victim struck with a coated weapon may be subjected to fever-inducing contagion. Plaguebearers are typically covered with weeping open sores and angry welts
from various infections, but they are remarkably resistant to the effects of diseases and poisons.
In battle, the Plaguebearers become wild berserkers;
they close ranks as quickly as possible and fight to the
death, praying that infection will claim the lives of any
enemies who survive the battle. ''Fulgrun Bloodboil'' ([[tiefling]] barbarian), a hideous individual surrounded by a horrible stench of pus and rot, leads the clan.
You beseech an otherworldly entity for aid. The being must be known to you, some being of cosmic power associated with your [[religion]]. That entity sends a [[celestial]], [[fiend]], or other associated [[immortal]] being, making the creature appear in an unoccupied space within 60 feet. If you know a specific creature's name, you can speak that name when you cast this spell to request that creature, though you might get a different creature anyway (DM's choice).
When the creature appears, it is under no compulsion to behave in any particular way. You can ask the creature to perform a service in exchange for payment, but it isn't obliged to do so. The requested task could range from simple (fly us across the chasm, or help us fight a battle) to complex (spy on our enemies, or protect us during our foray into the dungeon). You must be able to communicate with the creature to bargain for its services.
Payment can take a variety of forms. A celestial might require a sizable donation of gold or magic items to an allied temple, while a fiend might demand a living sacrifice or a gift of treasure. Some creatures might exchange their service for a quest undertaken by you.
As a rule of thumb, a task that can be measured in minutes requires a payment worth 10 c per minute. A task measured in hours requires 1000 c per hour. And a task measured in days (up to 10 days) requires 1000 c per day. The DM can adjust these payments based on the circumstances under which you cast the spell. If the task is aligned with the creature's ethos, the payment might be halved or even waived. Nonhazardous tasks typically require only half the suggested payment, while especially dangerous tasks might require a greater gift. Creatures rarely accept tasks that seem suicidal.
After the creature completes the task, or when the agreed-upon duration of service expires, the creature returns to its home plane after reporting back to you, if appropriate to the task and if possible. If you are unable to agree on a price for the creature's service, the creature immediately returns to its home plane.
A planar observatory is a structure at the heart of the [[Chamber]]'s efforts to divine the meaning of the [[Draconic Prophecy]]. The observatory consists of great chambers
of crystal and metal, lined with huge orreries that track
and align with the planes and the Ring of [[Siberys]].
These immense locations are constructed by and
for [[dragon]]s. The orreries that surround the central
space track the courses of the planes as they shift toward and away from Eberron. All about the observatory
are enormous [[dragonshard]]s of all three kinds (Eberron,
Khyber, and Siberys).
Each observatory must be built in a location that is
balanced between [[Siberys]] and [[Khyber]]; finding such a
site might take years of careful study and surveying, and
these places are typically remote. Several are located
in [[Argonnessen]]; those in [[Khorvaire]] are usually found
in mountain ranges and hidden forest clearings. Many
have crystal roofs, or domes that open with the aid of
great mechanisms to allow an unobstructed view of
the night sky, since the movements of Eberron's moons
are thought to correspond to the shifting relationships
among the planes.
<$list filter="[list{!!title}sort[title]]">
<$macrocall $name="tag" text={{!!title}}/>
</$list>
The Material Plane is enfolded by thirteen planes of existence. All of them overlap with [[Eberron]] in some way, and they influence and are influenced by the Material Plane. The intensity of this influence waxes and wanes; scholars often depict the planes as orbiting Eberron—sometimes coming close, other times
far away—though this manner of expression is merely
a metaphor for their shifting influence. When another
plane's influence on the Material Plane is especially
strong, the plane is said to be coterminous. When its
influence is weak, a plane is remote. The state of a plane can be important for performing epic rituals, creating of [[eldritch machine]]s, or interacting with extraplanar entities. Whether or not a plane is remote or coterminous at
a given time depends entirely on the needs of your story.
!! Universal Properties
If adventurers visit one of the planes, they'll find it has certain
unnatural properties that can be felt consistently throughout
the entire plane of existence. A plane's universal properties
can often be felt on Eberron itself; one of the most common
effects of [[manifest zone]]s is to extend one or more of that
plane's universal properties into the Material Plane, sometimes
reliably, other times unpredictably. The page for each plane
presents a list of universal effects that affect that entire plane;
these generally apply to all creatures within that plane.
Time doesn't pass at the same rate on every plane; it could
move faster, slower, or even unpredictably.
!! Planar Denizens
Every plane's inhabitants are unique, but each creature can generally be classified in one of the following categories.
* [[manifestation]]s
* [[immortal]]s
* mortals (either native to the plane or to Eberron)
The same type of creature can appear in different planes—[[demon]]s can be found in [[Fernia]], [[Dolurrh]], [[Shavarath]], and more. They might use the same statistics, but
their appearance and motivations vary dramatically based on
their planes, and they have no sense that being “demons” makes
them all allies. The [[balor]] of Shavarath embodies the savagery
of war; its wings are of steel, and blood drips from its notched
sword. The balor of Fernia represents the terrifying destructive
power of fire; its wings and sword are made of pure flame. With
any planar creature—especially [[immortal]]s—consider the idea it
represents and how that can be uniquely embodied.
!! Coterminous and Remote
The planes of Eberron are often
depicted as orbiting the Material Plane, reflecting the fact that
they move into and out of alignment with it. When a plane is
coterminous, it's aligned; the plane's influence grows over the
entire world, and it amplifies the effects of existing [[manifest zone]]s. On the other hand, when a plane is remote, its power
fades; since the planes are always influencing the Material in
subtle ways, their absence impacts the world as strongly as
their presence does. Multiple planes can be coterminous at the
same time; these planar conjunctions are often related to the
interactions of the [[moon]]s, and characters knowledgable in arcane lore
can usually work out upcoming conjunctions.
These planar cycles are intended as plot devices, so DMs
don't need to run them on strict calendar cycles. Instead, use
them to suit the story. They can add an interesting mechanical
twist to an adventure: because [[Mabar]] is coterminous, all
[[undead]] are stronger! They can drive a villain's plot: //[[Lady Illmarrow]] must be stopped from activating the device in three days' time, when both [[Mabar]] and [[Dolurrh]] are coterminous—a conjunction that won't happen again for another century!//
It's ultimately up to the DM to decide when planes are
coterminous or remote. If it suits the story for Dolurrh to be
remote for the next three days, make it so—just be sure to
inform the arcane scholars among the adventurers, who'd
likely know such a thing in advance. Other DMs might prefer
to have concretely established cycles, which can add their
own interesting flavor to an adventure. For example, Mabar
is always coterminous on the nights of the new moon closest
to the winter solstice, a time known as [[Long Shadows]]. On
these nights, friends and family gather together and keep lights
burning through the night.
!! The Planes
<<list-links-article "[tag{!!title}sort[title]]">>
You and up to eight willing creatures who link hands in a circle are transported to a different [[plane]] of existence (except [[Dal Quor]]). You can specify a target destination in general terms, such as the City of Brass in [[Fernia]] or the storefront of Bor'ob the slaad in the [[Immeasurable Market]] in [[Syrania]], and you appear in or near that destination. If you are trying to reach the City of Brass, for example, you might arrive in its Street of Steel, before its Gate of Ashes, or looking at the city from across the Sea of Fire, at the DM's discretion.
Alternatively, if you know the sigil sequence of a [[teleportation circle]] on another plane of existence, this spell can take you to that circle. If the teleportation circle is too small to hold all the creatures you transported, they appear in the closest unoccupied spaces next to the circle.
You can use this spell to banish an unwilling creature to another plane. If you are touching a creature, you can attempt this spell; if the creature fails to resist, it is transported to a random location on the plane of existence you specify. A creature so transported must find its own way back to your current plane of existence.
Planetars act as the weapons of the [[planar|plane]] force they serve, presenting a tangible representation of one of their plane's aspects. A planetar can call down rain to relieve a drought, or can loose an insect plague to devour crops. A planetar's celestial ears detect every falsehood, and its radiant eyes see through every deception.
Most planetars are muscular and hairless and have opalescent green skin and white-feathered wings. They tower over most humanoids, brandishing immense swords with grace.
Plants in this context are vegetable creatures, not ordinary flora. Most of them are ambulatory, and some are carnivorous. The quintessential plants are the [[shambling mound]] and the [[treant]]. Fungal creatures such as the [[gas spore]] and the [[myconid]] also fall into this category.
<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
Plasmids are shapeshifters, [[magebred|magebreeding]] by the [[sahuagin]] of the
[[Thunder Sea]] using [[mimic]] stock infused with the ichor of the
[[dreamers|kar'lassa]]. Plasmids serve both as deadly guardians and living
tools, reshaping their mutable bodies to serve the needs of
their sahuagin masters.
//''Skin of Stone and Steel.''// A plasmid can change the texture
of its flesh as well as its appearance. In addition to making the
plasmid resistant to injury, this allows the creature to assume
many functional forms. A plasmid can serve as a door with no
lock or a chest with no lid, creating an obstacle that can only
be opened by killing the plasmid. Plasmids can also be trained
to assume shapes that serve as functional tools. A plasmid
can become an [[alchemist]]’s lab or a smith’s forge, providing
all the elements needed to pursue a trade. While this allows
the plasmid to “serve as a tool,” the plasmid remains a large
creature; it essentially becomes a workbench, with individual
smaller tools connected to the primary mass by fibrous strands.
//''Loyal Servants... For Now.''// Plasmids possess a passive
form of telepathy that allows them to sense the commands of
nearby [[sahuagin]]. While they are conscious, they have a limited
sense of self and no desires beyond service. At least, that’s
how they were designed and what the sahuagin believe. But it
might be possible for a plasmid to develop greater intellect and
independence—or for the plasmids of an [[Eternal Dominion]] city to be shaped by the
desires of the local [[kar'lassa]].
''District Type:'' Wealthy residential<br/>
''Buildings:'' Upscale residences (250), average
residences (30)<br/>
''First Impression:'' The townhomes in this district
are large and well kept, clearly displaying the wealth
of their occupants. Servants move about on the
business of their employers, and guards can be seen
posted at many of the doors.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Den'iyas]] (north); [[University District]] (northwest); [[Dalan's Refuge]] (bridge, southeast); [[Ocean View]] (bridge, south); [[Little Plains]] (below)
Platinate, among [[Sharn]]'s most desirable residential districts, isn't as exclusive as [[Mithral Tower]]
in [[Upper Central]], but certainly compares to [[Oak Towers]] and [[Crystal Bridge]] in [[Upper Northedge]].
[[Morgrave University]] produces few scholars wealthy
enough to live in Platinate, but some retired
explorers who struck it rich selling artifacts from
[[Xen'drik]] settled in this district to remain close to
the University. There are just enough eccentric
collectors of antiquities and retired adventurers to
give Platinate a quirky character that distinguishes
it from similar districts.
''District Type:'' Fine shops<br/>
''Buildings:'' Upscale lodging (15), upscale food (25),
exotic trades (40), upscale trades (120), upscale
residences (80)<br/>
''First Impression:'' Stores, restaurants, hotels, and a
few homes in this prosperous neighborhood are all
high-priced and lavish.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Korranath]] (south); [[Oak Towers]] (bridge, northeast); [[Tradefair]] (below)
Platinum Heights is the finest commercial district
in [[Sharn]], home of the most exclusive businesses,
from restaurants to [[magic item]] dealers.
!! Noteworthy Locations
* [[Aurora Gallery]]. The most prestigious auction house in Sharn, Aurora deals in magic items, exotic finds from [[Xen'drik]], and other wonders.
* [[Gray Dragon Inn]]. This inn provides aristocratic and wealthy lodging for those who can afford it.
* [[Sannid's]]. One of Sharn's most celebrated restaurants, Sannid's serves Brelish cuisine of wealthy quality and has a legendary wine cellar.
This four-faceted lead weight is hung on a long leather strip, which can be wound around the haft or handle of any melee weapon. You may remove the plumb and transfer it to another weapon whenever you wish. Weapons with the plumb attached to it deal additional force damage. You may activate the plumb to change this additional damage type to fire, cold, lightning, or back to force.
This pair of purple leather gauntlets are studded with colorful gems and strange runes. The [[artificer]] who designed them intended to create powerful, spell-enhancing gauntlets, but he didn't really know what he was doing and made these instead.
Three times per day, the wearer can cast a completely random spell (cantrip, common, or rare [[tier|spell tier]]) on a chosen target. If the range of that spell is less than 30 feet, it becomes 30 feet. Any [[consequence]] also triggers a [[random magical effect]], as does any "dud" spell (such as casting [[awaken]] on a beast).
<$button>
<$action-chooserandom $filter="[category[spell]!tier[4]!tier[5]]" $field="spell"/>Random Spell
</$button>
<<<
<$link to={{!!spell}}/>
<<<
{{random magical effect}}
Given their insidious and deadly nature, poisons are illegal in most societies but are a favorite tool among assassins, the [[drow]] of [[Xen'drik]], and other unscrupulous characters.
<<list-links-article "[tag{!!title}sort[title]]">>
This thin, black oil tastes strongly of burnt almonds. When you drink this potion, your saliva and blood becomes incredibly poisonous to other creatures for up to four hours. After the effect passes, you suffer extreme nausea for up to an hour.
The settlers of [[Q'barra]] have never truly understood
the Poison Dusk. The majority of settlers still believe
that the Poison Dusk is one of the tribes of the [[Cold Sun Federation]] and that the different species comprising it are all just different forms of [[lizardfolk]]—that the
[[kobold]], [[troglodyte]], and [[lizardfolk]] share
the same relationship as a [[goblin]], [[hobgoblin]], and
[[bugbear]].
Those who have studied the Dusk more closely
recognize that it is an alliance of different species
but have still drawn flawed conclusions. The most
common among these is that the Poison Dusk are a
cult that worship the [[dragon]] [[Rhashaak]]. It is true that
[[Haka'torvhak]] is the stronghold of the Poison Dusk,
and that they pay homage to the corrupted dragon,
but this is because Rhashaak is the voice of the [[overlord]] [[Masvirik]]. ''The Poison Dusk is the harbinger of the Cold Sun.''
Where do they come from? If the Poison Dusk is
hated by both [[lizardfolk]] and [[dragonborn]], how have
they managed to survive?
[[Masvirik]] is immortal, and his essence pervades
[[Q'barra]]. He has influence over all reptilian creatures.
The web of [[dawn shard]]s scattered across the land
reduces his power but doesn’t block it completely.
Touched by the [[Silver Flame]], the [[Masvirik’Uala|Cold Sun Federation]] [[lizardfolk]] are the most resistant to his power, while the [[kobold]]s of the region are the most easily corrupted. Beneath the surface of Q’barra, he is served by a host
of [[troglodyte]]s. New [[dragonborn]] are drawn to his
service with every generation. His power is strongest
in [[Haka'torvhak]] itself. This is why the dragonborn
have never been able to completely cleanse Masvirik’s
stronghold. For generations they would raid the
Haka’torvhak and slaughter all of [[Rhashaak]]’s soldiers,
but in time, new servants are drawn to the city. All too
often, these new agents of the Poison Dusk include
the [[dragonborn]] assigned to watch over it.
The Poison Dusk are fanatically devoted to [[Rhashaak]] and [[Masvirik]]. They serve with the fervor of the [[demon]]ically possessed—and some of them are. The majority of Rhashaak’s fiendish servants were bound along with the [[overlord]]s. The [[dusk shard]]s found across Q’barra hold fragments of these demonic
beings, and this power can be transferred to agents of
the Poison Dusk.
As a result, the Poison Dusk and [[lizardfolk]] have
been battling over [[dragonshard]]s for thousands of
years. The Poison Dusk seeks to gather the [[dusk shard]]s for their own purposes while reducing the areas covered by dawn shards. The [[lizardfolk]] wish
to keep the dusk shards out of the hands of their
enemies.
The arrival of House [[Tharashk]] has destroyed this
balance of power. Thanks to the [[Mark of Finding]], the
[[dragonmarked house]] has recovered more [[dusk shard]]s
in the last ten years than the Poison Dusk has in the
last thousand.
Thus, both the [[Masvirik'Uala|Cold Sun Federation]] and Poison Dusk
attack [[Tharashk]] holdings. Where the [[lizardfolk]] do
their best to cripple mining operations, the Poison
Dusk take shards while otherwise leaving an
operation intact. The Poison Dusk is happy to have
Tharashk doing the work of prospecting and mining;
they just want the shards.
[[Masvirik]] has no servants among the [[Lords of Dust]].
His fiendish agents are bound in [[dusk shard]]s, and
[[Rhashaak]] is his voice. He is a hateful being, filled
with malice for all. For centuries he has simply sought
to slaughter all those who will not serve him. It is only
now, with the potential value he sees in House [[Tharashk]], that Masvirik is trying more subtle schemes to attain his goals. One possible arc for a campaign
would be to introduce [[yuan-ti]] to [[Q'barra]], as [[human]]s
newly transformed by the power of the Cold Sun. The
Poison Dusk has never managed to destroy [[New Galifar]] by force... can it be corrupted from within?
!! The Poison Dusk in Battle
The Poison Dusk is comprised of [[kobold]]s, [[troglodyte]]s, [[dragonborn]], and a small number of [[lizardfolk]] (mostly [[blackscale]]). These come in three varieties.
''Corrupted'' members of the Poison Dusk are
driven by savage instinct. They are brutal and aggressive but rarely employ complex tactics unless under the leadership of a [[dusk shard]] cultist or fiendish
vessel. Any existing creature of the appropriate race
can be used with the Poison Dusk, though spellcasters are rarely found among them.
''Dusk shard'' creatures can be identified by the
sliver of [[dusk dragonshard|dusk shard]] embedded in their torso
or forehead. The tiny shard strengthens their bond to
[[Masvirik]], and this in turn changes them in mind and
body. Dusk shard creatures are innately more intelligent than lesser servants of the Poison Dusk, and any spellcasters serving the Poison Dusk will have dusk
shards; their mystical knowledge is imparted through the shard. Dusk shard soldiers are better equipped than the base, corrupted masses, and they have the skill to use fine weapons and armor. Many are physically transformed so that they possess serpentine or draconic traits and specifically resemble a [[black dragon]]; see [[blackscale]] for an example of this.
''Fiendish vessels'' are the most powerful agents
of the Poison Dusk. These bear larger shards and are
hosts for the trapped servants of [[Masvirik]]. The vessel
is completely dominated by the [[fiend]] and speaks with
the voice of the ancient spirit. The power of the vessel
depends on the size and purity of its embedded shard.
A vessel with a smaller shard is sometimes referred to as a
"Slithering Idol", and may have the power to hypnotize with their eyes, resist all poisons, or a variety of serpentine abilities. A vessel with a larger shard is actually transformed
into an avatar of the imprisoned spirit, and while it
maintains the general appearance of the original host
creature, you can use the statistics of the [[fiend]] or [[rakshasa]] associated with the shard. When the creature is slain, its body reverts to its original, natural shape.
The shards of a fiendish vessel or dusk shard cultist retain their power after the death of the bearer. This is the source of the shard pits in [[lizardfolk]] villages; shards are collected from fallen foes to keep them from being used again.
Normally it takes time for a shard to transform
its bearer, but at the DM’s discretion, the [[shard|dusk shard]] of a
fiendish vessel could be so strong that an ally could
pluck it from the chest of the fallen vessel and become
a new host. Only a handful of shards with this
level of power exist, but they are virtually impossible
to destroy. The Poison Dusk will go to great lengths to
regain such a shard if it is lost.
The spellcaster extends their hand toward a creature they can see within 10 feet and projects a puff of noxious gas from their palm.
While holding this 10-foot pole, you can speak a command word and transform it into a fishing pole with a hook, a line, and a reel. Speaking the command word again changes the fishing pole back into a normal 10-foot pole.
While holding this 10-foot pole, you can speak a command word and cause it to collapse into a 1-foot-long rod, for ease of storage. The pole's weight doesn't change. You can speak a different command word and cause the rod to revert to a pole; however, the rod will elongate only as far as the surrounding space allows.
This item has other variations, such as ladders, planks, and hoops.
This spell transforms a creature that you can see within 60 feet into a new form. An unwilling creature can try to resist the effect. The spell has no effect on a shapechanger (such as a [[changeling]] or [[rakshasa]]) or an incapacitated creature.
The transformation lasts for up to 1 hour, or until the target is incapacitated or dies. The new form can be any beast, the type of which is contingent on the power of the target. The target's physical and mental capabilities are replaced by those of the chosen beast, but it retains its ethics and personality.
The creature is limited in the actions it can perform by the nature of its new form, and it can't speak, cast spells, or take any other action that requires hands or speech.
The target's gear melds into the new form. The creature can't activate, use, wield, or otherwise benefit from any of its equipment.
This long, red tassel can be attached to the pommel of a sword (or other weapon).
When you unsheathe the sword, the tassel wraps around
your forearm and you can't be disarmed. When the sword
is sheathed, the tassel falls limp and releases your arm.
The mainstay of the [[Riedran|Riedrans]] diet is the pomow plant. This fruit was developed by the [[Bountiful Horn]] during the first few centuries of the [[Riedra]]n unification. Its origin remains a mystery, but common belief is that it involved metacreation techniques and [[wild zone]]s bound to [[Lamannia]].
Pomow is a hardy crop that can
grow in a range of climates, and every part of the plant
has a use. The meat, root, and seeds can all be eaten, and
are remarkably high in protein; the core is filled with
juice; the bushy fibers around the stalk can be worked
into thread, much like cotton; and strips of the tough
rind are sharp enough to shave with.
A pomow is a dark
purple spheroid, ranging from one foot to two feet across.
Pomow plants are remarkably fecund, and a stalk begins
growing new fruit as soon as the sphere is plucked.
North of the [[Glum River]] lies a misty pool of black water. It is said that creatures who look into this pool can see visions of the past, present, and future, and that the waters are
attuned to the most significant events in [[Eberron]].
Nobles, merchants, and ambitious
adventurers have sought out the Pond of Shadows,
and the PCs might be hired on as guides for such an
expedition. Alternatively, the pond might reveal a
secret important to one of the PCs—or show a possible
future that must be prevented at any cost.
When the engineers were building [[Blackbones]], they discovered a bizarre
phenomenon—a small pool of cool, crystal-clear water
surrounded by a larger pool of blazing lava. In addition to surviving the heat, the water actually seemed to be replenished by an unseen source. Curious, a [[dwarf]] priest ordered a forge set up near the pool. A skilled smith, he found that if he used the heat of the lava and then tempered his work in the cool water, his work
was far better than what he was used to producing. He
declared the site to be the work of the sovereign lord
[[Onatar]]. Today, smiths and metalworkers from across
[[Khorvaire]] come to [[Sharn]] to be blessed at the pool. A
temple has been built around the pool, and services
to Onatar are held within. Those who seek a special
blessing are allowed to dip their hands into the water,
which is said to enhance their own talents.
The powers of the pool may be largely legendary, but they are not completely false. Anyone who tempers a metal item using water from the pool receives an advantage on the attempt,
though the priest rarely allows anyone to take water from the pool. And if a cleric or paladin casts a spell from the Artifice domain within 10 feet of the pool, he has advantage on that roll.
The current caretaker of the pool is actually a
[[warforged]]—one of the few warforged priests on [[Khorvaire]]. Smith served in the [[Last War]]; along the way he developed a deep faith in [[Onatar]], who he believes guided [[human]]ity to create the warforged race. Smith believes that the god has a plan for the warforged, and he has done his best to get other members of the warforged community to embrace his vision. Smith is deeply opposed the violent ideology of the [[Lord of Blades]], and firmly believes that the warforged and the creatures of flesh are meant to live together.
This object appears as a tightly rolled bundle of canvas
that measures 1 foot long and 6 inches in diameter. You
can speak its command word to cause the
bundle to unroll and assemble into a tent that sleeps up to
two human-sized creatures.
Speaking the command word again causes the tent to
roll back into a bundle, provided that no creatures are
inside. Any objects inside the tent when it collapses are
ejected and remain outside the tent as it folds.
This set of dark brown leather armor is painted with lines that resemble woodgrain. If the wearer can channel [[primal magic]], they can cause a layer of sharp quills to sprout from the armor's surface, damaging anyone who touches the wearer.
Port Cairn lies on the southern coast of [[Farlnen]], on the coasts of the [[Straits of Orthoss]]. It is the home port of the ships of the [[Bloodsails]], which are built using a type of [[soarwood]] that allows even their largest vessels to safely navigate the shallow harbor.
The population of Port Cairn is almost entirely [[elves|elf]]. A small number of [[eladrin]] also make their home here.
Port Krez is the easternmost town in the [[Lhazaar Principalities]], situated on the island of [[Krag]] and looking out on endless miles of empty [[sea|Lhazaar Sea]]. Home to
Prince [[Mika|Mika Rockface]] and her [[Cloudreavers]], Port Krez is the
antithesis of [[Regalport]]—everything one pictures when
imagining a town run exclusively by and for the pleasure of pirates. Any vice can be indulged here, and
the only regulations recognized in town are the laws
of the sea. Mika’s folk take what they can and hold it
as long as they can defend it.
From Port Krez, the Cloudreavers launch attacks
on seagoing trading vessels, unprotected towns along
the [[Khorvaire]] coast, and any ship unlucky enough to
come out on the wrong side of the gray waters of [[Lastpoint]].
Port Verge is the royal port of the [[Diresharks]] Principality. Prince [[Kolberkon]] yearns to expand Verge and
overshadow [[Regalport]], and he is always looking for
capable adventurers and allies. The [[Blood of Vol]] has a
strong presence in Port Verge, and Kolberkon recently
allowed House [[Lyrandar]] to establish an [[enclave]] there.
But Kolberkon's thirst for glory may lead him to foolish bargains.
This fine black cloth, soft as silk, is folded up to the dimensions of a handkerchief. It unfolds into a circular sheet 6 feet in diameter.
You can unfold a portable hole and place it on or against a solid surface, whereupon the portable hole creates an extradimensional hole 10 feet deep. The cylindrical space within the hole exists on a different plane, so it can't be used to create open passages. Any creature inside an open portable hole can exit the hole by climbing out of it.
You can close a portable hole by taking hold of the edges of the cloth and folding it up. Folding the cloth closes the hole, and any creatures or objects within remain in the extradimensional space. No matter what's in it, the hole weighs next to nothing.
If the hole is folded up, a creature within the hole's extradimensional space can attempt to force its way out. On a successful check, the creature appears within 5 feet of the portable hole or the creature carrying it. A breathing creature within a closed portable hole can survive for up to 10 minutes, after which time it begins to suffocate.
Placing a portable hole inside an extradimensional space created by a [[bag of holding]], [[handy haversack]], or similar item instantly destroys both items.
Sealed inside this small amethyst and silver earring is the soul of an infamous burglar. A sarcastic and bitingly witty [[gnome]], this thief was blown to smithereens and her soul trapped in this earring by a vindictive [[wizard]] who had been robbed one too many times.
While wearing this earring, the soul inside can provide advice on fencing, lockpicking, robbery, and other such clandestine objectives.
This dainty band of silver etched with flowering vines is possessed by the spirit of a wizard, accidentally sealed into this ring in a failed immortality experiment.
The wizard, though resigned and somewhat depressed, is capable of identifying nearly any [[magic item]] or other magical artifact as long as the user can accurately describe it.
If you plant an ordinary shrub in this 10-pound clay pot and let it grow for 30 days, the shrub magically [[awaken]]s at the end of that time. When the shrub awakens, its roots break the pot, destroying it.
The awakened shrub is friendly toward you. Absent commands from you, it does nothing.
<<list-links-article "[tag{!!title}sort[title]]">>
When you drink this potion, you gain the effect of the [[clairvoyance]] spell. An eyeball bobs in this yellowish liquid but vanishes when the potion is opened.
Also known as "treefrog tincture", this potion is pale yellow and sticky, and tastes of bile. When you drink this potion, a thin layer of foul, sticky slime oozes from your hands and feet. You can climb walls and grip surfaces with ease for 1 hour.
When you drink this potion, you gain the effect of a [[comprehend languages]] spell for 1 hour. This liquid is a clear concoction with bits of salt and soot swirling in it.
<<<
{{comprehend languages}}
<<<
When you drink this potion, your size halves in all dimensions, and your weight is divided by eight. The effect lasts for 1 minute. Higher-rarity versions of this potion extend the duration.
The red in the potion's liquid continuously contracts to a tiny bead and then expands to color the clear liquid around it. Shaking the bottle fails to interrupt this process.
After drinking this potion, you can exhale a 30-foot-cone of fire. The effect ends after you exhale the fire three times or when 1 hour has passed.
This potion's orange liquid flickers, and smoke fills the top of the container and wafts out whenever it is opened.
When you drink this potion, you can fly as fast as you can run for 1 hour and can hover. If you're in the air when the potion wears off, you fall unless you have some other means of staying aloft. This potion's clear liquid floats at the top of its container and has cloudy white impurities drifting in it.
When you drink this potion, you gain the effect of the [[gaseous form]] spell for 1 hour or until you choose to end the effect. This potion's container seems to hold fog that moves and pours like water.
<<<
{{gaseous form}}
<<<
When you drink this potion, your physical strength matches that of a [[hill giant]]. Higher-rarity and higher-potency versions of this potion exist.
When you drink this potion, your size doubles in all dimensions, and your weight is multiplied by eight. The effect lasts for 1 minute. Higher-rarity versions of this potion extend the duration.
The red in the potion's liquid continuously expands from a tiny bead to color the clear liquid around it and then contracts. Shaking the bottle fails to interrupt this process.
When you drink this potion, your body's natural healing is rapidly accelerated. The potion's red liquid glimmers when agitated.
Higher-rarity versions of this potion accelerate healing even faster.
This potion's container looks empty but feels as though it holds liquid. When you drink it, you become invisible for 1 hour. Anything you wear or carry is invisible with you. The effect ends early if you attack or cast a spell.
For 1 minute after you drink this potion, you have resistance to all damage. The potion's syrupy liquid looks like liquified iron.
When you drink this potion, you gain resistance to one type of damage (e.g. fire, lightning, necrotic) for 1 hour. The DM chooses the type or determines it randomly.
When you drink this potion, your mind and body can move twice as fast for one minute. When the effect ends, you can't move for about ten seconds as a wave of lethargy sweeps over you.
The potion's yellow fluid is streaked with black and swirls on its own.
When you drink this potion, you don't need to blink for eight hours.
When you drink this potion, you gain the following benefits for the next 8 hours: magic can't put you to sleep, and you can remain awake during a long rest and still gain its benefits. This sweet, amber-colored brew has no effect on creatures that don't require sleep, such as [[elves|elf]].
You can breathe underwater for 1 hour after drinking this potion. Its cloudy green fluid smells of the sea and has a jellyfish-like bubble floating in it.
This magical pouch appears as a normal belt pouch. A creature holding the pouch can speak or make a sound no longer than six seconds into the pouch and then seal it.
When the pouch is unsealed, squeezed, or otherwise opened, the sound that it was holding emerges at exactly the volume that it was originally made into the pouch. Once the sound escapes, it must be refilled.
The [[Age of Giants]] ruin known as Pra'xirek lies near one of the heads (sources) of the [[Hydra River]]. The first thing one notices upon reaching the shores of the lost city is its almost incomprehensible scale. Pra'xirek was once a great metropolis, home to hundreds of thousands of titans and twice as many [[elf]] slaves at its height. The massive granite and marble ruins stretch for miles from the river shore, stabbing up through the thick growth of trees. Part of the city has been swallowed by water over the centuries, while the rest has become one with the jungle. There is no clear boundary between where the ruins start and the jungle begins.
The ruins are inhabited by the following groups:
* The self-styled "Ancient Ones", a tribe of [[cloud giant]]s led by a [[sorcerer]] who calls himself Skyfather, dwell in the floating Great Hall and demand tribute from the [[hill giant]]s below.
* A tribe of [[hill giant]]s inhabit the old center of the city, clinging to an almost religious conviction that the old city belongs to them. They cater to the whims of the [[cloud giant]]s, who they believe are gods.
* A tribe of [[Vulkoor]]i [[drow]] called the Ka'ki'kur, led by a cunning and ruthless tactician named Ghyrra, see the ruins and all [[magic item]]s within as their inheritance from a long-dead nation. They seek to kill all remaining giants Pra'xirek.
* A tribe of [[locathah]] known as the Yiidro dwell in the submerged ruins of what was once Pra'xirek's river dockside district.
''District Type:'' Warehouse district<br/>
''Buildings:'' Warehouses (70), poor food (4), exotic
trades (2, see [[Dar San]]), poor trades (35), poor services (70), average residence (1), poor residences (500), shrine (the
Inspired), other (5)<br/>
''First Impression: ''This district, dominated by massive warehouses that hold the cargo of the merchant
ships that ply the Dagger River, consists of storage
towers surrounded by tenements, flophouses, and an assortment of workhouses and businesses of
questionable trade practices.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Callestan]] (east); [[Gate of Gold]] (northeast); [[Oldkeep]] (north); the [[Stores]] (south); [[Sharn's Welcome]]/[[Grayflood]] (below and west); [[Underlook]] (above)
The skydocks of Precarious lean out into the air
high above the [[Dagger River]]. Vast mystical cranes
and magic lifts use levitation and the power of [[Syrania]]
to haul loads of cargo and people to and from the
waterfront districts of [[Cliffside]]. An army of laborers transports goods between the docks and the
warehouses in the district—both the massive storage
towers and the smaller warehouses. While sailors
generally find entertainment in [[Cliffside]], Precarious houses a variety of crafts and services. Mills
and workhouses make immediate use of the raw
materials brought up from the Dagger River, while
a few dingy taverns, gambling dens, and [[dreamlily]]
dealers provide the workers with a chance to leave
their cares—and their silver—behind. A variety of
criminal trades are practiced in Precarious; the
[[Boromar Clan]] has a hand in many of the businesses
in the area due to their considerable investments in
smuggling and shipping.
Precarious plays an important part in the economy of [[Sharn]], and as a result the [[City Watch|Sharn Watch]] maintains an active presence in the district. The Watch
maintains a small garrison in the area to watch for
smugglers—or at least to ensure that the proper
bribes are paid. The Watch also protects the tariff
office, the large customs agency on the skydocks that
handles taxation of goods. The Watch protects trade;
petty crimes are not their concern, and Precarious is
definitely a dangerous place for average citizens and
visitors. Tourists and important visitors arriving by
ship generally hire a [[Deneith]] escort at [[Grayflood]]
to ensure safe passage through [[Lower Dura]] to the
higher levels of the city.
House [[Kundarak]] maintains five high-security warehouses in this district. These warehouses are especially secure, combining a variety of magical [[abjuration]]s with mundane traps. These warehouses cost twice as much to use as other warehouses in Precarious, but merchants with a serious interest in security readily pay the price.
!! Noteworthy Locations
* [[Dar San]]. A small [[Riedra]]n community has carved out a neighborhood for themselves amongst the warehouses of Precarious.
This small capsule is made of beeswax blended with sand and a variety of enchanted water plants. A creature who consumes a pressure capsule ignores the effects of swimming at depths greater than 100 feet.
This spell is a minor magical trick that novice [[wizard]]s and [[artificer]]s use for practice. You create one of the following magical effects within 10 feet:
* You create an instantaneous, harmless sensory effect, such as a shower of sparks, a puff of wind, faint musical notes, or an odd odor.
* You instantaneously light or snuff out a candle, a torch, or a small campfire.
* You instantaneously clean or soil an object no larger than 1 cubic foot.
* You chill, warm, or flavor up to 1 cubic foot of nonliving material for 1 hour.
* You make a color, a small mark, or a symbol appear on an object or a surface for 1 hour.
* You create a nonmagical trinket or an illusory image that can fit in your hand and that lasts until the end of your next turn.
Primal magic draws on the ambient power of the natural world, and is commonly used by [[druid]]s and rangers. Despite some similarities to both [[arcane magic]] and [[divine magic]], primal magic stands apart from these forms of spellcasting in that it draws from the latent energy of [[Eberron]] itself, rather than purely from the Ring of [[Siberys]].
The druids of [[Eberron]] hold animistic beliefs completely unconnected to any of the other [[religion]]s of the world. They believe that every living thing and every natural phenomenon—sun, moon, wind, fire, and the world itself—has a spirit. Their spells, then, are a means to communicate with and command these spirits. Some arcane scholars agree with this principle, but attribute it to the magical essence of [[Lamannia]], the [[plane]] of primordial nature, and claim it is this essence which druids manipulate when they use primal magic. In that case, primal magic could be considered a branch of [[Externalist Theory]].
!!! <<showspells-school {{!!title}}>>
Imagine [[Terminus Station]] in [[Sharn]], but instead of [[skycoach]]es
and rail tickets, portals lead to different [[layer]]s. Hundreds of
subjects and [[modron]]s mill about, standing in orderly queues
as they wait to pass through a portal. By Daanvian law, all
travelers must pass through the Prime Gate, where [[plane shift]]
and astral travel deposit adventurers. If people enter Daanvi
through some other means, they're in violation of the law—never a good idea.
While the Prime Gate's bustling appearance suggests Daanvi
is as welcoming to travelers as [[Syrania]], most traffic consists of
local commuters moving between layers. Extraplanar visitors
must acquire travel passes from the Passage Authority; how
difficult this is depends on the tone of the Authority when you
arrive... and this shifts from day to day. If the Authority is
just, the [[angel]]s keep it moving quickly and smoothly; as long as you truly have a valid reason for your travel, you should be
able to pass. If the Authority is even-handed, it's managed by
[[modron]]s; it's possible to get through, but there are immense
lines and a lot of redundant paperwork. In addition to having
a clearly stated reason for travel, modrons might only provide
access to specific layers, or impose restrictions—“You'll have
to drink that potion now or throw it away.” And if the Authority
is oppressive that day, the [[devil]]s on duty make it a living hell;
the question is whether they're more interested in extortion or
tormenting travelers with bureaucratic burdens. Do they want
a bribe? Do you need to perform a service for them? This is an
archetypal abuse of power; what makes a good story?
The [[archfey]] known as the Prince of Frost was once the Prince of Summer,
but his heart froze when his beloved fled with a mortal
hero. The escaping lovers cast their spirits forward in
time, and the Prince waits in his castle of frozen tears (the [[feyspire]] [[Taer Syraen]]) for
their return and his revenge. Until then, he torments all
virtuous heroes who cross his path, reflecting the story
of a good person turned cruel by loss.
This lipstick takes 1 minute to apply and lasts 24 hours.
While wearing it, your lips change color once every hour.
You perform a 10-minute ritual that makes an area within 120 feet magically secure. The area is a sphere with a radius as small as 2 feet to as large as 50 feet. The spell lasts for 24 hours or until you choose to dismiss it.
When you cast the spell, you decide what sort of security the spell provides, choosing any or all of the following properties:
* Sound can't pass through the barrier at the edge of the warded area.
* The barrier of the warded area appears dark and foggy, preventing vision (including darkvision) through it.
* Sensors created by [[divination]] spells can't appear inside the protected area or pass through the barrier at its perimeter.
* Creatures in the area can't be targeted by divination spells.
* Nothing can teleport into or out of the warded area.
* [[Planar|plane]] travel is blocked within the warded area.
Casting this spell on the same spot every day for a year makes this effect permanent.
If you are able to cast [[legendary-tier|spell tier]] spells, you can cast this as such to increase the maximum radius of the warded area to 200 feet.
Every child knows the story of the Progenitor Dragons:
[[Siberys]], [[Eberron]], and [[Khyber]]. In the dawn of time,
these three cosmic beings created thirteen [[plane]]s of
existence, each embodying a concept. Their final work
was the Material Plane, where all ideas would become
manifest: a realm that could know war and peace, life
and death, order and chaos. But cruel Khyber sought
ultimate dominion over this new reality. She struck Siberys without warning and tore him apart. Eberron wrestled with Khyber and bound the traitor in her coils but
could not defeat her. So Eberron became a living prison,
a world that would forever contain Khyber's evil.
Almost every culture in the world shares this story as
a myth that explains the world. Shattered [[Siberys]] became the ring of golden [[dragonshard]]s wrapped around
the planet, said to be the source of magic. [[Eberron]] is
the world, the source of all natural life. And [[Khyber]] is
the Underdark and the source of [[aberration]]s and [[fiend]]s,
forever struggling against her bonds and yearning to destroy the world above.
See also [[Thir]].
This Y-shaped wand, bearing the emblem of the [[Mark of Finding]], has stored magical power that can be expended to enhance the power of someone wielding that [[dragonmark]]. The wand can be used 3-8 times before it needs to be recharged overnight.
You can expend this power instead of your own energy in order to:
* Sense the direction a specific object familiar to you, as long as it is within 1000 feet of you.
* As above, but for a specific creature. This counts as two uses of the wand.
* Sense the direction and distance of a specific beast, plant, or mineral within five miles. When you cast this spell, you can specify the minimum quantity of that beast, plant, or mineral that you wish the spell to find within a 30-foot-radius sphere, such as “at least 3 pounds of Eberron [[dragonshard]]s” or “at least five deer.” You learn the direction and distance to the closest occurrence in that concentration, if any are present.
For up to 1 hour, or until you break your concentration, the willing creature you touch gains magical resistance to one of the following: acid, cold, fire, lightning, or force.
Sovereign nations in Eberron are sometimes broken up into provinces, or distinct territories within that nation that act as administrative units. At one point, each of the [[Five Nations]] were considered provinces of united [[Galifar]]. Today, in [[Sarlona]], the [[provinces|Sarlonan province]] of [[Riedra]] and [[Syrkarn]] are named after twelve kingdoms that fell during the [[Sundering]].
!! Provinces
!!! Sarlona
<<list-links-article "[tag{!!title}tag[Riedra]] [tag{!!title}tag[Syrkarn]] +[sort[title]]">>
!!! Elsewhere
<<list-links-article "[tag{!!title}!tag[Riedra]!tag[Syrkarn]!is[system]sort[title]]">>
Awake to the [[psionic|psionics]] power within, a psi warrior
is a fighter who augments their physical might
with psi-infused weapon strikes, telekinetic lashes, and barriers of mental force. Many [[githyanki|gith]] train to become such warriors, as do [[Inspired]] of the [[Harmonious Shield]] in [[Riedra]]. Psi warriors are sometimes referred to as "battleminds".
As a psi warrior, you might have honed your
psionic abilities through solo discipline, unlocked
it under the tutelage of a master, or refined it at an
academy dedicated to wielding the mind's power as
both weapon and shield.
Psions are the quintessential manifesters of [[psionic power|psionics]]. Psions unleash the potential locked within every conscious mind, move objects with just a thought, and assume command of even the least desire of their foes. Psions make manifest their secret wishes when others can only dream.
These masters of mental manipulation might come by their psionics through meditation or careful study of the [[plane]] of [[Dal Quor]], or perhaps their power manifested as a [[wilder]], a sudden aberrant mental mutation sparked by a planar flare from [[Xoriat]].
Psions can most commonly be found among the [[Inspired]] and [[kalashtar]] of [[Sarlona]].
Most psions have basic telepathy and short-range telekinesis, but at least three specializations of psion exist:
* ''Telepaths'' are able to link their mind to those of other conscious creatures. While this can be a useful tool for fostering communication and fellowship, a psion that focuses on this discipline can wield their telepathy like a weapon. Through mesmerism and manipulation, powerful telepaths called dominators mold weaker minds like clay. Powerful manipulators who can control several minds at once are known as [[thrallherd]]s.
* ''Kineticists'' are experts in the mental manipulation of energy. They wield precise, powerful, and long-range telekinetic control, but also use their psionic discipline to control flames, ice, lightning, or even sound.
* ''Shapers'' are masters of metacreativity, the ability to form solid and semisolid objects such as tools, weapons, and even [[construct]]s out of psionic ectoplasm. These objects only last a limited time, but the creative possibilities are limitless. Master shapers can even manifest their thoughts into sapient constructs.
* ''Clairsentients'' learn secrets long forgotten, glimpse the immediate future and predict the far future, find hidden objects, and know what is normally unknowable.
The [[Inspired]] have long shielded their realm from prying eyes. Although the [[monoliths|hanbalani alta]] are not as powerful as the [[Shroud]] of [[Adar]], each one blocks all attempts to scry into [[Riedra]]. The Riedran shield blocks scrying only
from outside sources; once someone penetrates the borders, all powers and spells function normally. Disrupting this field would require the destruction of a substantial
number of monoliths, and even doing this would only drop a segment of the shield.
Psionics is the power of the mind, whether honed by rigorous training or inspired by wild and uncontrollable impulse. Psionic characters unlock the unexpected power of their consciousness, bringing it to bear in the fighting techniques they master or the magical effects they create. Those who study the psionics traditions passed down through generations can transcend the body's limits, eventually apprehending the whole of creation with a single thought.
Distinct from [[arcane|arcane magic]] and [[divine magic]], a person wielding psionic power can merely exert their will on their surroundings and evoke phenomena such as telekinesis, telepathy, domination of weaker minds, opening dimensional doorways, phasing through solid objects, or even creating solid objects from nothing but thought.
Psionic power manifests in Eberron either through a link to [[Dal Quor]], the Region of Dreams ([[kalashtar]] and the [[Inspired]] have innate psionic power) or through [[Xoriat]], the Realm of Madness.
See also [[psion]], [[ardent]], [[wilder]], [[dreamtouched]], [[psi warrior]], and [[soulknife]].
!!! <<showspells-school {{!!title}}>>
Expert crafters display wares of incomparable beauty and quality in the city of Io'lokar’s many markets, and virtually any [[magic item]] of the DM’s choosing can be found at a crafter’s stall. However, the markets of Io’lokar operate exclusively on the city’s system of commonwealth and barter. For the most part, city folk simply take what they need of their fellow citizens’ wares, knowing that the work they do is fair trade for these goods. New visitors to the city can attempt to barter their own services or goods, but are often limited to looking on enviously as the [[Io'lokari]] shop.
An extremist branch of the Church of the [[Silver Flame]], the Pure
Flame rose in the aftermath of the [[Silver Crusade]]. [[Aundair]]ians
whose families had suffered through decades of [[lycanthropic|lycanthrope]]
terror embraced the Flame as the weapon of their liberation,
but as a faith born in battle, they have a distorted view of its
principles. The core principle of the Silver Flame is to defend
the innocent, but those who follow the Pure Flame see it as a
tool to punish the wicked. They see no room for compassion;
while they accept the idea that the [[overlord]]s and the [[Shadow in the Flame|Bel Shalor]] drive people to do evil, they focus not on treating them with compassion, but on burning the evil out of them.
The primary defining traits of the Pure Flame are this harsh
violence and uncompromising sense of justice. There must be
no compromise with the wicked, and there is no hierarchy of
evil; //no// evil deed can be tolerated. Most followers of the Pure
Flame are exceptionally loyal to the [[Voice of the Flame|Tira Miron]] and
believe the [[Keeper|Keeper of the Flame]] to be a divine being. However, many also
distrust the cardinals of [[Thrane]], and should the Keeper make
a proclamation that goes against their beliefs, they're quick to
attribute it to the corrupt cardinals putting words in her mouth.
A movement in [[Thaliost]] urges Archbishop [[Solgar Dariznu]] to rally
forces and seize [[Flamekeep]] in order to “liberate the Keeper,”
though the Pure Flame doesn't have the forces, resources, or
training to pull off something like this.
Members of the Pure Flame are intolerant, bigoted, and
violent, rejecting the compassionate principles of the faith and
denying that all are equal in the light of the Flame. However,
because of their fanatical devotion to the fight against evil, they
might offer adventurers assistance against a real supernatural
threat. Purists are generally NPCs, not player characters, as
their uncompromising and intolerant nature will likely cause
clashes with other adventurers. That being said, a player
character might be a former Purist seeking redemption for
their vile behavior, or perhaps a young Aundarian rebelling
against a Purist upbringing and broadening their horizons.
The massive burrowing monster known as the purple worm terrorizes the creatures of [[Khyber]] as it chews through solid rock in pursuit of prey. A dimwitted, ravenous force of nature, this creature regards anything it encounters as food. The maw of a purple worm is large enough to swallow a horse whole, and no creature is safe from its hunger. It lunges forward by rhythmically compressing and expanding its body, catching creatures by surprise with the speed of its advance.
When a purple worm burrows through the ground, it consumes earth and rock, which it breaks down and constantly excretes. Precious metals and gems can thus be found within the bodies of purple worms, which are targeted by particularly brave and foolhardy treasure hunters.
Loud noise attracts purple worms, which have been known to interrupt underground battles and tear through subterranean cities seeking prey. The underground civilizations of [[Khyber]] maintain special wards around their settlements to deter these monsters.
A burrowing purple worm constantly creates new tunnels, which are quickly made use of by other creatures as corridors and highways. Because a purple worm rarely returns to its own tunnels, such passageways are a good place to avoid these monsters. Areas rich in prey quickly become interlaced with complex tunnel systems resulting from several worms hunting together.
The second largest city in [[Valenar]], Pylas Maradal is
a port on the southern coast. House [[Lyrandar]] has invested in the city and built shipyards and a large house [[enclave]]. The port sees traffic from [[Q'barra]], [[Sarlona]], and
[[Aerenal]]. When the region was part of [[Cyre]], this city was
known as Southport, a haven for smugglers and pirates.
Known as the Gate of Joy, Pylas Pyrial is a glittering [[feyspire]] of alabaster and gold, celebrated for its [[bard]]s and revels. Its population includes more [[gnome]]s than [[eladrin]], and it is thought by some scholars that the first [[Zil|Zilargo]] were settlers from [[Thelanis]], entering Eberron through Gate of Joy. Over the centuries, the Zil have maintained a close relationship with Pylas Pyrial when it appears.
Pylas Pyrial is home to artisans and [[artificer]]s of great skill, and adventurers interested in purchasing fey goods or negotiating with [[eladrin]] lords will find this to be the most accessible of the feyspires. An ancient rivalry undercuts the relationship between Pylas Pyrial and [[Shae Loralyndar]].
Pylas Pyrial is ruled by the [[Summer Council]], which includes [[gnome]]s and [[eladrin]].
The gateway to [[Aerenal]], this port city is the primary
point of contact between Aerenal and the outside world. Most foreigners never go any deeper into the land of the elves. In this city driven by commerce, almost all the [[dragonmarked house]]s have outposts here, and it includes vast
markets, warehouses, and lumber yards. The city and the region around it is part of the lands of the [[line|Aereni noble line]] of [[Melideth]].
Few [[deathless]] inhabit the city. The [[elves|elf]] of
Pylas Talaear are more accepting of non-elves than
those of any other city in Aerenal. However, the city
authorities maintain strict order with only slightly
more tolerance than elsewhere.
Pylas Talaear is home to the [[Hall of the Bereaved]], headquarters of the [[Skullborn]] cabal.
The port town of Pylas Zirinth, located in the [[Jungle of Daggers|Dajar Orioth]] on [[Aerenal]], is the seat of the [[Aereni noble line]] of [[Tolaen]]. The town is dominated by the exotic lumber industry of Aerenal.
This mysterious ziggurat looms over a stretch of the floodplain of the [[Hydra River]]. Surrounding the pyramid are statues of humanoids with crocodile-like features and feathered wings in place of arms. Large granite blocks form the exterior of the ziggurat, and its stepped construction allows adventurers to climb to the top.
Worship of the [[Sovereign Host]] takes many forms in
different cultures, but the religion as practiced by most
of the humans of [[Khorvaire]] can be traced back to the
kingdom of Pyrine; Vassals today recite the [[Pyrinean Creed]], often without knowing anything about the ancient kingdom. The Pyrineans placed great value
on wisdom and philosophy, and Pyrinean tutors and
priests served in courts across [[Sarlona]]. However, faith
failed to protect the Pyrineans from the [[quori]]. During
the [[Sundering]], the Pyrinean church was torn apart by
schisms and heresies, and Pyrine was crushed by the
forces of [[Nulakesh]] and [[Ohr Kaluun]]. Although most of the libraries and churches have been destroyed, explorers might be able to find hidden vaults of knowledge or
ancient shrines providing new insight into the worship
of the [[Sovereign Host]].
The Pyrinean love of philosophy has made them devoted to the [[Path of Inspiration]]—although not as aggressively fanatical to the doctrine as the people of [[Corvagura]]
or [[Nulakesh]]. Many [[Riedran|Riedrans]] [[cleric]]s come from this
province. Pyrine is one of the most peaceful provinces
of [[Riedra]], and the [[Thousand Eyes]] and the [[Harmonious Shield]] have a reduced presence in this region. Even though they are dedicated to the [[Inspired]], Pyrineans are not as hostile toward foreigners as other [[Riedrans]] are; many
Pyrineans enjoy having the opportunity to proselytize and
discuss their faith with outlanders.
The standard names and attributes of the [[Sovereigns|Sovereign Host]] and [[Six|Dark Six]]—[[Aureon]], [[Balinor]], the [[Shadow]]—are drawn from the Pyrinean Creed, the
dominant tradition within the [[Five Nations]]. This is the source of
the Octogram symbol, the division of Nine and Six, and holy days
like [[Boldrei's Feast]]. If you follow the Pyrinean Creed, you believe
in the faith as it's presented in the core Eberron sourcebooks.
You recognize all of the Sovereigns and Six, even if you may feel
that one in particular is especially influential in your life.
While the common faithful know the term “Pyrinean Creed,”
its history is largely only of interest to scholars and priests.
A typical Vassal might know that they believe in the Pyrinean
Creed, but if you asked five of them what [[Pyrine]] was, you'd get
five different answers—“He was a legendary missionary!” “It
was an old town in [[Daskara|Thrane]] where there was a council!” In
reality, these beliefs were codified thousands of years ago in the
[[Sarlona]]n nation of [[Pyrine]], then carried to [[Khorvaire]] by [[human]]
settlers. While Pyrine was assimilated by the Empire of [[Riedra]]
over a thousand years ago and its people no longer worship
the [[Sovereign Host]], their legacy lives on in Khorvaire.
A pyroconverger is a magical flamethrower made by a mad [[artificer]]. It can project fire in a 10-foot cone, but carries a risk of malfunction each time you use it.
Q’anhyrde, a [[red|red dragon]] [[rogue dragon]] in [[Khorvaire]], served well as a [[Chamber]] agent for almost a hundred years. His work deciphering the [[Draconic Prophecy]] and struggling to shape it eventually overwhelmed him; he declared nothing mattered but the present. Now he surrounds himself with minions and lives a life of hedonism.
''Capital:'' [[Newthrone]]<br/>
''Hallmarks:'' Eberron [[dragonshard]]s, [[lizardfolk]], rare herbs
Q'barra is a young nation on the edge of [[Khorvaire]], an
untamed frontier filled with danger and opportunity.
During the golden age of [[Galifar]], few humans bothered
to cross the [[Endworld Mountains]] to explore the vast
jungle beyond. When the [[Last War]] broke out, a fleet of
settlers came to Q'barra in search of a new home far
from the war. As this settlement expanded, the settlers
discovered massive deposits of Eberron [[dragonshard]]s. Over the past decade, a wave of prospectors, wandslingers, refugees, and fortune-seekers
have descended on Q'barra, along with brigands, deserters from the war, and all manner of criminals and opportunists.
To their surprise, Q'barra was already home to a number of ancient civilizations [[human]]s know nothing about:
the [[lizardfolk]] of the [[Cold Sun Federation]], the [[dragonborn]] of [[Ka'rhashan]], and the confederacy of the [[Poison Dusk]]. Most settlers refer to them collectively
as "[[scales]]." King [[Sebastes ir'Kesslan]] of [[Newthrone]] has
established a treaty with the [[Cold Sun Federation]], but
communication has been difficult and prospectors rarely
abide by the terms of the treaty.
!! Interesting Things About {{!!article}}{{!!title}}
* Q'barra is one of the richest sources of Eberron [[dragonshard]]s in [[Khorvaire]], drawing waves of settlers and prospectors to this young and growing nation on the edge of civilization.
* Certain ruins in Q'barra appear connected to the [[Age of Demons]]. The settlers know little of the history of this region, but the [[Poison Dusk]] [[lizardfolk]] have ties to [[fiend]]ish powers.
* House [[Tharashk]] has a strong presence in Q'barra. Tharashk is the primary buyer of Eberron dragonshards and also runs large-scale mining operations here.
!! Q'barran Characters
Q'barra tempts explorers from the west with the prospects of wealth and new lands to conquer—mostly humans but including members of all races found in [[Khorvaire]]. Settlers, [[dragonborn]], and [[lizardfolk]] characters
who originate here should consider the following:
* ''Settlers.'' Q'barra is an excellent place to explore the traditional archetypes of the classic Western. As a [[paladin]], you could be a lone sheriff seeking to protect your newly formed mining village. Your [[cleric]] could be the town preacher. As a [[sorcerer]] or [[bard]] with a criminal background, you could be a dashing wandslinger looking for trouble and gold.
* ''Renegades and Regrets.'' Q'barra promises a land of opportunity and a place where you can leave your past behind. Are you a deserter? Were you convicted of a crime you didn't commit? Are you fleeing from a broken heart? Q'barra has also drawn [[Cyran|Cyre]] refugees and newly freed [[warforged]], both seeking a home in the wild east.
* ''Lizardfolk.'' The [[lizardfolk]]'s primitive culture blends [[druid]]ic traditions with the beliefs of the [[Silver Flame]]. You might have been sent to study the softskins—to learn about them and potentially serve as an envoy for your people. Alternatively, you could be following a spiritual vision.
* ''Dragonborn.'' The [[dragonborn]] live amid the remnants of ancient glory. They have a proud martial tradition, and a number of dragonborn venture west in search of worthy challenges. If you follow this path, you might have served as a mercenary in the [[Last War]].
!! Cities and Sites
Q'barra is split into three main regions. [[New Galifar]] is
the original colony; it has a feudal structure and holds
to the laws of the [[Treaty of Thronehold]]. To the north,
[[Hope]] is a collection of small mining towns. In Hope, the
law goes only as far as the people willing to enforce it.
Beyond these human regions lie the unexplored lands of
the [[scales]].
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
The influx of [[Cyran|Cyre]] refugees promises to reshape Q'barra. Most of the settlers are peaceful people searching for a homes and opportunities, but some among them chose Q'barra over refugee camps because they refused to accept charity from former enemies. These "Mourners" rob and kill settlers from the nations that fought against [[Cyre]]. Hope also has its share of brigands and criminals, bandits who prey on House [[Tharashk]] convoys and settlers alike.
The relationship between the settlers and the natives
is another source of tension. Although King [[Sebastes|Sebastes ir'Kesslan]]
forged a treaty with the [[Cold Sun Federation]], the prospectors of [[Hope]] regularly violate this treaty. The [[Poison Dusk]] [[lizardfolk]] are hostile to both the settlers and the Cold Sun Federation. Conflicts between settlers and
[[scales]] have escalated over the last four years, and many
fear that worse is yet to come.
The jungles of [[Q'barra]] are teeming with [[reptilian natives|scales]], mysterious ruins from the [[Age of Demons]], and valuable [[dragonshard]]s. See [[Q'barra]] for more information.
During the [[Age of Giants]], the Qabalrin were a reclusive sect of [[elves|elf]] whose arcane might even the [[giant]]s feared. Stories tell of how the titans
learned their magic from the god [[Ouralon|Aureon]], bringer of
light and law, even as the Qabalrin drew on the power of
Ouralon’s terrible [[Shadow]]. Whatever the truth behind
the legends, these elves were the mightiest [[conjurers|conjuration]]
and [[necromancers|necromancy]] [[Xen'drik]] had ever seen, pioneering
much of the necromantic techniques used in the present day. According to legend, the Qabalrin created the first [[vampire]]s, some of which might still lie entombed in
ancient ruins.
The Qabalrin lived in a single massive city-state, a fortress in the legendary region known as the [[Ring of Storms]]. Left unchecked, the Qabalrin might have one day dominated the land, but fate—or divine providence—intervened. Over forty thousand years ago, a massive
[[dragonshard]] plummeted from the sky, smashing into the city of the Qabalrin. The impact and the resulting devastation (both magical and natural) destroyed the elves. However, not all of the Qabalrin will killed in the catastrophe; their blood and techniques continued to live on in what would become the [[Aereni noble line]] of [[Vol]].
The Qaltiar [[drow]] of [[Xen'drik]] are a nomadic offshoot of the [[Vulkoor]]i drow. They are dedicated in their task of hunting and eliminating all [[giant]]s from the continent and from Eberron as a whole. Unlike their brethren, they do not have a solitary focus on the scorpion god [[Vulkoor]]; they revere the scorpion, but also other primal animalistic spirits, such as the [[Shifting Panther|displacer beast]], the [[tilxin]], and a host of other totems.
//“The exiles forgot their past and this place almost from the moment they stepped onto the boats, so desperate were they to burn away the horrors of what lay behind them. Or perhaps they sensed the greatness of their future and sought to leave space for that in the memory-yet-to-come of their race. Few care to know these things now, but they remain with me. If you have time to listen, I have time to speak...”//
<div align="right">—Qataakhast the Bright-Eyed</div>
In the glowing steppes and harsh desert wastes of
[[Syrkarn]], tales are told of an ageless [[dragon]] whose molten
gaze has seen this land’s fall and rise. He is Qataakhast
the Bright-Eyed, a great [[brass wyrm|brass dragon]] who
can be sighted in the sands and empty grasslands from the central Plains of [[Itzaina|Khunan]] to the sea.
Qataakhast is the keeper of many secrets, but the one he holds closest is known only to him and his apprentice Rumura. Though the [[dragon]]s of [[Argonnessen]] had always been cognizant of the role [[human]] history would one day play in the [[Draconic Prophecy]], few could have foretold how far that history would advance as a result of a single fateful sea voyage. Three thousand years ago, a ragtag flotilla of ships set out from the shores of [[Rhiavhaar]], bound for an unknown land across the [[Sea of Rage]]. The captain of this expedition was [[Lhazaar]]. Qataakhast was there to watch her go.
As a young adult, Qataakhast and his mate [[Vyssilthar]] left [[Argonnessen]] to
take up a life of exile in [[Sarlona]]—punishment for Qataakhast’s failure at a mission of which he has not spoken in all the time since. When the [[Lhazaar]] expedition set
sail, Vyssilthar felt compelled to accompany it in [[half-elf]] form. Qataakhast stayed behind, bound to complete his penance alone.
Before her departure, [[Vyssilthar]] had spent long
years studying the [[Draconic Prophecy]]. When [[Lhazaar]]’s
port city was abandoned in the [[Sundering]], Qataakhast
returned there to record his mate’s work and his own
memories of the expedition, even as he kept watch on
the open sea in the hope that she might someday return.
However, as [[Riedra]] established its dominion over [[Rhiavhaar]], Qataakhast was forced to flee for the freedom of [[Syrkarn]], where he remains today.
Though his former life and calling are some thirty centuries behind him, Qataakhast has lost none of the nobility and sense of purpose that mark many of the great wyrms of [[Argonnessen]]. Today, he spends much of his time traveling across his adopted homeland, forcing lesser [[rogue dragon]]s to respect the settlements of [[human]] and [[eneko]]. On rare occasions, Qataakhast has unleashed his full fury to keep local rogues in line. For most, a single demonstration is all that’s needed.
!! Description
Centuries beneath the bleaching [[Syrkarn]] sun have burnished Qataakhast’s scales
to an almost mirrorlike sheen. His bladed chinhorns are the length of longswords, each honed to razor sharpness by constant rubbing against the shard pile within his lair. Years of slumber on a bed of [[Khyber shard|dragonshard]]s have left the scales of Qataakhast’s underbelly limned a deep blue-black, and a faint glow seems to ripple there as he moves. The deep green of his wing-edges appears nearly pearl-black when they are unfurled, and the great wyrm’s eyes burn with the light of a [[Syrkarn]] dawn.
Like all [[brass dragon]]s, Qataakhast loves the heat, and he often basks in the open sand and empty grasslands of his adopted home. However, because of his imposing physical presence, the great wyrm makes a point of flying only at night if possible. Qataakhast soars with a speed and grace that defy his massive size, and when his gleaming scales catch the dawn’s light, they flare like a beacon that can be seen for miles. The [[eneko]] nomads of the plains consider it good luck to catch sight of this “dragonlight.”
Though he conveys the majesty of distant [[Argonnessen]] in his every word, the great wyrm retains the verbosity and playful acquisitiveness common among his kind. He is great lover of gifts, no matter how trifling, and to those who offer some trinket and the necessary respect, Qataakhast will happily speak for days on end. Those who come to him with specific questions inevitably receive answers, but the great wyrm is seldom in a hurry to get to the point.
For a thousand years, Qataakhast has watched over this land, always hopeful that [[Vyssilthar]] might one day return to his side before he takes his last sight of earth and sky. Lately, however, the great [[dragon]] has become resigned to facing his end alone. The idea that his knowledge will die with him when he passes saddens Qataakhast, and so he seeks to pass on what he knows in the time that remains.
The [[shifter]] tribes of the Qiku nation in [[Sarlona]] roam
all inland regions west of the [[Tiiki River]] and south to the
border of [[Riedra]]. Several Qiku villages, while designed
to be movable on short notice, have persisted for decades
now and are essentially permanent. Most of these villages
are built in, on top of, and around the sprawling boulder
mounds of the central [[Tundra|Tashana Tundra]], and feature tents, tunnels and semipermanent structures of earth and stone.
The Qiku currently share much of the far southern
lands and resources with the refugee [[Akiak]] [[dwarves|dwarf]] of
the [[Paqaa Mountains]].
Previous to the rise of the [[Inspired]] in [[Riedra]],
a branch of the Qiku nation roamed far south into
the lands that are now the [[Dor Maleer]] region. As the
Inspired came to power, they enslaved these southern
tribes, who have since evolved into an elite warrior caste
serving in Riedra's [[Savage Legion|Taskaan Legion]].
See also [[Culture of the Tashana shifters]].
The Qiku Sky Teller for the Summit Council is [[Naar-Esqa]].
The Qitha River in [[Syrkarn]] flows from the [[Tese Hills]] into the [[Jathara Sound]]. It forms part of the border between the provinces of [[Khunan]] and [[Lamecha]].
The Qonama River in the [[Tashana Tundra]] flows past the village of [[Winterstead]] into the [[Winter Bay]].
Qorrashi Island lies in the [[Bitter Sea]] near [[Icewhite Island]]. It is named for a type of [[genie]] made of elemental ice and wind, but the existence of such "qorrash" has never been confirmed. However, many ice [[mephit]]s can be found on this island.
The Queen of All Tears, a [[Dark Power]] of [[Mabar]], is an embodiment of misery,
and her subjects are largely incorporeal [[undead]], [[shadow]]s and
[[wraith]]s from the barren sand. Meanwhile, cruel [[specter]]s and [[banshee]]s attend the Queen, along with [[succubi and incubi|incubus/succubus]] who
bask in the delicious misery that suffuses the region. The Queen
herself takes the form of a mummified corpse, enshrouded by a
spectral image of a beautiful [[elf]] woman. The suffering of others
is her mead, and her only pleasure is the slow torment of the
hostages in her [[Hinterland|Hinterlands]] fragments.
The Queen of All Tears is one of the youngest of the Dark
Powers. She was once a mortal who dreamed of mastering life
and death, but her pursuit of these goals resulted in the deaths
of everyone she ever loved and everyone who shared her blood.
Her kingdom was razed, and she killed her own daughter
and transformed her into a [[lich]], so at least one piece of her
legacy might survive. Her name was Minara Vol, and she was
the mother of [[Erandis Vol|Lady Illmarrow]]. In the process of becoming a [[Dark Power]], she's lost much of her own identity and sense of her
past. She despises both [[elves|elf]] and [[dragon]]s, but has forgotten
even her own daughter. If the Queen were to somehow regain
her memories, she might seek to strike at the [[Undying Court]]
and [[Argonnessen]], or to aid Erandis—or it may be that she
continues to dwell in her despair and ignore her past.
The [[medusa]]s of [[Cazhaak Draal]] are a powerful force in spite of their
limited numbers. Sheshka, their hereditary Queen of Stone,
is a skilled hunter and cunning strategist. Less cruel
than her fellow warlords, Sheska is driven to secure
the well-being of her people, and she has earned
their devotion and fealty. She could be a potential
ally for PCs—or a deadly enemy if she considers them
a threat.
A medusa named ''Carash'' serves as the queen's ambassador in the court of the [[Great Crag]].
The Queen of the Dead, the most powerful being in [[Dolurrh]],
dwells in the great spire that rises up above the [[Vault of Memories]]. Little is known about her motives or her origins; curiously, she focuses on the Material Plane far more than most great planar powers do. Though she existed long before the [[elves|elf]], the Queen appears as an elf woman, her face hidden by a cracked alabaster mask, her robes of black feathers trimmed with silver. She can pluck [[shade]]s from the cycle of entrapment, and even grant them new life, creating [[shadar-kai]] by housing them in new bodies. Other souls, she saves but doesn't restore, preserving them in the Vault of Memories.
She collects secrets and memories, plucking her favorites
from those gathered by the [[Librarian|Vault of Memories]] and keeping them in her
personal collection. Sometimes she directly opposes mortal
[[necromancers|necromancy]], especially [[Lady Illmarrow]]. At other times, she
seems interested in killing specific people, perhaps so she can
preserve their spirits or their memories. But such direct action
is extremely rare, remarkable if it occurs more than once in
a century; most of the time, she remains silent in Dolurrh,
unknown and unknowable.
Rarely, the bravest (and most foolish) of adventurers venture
into the Queen of the Dead's realm, hoping to reclaim a lost
spirit from Dolurrh. And rarely, they succeed, for she doesn't
care if a shade or two are stolen every century, or even every
decade. However, in the [[Age of Giants]], the [[Cul'sir]] Dominion
sent an army into Dolurrh to recover the spirits of a family lost
in the [[Quori|quori]] Conflict—none of them returned. The Queen's
power cannot be contested in Dolurrh, and thieves who attract
her personal attention find their shades torn from their bodies
in the blink of an eye.
Questor is a large island in the [[Lhazaar Principalities]], home of [[Port Verge]], the seat of power of the [[Direshark Principality|Diresharks]]. The northern reaches of the island are defined by windswept, icy mountains that provide little in the way of natural resources.
[[Stormreach]] lacks an obvious equivalent to the [[Boromar Clan]] in [[Sharn]]; no single power dominates the underworld here. But just because something’s not obvious doesn’t mean it’s not there. Anyone knowledgable in the dealings of the Stormreach underworld has heard of a cabal hidden in the shadows of the city, a
criminal fraternity known as the Quickfoot Gang.
Quickfoot chooses one member of every significant
gang or criminal guild to serves as a contact point;
this mouthpiece is expected to turn over a share of his
organization’s profits and to relay messages from the
gang. As long as the tithes are paid, Quickfoot rarely
takes action. However, groups that defy Quickfoot
are targeted both by criminals and the [[Stormreach Guard]]. It doesn’t take a genius to conclude that the
leader of Quickfoot—a figure known to members as
the ''Spider''—is the [[Storm Lord|Storm Lords]] [[Kirris Sel Shadra]].
The {{!!title}} is a [[Sharn]] street gang of [[goblin]]s who live in the [[sewers|Sewers of Sharn]] below [[Tavick's Landing]] and avoid violence, using stealth and knowledge of the sewers to pull off their thievery.
This item appears and functions as an ordinary writing quill. When the command word is spoken, the quill transforms into a longsword until the command word is spoken again. There is no way to detect that this item is out of the ordinary except through magical means.
Quintessence is the solidified energy of [[Mabar]]an [[shadow]]s. It is crafted by [[yugoloth]] gardeners that enhance its power by leading mortals associated with specific shadows down dark paths.
This matte black substance can be used in a similar way to wood, metal, or cloth. Quintessence items are powerful conduits for [[necromancy]] and necrotic energy. Items
that create [[undead]] or consume light might also be crafted from
quintessence; such items drain joy and empathy from those
that carry them, and those who wield such items often become
cold and cruel.
Each of the quiver's three compartments connects to an extradimensional space that allows the quiver to hold numerous items while never weighing more than 2 pounds. The shortest compartment can hold up to sixty arrows, bolts, or similar objects. The midsize compartment holds up to eighteen javelins or similar objects. The longest compartment holds up to six long objects, such as bows, quarterstaffs, or spears.
You can draw any item the quiver contains as if doing so from a regular quiver or scabbard.
Though the energy of the Region of Dreams pervades
[[Sarlona]], the creatures of [[Dal Quor]] cannot cross over
to the material realm—their [[plane]] is forever remote.
Even so, the [[Inspired]] have devised methods to augment
[[beast]]s with a hint of [[psionics]], and these quorbound creatures serve as guard
animals, mounts, and spies. Quorbound creatures breed true, however, and those that escape captivity and mate with mundane members of their species
sometimes pass their otherworldly abilities onto their
offspring.
Those who fear the [[Inspired]] are quick to see the taint
of evil in the quorbound. However, those aware of the
legend of the turning of the age know that the potential for good
still lingers in the dark heart of [[Dal Quor]].
The [[quori]] had three millennia in [[Dal Quor]] to plan
their domination of [[Sarlona]], and so they devised the
[[Chosen]] and the [[quorbound|quorbound beast]]. But the quori's success
with these breeds came along with failures. They tried
many experiments, some offering more physical prowess than humanlike forms had and others intended to
create reliable slaves. Individuals descended from these
castoff experiments are still born intermittently among
Sarlona's natives. Most are indistinguishable from their
kin, but a few show severe psycho-spiritual backlash
against the quori's meddling. These creatures have traits
that make them antithetical to [[psionic|psionics]] beings. Scholars
note them as quorbred creatures; the quori and [[Inspired]]
arrogantly call them "failed vessels."
A quorbred creature starts as any [[beast]], [[humanoid]], [[giant]], [[monstrosity]], or [[dragon]]. The creature is resistant to any [[psionic|psionics]] power cast on them, and emits a pulse of psychic disruption whenever they make physical contact with a psionic creature. Quorbred creatures also do not dream.
The secrets behind the creation of the [[warforged]] go back nearly forty thousand years to the war between the [[giant]]s and the [[quori]]. During that conflict, the quori created
prototypical warforged, crafting a host of [[construct]]s
that bear a resemblance to modern warforged but are
distinctly different.
Some of these quorcraft warforged still lurk today in
the deepest recesses of the continent. Left to guard some
forgotten outpost or wandering without purpose, these
constructs are a danger to those who encounter them. All
who are not [[quori]] are enemies to the quorcraft, and they
attack without mercy or compassion.
[[Dal Quor]] is the plane of dreams and is currently dominated by a dark power known as [[il-Lashtavar]], or the [[Dreaming Dark]]. Il-Lashtavar is served by a host of [[fiend]]s that are the embodiments of dreams and nightmares—the quori. Because it is difficult for anything to physically travel to or from Dal Quor, quori in [[Eberron]] are typically encountered while possessing a host body. The [[Inspired]] are the most common type of willing host for the quori.
!! Types of Quori
<<list-links-article "[tag{!!title}sort[title]]">>
The Ra’har ("body") of the [[Eternal Dominion]] is the military. The [[sahuagin]] view life as
conflict, and are zealous about maintaining a strong military.
When there is no active conflict, they engage in war games
and engage in gladiatorial combat—both locally, and in a
league against the other cities—to entertain the people.
Raadu Xeel was a member of the [[Keepers of the Word]], and a respected teacher and [[arcanist|arcane magic]] in [[Kasshta Keep]]. His body was honed and his mind sharp. He had waited years, aiding Speaker Geetru in every manner possible,
hoping to become the next Speaker. But temporal ambition is unseemly to the ascetics, and Raadu was known to have delved into lore thought better left alone. Geetru
couldn't have placed Xeel as Speaker if she had wanted
to—the elders wouldn't have allowed it.
Under false pretenses, a sect of magicians offered Xeel
aid—actually [[Endseekers]] hoping to gain control of Kasshta's resources. Raadu saw an alliance with these mages as a way to expand the [[Keepers|Keepers of the Word]]' knowledge in the future. Finding an inroad with dark philosophies that Raadu had
already assimilated, the Endseekers slowly corrupted Xeel,
even as he ingratiated himself to others in [[Kasshta Keep]]
and the [[new Speaker|Chanaakar]] alike. He hoped that his behavior
would place him in a controlling position when all was
done. The Endseekers convinced him he should become
Speaker, and that they could help. All Xeel had to do was
open the gate door at the right time.
Ultimately, the [[Endseekers]] and their dark minions
tried to assassinate Speaker [[Chanaakar]] after gaining access to
[[Kasshta Keep]] with Xeel's aid. But they failed, thanks to
[[Luunkashtai]], Kaala, and the monks. When the truth of the
plot was uncovered, the elders had Xeel executed and his
family banished from Kasshta Keep, despite Chanaakar's
request for mercy.
''Date: '' [[23 Lharvion|Khorvaire calendar]]
[[Dura]], one of the oldest and poorest quarters of [[Sharn]],
contains inhabitants swept in from all corners of
[[Khorvaire]]. They may not have gold, but the people of
Dura have the Race of Eight Winds. Part race, part aerial battle, this stunning spectacle has shaped the culture of the Dura Ward—and this event can present many opportunities for adventurers.
The Race of Eight Winds is primarily a test of
speed and skill through a course that weaves around
and through the spires of the city. While the beasts
may use any natural weapons that they possess, the
riders may not use any magical powers or weapons beyond a non-lethal sporting crossbow. Anyone who breaks these rules is immediately disqualified
and probably torn apart by an angry mob.
The Race of Eight Winds brings spectators, tourists, and gamblers from across [[Khorvaire]], and it also presents a host of opportunities for adventurers.
The victorious rider receives a 100 crown purse at the end of the race, as well as a grant of land elsewhere in [[Breland]], donated by one of [[Sharn]]'s noble families.
!! History and Structure
According to the commonly accepted—if somewhat unlikely—legend, King Galifar II was fascinated by the use of aerial scouts and cavalry. Some say that he used [[Sharn]] as a testing ground to judge the merits of different flying beasts, granting land and gold to exceptional cavaliers. Over the centuries, this evolved into an exotic race involving different sorts of magical and fantastic beasts. For purposes of the race, [[Dura]] is divided into eight regions, each of which is represented by a different creature. To this day, the name of the creature is often used as a slang term for the inhabitant of one of these areas; when someone talks about "that treacherous [[owl|giant owl]]," he's probably referring to a resident of [[Rattlestone]] or the [[Bazaar]].
The race itself is a test of speed and skill, challenging the reflexes and combat skills of both beast and rider. From the starting point in [[Hareth's Folly]], the race takes competitors on an intricate course that weaves in and around the towers of Sharn—and since contact is allowed between riders and beasts, the racers can always try to win by eliminating the competition.
The race is older than most of Sharn, which explains why much of [[Upper Dura]] is not represented; it literally didn't exist when the tradition began. [[Hareth's Folly]] and [[Callestan]] have always been neutral ground where people gather to watch the race.
While not everyone takes an interest, many of the inhabitants of [[Lower|Lower Dura]] and [[Middle Dura]] are avid followers of the Race of Eight Winds. It brings people of all races and professions together, and those directly involved with the race are the heroes of their districts. This includes the riders and handlers, along with the Wind Guard—a committee appointed to manage the interests of the beast's one- or two-district region. While this is a great honor, it carries considerable responsibility: there is far more to the Race of Eight Winds than just skill in the air. The Wind Guard has to raise funds to acquire, maintain, and train the exotic beasts used in the competition. Usually local merchants donate a share of their profits to support the race, but it is up to the Wind Guard to make up for any shortfall. In addition to finances, the members of the Wind Guard engage in a never-ending series of schemes and negotiations on behalf of their region. Alliances and networks of favors stretch back for centuries, making the race as much a match of politics as of speed. The [[owl|giant owl]] is one of the slowest creatures in the race, but the [[Bazaar]] has a powerful economic position and often uses bribery and graft to get ahead. The [[griffon]] rarely tries to win, instead using its physical power as a bargaining chip throughout the period between races; even if the griffon can't win, it can usually take another creature out of the race. Of course, it may be that the hawk owes a favor to the owl, and repays that favor by asking the griffon to cripple the [[pegasus]]—and this is a fairly simple example.
!! The Rules
Traditionally, each region enters a single beast and rider in the race. However, if a region makes a 50c donation (which goes into a general treasury to offset the cost of the land grant), it may enter a second contestant. While this is rarely done, it is the primary way for outsiders—such as player characters—to enter the race. A would-be contestant would need to negotiate with the Wind Guard and find a region that willingly lets them participate under their banner.
The race itself is a dangerous event. Full contact is allowed between beasts and riders, and beasts can use any natural weapons that they possess. Riders cannot use [[spell]]s, [[psionic disciplines|psionics]], [[dragonmark]]s, [[magic devices|magic item]], or [[alchemical item|alchemist]]s, and anyone who breaks these rules is immediately disqualified and exposed to mob violence. A rider is allowed to carry a non-lethal sporting crossbow and a dozen quarrels. This allows for entertaining conflict while preventing swift kills.
The victorious rider receives a 100c purse and a small parcel of land—while the Wind Guard of the winning region lays claim to the ''Rod of Eight Winds''. This mysterious item is an artifact recovered from the depths of the city long ago; some say it is linked to [[Syrania]] and projects the effects of a [[manifest zone]] within a short distance. However, few of the people of [[Dura]] have any interest in the rod's history or powers. What matters is its current role as the symbol of Dura's pride—and each district is desperate to claim it.
!! Using the Race of Eight Winds
The Race of Eight Winds is a massive sporting event that draws interest from across the continent. It could impact an adventure in a number of ways.
* ''Local Color:'' Each creature is associated with a particular region (one or two districts) within [[Dura]]. As the race draws near, visitors see banners displayed across Dura, and people dress in the colors of their beast. Passing adventurers may be invited to a meal and called upon to toast the health of the local beast, or an adventurer who coincidentally happens to be wearing the wrong colors may spark a brawl. This can provide a way to introduce new NPC enemies or allies, or simply add depth to the description of a scene.
* ''Participation:'' A skilled rider may want to enter the race himself. The character needs to gain the sponsorship of one of the regions; he is more likely to gain the acceptance of one of the slower beasts than the [[hippogriff]] or [[pegasus]], who win all the time and want to preserve the fame of their local riders. Winning the race makes the character a landowner, which could be interesting; it also makes them a local celebrity in [[Sharn]], which could open the door to many other opportunities.
* ''Troubleshooting:'' Someone has poisoned the local [[griffon]]s, and the Wind Guard of [[Precarious]] have only three weeks to find a replacement; can the party find a wild griffon in time? The race is in one week, but the Rod of Eight Winds has been stolen; can the adventurers recover the lost artifact? The PCs are asked to provide security for the pegasus—which seems like an easy task until [[Daask]] gets involved. A friend of the party loses a fortune gambling on the race, and the [[Boromar Clan]] is threatening her life: Can the PCs help? If the characters are unscrupulous enough, they may even be hired to cripple racing beasts to skew the odds!
!! The Beasts
Looking to add a little color to Dura? Here are the eight beasts traditionally used in the race, along with the districts they represent.
* ''The Eagle:'' The districts of [[Broken Arch]] and [[Stormhold]] support the giant eagle, whose colors are brown and gold. Stormholders are especially passionate about the race, even though the eagle rarely wins. Many Stormholders take pride in being fierce and noble like the eagle, and they rarely participate in the politics and intrigue that often affect the final outcome of the race. They are especially dismissive of the other birds of [[Middle Dura]]; the hawk is a lesser eagle, while the owl is treacherous and far too clever.
* ''The Gargoyle:'' [[Fallen]] and [[Malleon's Gate]] were originally represented by the [[dire|dire beast]] bat. As immigrants from [[Droaam]] came to [[Sharn]], most settled in the [[Cogs]] or Malleon's Gate. Twelve years ago, the region of the bat made an unprecedented change and shifted their regional beast to the [[gargoyle]], whose colors are black and gray. Currently, the region is represented by ''Carralag'', a remarkably clever gargoyle with the ability to use Sharn's [[manifest zone]] to enhance his speed and maneuverability.<br/>The people of Malleon's Gate are fiercely dedicated to the event. The violence appeals to the [[Darguuls|Darguun]], while the city [[goblin]]s love the chance to compete against the elitist folk of the upper levels. While the gargoyle has yet to win the race, it has had greater success than the bat, and this has brought increased support for [[Daask]] and the [[Droaam]]ites within the district.
* ''The Glidewing:'' This flying dinosaur represents the districts of [[Gate of Gold]] and the [[Stores]], and its colors are gray and green. The [[glidewing]] is extremely popular among the [[halfling]]s of Sharn, and some say that the [[Boromar Clan]] is the financial force behind the Glidewing Wind Guard.
* ''The Griffon:'' This powerful beast represents [[Precarious]] and [[Oldkeep]], and its colors are brown and red. During the race, red ribbons are usually tied to the forelegs of the [[griffon]], giving the impression of streams of blood coming from its claws. The people of Precarious are fanatically (and often violently) devoted to the race, although many don't care if they win or lose; as long as the griffon brings down one of the other beasts, they consider it to be a victory.
* ''The Hawk:'' [[Tumbledown]] and [[Underlook]] are represented by the dire hawk, whose colors are light brown and dark brown. The hawk rarely wins, but Underlook makes considerable profits off the tourist trade and most Tumbledowners are devoted followers of their underdog champion.
* ''The Hippogriff:'' [[Daggerwatch]] and [[Overlook]] are represented by the [[hippogriff]], whose colors are white and gold. The Goldwings (the aerial division of the [[Sharn Watch]]) are based in Daggerwatch, and a Goldwing officer typically represents the district in the race. The hippogriff has one of the best records in the race, rivaled only by the [[pegasus]].
* ''The Owl:'' The [[giant owl]] is the beast of [[Rattlestone]] and the [[Bazaar]], and its colors are brown and gray. While it is one of the slowest creatures in the race, the owl is famous for manipulating the outcome of the race with intrigue and diplomacy. While many of the inhabitants of [[Dura]] speak dismissively of "two-faced owls," the merchants, con artists, and pickpockets of the region take pride in their mascot's cunning, and a strong streak of carefree pragmatism runs through these districts. A few former racing owls are now merchants themselves, which can lead to unusual encounters in the Bazaar.
* ''The Pegasus:'' [[Highwater]] was the last district to join the Race of Eight Winds. Thanks to House [[Vadalis]], Highwater is represented by the [[pegasus]], whose colors are white and silver. The pegasus is the swiftest creature in the race, and it has brought Highwater to victory time and again. The people of Highwater are proud folk and are always willing to discuss the ways in which a pegasus is superior to the other beasts. However, success has its price. The other districts often team up to bring down the pegasus at the start of the race. And outside of the race, many of the inhabitants of the lower wards despise the people of Highwater; thieves and bullies will go out of their way to target a snooty pegasus supporter.
A radiant idol was an [[angel]] from the [[plane]] of [[Syrania]] that succumbed to the corruption of the Material Plane. One sin led to their fall: the desire to be worshiped by mortals. Now in the mortal realm, most radiant idols gather cults of devoted followers.
Syranian [[virtue]]s sometimes travel to the Material Plane to
conduct research for their [[dominion]], concealing their true
nature through magic or invisibility, and trying to minimize
their interactions with mortals. Occasionally, a dominion
wishes to experience the Material Plane for itself, perhaps
pursuing a lead or studying a particularly interesting group
of subjects. However, this venture can be quite dangerous,
for even angels fall.
Many sages believe that touching [[Eberron]]'s ground
makes angels vulnerable to the influence of [[Khyber]] and the
[[overlord]]s, while others theorize that mortal worship—the
positive energy that sustains the [[Undying Court]]—is like a
drug to the dominions. Whatever the cause, dominions who
interact with mortals run the risk of becoming corrupted.
Such [[immortal]]s crave mortal adoration and often seek to
dominate mortals by exercising the power of their sphere.
Not all dominions fall prey to this corruption, but once
one does, there seems to be no way to undo it. Even if the
angel is destroyed and reforms, the corruption remains. It's
unlikely that such an angel would be met in [[Syrania]] itself;
typically, these corrupted angels are forever stripped of the
power of flight and condemned to walk the Material Plane as
radiant idols.
!! Appearance
The insatiable hunger to be adored can transform a fallen angel, physically and mentally.
In its true form, a radiant idol appears to be a warped
angel. It might have bloody stumps in place of its wings,
or its wings could be weighted down with chains representing its pride. A radiant idol disguises itself to hide its corruption, presenting an image of celestial glory.
When a radiant idol achieves a sizable following through silvered words and demonstrations of power, its facade begins to crack, and a downward spiral ensues. As the radiant idol sinks deeper into the realm of material power, it begins twisting its followers, leading them ever deeper into ominous ritualism, hedonistic folly, and fanatical doom.
You strike the ground, creating a burst of divine energy that ripples outward from you. Each creature you choose within 30 feet of you is hit with a wave of force and searing radiance.
House [[Orien]] has a reputation to uphold, and when deliveries from [[Stormreach]] must be made to [[Last Chance]], [[Zantashk]], or dig sites in [[Xen'drik]], those in need call on
Rain. In addition to her own impressive talents, Rain has made a few contacts among the [[drow]] and the [[giant]]s. But when she’s heading into unknown territory, Viceroy [[Uskal|Uskal d'Orien]] hires guards to ensure that the delivery is completed. [[Deneith]] or [[Tharashk]] mercenaries serve, but if an adventurer of Orien blood is around, Uskal always
prefers to work within the house.
These earrings are a pair of large silver hoops. When needed, these earrings erect a translucent shield above the wearer that deflects precipitation, strong winds, or for more expensive models, extreme sun.
See also [[drybrooch]].
Masters of weather magic, this [[Lyrandar]] guild also includes architects and engineers who construct canals, aqueducts, and reservoirs. Many of the
members are constantly on the move, traveling from
place to place according to climate and season.
This spell requires a one-hour ritual and 50c worth of ritual components, which are expended.
You attempt to return a dead creature you touch to life, provided that it has been dead no longer than 10 days. If the creature's soul is both willing and at liberty to rejoin the body, the creature returns to life.
This spell also neutralizes any poisons and cures nonmagical diseases that affected the creature at the time it died. This spell doesn't, however, remove magical diseases, curses, or similar effects; if these aren't first removed prior to casting the spell, they take effect when the creature returns to life. The spell can't return an [[undead]] creature to life.
This spell closes all mortal wounds, but it doesn't restore missing body parts. If the creature is lacking body parts or organs integral for its survival—its head, for instance—the spell automatically fails.
Coming back from the dead is an ordeal. The target must spend at least a week recovering before returning to their former strength.
Performing this spell is risky; drawing a spirit back from [[Dolurrh]] might catch the attention of a Dolurrhi [[marut]], or even bring back the wrong spirit, causing a ghost to manifest or ending up with a hostile personality in your friend's body. This is why [[Jorasco]] healers capable of resurrection typically cast [[augury]] first, and will refuse service if the result is "woe". For more information, see the "Concerning Resurrection" section of [[Dolurrh]].
//It is only in conflict that we find ourselves. We can only know our strength when we measure it against another. Laws are traps laid by the weak to control the stronger; anything you can take with fist or blade is yours by right.//
<div align="right">—A cultist of Rak Tulkhesh</div>
Called the Rage of War, Rak Tulkhesh is the incarnation of impulses that drives many mortals to battle. Fear, greed, hatred—these are seeds that the Rage of War sows in the hopes of producing a bloody harvest.
Rak Tulkhesh typically takes the form of a vaguely draconic creature twisted by demonic rage. Covered in iron spikes protruding from his bleeding flesh, this overlord looms fifteen feet high at the shoulders, and his wings span over forty feet. While in combat, Rak Tulkhesh roars in rage as new weapons are spawned from his body, called forth by the Rage of War to slaughter all who dare stand before him.
//''Khyber Shards.''// Rak Tulkhesh's soul is divided among a group of Khyber [[shard|dragonshard]]s spread through the underworld and is confined to those shards by the light of the [[Silver Flame]]. While shattered and bound, the Rage of War can't bring his full power to bear on the world. But he can influence events in the vicinity of any of his shards, drawing power from acts of violence.
The [[Last War]] was a boon that allowed Rak Tulkhesh to darken the hearts of soldiers and civilians alike, whose actions then weakened the overlord's bonds to give him even greater sway over the regions surrounding his shards. The violence seen in [[Thaliost]] and other occupied cities, the hatred against [[warforged]] and [[Cyran|Cyre]] refugees, the calls for a return to war—all these things bear the mark of Rak Tulkhesh's malign influence.
Rak Tulkhesh's heart [[demiplane]] is the [[Bitter Shield]].
//''Cults and Minions of Rak Tulkhesh.''// The cults of Rak Tulkhesh include brutal
raiders who embrace lives of endless violence, but it also
includes those who spread hate and strife—anything that could
stir up harsh conflict where there might otherwise be peace.
While most of the Orphan King's cults are driven by ruthless
aggression, they could also believe they are serving a greater
good. A cult might truly be determined to bring down bandits that are preying on innocents; they are simply driven by the delusion that there are no other alternatives to bloodshed.
Another common delusion is that the current world must be cleansed in bloody battle to clear the path for a peaceful world—these cultists are only fighting today so that their
children may know peace tomorrow.
The Rage of War has a particularly strong following among
the [[Carrion Tribes]] of the [[Demon Wastes]] who yearn to carry his bloody banner into the soft lands of the south. The [[minotaur]]s of [[Droaam]] revere the Horned Prince, an entity closely associated with Rak Tulkhesh. But he has drawn strength from the [[Last War]] and cults can be found anywhere in the [[Five Nations]], especially in communities that suffered serious losses during the war. Just as [[Katashka]] differs from
the [[Keeper]], Rak Tulkhesh is different from the [[Three Faces of War]]. Rak Tulkhesh isn't a god of war who guides the hands of each soldier; rather, he drives aggression and revels in the bloodshed, regardless of who wins or loses.
But the most powerful of the overlord's followers is the [[rakshasa]] [[Mordakhesh]] the Shadowsword—Rak Tulkhesh's exarch among the [[Lords of Dust]], who commands a host of [[fiend]]s exerting the overlord's will across [[Khorvaire]].
The rakshasa employs delicacy and misdirection in its pursuit of dominion over others. Few creatures ever see the fiend in its true form, for it can take on any guise it wants, although it prefers to masquerade as someone powerful or influential: a noble, cardinal, or rich merchant, for example. A rakshasa's true form combines the features of a human and a tiger, with one noteworthy deformity: its palms are where the backs of the hands would be on a human. Rakshasas have a host of other innate magical abilities, and an immunity to the effects all but the most powerful spells.
As the primary agents of the fiendish [[overlord]]s, rakshasas once dominated [[Khorvaire]] and [[Sarlona]]. When the overlords were defeated in the first
age of the world by the combined might of the [[dragon]]s
and the [[couatl]]s, the rakshasas largely disappeared into
[[Khyber]] as well. The [[Lords of Dust]] are made up largely
of rakshasas, scheming in the shadows—many trying to
free their imprisoned overlords, others looking for a way
to claim their masters' power for their own.
Ralzina arrived in [[Stormreach]] three years ago, with the scent and trappings of old
money clinging to her form as tightly as the silk dresses she favors. Ralzina purchased the financially floundering Wyvern’s Tail from a gnarled old stablemaster named Jarksin, who now serves as handler for the stable. Within months the Wyvern’s
Tail rose from the bottom of the lists to one of the most
respected stables in the Ring.
Ralzina’s willingness to send her best gladiators and most valuable slaves into harm’s way without a second thought elevated her quickly to the [[Blood Council]]. Most stablemasters are careful with their strongest and most powerful [[Bloodbound]], grooming them for title bouts and important matches, but Ralzina ruthlessly threw her most valuable assets into the Ring again and again, apparently indifferent to
their chances of survival. Most assume her family’s
wealth made her unconcerned, but the truth is far
more sinister.
Ralzina is a cultist of the [[Dragon Below|Cults of the Dragon Below]]. The
“brand” with which she marks her [[Bloodbound]] is
actually a potent magic sigil revealed to her in a
schizophrenic vision. She believes that the symbol
channels the bearer’s soul energy into herself upon
the Bloodbound’s death. Whether her Bloodbound
win or lose, she reaps the benefit, either in gold or
souls. Unlike the rest of the stablemasters, Ralzina
has no stake whatsoever in the [[Red Ring]] or her
Bloodbound; she’s only using her seat on the council
to secure as many death matches for her Bloodbound
as possible.
Ralzina is a beautiful [[half-elf]]. She has red hair
decorated with silver and sapphire ornaments, large
scarlet lips, and green eyes. She favors tight-fitting silk
gowns of green or red.
Ran Iishiv, the Unmaker, is an [[overlord]] imprisoned within the mountain of [[Korrandar]] in [[Adar]], [[Sarlona]]. Its anger at being bound during the [[Age of Demons]] created the great volcanic core of the mountain.
A secret known only to the [[Storm Guardians]], the [[dragon]]s who defend Korrandar—Ran Iishiv's fury is what fuels the supernatural storms that protect [[Adar]]. Its violent passion is channelled through the [[Teeth of the Three]] and causes hurricanes and thunderstorms to erupt wherever great violence is committed in the land of refuge.
<$button>
<$action-chooserandom $dataTiddler="RandomMagicEffect" $field="effect"/>
<$action-chooserandom $dataTiddler="RandomShortDuration" $field="s_duration"/>
<$action-chooserandom $dataTiddler="RandomDuration" $field="duration"/>
<$action-chooserandom $dataTiddler="RandomLongDuration" $field="l_duration"/>
<$action-chooserandom $filter="[range[4]]" $field="d4"/>
<$action-chooserandom $filter="[range[7]]" $field="d7"/>
<$action-chooserandom $filter="[range[10]]" $field="d10"/>
<$action-chooserandom $filter="2 3 3 4 4 4 5 5 5 5 6 6 6 7 7 8" $field="2d4"/>
<$action-chooserandom $filter="5 10 15 20" $field="d20"/>
<$action-chooserandom $filter="5 10 15 20 25 30 35" $field="d35"/>
<$action-chooserandom $filter="5 10 15 20 25 30 35 40 45 50" $field="d50"/>
Random Magical Effect
</$button>
<<<
{{!!effect}}
<<<
1: 30 seconds
2: 30 seconds
3: 45 seconds
4: 45 seconds
5: 1 minute
6: 1 minute
7: 2 minutes
8: 2 minutes
9: 3 minutes
10: 4 minutes
11: 5 minutes
12: 8 minutes
13: 10 minutes
14: 15 minutes
15: 20 minutes
16: 30 minutes
17: 45 minutes
18: 1 hour
1: Dead magic zone (similar to an [[antimagic field]])
2: Wild magic zone (random magical effect whenever a spell is cast within the zone)
3: Boulder carved with talking faces
4: Crystal cave that mystically answers questions
5: Ancient tree containing a trapped spirit
6: Battlefield where lingering fog occasionally assumes [[humanoid]] forms
7: A portal to another [[plane]] of existence
8: Wishing well
9: Giant crystal shard protruding from the ground
10: Wrecked ship, which might be nowhere near water
11: Haunted hill or barrow mound
12: River ferry guided by a skeletal captain
13: Field of petrified soldiers or other creatures
14: Forest of petrified or [[awaken]]ed trees
15: Canyon containing a dragons' graveyard
16: Floating earth mote with a tower on it
1: 1 hour
2: 1 hour
3: 1.5 hours
4: 2 hours
5: 2 hours
6: 3 hours
7: 4 hours
8: 5 hours
9: 6 hours
10: 8 hours
11: 10 hours
12: 12 hours
13: 18 hours
14: 24 hours
15: 2 days
16: 3 days
17: 4 days
18: 5 days
1: {{!!d10}} of the caster's fingers turn to stone for {{!!duration}}.
2: {{!!d10}}0 bees swarm harmlessly around the caster for several days.
3: {{!!d10}}0 sparkling motes of light dance about the caster's head until dawn.
4: {{!!d10}}0% of the caster's body turns to iron for {{!!duration}}.
5: {{!!d10}} ducklings identify the caster as their mother.
6: {{!!d4}} of the caster's fingers move from their left hand to their right hand for {{!!l_duration}}.
7: {{!!d4}} of the caster's limbs become as durable as steel for {{!!l_duration}}.
8: {{!!d4}} of the caster's limbs become covered in fish scales for {{!!l_duration}}.
9: {{!!d4}} of the caster's limbs become invisible for {{!!l_duration}}.
10: {{!!d7}} of the caster's primary orifices seal shut for {{!!duration}}.
11: {{!!d35}} harmless lumps as big as walnuts cover the caster's body for {{!!duration}}.
12: {{!!d35}} quarts of olive oil pour from the caster's ears.
13: {{!!d35}} non-functioning eyes appear on the caster's face and head for {{!!l_duration}}.
15: A {{!!d10}} foot radius around caster sinks as {{!!d10}} into the earth.
22: A foot-long steel bar appears and runs completely through the caster's thigh.
23: A geyser erupts from one of the caster's pockets for {{!!duration}}.
24: A glowing orb hovers over caster's head any time they turn invisible for the next {{!!l_duration}}.
25: A great wind blows the caster {{!!d10}}0 yards in a random direction.
28: A hen's egg tumbles out of each of the caster's ears.
29: A huge balloon shaped like the caster drifts past overhead. It blinks out of existence in {{!!l_duration}}.
31: A large haystack falls from the sky onto the caster.
32: A large oak sprouts from one of the caster's pockets.
33: A length of chain now runs completely through the caster's torso.
34: A life-sized statue of the caster appears nearby, made of cheese.
35: A magical blast detonates at caster's location, but they are unharmed.
36: A mound of snow falls onto the caster and buries them up to their chest.
38: A skeleton appears and mimics the caster, exactly duplicating their movements.
40: A strong net falls from the sky and entangles the caster.
41: A swirl of rainbows accompanies any spell cast by the caster for the next {{!!l_duration}}.
42: A tornado picks the caster up and deposits them atop the nearest building.
44: A lighted cigar appears in the caster's mouth. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
45: A pebble falls from each of the caster's ears. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
46: Illusory ants seem to course from the caster's eyes. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
47: The caster is compelled to accuse someone nearby of impropriety. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
48: The caster appears astonishingly ugly for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
49: The caster appears to be decomposing, an illusion that lasts for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
50: The caster appears to be made of pure ice for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
52: The caster is compelled to applaud themself. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
53: The caster is compelled to beg someone nearby not to kill them. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
54: The caster is compelled to berate someone standing nearby. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
56: The caster appears to be on fire for {{!!d7}} seconds. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
57: The caster briefly appears to bleed from their eyes. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
58: The caster briefly looks like a photo negative. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
60: The caster briefly sees fire all around them. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
61: The caster briefly thinks that they're choking. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
63: The caster can't be magically healed for one hour. This accumulates for every spell cast by the caster for the next {{!!l_duration}}.
64: The caster can't traverse a doorway for {{!!duration}}. This accumulates for every spell cast by the caster for the next {{!!l_duration}}.
65: The caster is compelled to dance like a honeybee. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
66: The caster experiences a burning sensation on a random body part. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
67: The caster feels ants crawling all over them for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
68: The caster feels compelled to wash their hands. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
69: The caster feels completely alone and isolated for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
70: The caster feels distractingly hungry for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
71: The caster feels overwhelmingly dizzy for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
72: The caster feels transcendent euphoria for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
73: The caster forgets everyone's name for one hour. This accumulates for every spell cast by the caster for the next {{!!l_duration}}.
74: The caster forgets their name for one hour. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
75: The caster glows with infernal radiance for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
76: The caster is compelled to growl like a rabid dog. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
77: The caster has a brief vision of some distant land. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
78: The caster has a strong craving to chew on twigs and bark. The craving lasts for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
79: Every time the caster casts a spell for the next {{!!l_duration}}, the caster has a small chance of being stricken mute for {{!!duration}}.
80: Every time the caster casts a spell for the next {{!!l_duration}}, the caster has a small chance of turning invisible for {{!!duration}}.
81: Every time the caster casts a spell for the next {{!!l_duration}}, the caster loses their balance and trips.
82: Every time the caster casts a spell for the next {{!!l_duration}}, the caster is compelled to flap their arms.
83: The caster is afraid of their own name for the next {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
84: The caster grows hair like an ape all over their body that persists for one hour. This accumulates for every spell cast by the caster for the next {{!!l_duration}}.
86: The caster is bathed in an otherworldly green light for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
87: The caster is blind in one eye for one hour. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
88: The caster is grief-stricken for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
89: The caster is hopelessly drunk for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
90: The caster is immune to bludgeons for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!duration}}.
91: The caster is immune to missile fire for a few seconds. This repeats for every spell cast by the caster for the next {{!!duration}}.
92: The caster is intensely magnetic for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
93: The caster turns matte black for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
94: The caster is suddenly facing true north. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
95: The caster is wracked by existential horror for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
96: The caster looks like a cadaver for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
97: The caster is compelled to make a few short, barking cries. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
98: The caster oozes sweet-smelling oil for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
100: The caster reeks of alcohol for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
101: The caster salivates copiously for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
102: The caster seems withdrawn and despondent for {{!!duration}}.
103: The caster shakes like a rag doll for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
104: The caster shivers uncontrollably for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
105: The caster shrinks by {{!!d7}}0% for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
106: The caster shrinks by 50% for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
107: The caster smells strongly of turpentine for {{!!duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
108: The caster suffers brief visions of carnage. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
109: The caster suffers disorienting vertigo. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
110: The caster thinks that they're drowning. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
111: The caster thinks that their clothes are on fire. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
112: The caster is compelled to trumpet like an elephant. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
113: The caster very briefly vanishes. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
114: The caster's clothes age {{!!d50}} years. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
115: The caster's clothes billow with green smoke. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
116: The caster's eyes briefly double in size. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
117: The caster's face looks 50 years older for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
118: The caster's feet are suddenly covered with ash. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
119: The caster's hair grows two inches. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
121: The caster's hands steam wildly for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
122: The caster's head turns 360° at the neck, unharmed. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
123: The caster's head turns invisible for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
124: The caster's heart pounds audibly. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
125: The caster's left arm turns to stone for one hour. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
127: The caster's physical strength is significantly weakened for one hour. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
128: Gravity briefly doubles for the caster. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
129: The caster is compelled to giggle for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
130: Light shines from the caster's mouth for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
131: Small lumps of ice fall from the caster's nostrils. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
132: Smoke hangs in the air about the caster for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
133: Stones near the caster glisten with slime. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
134: Sunlight is painful to caster for {{!!s_duration}}. This repeats for every spell cast by the caster for the next {{!!l_duration}}.
135: For {{!!l_duration}}, alcohol has no effect upon the caster, but cheese is intoxicating.
136: All holy symbols within 100 yards suddenly bear the caster's image.
137: All of the caster's clothing is colored safety orange.
138: All of the caster's clothing is permanently moist.
139: All of the caster's enemies with 100 yards vanish until dawn.
140: All of the caster's fingers are as long as their middle finger. This persists for {{!!duration}}.
141: All of the caster's fingers are clear like glass for {{!!duration}}.
142: All of the caster's fingers double in thickness for {{!!duration}}.
143: All of the caster's fingers migrate to one hand for {{!!duration}}.
147: All of thecaster's possessions are thrown {{!!duration}} into the future.
149: All trees within 100 yards form into a tight circle around the caster.
151: All [[undead]] within {{!!2d4}} miles are compelled to race to the caster's current location.
153: All vegetation within 100 yards is invisible to the caster for {{!!duration}}.
157: All within 10 yards of the caster are sprayed with viscous ectoplasm.
158: All within 10 yards of the caster are compelled to attack them for {{!!s_duration}}.
160: An accurate illusion of the caster copies their movements one mile away.
161: An illusory statue of the caster stands at this spot for {{!!l_duration}}.
162: An image of the caster's beating heart hovers in the nearest doorway for {{!!duration}}.
163: An image of the caster's head hovers over their actual head for {{!!duration}}.
164: An image of the caster's beating heart hovers over their head for {{!!duration}}.
165: Any [[abjuration]]s currently affecting the caster are dispelled.
166: Any armor that the caster is wearing right now shrinks by 80%. This effect is reverted after {{!!duration}}.
167: Any armor that the caster is wearing right now vanishes, reappearing in the same spot after {{!!l_duration}}.
168: Any arrow striking the caster in the next {{!!duration}} disintegrates in {{!!s_duration}}.
169: Any arrow striking the caster in the next {{!!duration}} inflicts equal damage on its archer.
171: For the next {{!!l_duration}}, any spell cast by the caster is delayed {{!!s_duration}}.
172: Any attempt to change shape locks the caster into that new shape for {{!!l_duration}}.
175: Any attempt to change shape in the next {{!!l_duration}} will be only partially successful.
176: Any attempt to change shape in the next {{!!l_duration}} will cause the caster to be rooted in place.
177: Any attempt to change shape in the next {{!!l_duration}} will leave their feet unchanged.
178: Any attempt to change shape in the next {{!!l_duration}} will make the caster lose all their hair.
180: Any attempt to change shape in the next {{!!l_duration}} will shrink the caster by {{!!d4}}0%. This effect is reverted after {{!!duration}}.
181: Any attempt to change shape in the next {{!!l_duration}} will teleport the caster {{!!d50}} yards in a random direction.
182: Any attempt to change shape in the next {{!!l_duration}} will teleport the caster to this spot.
183: Any attempt to change shape in the next {{!!l_duration}} will turn them into {{!!d20}} ducklings.
185: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a geranium.
186: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a monkey.
187: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a pelican.
188: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a penguin.
189: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a rabbit.
190: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a shrubbery.
191: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a [[cockatrice]].
192: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a [[goblin]] toddler.
193: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a [[troll]].
194: Any attempt to change shape in the next {{!!l_duration}} will turn the caster into a wax dummy.
198: Any attempt to use rope in the next {{!!l_duration}} leaves the caster hopelessly entangled
199: Any attempt to use rope in the next {{!!l_duration}} leaves hideous welts on the caster's body that last for {{!!duration}}.
200: Any blade that has drawn the caster's blood is invisible to them for {{!!duration}}.
201: Any bread that caster bakes in the next {{!!l_duration}} remains warm until it's eaten.
202: Any building that the caster enters in the next {{!!l_duration}} appears to catch fire.
203: Any building that the caster enters in the next {{!!l_duration}} ejects them forcefully.
204: Any clothing worn by the caster in the next {{!!l_duration}} is invisible to them while they wear it.
205: Any clothing worn by the caster in the next {{!!l_duration}} smells like carrion while they wear it.
206: Any coins in caster's possession are now gold-plated.
210: Any creature summoned by the caster in the next {{!!l_duration}} emerges from their mouth.
211: Any creatures summoned near the caster in the next {{!!l_duration}} are invisible to them.
212: Any creatures summoned near the caster in the next {{!!l_duration}} immediately befriend them.
215: Any electricity-based magic used by the caster in the next {{!!l_duration}} discharges on them.
216: Any electricity-based magic used by the caster in the next {{!!l_duration}} reeks of ozone.
217: Any fire extinguished by the caster rekindles itself {{!!s_duration}} later.
218: Any fire-based spell used by the caster in the next {{!!l_duration}} has only 25% of its normal range.
219: Any fires set by the caster are invisible for {{!!duration}}.
220: Any fires set by the caster in the next {{!!l_duration}} attract [[undead]] like moths to a candle.
221: Any fires set by the caster in the next {{!!l_duration}} jingle like wind chimes while they burn.
222: Any fires set by the caster in the next {{!!l_duration}} make those near it appear to be [[undead]].
223: Any fires set by the caster in the next {{!!l_duration}} produce no heat.
224: Any fires set by the caster in the next {{!!l_duration}}produce no smoke.
225: Any fires set by the caster in the next {{!!l_duration}} whisper vague threats against him.
226: Any food now carried by the caster combusts.
227: Any food now carried by the caster is 10 times as nutritious.
228: Any food now carried by the caster is fused into glass.
231: Any food now carried by the caster smells like carrion.
232: Any food now carried by the caster turns to ice.
233: Any food now carried by the caster turns to iron.
234: Any food now carried by the caster turns to spun sugar.
236: Any hammer thrown by the caster in the next {{!!l_duration}} returns to their hand one round later.
237: Any horse ridden by the caster in the next {{!!l_duration}} suffers no fatigue while they ride it.
240: Any magic currently affecting the caster is dispelled.
241: Any magic currently affecting the caster is suppressed until dawn.
242: Any magic items owned by the caster appear in a heap nearby.
243: Any magic items owned by the caster are non-functional for {{!!duration}}.
244: Any magical scrolls carried by the caster are now fireproof.
246: Any magical scrolls carried by the caster will now trigger random magical effects.
247: Any magical scrolls now carried by the caster discharge spontaneously.
248: Any magical scrolls now carried by the caster turn to steel.
249: Any metal object carried by the caster is 90% transparent for {{!!duration}}.
250: Any metal object carried by the caster seems 10 times its normal weight for {{!!duration}}.
251: Any metal that the caster is carrying turns to liquid like mercury. It reverts in {{!!duration}}.
254: Any missile fired by the caster in the next {{!!duration}} vanishes mid-flight.
255: Any missile fired by the caster in the next {{!! duration}} is destroyed by lightning mid-flight.
257: Any mountain more than one mile from the caster is invisible to them for the next {{!!l_duration}}.
258: Any ranged spell used by the caster in the next {{!!l_duration}} seems to issue from their eyes.
259: Any ranged spell used by the caster in the next {{!!l_duration}} seems to issue from someone else.
260: Any rope currently carried by the caster doubles in length.
261: Any rope currently carried by the caster turns to braided gold wire.
262: Any rope that the caster is now carrying becomes frictionless.
263: Any rope that the caster is now carrying is soaked with lamp oil.
264: Any shield held by the caster appears to be made of Swiss cheese. This reverts in {{!!duration}}.
265: Any shield held by the caster appears to weigh 100 pounds. This reverts in {{!!duration}}.
267: Any shield held by the caster is incorporeal in the presence of weapons. This reverts in {{!!duration}}.
269: Any spells cast by the caster in the next {{!!l_duration}} are accompanied by twinkling lights.
270: Any spells cast by the caster upon themself in the next {{!!l_duration}} make them extremely nauseous.
271: Any spells cast by the caster upon themself in the next {{!!l_duration}} lapse after {{!!s_duration}}.
272: Any spells cast by the caster within the last hour are negated.
273: The next spell the caster casts will instead be a harmless shower of sparks.
276: Any wood within 25 yards flies toward the caster for {{!!s_duration}}.
277: Any writing implement used by the caster suddenly breaks or runs dry.
279: Anyone drinking a potion near the caster looks like the caster until sunset.
280: Anyone drinking a potion within 25 yards of the caster in the next {{!!l_duration}} shrinks by 50% for its duration.
283: Anyone related to the caster by blood is invisible to them for {{!!l_duration}}.
284: Anyone slain by the caster in the next {{!!l_duration}} becomes invisible upon death for {{!!duration}}.
286: Anyone trying to scry the caster's whereabouts in the next {{!!l_duration}} sees this location.
287: Anyone voluntarily struck by the caster's magic in the next {{!!l_duration}} resents them for it.
288: Anyone who knows the caster's name within 25 yards feels compelled to give them an offensive nickname.
289: Anyone who looks deep into caster's mouth in the next {{!!l_duration}} risks insanity.
290: Anything caster drinks in the next {{!!l_duration}} is highly likely to fall from their mouth.
291: Anything written by the caster in the next {{!!l_duration}} appears as gibberish to everyone else.
338: Beneficial magic [[potion]]s have an opposite effect upon the caster for the next {{!!l_duration}}.
339: Bits of flesh fall from caster's body for the next {{!!duration}}.
340: Blades seem extraordinarily dull while the caster wields them for the next {{!!l_duration}}.
342: Caster is compelled to accuse their nearest ally of murdering them.
343: Caster acquires an exact copy of every non-magical thing they own.
344: Caster acquires [[lycanthropy|lycanthrope]], but only in their left leg. This persists for {{!!l_duration}}.
346: Caster addresses everyone they know by their own name for the next {{!!l_duration}}.
347: Caster adopts a habit of nightly self-flagellation for the next {{!!l_duration}}.
349: Caster adopts bizarre rituals concerning the preparation of food for the next {{!!l_duration}}.
350: Caster adopts fastidious standards of hygiene for the next {{!!l_duration}}.
352: Caster adopts some unlikely object as a kind of holy symbol for the next {{!!l_duration}}.
353: Caster adopts the next [[religion]] they encounter for the first time.
354: Caster ages {{!!d10}} years per hour until sunset tonight, then reverts to normal.
355: Caster ages {{!!2d4}} years per second for 5 seconds, then reverts to normal.
356: Caster ages backwards {{!!2d4}} years over {{!!d20}} seconds.
364: Caster sees their surroundings as misty and fog-shrouded for the next {{!!l_duration}}.
365: Caster thinks it's fifty degrees colder than it really is for the next {{!!l_duration}}.
366: Caster thinks that there's one more step in every staircase for the next {{!!l_duration}}.
369: Caster and one nearby ally teleport to the caster's home.
370: Caster is compelled to loudly insisting that they're ambidextrous.
371: Caster appears increasingly decrepit as the day wears on. The effect reverts at sundown.
372: Caster appears to be a bare skeleton from the waist down for the next {{!!l_duration}}.
373: Caster appears to be a bare skeleton from the waist up for the next {{!!l_duration}}.
374: Caster appears to be at peak health, no matter how badly injured, for the next {{!!l_duration}}.
375: Caster appears to be bleeding profusely whenever they're indoors for the next {{!!duration}}.
376: Caster appears to be composed of translucent quartz for the next {{!!duration}}.
377: Caster appears to be covered in ugly scales for one day each week for the next {{!!d7}} weeks.
378: Caster appears to be made of countless flesh-colored pebbles for the next {{!!duration}}.
379: Caster appears to be made out of bricks until sunset tomorrow.
380: Caster appears to be of a different species while sleeping for the next {{!!l_duration}}.
384: Caster appears to be [[undead]] for one hour after each meal for the next {{!!l_duration}}.
385: Caster appears to be [[undead]] while in the presence of undead for the next {{!!l_duration}}.
386: Caster appears to be weathered like an ancient statue for the next {{!!l_duration}}.
387: Caster appears to have a long metal spike jutting from their forehead for the next {{!!s_duration}}.
388: Caster appears to have been carved from wood with an axe for the next {{!!duration}}.
389: Caster appears to have been crafted out of clay by children for the next {{!!duration}}.
391: Caster appears to shrivel like a raisin each time they cast a spell in the next {{!!l_duration}}.
396: Caster feel compelled to drink every [[potion]] they see for the next {{!!l_duration}}.
398: Caster attracts zealous sycophants wherever they go for the next {{!!l_duration}}.
399: Caster automatically believes that their own [[illusion]]s are real for the next {{!!l_duration}}.
402: Caster becomes disturbingly frenetic until sunset.
403: Caster becomes flat as a sheet of parchment for {{!!s_duration}}.
408: Caster becomes powerfully addicted to [[necromantic|necromancy]] magic for the next {{!!l_duration}}.
409: Caster becomes powerfully addicted to random magical effects for the next {{!!l_duration}}.
410: Caster becomes tightly stuck to the next chair in which they sit.
411: Caster becomes unconscious whenever they become invisible for the next {{!!l_duration}}.
412: Caster becomes violently ill if they eat near a fire for the next {{!!l_duration}}.
413: Caster becomes visibly anxious at the sight of water for the next {{!!l_duration}}.
414: Caster begins aging backwards, one year per second, for the next 10-15 seconds. The effect reverts after {{!!s_duration}}.
415: Caster begins growing one inch per minute for the next {{!!d20}} minutes. The effect then reverts after {{!!s_duration}}.
416: Caster is compelled to begin their conversations with an insulting comment for the next {{!!l_duration}}.
417: Caster begins to resemble the next person who touches them. The effect reverts after {{!!duration}}.
418: Caster briefly turns translucent after casting any spell for the next {{!!l_duration}}.
419: Caster burns with homicidal rage whenever they're struck by magic for the next {{!!duration}}.
420: Caster can alter their weight by up to 50% at will for the next {{!!l_duration}}.
421: Caster can always sense their location relative to this location for the next {{!!d20}} years.
422: Caster can appraise gems by tasting them for the next {{!!l_duration}}.
423: Caster manifests the [[Mark of Detection]] for the next {{!!l_duration}}.
424: Caster manifests the [[Mark of Finding]] for the next {{!!l_duration}}.
425: Caster manifests the [[Mark of Handling]] for the next {{!!l_duration}}.
426: Caster manifests the [[Mark of Healing]] for the next {{!!l_duration}}.
427: Caster manifests the [[Mark of Hospitality]] for the next {{!!l_duration}}.
428: Caster manifests the [[Mark of Making]] for the next {{!!l_duration}}.
429: Caster manifests the [[Mark of Passage]] for the next {{!!l_duration}}.
430: Caster manifests the [[Mark of Scribing]] for the next {{!!l_duration}}.
431: Caster manifests the [[Mark of Sentinel]] for the next {{!!l_duration}}.
432: Caster manifests the [[Mark of Shadow]] for the next {{!!l_duration}}.
433: Caster manifests the [[Mark of Storm]] for the next {{!!l_duration}}.
434: Caster manifests the [[Mark of Warding]] for the next {{!!l_duration}}.
438: Caster can breathe underwater for the next {{!!l_duration}}, but they smell like a fish.
439: Caster can carry any weight of books but only in their bare hands for the next {{!!l_duration}}.
440: Caster can cause one creature near them to turn to iron for {{!!duration}}.
441: Caster can cause one nearby person to age {{!!d10}} years. The effect reverts in {{!!l_duration}}.
442: Caster can change the size of their ears at will. Any changes revert after {{!!duration}}.
443: Caster can conjure apples out of thin air, one at a time, for the next {{!!duration}}.
445: Caster can detach and reattach either of their hands at will for the next {{!!l_duration}}.
447: Caster can detect non-magical fire within 500 yards for the next {{!!l_duration}}.
448: Caster can detect the nearest potable water at will for the next {{!!l_duration}}.
450: Caster can detect true east at will for the next {{!!l_duration}}.
451: Caster can discern a person's age by touching them for the next {{!!l_duration}}.
452: Caster can discern a tree's age by touching it for the next {{!!l_duration}}.
453: Caster can discern whether people are really unconscious for the next {{!!l_duration}}.
454: Caster can discern which spells a magic user is capable of casting for the next {{!!l_duration}}.
455: Caster can disgorge a pound of sawdust once per day for the next {{!!d7}} days.
460: Caster can echolocate like a dolphin while naked and underwater for the next {{!!l_duration}}.
461: Caster is not burned by normal fire for the next {{!!l_duration}}.
462: Caster can extend their legs to twice their normal length at will, for the next {{!!l_duration}}.
464: Caster can handle red-hot metal with their bare hands for the next {{!!d35}} days.
465: Caster can hear what occurs at this location from up to 10 miles away, for the next {{!!d35}} days.
466: Caster can hear what's going on in their home, wherever they are, for the next {{!!l_duration}}.
469: Caster can identify any kind of fungus on sight for the next {{!!l_duration}}.
470: Caster can ignite twigs by sticking them in their mouth for the next {{!!l_duration}}.
472: Caster can induce ravenous hunger in others for the next {{!!l_duration}}.
473: Caster can inflate their left hand like a balloon for the next {{!!l_duration}}.
474: Caster can instantly count quantities of fewer than 1,000 items for the next {{!!l_duration}}.
478: Caster can make their ears resemble noses at will for the next {{!!l_duration}}.
481: Caster can move in total silence for the next {{!!s_duration}}.
482: Caster can move silently while holding a thumb in each nostril for the next {{!!l_duration}}.
484: Caster can not use charged magic items for the next {{!!duration}}.
487: Caster can only wear one shoe at a time for the next {{!!l_duration}}.
488: Caster can open their mouth as wide as they are tall for the next {{!!duration}}.
489: Caster can pass their right arm through up to six inches of wood for the next {{!!l_duration}}.
490: Caster can reattach their own limbs if they're severed for the next {{!!l_duration}}.
491: Caster can recall their own birth with perfect clarity.
492: Caster can remove their tongue and replace it at will for the next {{!!l_duration}}.
493: Caster can remove one eye and replace it at will for the next {{!!l_duration}}.
494: Caster can remove or negate one curse over the course of the next year.
495: Caster can resemble a decaying zombie at will for the next {{!!l_duration}}.
496: Caster can retract their feet into their ankles at will for the next {{!!l_duration}}.
497: Caster can retract their fingers into their palms at will for the next {{!!l_duration}}.
498: Caster can retract their nose into their face at will for the next {{!!l_duration}}.
499: Caster can effortlessly scale walls for the next {{!!l_duration}}.
500: Caster can see in total darkness if they have a piece of fruit in their pocket for the next {{!!l_duration}}.
501: Caster can see secret doors easily but can't see normal doors for the next {{!!l_duration}}.
503: Caster can see through their eyelids for the next {{!!duration}}.
504: Caster can see through up to 1 foot of stone if they have a pebble in their mouth for the next {{!!l_duration}}.
507: Caster can see in total darkness for {{!!2d4}} days.
511: Caster can speak in a whisper to anyone in their line of sight for the next {{!!l_duration}}.
512: Caster can speak in any of {{!!2d4}} voices at will
513: Caster can speak with ants for the next {{!!duration}} but can only ask yes/no questions.
522: Caster can stretch their left arm 2X the length of their body for the next {{!!l_duration}}.
524: {{!!2d4}} rabbits materialize and scatter in different directions. They vanish after {{!!s_duration}}.
525: Caster casts [[conjure elemental]] and immediately loses control of the elemental.
526: Caster casts [[infernal calling]].
527: Caster casts [[summon lesser demons]].
528: Caster summons {{!!2d4}} pigeons.
531: Caster can survive one fall of up to twenty miles for the next {{!!duration}}.
532: Caster can taste foods simply by touching them for the next {{!!l_duration}}.
533: Caster can teleport 10 feet straight up, once per day, for the next {{!!2d4}} days.
534: Caster can teleport up to {{!!d50}} feet 10 times at will, but loses a finger each time. When the last finger is lost, they all return.
536: Caster can teleport up to {{!!d50}}0 feet at will for the next {{!!d7}} day(s), but arrives unconscious for one hour.
538: Caster can teleport up to {{!!d20}}0 feet at will for the next {{!!d7}} day(s), but doesn't arrive for {{!!2d4}} days.
542: Caster can teleport up to {{!!d50}}0 feet at will for the next {{!!d7}} day(s), but only while naked and unencumbered
544: Caster can teleport at will to this exact spot {{!!2d4}} times in the next six months.
545: Caster can teleport into the nearest hollow tree, once, some time in the next six months.
546: Caster can teleport up to fifty feet once per day for the next {{!!d4}} week(s).
547: Caster can throw one baseball-sized item {{!!2d4}} days into the future, once, some time in the next six months.
548: Caster can throw one nearby person {{!!d20}} seconds into the future.
549: Caster can throw one nearby person {{!!d4}} days into the future.
552: Caster can turn 360° at the waist without harm for the next {{!!l_duration}}.
554: Caster can turn their arms to wood for up to {{!!d20}} seconds each day for the next {{!!l_duration}}.
556: Caster can turn their hands invisible at will for the next {{!!duration}}.
559: Caster turns into a falcon for {{!!duration}}.
560: Caster can turn into a small tree while they're indoors for the next {{!!l_duration}}.
562: Caster can turn invisible while they hold their breath for the next {{!!duration}}.
563: Caster can turn invisible while naked and motionless for the next {{!!l_duration}}.
569: Caster can't be blinded or dazzled by sunlight for the next {{!!l_duration}}.
570: Caster can't be burned by magical fire for the next {{!!duration}}.
571: Caster can't be burned by steam or scalding water for the next {{!!l_duration}}.
575: Caster can't be cut by glass for the next {{!!l_duration}}.
576: Caster can't be cut by non-magical blades for {{!!d4}} days.
583: Caster can't be seen through glass or ice for the next {{!!l_duration}}.
584: Caster can't be strangled for the next {{!!l_duration}}.
585: Caster can't breathe for {{!!d20}} seconds.
586: Caster can't bring their left hand within 18 inches of their head for the next {{!!duration}}.
596: Caster can't cast magic unless they're within sight of a tree for the next {{!!l_duration}}.
599: Caster can't create normal or magical fire for {{!!2d4}} days.
601: Caster can't cross moving water while brandishing a weapon for the next {{!!l_duration}}.
608: Caster can't eat any food that doesn't contain a handful of soil for the next {{!!2d4}} days.
613: Caster can't enter any artificial structure for {{!!2d4}} days.
614: Caster can't enter any building in which [[dwarves|dwarf]] are present for the next {{!!l_duration}}.
615: Caster can't go more than 10' from this location for {{!!d20}} hours.
620: Caster can't lift both feet from the ground at the same time for the next {{!!l_duration}}.
621: Caster can't move their arms for the next {{!!d20}} seconds.
622: Caster can't move their left arm or right leg for the next {{!!d20}} seconds.
623: Caster can't move more than 10 feet from the next tree they touch for {{!!d35}} seconds afterwards.
624: Caster can't open any door constructed primarily of wood for the next {{!!l_duration}}.
625: Caster can't open any door that has a hinge made of metal for the next {{!!l_duration}}.
630: Caster can't remember the last {{!!duration}}.
632: Caster can't remove their hands from their pockets for the next {{!!duration}}.
633: Caster can't run while their eyes are open for the next {{!!duration}}.
635: Caster can't see through glass, ice, diamond, or the like for the next {{!!duration}}.
640: Caster can't speak for one hour and can only croak like a frog.
642: Caster can't speak in anything less than a full shout for the next {{!!duration}}.
643: Caster can't speak in sentences longer than 10 syllables for the next {{!!duration}}.
645: Caster can't speak to anyone whom they're not currently touching for the next {{!!duration}}.
649: Caster can't speak unless their thumbs are touching for the next {{!!duration}}.
654: Caster can't tolerate the presence of wet ink for the next {{!!l_duration}}.
657: Caster can't use any magic until someone cuts them with a blade.
658: Caster can't use magic between sunrise and noon for the next {{!!2d4}} days.
660: Caster can't use magic for {{!!d20}} seconds after being struck by magic over the next {{!!l_duration}}.
661: Caster can't use magic for six hours after ingesting meat for the next {{!!2d4}} days.
668: Caster can't use magic until they eats a pound of feathers.
669: Caster can't use magic until sunset tomorrow.
670: Caster can't use magic while sitting for the next {{!!l_duration}}.
671: Caster can't use magic within 100 yards of this spot for {{!!2d4}} days.
675: Caster can't use the spell that triggered this random effect for {{!!l_duration}}.
676: Caster can't use weapons that contain wood for the next {{!!l_duration}}.
681: Caster is compelled to their name to its reverse: "Tom" becomes "Mot". The compulsion wears off after {{!!l_duration}}, but they aren't compelled to change their name back.
682: Caster proclaims that they're doing the work of a randomly-chosen [[Sovereign|Sovereign Host]].
684: Caster claims to be immune to inorganic poisons.
685: Caster proclaims they are the offspring of [[Arawai]] and King [[Boranel ir'Wynarn]].
686: Caster claims to have begotten a child with the [[Silver Flame]].
688: Caster claims to have created the universe.
689: Caster claims to have invented the [[fireball]] spell.
692: Caster is suddenly holding a bag full of mismatched teeth. It vanishes after {{!!duration}}.
693: Caster is suddenly holding a beautiful black velvet painting of [[elves|elf]] on horseback. It vanishes after {{!!duration}}.
694: Caster is suddenly holding a foul, decomposing skull. It vanishes after {{!!duration}}.
703: Caster confesses to every crime they hear about for the next {{!!l_duration}}.
705: Caster overestimates their martial and magical prowess for the next {{!!duration}}.
708: Caster craves moss for the next {{!!l_duration}}.
709: Caster craves wood like a termite for the next {{!!l_duration}}.
710: Caster cries like a baby whenever they're hungry or can't sleep for the next {{!!l_duration}}.
711: Caster cries like a baby whenever they're struck by magic for the next {{!!l_duration}}.
712: Caster is compelled to dance like a belly-dancer for {{!!d35}} seconds.
714: Caster declares that [[dwarves|dwarf]] are indistinguishable from [[orc]]s.
716: Caster declares that they have the power to absolve sins.
717: Caster declares that they are the judge of all living creatures.
719: Caster deeply resents anyone who asks them to use magic for the next {{!!l_duration}}.
720: Caster deeply resents anyone who doesn't praise their magical skill for the next {{!!l_duration}}.
723: Caster demands that employers pay them in wood instead of gold for the next {{!!l_duration}}.
724: Caster demands that their allies adopt fastidious hygiene standards for the next {{!!l_duration}}.
732: Caster develops a stutter while in the presence of [[shifter]]s for the next {{!!l_duration}}.
733: Caster develops an intense hunger for leather strapping for the next {{!!l_duration}}.
744: Caster disgorges {{!!d10}}c worth of copper crowns. They vanish after {{!!duration}}.
745: Caster disgorges {{!!d10}}0 pounds of wet, coarse sand.
746: Caster disgorges {{!!d4}} apples per hour for the next {{!!d35}} hours.
747: Caster disgorges {{!!d4}} gallons of foul, necrotic mush.
748: Caster disgorges {{!!d7}} gallons of rusty sludge.
749: Caster disgorges {{!!d20}} pounds of carrots.
750: Caster disgorges {{!!2d4}} full-sized wool blankets.
751: Caster disgorges a 100 foot length of fine silver wire.
752: Caster disgorges a ball of solid bone nine inches in diameter.
753: Caster disgorges a bar of copper four feet in length.
754: Caster disgorges a bar of soap.
755: Caster disgorges a bolt of finely embroidered silk.
756: Caster disgorges a book about gastrointestinal anomalies.
758: Caster disgorges a box of rare botanical samples.
759: Caster disgorges a bushel of ripe peaches.
761: Caster disgorges a four-course meal for three.
762: Caster disgorges a fully-grown cactus.
763: Caster disgorges a full-sized barrel.
764: Caster disgorges a glass cube four inches on a side.
765: Caster disgorges a glass vial containing a mysterious [[potion]].
766: Caster disgorges a golden birdcage.
767: Caster disgorges a [[dragonmarked house]]'s signet ring.
768: Caster disgorges a large bunch of bananas.
769: Caster disgorges a large chair.
770: Caster disgorges a large pane of glass.
771: Caster disgorges a length of heavy chain.
772: Caster disgorges a life-sized ice sculpture of a horse.
773: Caster disgorges a long hunk of driftwood.
774: Caster disgorges a lump of brass the size of their torso.
775: Caster disgorges a medium-sized astrolabe.
776: Caster disgorges a mop and a wooden bucket full of suds.
777: Caster disgorges an ornate key.
778: Caster disgorges a pair of deer antlers.
779: Caster disgorges a pair of smith's fire tongs.
781: Caster disgorges a pound of mercury.
782: Caster disgorges a pound of molten lead.
784: Caster disgorges a ship's anchor.
785: Caster disgorges a small brazier full of burning coals.
786: Caster disgorges a porcelain bowl.
787: Caster disgorges a weapon that they misplaced {{!!2d4}} months ago.
788: Caster disgorges a whole pumpkin.
789: Caster disgorges a wrought-iron staircase banister.
791: Caster disgorges an [[giant]]'s femur.
792: Caster disgorges an entire beehive.
793: Caster disgorges an exact copy of the head of someone nearby. It vanishes after {{!!s_duration}}.
794: Caster disgorges an oil painting of this scene. It vanishes after {{!!duration}}.
795: Caster disgorges a [[fastieth]] egg.
796: Caster disgorges enough snow to blanket an area ten feet square.
797: Caster disgorges half of a canoe.
798: Caster disgorges the carcass of a strange and colorful bird.
799: Caster disgorges the emblem of the Order of the [[Emerald Claw]].
800: Caster disgorges the entire, intact skin of an [[umber hulk]].
801: Caster disgorges the entire, intact skin of someone nearby. It vanishes after {{!!duration}}.
802: Caster disgorges what appears to be their entire nervous system. It vanishes after {{!!duration}}.
803: Caster disgorges what appears to be their own still-beating heart. It vanishes after {{!!duration}}.
804: Caster displays all the signs of full demonic possession for the next {{!!s_duration}}.
809: Caster distrusts anyone who won't let them examine their teeth for the next {{!!duration}}.
818: Caster dreams each night of a powerful and malevolent artifact for the next {{!!d50}} days.
819: Caster dreams each night of being painfully turned inside out for the next {{!!d50}} days.
820: Caster dreams each night of being worshipped by gods for the next {{!!d50}} days.
823: Caster is compelled to drink any potions they're now carrying.
825: Caster is compelled to embrace someone nearby and is reluctant to let go for {{!!duration}}.
826: Caster is compelled to embrace the nearest tree and refuses to let go for the next {{!!duration}}.
832: Caster experiences pain if they handles jewels or precious gems for the next {{!!l_duration}}.
834: Caster experiences violent, full-body spasms for {{!!s_duration}}.
835: Caster faces north and is stuck that way for {{!!s_duration}}.
836: Caster falls down the next flight of steps they encounter within the next week.
837: Caster falls from the nearest tree.
845: Caster fears that their limbs are vanishing one by one for the next {{!!duration}}.
846: Caster fears that spiders have lain countless eggs in their brain for the next {{!!duration}}.
848: Caster forms a telepathic bond to a random stranger within {{!!d4}} miles. The bond lasts for {{!!duration}}.
849: Caster feels as if they're walking on a slope for the next {{!!duration}}.
850: Caster feels as though they're trudging through knee-deep snow for the next {{!!duration}}.
851: Caster feels as though they're trudging uphill for the next {{!!duration}}.
853: Caster feels countless small snakes crawling all over their body for the next {{!!duration}}.
856: Caster feels inexplicable anxiety when they hear their name for the next {{!!l_duration}}.
859: Caster feels intense but unfocused hatred for {{!!d7}} hours.
865: Caster feels powerless unless they're wearing boots on their hands for the next {{!!duration}}.
867: Caster feels thorny roots growing slowly through their flesh for the next {{!!duration}}.
946: Caster finds the whole idea of "names" to be silly and pointless for the next {{!!duration}}.
950: Caster flees, panic-stricken, at top speed in a random direction. The panic persists for {{!!d35}} seconds.
951: Caster flickers like a guttering candle for {{!!2d4}} seconds.
953: Caster flies into a murderous rage and attacks their nearest ally for the next {{!!d4}}0 seconds.
954: Caster forgets any fire that they lights
955: Caster forgets any common-[[tier|spell tier]] spell they now have memorized. Their amnesia fades after {{!!duration}}.
956: Caster forgets everyone's name for {{!!duration}}.
961: Caster forgets how to walk for {{!!d10}} hours.
967: Caster gains no benefit from wearing gloves or gauntlets for the next {{!!2d4}} days.
969: Caster gains 10 lbs per minute for the next {{!!d20}} minutes. After {{!!s_duration}}, the effect is reverted.
970: Caster seems to be lying when talking about magic for the next {{!!l_duration}}.
973: Caster glows as bright as daylight while they're asleep for the next {{!!l_duration}}.
974: Caster goes berserk and attacks the next [[goblinoid]] creature they see within the next {{!!s_duration}}.
975: Caster goes berserk in the presence of royalty for the next {{!!duration}}.
976: Caster goes berserk whenever they receive magical healing for the next {{!!duration}}.
985: Caster grows {{!!d10}} new and mysterious organs in their abdomen. They persist for {{!!l_duration}}.
986: Caster grows an additional finger each week for {{!!2d4}} weeks, after which the extra fingers vanish.
987: Caster grows one inch per day for the next {{!!2d4}} days, after which their original height is restored.
988: Caster hallucinates wildly for {{!!duration}} the next time they drink water.
989: Caster hallucinates wildly until they drink a quart of water.
993: Caster has a large advantage on their next {{!!d4}} attempts.
995: All non-magical locks within {{!!2d4}} yards of the caster immediately unlock for the next {{!!duration}}.
996: The next [[consequence]] the caster suffers within the next 30 minutes will make them go blind for {{!!s_duration}}.
998: Caster has a clear memory of building themself from scratch. This delusion lasts for {{!!duration}}.
1003: Caster can understand (but not speak) any language they hear for the next {{!!duration}}.
1005: Caster forms a large but harmless hole at the top of their head. It persists for {{!!duration}}.
1011: Caster forms a small keyhole in the palm of their right hand. It persists for {{!!duration}}.
1012: Caster has a star-shaped dent at the back of their head for the next {{!!duration}}.
1013: Caster has a violent argument with the next soldier they meet within the next few weeks.
1014: Caster develops an almost paralyzing fear of death and the dead for the next {{!!duration}}.
1017: Caster develops an identical face on the back of their head for the next {{!!s_duration}}.
1018: Caster has an inexplicable but overwhelming fear of sunrise for the next {{!!d4}} days.
1020: Caster has an overpowering hatred of [[everbright lantern]]s for the next {{!!duration}}.
1024: Caster suddenly has blasphemous tattoos over most of their body that persist for {{!!duration}}.
1029: Caster has no scent whatsoever for the next {{!!l_duration}}.
1030: Caster suddenly has ram's horns growing from their hips, which persist for the next {{!!duration}}.
1031: Caster suddenly has a bell tied with a ribbon to each of their toes.
1034: Caster has ten thumbs in their mouth. They vanish after {{!!s_duration}}.
1035: Caster has ten thumbs instead of fingers. They revert to normal after {{!!duration}}.
1043: The caster (and only the caster) hears a choir of [[angel]]s singing their praises for {{!!d4}} hours.
1044: The caster (and only the caster) hears crickets chirping loudly for the next {{!!duration}}.
1045: The caster (and only the caster) hears malevolent voices nearby whispering about their doom for the next {{!!duration}}.
1046: The caster (and only the caster) hears normally except for voices, which seem subtly muted
1047: The caster (and only the caster) hears the echo of their own voice whenever they speak for the next {{!!duration}}.
1049: The caster (and only the caster) hears waves crashing on a beach for the next {{!!duration}}.
1053: Caster needs only one-third the normal amount of food for the next {{!!2d4}} weeks.
1054: Caster hurls their spellbook, [[magical implement]], weapon, or the most valuable object they're holding as far as they can.
1077: Caster is able to see their own eyes for the next {{!!s_duration}}.
1078: Caster is absolutely convinced that they're a [[warforged]] for the next {{!!duration}}.
1079: Caster is afflicted with severe frostbite in {{!!d4}} limbs.
1080: Caster is afflicted with [[vampirism|vampire]], but only during the day. The caster is reverted to normal after {{!!l_duration}}.
1084: Caster is attacked by countless stinging earthworms that rise from the ground.
1091: Caster is blind while within any artificial structure for the next {{!!duration}}.
1092: Caster is blinded for {{!!d4}} minutes by a swirl of tiny feathers.
1094: Caster is briefly obscured by a dense cloud of sawdust
1095: Caster is briefly paralyzed at the sight of their own blood within the next {{!!duration}}.
1096: Caster is briefly stunned by a shower of hard beans.
1097: Caster is brutally punched in the stomach by an unseen hand.
1098: Caster is suddenly carrying {{!!d4}} waterskins filled with human blood.
1099: Caster is suddenly carrying a bowl full of water that they must not spill. The compulsion not to let the water spill lasts for {{!!s_duration}}.
1104: Caster is certain for the next {{!!duration}} that they used to have four arms.
1106: Caster is certain that they'll die in the next {{!!2d4}} seconds.
1111: Caster is suddenly chained to an anvil.
1112: Caster is suddenly clad in funerary wraps as if they're about to be interred.
1113: Caster is completely invulnerable to all harm for {{!!2d4}} seconds.
1116: Caster is convinced that their allies plan to kill and eat them. The delusion persists for {{!!duration}}.
1117: Caster is suddenly covered in a shell of frozen slime.
1118: Caster is suddenly covered in barnacles. They brush off with minimal trouble.
1119: Caster is covered in indelible, jet-black handprints. They fade after {{!!duration}}.
1120: Caster is suddenly covered in a delicious [[Aundair]]ian wood-nut sauce.
1121: Caster is suddenly covered in berry sorbet.
1123: Caster is deaf and blind until sunrise tomorrow.
1124: Caster is suddenly determined to destroy their [[magical implement]] (if any) for the next {{!!s_duration}}.
1125: Caster is determined to rid themself of their nails, teeth, and hair for the next {{!!s_duration}}.
1127: Caster is drawn forcefully toward the spell's target point for the next {{!!s_duration}}.
1128: Caster is suddenly dressed like a high-class burlesque performer.
1131: Caster is encased from the waist down in a block of cheese.
1133: Caster is suddenly enclosed in a large paper bag.
1134: Caster is entirely immune to magic for {{!!s_duration}}.
1141: Caster rapidly recovers from an injury each time they trigger a random magical effect.
1190: Caster is invisible from their hips to their sternum for the next {{!!duration}}.
1191: Caster is invisible to {{!!d4}} specific nearby people for the next {{!!duration}}.
1197: Caster is invisible to themself for {{!!2d4}} days.
1198: Caster is invisible to themself from the waist down for the next {{!!2d4}} days.
1199: Caster is invisible to horses for the next {{!!2d4}} days.
1204: Caster is invisible to non-magical reptiles for the next {{!!duration}}.
1206: Caster is invisible to the person who most recently wounded them for the next {{!!duration}}.
1213: Caster is on the verge of starvation, no matter how much they eat, for the next {{!!duration}}.
1215: Caster is paralyzed from the neck up for the next {{!!2d4}} seconds.
1219: Caster is pinned beneath a large tombstone bearing their name. It vanishes after {{!!duration}}.
1226: Caster is reluctant to bring any book indoors for the next {{!!duration}}.
1227: Caster is reluctant to carry any weapons after sunset for the next {{!!duration}}.
1229: Caster is reluctant to enter any building they're previously entered for the next {{!!duration}}.
1230: Caster is reluctant to get blood on any of their weapons for the next {{!!duration}}.
1253: Caster is suddenly sealed in a huge but otherwise normal chicken egg.
1254: Caster is suddenly sealed in a pine coffin.
1255: Caster is suddenly sealed in an oak barrel.
1256: Caster is suddenly seated on a platform high atop a tall, narrow pole.
1259: Caster is smeared from head to toe with molasses.
1266: Caster is sparsely flecked with salt like a pretzel.
1270: Caster is suddenly alone at the center of a vast field of slag. They teleport back to their original location after {{!!d10}} seconds.
1271: Caster is suddenly carrying a twenty-pound sack full of straw.
1273: Caster is suddenly on the other side of the nearest locked door.
1275: Caster is suddenly sitting in an elegant bathtub.
1277: Caster is suddenly standing atop a single stilt.
1278: Caster is suddenly standing atop a very tall ladder.
1279: Caster is suddenly inside the nearest chunk of stone large enough to fit them, as the [[meld into stone]] spell. They can exit the stone anytime but cannot reenter.
1280: Caster is suddenly standing atop the nearest horse or other mount creature.
1281: Caster is suddenly standing in a bucket of butter.
1282: Caster is suddenly standing in a canoe on a rushing river. They teleport back to their original location after {{!!d10}} seconds.
1283: Caster is suddenly standing in the middle of a snow-covered field. They teleport back to their original location after {{!!d10}} seconds.
1288: Caster is suddenly standing knee-deep in manure.
1289: Caster is suddenly standing on a two-foot cube of solid aluminum. It vanishes after {{!!s_duration}}.
1290: Caster is suddenly surrounded by a quartet of fiddling skunks. They vanish into sweet-smelling smoke after {{!!s_duration}}.
1291: Caster is suddenly unsure that they really wants to be a magic user
1292: Caster is suddenly wearing a full suit of chain armor made in the fine style of the [[Mendyrian]] noble line of [[Aerenal]].
1293: Caster is surrounded by eight-foot-tall slabs of concrete.
1300: Caster is thickly shrouded in cobwebs.
1301: Caster is thoroughly entangled in the tentacles of a man-of-war.
1302: Caster is thoroughly smeared in bacon grease.
1303: Caster is thoroughly soaked with egg whites.
1304: Caster is thought to have a huge bounty on their head
1306: Caster is thrown {{!!d20}} feet into the air.
1308: Caster is thrown violently backward from the spell's target point.
1309: Caster is tightly bound in strong wire.
1312: Caster is trapped in a column of brackish water for {{!!s_duration}}.
1313: Caster is unable to ask questions for {{!!duration}}.
1314: Caster is unable to cross any bridge that spans flowing water for the next {{!!duration}}.
1319: Caster is unaffected by the spell [[remove curse]] or [[dispel magic]] for the next {{!!duration}}.
1325: Caster is utterly unable to disguise themself by magic for the next {{!!duration}}.
1328: Caster is violently ejected from the next building they enter within the next few days.
1330: Caster is wearing a welder's mask and can't remove it until dawn.
1331: Caster is wearing an ornate mask made of the most delicate glass.
1332: Caster is wearing blood-soaked surgical gloves.
1336: Caster is wearing enough clothing for five people.
1337: Caster is wearing extraordinarily glamorous false eyelashes.
1341: Caster is wearing ice skates
1350: Caster is wracked by searing pain every time they ask a question for the next {{!!l_duration}}.
1362: Caster knows the location of every mammal within one mile for the next {{!!s_duration}}.
1363: Caster knows the secret language of frogs and toads for the next {{!!duration}}.
1365: Caster leaps from the next bridge that they cross within the next few days.
1366: Caster learns a secret about one of their allies.
1370: Caster leaves no footprints for the next {{!!duration}}.
1372: Caster suddenly looks as if they're been submerged in a bog for six months.
1383: Caster loses all hair on the left side of their body. It grows back over the course of {{!!duration}}.
1384: Caster becomes illiterate for {{!!duration}}.
1408: Caster must state their name to anyone who asks it for the next {{!!duration}}.
1411: Caster no longer needs to eat but can't heal injuries naturally for the next {{!!l_duration}}.
1412: Caster no longer perspires for the next {{!!l_duration}}.
1413: Caster no longer produces saliva for the next {{!!l_duration}}.
1428: Caster loses the sense of taste for the next {{!!duration}}.
1437: Caster quickly rusts if someone else's blood touches them any time in the next {{!!duration}}.
1438: Caster randomly teleports {{!!d10}}0 yards the next time they become invisible within the next {{!!l_duration}}.
1448: Caster reacts violently to the scent of baking bread for the next {{!!l_duration}}.
1479: Caster requires only {{!!2d4}} hours of sleep per week for the next {{!!d7}} weeks.
1496: Caster routinely loses their train of thought mid-sentence for the next {{!!l_duration}}.
1497: Caster runs to and attempts to uproot the nearest tree for the next {{!!s_duration}}.
1501: Caster sees as if their eyes were hovering one foot to the left for the next {{!!duration}}.
1502: Caster sees as if their eyes were in the back of their head for the next {{!!duration}}.
1503: Caster sees as if their eyes were where their ears are for the next {{!!duration}}.
1504: Caster sees colorful ribbons swirling in the air around them for the next {{!!duration}}.
1505: Caster sees cryptic messages in the patterns of plant growth for the next {{!!duration}}.
1506: Caster sees everything as if they're deep underwater for the next {{!!duration}}.
1508: Caster sees illusory geysers of flaming pitch erupting all around them for the next {{!!duration}}.
1510: Caster sees huge illusory bats and manta rays whirling all around them for the next {{!!duration}}.
1513: Caster sees the spell's target point as a place of great holiness for the next {{!!duration}}.
1518: Caster shivers uncontrollably in the presence of fire for the next {{!!l_duration}}.
1527: Caster smells faintly of cabbage for the next {{!!duration}}.
1528: Caster smells strongly burnt toast for the next {{!!duration}}.
1529: Caster smells strongly of alcohol for the next {{!!duration}}.
1530: Caster smells strongly of blood for the next {{!!duration}}.
1531: Caster smells strongly of boiling tar for the next {{!!duration}}.
1532: Caster smells strongly of exotic perfumes for the next {{!!duration}}.
1533: Caster smells strongly of lantern oil for the next {{!!duration}}.
1535: Caster smells strongly of garlic for the next {{!!duration}}.
1536: Caster smells strongly of peppermint for the next {{!!duration}}.
1537: Caster smells strongly of rose petals for the next {{!!duration}}.
1538: Caster sneezes {{!!d20}} times.
1540: Caster sparkles as though dusted with glitter for the next {{!!duration}}.
1541: Caster speaks in an obviously fake and irritating [[Metrol]] (Cockney) accent.
1543: Caster spends {{!!2d4}} seconds attempting to ignite their shoes.
1544: Caster spends {{!!s_duration}} trying to cast the same spell that triggered this random magical effect.
1545: Caster spends {{!!2d4}} seconds trying to strangle themself with their hair.
1546: Caster spends {{!!2d4}}0 seconds racing toward the nearest coastline.
1547: Caster spends {{!!2d4}}0 seconds trying to look into their own ears.
1549: Caster spews philosophical gobbledygook about one-hand-clapping for the next {{!!2d4}} minutes.
1550: Caster spouts water like a gargoyle for {{!!2d4}} seconds.
1552: Caster sprouts a dorsal fin that persists for {{!!duration}}.
1553: Caster sprouts a ghastly tentacle from the center of their chest that persists for {{!!duration}}.
1554: Caster sprouts a large, spongy mass between their shoulder blades that persists for {{!!duration}}.
1555: Caster sprouts a mane like a lion's that persists for {{!!duration}}.
1556: Caster sprouts a new ear on the back of one hand that persists for {{!!duration}}.
1557: Caster sprouts a pretty flower from their chin that persists for {{!!duration}}.
1558: Caster sprouts a prominent brow ridge that persists for {{!!duration}}.
1559: Caster sprouts a retractable metal antenna from their forehead that persists for {{!!duration}}.
1560: Caster sprouts a small, flaming wick atop of their head that persists for {{!!duration}}.
1561: Caster sprouts a tiny horn from the tip of their nose that persists for {{!!duration}}.
1562: Caster sprouts a zipper along the length of their spine that persists for {{!!duration}}.
1563: Caster sprouts an additional ear behind each of their normal ears that persist for {{!!duration}}.
1564: Caster sprouts an eye at the exact top of their head that persists for {{!!duration}}.
1565: Caster sprouts an ugly protuberance from their forearm that persists for {{!!duration}}.
1566: Caster sprouts sharp blades along the edges of their forearms that persist for {{!!duration}}.
1567: Caster sprouts tiny, useless wings from the bridge of their nose that persist for {{!!duration}}.
1568: Caster sprouts wild-looking feathers on their cheeks that persist for {{!!duration}}.
1569: Caster sprouts wires and rubber tubing from their flesh that persist for {{!!duration}}.
1571: Caster stares at the spell's target point for {{!!d35}} seconds.
1574: For the next {{!!duration}}, the caster believes they'll explode if they stop running.
1575: A snare trap materializes beneath the caster's foot and immediately triggers, hoisting the caster upside down into the nearest tree or vertical structure.
1577: Caster sticks to the next metal item they touch for {{!!d50}} seconds.
1579: Caster sprouts {{!!2d4}} toes from their face that persist for {{!!duration}}.
1580: Caster suddenly has feet like an elephant for the next {{!!duration}}.
1582: Caster suddenly has ten toes on each foot for the next {{!!duration}}.
1583: Caster suddenly has ten toes on one foot and none on the other for the next {{!!duration}}.
1586: Caster suddenly starts hemorrhaging honey and molasses for the next {{!!d7}} minutes.
1590: Caster suffers an intense, debilitating fever for {{!!d4}} days.
1591: For the next {{!!d10}} hours, the caster suffers bouts of rampant xenophobia against a random other [[humanoid]] race that last for {{!!d4}}0 seconds.
1592: Caster suffers brief pain every time they close a book for the next {{!!l_duration}}.
1597: Caster suffers incredible fear the next time they cross a bridge.
1598: Caster suffers intense pain during attempts at magical healing for the next {{!!duration}}.
1599: Caster suffers intense pain in their eyes whenever they see [[gnome]]s or [[undead]] for the next {{!!l_duration}}.
1600: Caster suffers intense pain whenever they change shape for the next {{!!duration}}.
1601: Caster suffers intense pain whenever they eat cooked meat for the next {{!!l_duration}}.
1602: Caster suffers intense pain whenever they enter a temple or church for the next {{!!l_duration}}.
1603: Caster suffers intense pain whenever they pass through a doorway for the next {{!!duration}}.
1604: Caster suffers intense pain whenever they tread upon grass for the next {{!!duration}}.
1605: Caster suffers intense pain whenever they try to sing for the next {{!!duration}}.
1606: Caster suffers intense pain whenever they use [[divination]] magic for the next {{!!duration}}.
1607: Caster suffers intense pain whenever they use a [[magic item]] for the next {{!!duration}}.
1609: Caster suffers the bends as if they surfaced from deep water too quickly. The pain persists for {{!!s_duration}}.
1611: Caster suspects that all foliage nearby is hostile to them for the next {{!!duration}}.
1614: Caster suspects that their use of magic is entirely delusional for the next {{!!duration}}.
1617: Caster tries to take a big bite out of the nearest book.
1618: Caster tries to take a big bite out of the nearest statue
1619: Caster tries to take a big bite out of the nearest tree
1620: Caster takes a vow of absolute pacifism for {{!!2d4}} hours.
1622: Caster teleports to exactly where they were standing an hour ago.
1626: Caster teleports to the spot where they last ate.
1628: Caster loudly proclaims that their bones are made of diamond.
1632: Caster tends to become briefly invisible at inconvenient times for the next {{!!d7}} days.
1633: Caster tends to dribble heavily when drinking from a mug or cup for the next {{!!l_duration}}.
1637: Caster thinks that a magic candle is burning in their stomach for the next {{!!duration}}.
1638: Caster thinks that a nearby ally is sapping their magical energies for the next {{!!duration}}.
1641: Caster thinks they are caught in a violent hailstorm for the next {{!!d50}} seconds.
1642: Caster thinks that all fire is an illusion for the next {{!!duration}}.
1647: Caster thinks that any wound they receives is much, much worse for the next {{!!duration}}.
1648: Caster thinks that elementals pose no threat to them for the next {{!!duration}}.
1649: Caster thinks that every herbivore in the world is called a goat for the next {{!!l_duration}}.
1650: Caster thinks that every scratch will infect them with [[lycanthropy|lycanthrope]] for the next {{!!2d4}} hours.
1651: Caster thinks that everyone they know is an impostor for the next {{!!duration}}.
1653: Caster thinks that everyone thinks that they are an impostor for the next {{!!duration}}.
1654: Caster thinks that everything they own has been replaced by a copy for the next {{!!duration}}.
1655: Caster thinks that everything they own is powerfully enchanted for the next {{!!duration}}.
1657: Caster thinks that food prepared by others is poisonous to them for the next {{!!d4}} days.
1658: Caster thinks that gold will burn them if placed against their skin for the next {{!!l_duration}}.
1659: Caster thinks that they came into existence just {{!!d4}} days ago. The delusion persists for {{!!duration}}.
1660: Caster thinks that they can become invisible to [[undead]] at will for the next {{!!duration}}.
1661: Caster thinks that they can command beasts to do their bidding for the next {{!!duration}}.
1662: Caster thinks that they can communicate with ants for the next {{!!duration}}.
1663: Caster thinks that they can communicate with cats for the next {{!!duration}}.
1664: Caster thinks that they can fly by leaping off of tall buildings for the next {{!!duration}}.
1665: Caster thinks that they can handle red-hot metal without harm for the next {{!!duration}}.
1666: Caster thinks that they can neutralize poisons by swallowing them for the next {{!!duration}}.
1668: Caster thinks that they can speak directly to the [[Dark Six]] for the next {{!!duration}}.
1669: Caster thinks that they can speak with birds for the next {{!!duration}}.
1671: Caster thinks that they died during their youth for the next {{!!duration}}.
1672: Caster thinks that they have a weakness to green rock for the next {{!!duration}}.
1673: Caster thinks that they have diplomatic immunity and cannot be prosecuted for crimes. The delusion persists for the next {{!!duration}}.
1675: Caster thinks that they are attended by invisible [[undead]] loyal servants for the next {{!!duration}}.
1677: Caster thinks that they know the location of a vast horde of gold within 20 yards. The delusion persists for the next {{!!duration}}.
1679: Caster thinks that they must eat a pound of soil by midnight for the next {{!!duration}}.
1680: Caster thinks that they must hold an awkward item to cast magic for the next {{!!duration}}.
1683: Caster thinks that they must quickly remove and burn their clothes for the next {{!!duration}}.
1685: Caster thinks that they owe thousands of gold pieces to the king. They don't know which king. The delusion persists for the next {{!!duration}}.
1686: Caster thinks that they own everything now in their line of sight. The delusion persists for the next {{!!duration}}.
1687: Caster thinks that they smell strongly of manure, but they don't. The delusion persists for the next {{!!duration}}.
1691: Caster thinks that they'll be executed for treason at dawn tomorrow. The delusion persists for the next {{!!d7}} hours.
1692: Caster thinks that they'll be executed for treason if they use magic. The delusion persists for the next {{!!duration}}.
1693: Caster thinks that they'll be immolated if they look at fire for the next {{!!duration}}.
1695: Caster thinks that they'll catch a disease if they use [[magic item]]s for the next {{!!duration}}.
1696: Caster thinks that they'll combust if they get wet for the next {{!!duration}}.
1697: Caster thinks that they'll combust if they tell a lie for the next {{!!duration}}.
1706: Caster thinks that they're a priest of a foul [[aberration]] called Ygorl, Lord of Entropy. The delusion persists for the next {{!!duration}}.
1707: Caster thinks that they're actually 10X older than they appear to be for the next {{!!duration}}.
1709: Caster thinks that they're been declared The Protector of the Forest for the next {{!!duration}}.
1711: Caster thinks that they're being attacked by piranha for the next {{!!duration}}.
1713: Caster thinks that they're being consumed by invisible worms for the next {{!!duration}}.
1714: Caster thinks that they're being held against their will for the next {{!!duration}}.
1715: Caster thinks that they're being attacked by rabid dogs for the next {{!!duration}}.
1716: Caster thinks that they're being squeezed by a large python for the next {{!!duration}}.
1717: Caster thinks that they're dead and hopes their allies don't find out. The delusion persists for the next {{!!duration}}.
1720: Caster thinks that they've died and their soul is in [[Dolurrh]]. The delusion persists for the next {{!!duration}}.
1726: Caster thinks that they're immune to non-magical diseases for the next {{!!duration}}.
1727: Caster thinks that they're indentured to a random stranger within 20 yards, who they believe is a nearby landowner. The delusion persists for the next {{!!duration}}.
1728: Caster thinks that they're invincible while they're talking for the next {{!!duration}}.
1729: Caster thinks that they're invulnerable to magical weapons for the next {{!!duration}}.
1730: Caster thinks that they're invulnerable to missile weapons for the next {{!!duration}}.
1732: Caster thinks that they're invulnerable while wearing a hat for the next {{!!duration}}.
1736: Caster thinks that they're raised themself from the dead for the next {{!!duration}}.
1737: Caster thinks that they're seeing through someone else's eye for the next {{!!duration}}.
1738: Caster thinks that they're slowly transforming into a [[dragon]] for the next {{!!duration}}.
1739: Caster thinks that they're sold their soul to several different [[devil]]s for the next {{!!duration}}.
1740: Caster thinks that they sold their soul to that guy at the market. You know, that guy! The delusion persists for {{!!duration}}.
1741: Caster thinks that they're soon to be bronze-plated for the next {{!!d20}} minutes.
1742: Caster thinks that they're standing at the edge of a cliff for the next {{!!2d4}} seconds.
1744: Caster thinks that they're standing in waist-deep water for the next {{!!2d4}} minutes.
1745: Caster thinks that they're standing on a tall, narrow staircase for the next {{!!s_duration}}.
1746: Caster thinks that they've stolen this body from its rightful owner for the next {{!!duration}}.
1747: Caster thinks that they're the child of some unlikely person nearby for the next {{!!s_duration}}.
1748: Caster thinks that they're the lizard king and can do anything for the next {{!!duration}}.
1750: Caster thinks that they're the victim of an elaborate practical joke for the next {{!!duration}}.
1752: Caster thinks that they're water soluble for the next {{!!duration}}.
1755: Caster thinks that their allies' wounds are much more serious for the next {{!!duration}}.
1759: Caster thinks that their clothing is drenched in strong acid for the next {{!!s_duration}}.
1761: Caster thinks that their death will bring about the apocalypse. The delusion persists for the next {{!!l_duration}}.
1766: Caster thinks that their face is far too hideous to look at for the next {{!!duration}}.
1767: Caster thinks that their face is just a mask they wear on their skull for the next {{!!duration}}.
1768: Caster thinks that their hands will disintegrate if they touch gold for the next {{!!duration}}.
1769: Caster thinks that their head is a parasitic organism for the next {{!!s_duration}}.
1773: Caster thinks that their head will shatter if they wear a hat for the next {{!!duration}}.
1774: Caster thinks that their [[magic item]]s are about to explode for the next {{!!1d4}}0 seconds.
1775: Caster thinks that their [[magic item]]s are plotting against them for the next {{!!duration}}.
1776: Caster thinks that their soul is controlling their body from far away for the next {{!!duration}}.
1777: Caster thinks that their soul was forced into this current body for the next {{!!duration}}.
1783: Caster thinks that their teeth are on the verge of exploding for the next {{!!s_duration}}.
1788: Caster thinks that many of their memories were falsely implanted for the next {{!!l_duration}}.
1790: Caster thinks that they must hold one hand to their head at all times for the next {{!!duration}}.
1791: Caster thinks that no non-magical animal can harm them for the next {{!!duration}}.
1793: Caster thinks that no one really understands what they're saying for the next {{!!duration}}.
1797: Caster thinks that rhyming words have mystical significance for the next {{!!l_duration}}.
1799: Caster thinks that some item they're carrying will soon explode. The delusion persists for the next {{!!duration}}.
1800: Caster thinks that some nearby person killed them yesterday. The delusion persists for the next {{!!duration}}.
1803: Caster thinks that the king owes them a big favor. The delusion persists for the next {{!!l_duration}}.
1804: Caster thinks that the stars are speaking to them for the next {{!!duration}}.
1805: Caster thinks that the target is the only one who can save them for the next {{!!duration}}.
1806: Caster thinks that the target's death will cause the apocalypse for the next {{!!duration}}.
1807: Caster thinks that the top of their head should be flattened. The delusion persists for the next {{!!duration}}.
1811: Caster thinks that this is all just a big misunderstanding for the next {{!!duration}}.
1815: Caster tries to pop their head by squeezing it with both hands for the next {{!!s_duration}}.
1816: Caster tries to swallow any writing instrument that they're carrying for the next {{!!s_duration}}.
1818: Caster tries very hard to twist their nose upside down for the next {{!!duration}}.
1819: Caster turns bright blue while they're bleeding for the next {{!!l_duration}}.
1820: Caster turns into a clothing store mannequin for {{!!s_duration}}.
1821: Caster turns into a small, pot-bellied pig for {{!!s_duration}}.
1822: Caster turns into an [[elemental]] for {{!!s_duration}}.
1823: Caster turns invisible to themself but not to anyone else for the next {{!!duration}}.
1824: Caster turns to stone for the next {{!!s_duration}}.
1825: Caster unleashes a torrent of shocking profanity for {{!!d4}}0 seconds.
1827: Caster utters shocking blasphemies in the presence of clergy for the next {{!!l_duration}}.
1830: Caster vanishes; in {{!!d4}}0 seconds they appear at the target point.
1832: Caster vows not to rest until they're found the real killers. The delusion persists for {{!!l_duration}}.
1834: Caster vows to make a little birdhouse in their soul.
1836: Caster vows to slay the next person who addresses them by name.
1837: Caster is compelled to wager all of their money on an improbable contest.
1838: Caster walks with a profound limp for the next {{!!l_duration}}.
1842: Caster weeps powerfully adhesive tears for {{!!d4}}0 seconds.
1843: Caster weeps tears of blood whenever someone says their name for the next {{!!duration}}.
1850: Caster won't remember the next {{!!d10}} hours.
1851: Caster, their gear, and clothes are translucent for {{!!2d4}} days.
1861: Caster's arms and legs are suddenly bound in shackles of gold. The shackles vanish after {{!!duration}}.
1862: Caster's arms and legs look like chicken's legs for the next {{!!duration}}.
1863: Caster's arms are covered by scars from ritual burns for the next {{!!duration}}.
1864: Caster's arms are covered in hideous welts and bruises for the next {{!!duration}}.
1867: Caster's arms vanish for the duration of the intended [[spell]].
1869: Caster's attempts at scrying yield sanity-damaging visions for the next {{!!l_duration}}.
1870: Caster's attempts at scrying yield visions of a sunken city for the next {{!!l_duration}}.
1872: Caster's attempts at scrying yield visions of their own home for the next {{!!l_duration}}.
1873: Caster's attempts at scrying yield visions of horrific carnage for the next {{!!l_duration}}.
1874: Caster's attempts at scrying yield visions of impossible events for the next {{!!l_duration}}.
1879: Caster's attempts at scrying yield visions of the caster themself for the next {{!!l_duration}}.
1882: Caster's attempts at scrying yield visions of this location for the next {{!!l_duration}}.
1883: Caster's attempts at scrying yield visions of utter desolation for the next {{!!l_duration}}.
1885: Caster's attempts to change shape fail spectacularly for the next {{!!duration}}.
1886: Caster's back is scarred in a checkerboard pattern of burns for the next {{!!duration}}.
1887: Caster's back is scarred with the imprint of a dragon's foot for the next {{!!duration}}.
1890: Caster's big toes become opposable like thumbs for the next {{!!duration}}.
1891: Caster's blood causes metal to become invisible for the next {{!!l_duration}}.
1893: Caster's blood is a sickly green and smells like acetone for the next {{!!duration}}.
1896: Caster's blood is strongly adhesive after it leaves their body for the next {{!!duration}}.
1898: Caster's blood is weightless for the next {{!!duration}}.
1900: Caster's blood leaves indelible stains on rock and stone for the next {{!!duration}}.
1910: Caster's body is scarred as if they're undergone an autopsy for the next {{!!duration}}.
1911: Caster's body is scarred with innumerable cryptic runes for the next {{!!duration}}.
1912: Caster's body swivels 180° at the waist and stays that way for the next {{!!duration}}.
1917: Caster's boots adhere strongly to stone while they're wearing them for the next {{!!duration}}.
1919: Caster's boots can not move more than ten feet from this spot for the next {{!!l_duration}}.
1921: Caster's boots weigh 100 pounds when wet for the next {{!!l_duration}}.
1923: Caster's center of gravity changes daily for the next {{!!2d4}} days.
1924: Caster's center of gravity is {{!!d4}} feet to their left for the next {{!!duration}}.
1925: Caster's center of gravity is at the level of their eyes for the next {{!!duration}}.
1926: Caster's center of gravity is at the level of their feet for the next {{!!duration}}.
1932: Caster's clothes are burned to cinders, but they are unharmed.
1933: Caster's clothes are caked with salt.
1934: Caster's clothes are drenched with goat's milk.
1935: Caster's clothes are impervious to [[transmutation]] magic.
1937: Caster's clothes are invisible by firelight for the next {{!!duration}}.
1939: Caster's clothes are soaked with lambs' blood.
1940: Caster's clothes are soaked with lamp oil.
1941: Caster's clothes are soaked with molasses.
1943: Caster's clothes are water soluble.
1944: Caster's clothes clatter like metal when they move for the next {{!!duration}}.
1946: Caster's clothes heat by 1°F per minute for the next {{!!d10}} hours.
1949: Caster's clothes turn to copper.
1950: Caster's clothes turn to densely-woven spider's web.
1952: Caster's clothing inflates to the size of a house.
1953: Caster's cranium enlarges by 25% for the next {{!!duration}}.
1954: Caster's cranium reforms into a tall, blunt cone for the next {{!!duration}}.
1960: Caster's dominant hand becomes as clumsy as their other hand for the next {{!!duration}}.
1962: Caster's ears are on the same side of their head for the next {{!!duration}}.
1963: Caster's ears are unaffected by [[polymorph]] magic or shapechanging for the next {{!!duration}}.
1964: Caster's ears bleed harmlessly but copiously for {{!!duration}}.
1965: Caster's ears can't be cut by any metal blade for the next {{!!duration}}.
1966: Caster's ears fall off and regrow every few days for the next {{!!d4}} weeks.
1967: Caster's ears grow to the size of dinner plates for the next {{!!duration}}.
1968: Caster's ears resemble butterfly's wings for the next {{!!duration}}.
1969: Caster's elbows can't bend more than 90° for the next {{!!duration}}.
1970: Caster's entire head looks like a huge nose for the next {{!!duration}}.
1971: Caster's every attempt at music yields the same annoying tune for the next {{!!l_duration}}.
1972: Caster's eyelids look like lips for the next {{!!duration}}.
1973: Caster's eyes appear crystalline like diamonds for the next {{!!duration}}.
1975: Caster's eyes are invulnerable to heat and fire for the next {{!!l_duration}}.
1976: Caster's eyes are replaced by new ones every few days for the next {{!!d4}} weeks.
1979: Caster's eyes do not move, but they can see normally, for the next {{!!duration}}.
1980: Caster's eyes glow red when they try to make a good impression for the next {{!!l_duration}}.
1981: Caster's eyes merge into a single eye at the bridge of their nose for the next {{!!duration}}.
1982: Caster's eyes migrate to their cheekbones for the next {{!!duration}}.
1983: Caster's eyes migrate two inches higher on their forehead for the next {{!!duration}}.
1984: Caster's eyes sink {{!!d4}} inches into their skull for the next {{!!duration}}.
1985: Caster's eyes swell shut for {{!!duration}}.
1986: Caster's canine teeth grow into tusks like those of a walrus for the next {{!!duration}}.
1987: Caster's face and head are suddenly covered by a tight shell of wax.
1989: Caster's face appears melted like wax for the next {{!!duration}}.
1990: Caster's face appears to rapidly age backwards for the next {{!!duration}}.
1991: Caster's face appears to be made of chrome for the next {{!!duration}}.
1992: Caster's face appears to be made of hammered aluminum for the next {{!!duration}}.
1993: Caster's face appears to be upside-down for the next {{!!duration}}.
1994: Caster's face appears to float {{!!2d4}} inches in front of their skull for the next {{!!duration}}.
1995: Caster's face appears to have been sculpted from cold wax for the next {{!!duration}}.
1996: Caster's face doesn't move when they speak for the next {{!!duration}}.
1997: Caster's face elongates into a short snout with prominent teeth for the next {{!!duration}}.
1998: Caster's face falls off, leaving a bare skull, until sunrise.
2000: Caster's face is an illusion and can be dispelled as such for the next {{!!duration}}.
2001: Caster's face is concave for the next {{!!duration}}.
2002: Caster's face is covered with cactus spines for the next {{!!duration}}.
2004: Caster's face is glazed in a thick layer of ice for the next {{!!duration}}.
2005: Caster's face is pliant like rubber for the next {{!!duration}}.
2006: Caster's face is printed with intricate, dark blue tattoos for the next {{!!duration}}.
2007: Caster's face is scarred as though slashed by an eagle's talons for the next {{!!duration}}.
2008: Caster's face swells enough to be unrecognizable for the next {{!!duration}}.
2010: Caster's face turns to wood for the next {{!!duration}}.
2011: Caster's feet are burned as if they're waded through ankle-deep acid for the next {{!!duration}}.
2012: Caster's feet are encased in brick for the next {{!!duration}}.
2013: Caster's feet can't be burned by fire for the next {{!!duration}}.
2014: Caster's feet inflate to 2X normal size while they wade in water for the next {{!!l_duration}}.
2015: Caster's feet shrink by 80% while they're wearing shoes or boots for the next {{!!duration}}.
2016: Caster's feet smolder gently for {{!!duration}}.
2017: Caster's feet vanish, but they can walk comfortably on their ankles, for the next {{!!duration}}.
2019: Caster's fingernails display otherworldly scenes for the next {{!!duration}}.
2020: Caster's fingernails each grow {{!!d20}} inches.
2021: Caster's fingernails exude a pungent green fluid for the next {{!!duration}}.
2022: Caster's fingernails grow {{!!d4}} inches per day for the next {{!!2d4}} days.
2023: Caster's fingers appear to be made of delicate crystal for the next {{!!duration}}.
2024: Caster's fingers are as flexible as tentacles for the next {{!!duration}}.
2025: Caster's fingers are as rigid as steel while they're wet for the next {{!!l_duration}}.
2026: Caster's fingers are threaded like bolts for the next {{!!duration}}.
2028: Caster's fingers glow faintly in the presence of humans for the next {{!!duration}}.
2029: Caster's fingers randomly shuffle their positions for the next {{!!l_duration}}.
2031: Caster's fist fuses into a clumsy stub for the next {{!!duration}}.
2032: Caster's fist jams itself into their mouth, where it stays stuck for {{!!s_duration}}.
2033: Caster's footprints glow with sickly green light for {{!!s_duration}}.
2034: Caster's footprints seem to shimmer and waver in sunlight for the next {{!!duration}}.
2035: Caster's footprints shine brightly while they're invisible for the next {{!!l_duration}}.
2036: Caster's hair and clothes become horribly entangled for the next {{!!duration}}.
2037: Caster's hair and clothes constantly stir as if blown by wind for the next {{!!l_duration}}.
2038: Caster's hair becomes tangled in any hat or helmet they wear for the next {{!!l_duration}}.
2039: Caster's hair becomes thick and coarse like that of a boar for the next {{!!duration}}.
2041: Caster's hair falls out each evening and regrows by morning for the next {{!!2d4}} days.
2042: Caster's hair freezes solid for the next {{!!duration}}.
2043: Caster's hair is clear like glass for the next {{!!duration}}.
2046: Caster's hair is perpetually soaked with sea water for the next {{!!2d4}} hours.
2047: Caster's hair is striped like a tiger's coat for the next {{!!duration}}.
2048: Caster's hair reeks of sulfur for the next {{!!duration}}.
2049: Caster's hair stands straight up for the next {{!!d4}} weeks.
2050: Caster's hand adheres to the next weapon they grip for {{!!duration}}.
2051: Caster's hand adheres to the next tree they touch for {{!!duration}}.
2052: Caster's hands and arms are covered with cactus needles for the next {{!!duration}}.
2053: Caster's hands and feet are invisible for {{!!2d4}} days.
2054: Caster's hands appear to be crude wooden replicas for the next {{!!duration}}.
2055: Caster's hands appear to be made of solid gold for the next {{!!duration}}.
2056: Caster's hands appear to have been badly gnawed by rodents for the next {{!!duration}}.
2057: Caster's hands are blasted to a crisp but heal in {{!!2d4}} days.
2058: Caster's hands are completely insulated against electricity for the next {{!!duration}}.
2059: Caster's hands are impervious to all harm for one week.
2060: Caster's hands are invisible while they clasp them for the next {{!!2d4}} days.
2061: Caster's hands are totally numb for {{!!duration}}.
2062: Caster's hands are translucent like smoky quartz for the next {{!!duration}}.
2063: Caster's hands can't come within 12 inches of each other for the next {{!!duration}}.
2064: Caster's hands can't come within 12 inches of their face for the next {{!!duration}}.
2065: Caster's hands detach the next time they put them in their pockets. They reattach after {{!!s_duration}}.
2066: Caster's hands explode but grow back by morning.
2067: Caster's hands inflate like balloons for {{!!s_duration}}, then immediately return to normal.
2068: Caster's hands reform into lobster-like pincers for the next {{!!duration}}.
2069: Caster's hands shine like a beacon visible only to [[goblin]]s for the next {{!!duration}}.
2070: Caster's hands shrink by 50% for the next {{!!duration}}.
2072: Caster's hands sprout coarse scales for the next {{!!duration}}.
2073: Caster's hands sprout luxuriant feathers for the next {{!!duration}}.
2075: Caster's head appears translucent when backlit by firelight for the next {{!!duration}}.
2081: Caster's head is shaped like a bell for the next {{!!duration}}.
2082: Caster's head is perfectly cylindrical until sunset tomorrow.
2083: Caster's head is surrounded by dense fog for the next {{!!duration}}.
2084: Caster's head is invisible for the next {{!!duration}}.
2085: Caster's head is sealed in a block of ice with breathing holes for the next {{!!duration}}.
2086: Caster's head is split down the middle but they are unharmed. Their head reverts to normal after {{!!duration}}.
2088: Caster's head shines like a beacon visible only to [[orc]]s for the next {{!!duration}}.
2089: Caster's head turns into a pumpkin for {{!!d4}} hours.
2136: Caster's image appears on every shield within 100 yards for the next {{!!l_duration}}.
2137: Caster's index finger is shaped like a key for the next {{!!duration}}.
2140: Caster's internal monologue becomes audible to others for the next {{!!duration}}.
2143: Caster's knees can bend forward and backward with equal ease for the next {{!!duration}}.
2145: Caster's left arm appears to have been made from twine and glue for the next {{!!duration}}.
2146: Caster's left arm doubles in length once per second for {{!!2d4}} seconds, then reverts to normal after {{!!duration}}.
2147: Caster's left arm doubles in length; right arm shrinks by 50%. Their arms revert to normal after {{!!duration}}.
2148: Caster's left arm stretches to 2X the length of their body for the next {{!!duration}}.
2149: Caster's left hand and {{!!d10}}0% of their arm turn to brass for the next {{!!duration}}.
2152: Caster's left hand is hideously warped and mangled for the next {{!!duration}}.
2153: Caster's left hand strongly resents their right hand for the next {{!!duration}}.
2154: Caster's left leg detaches and starts kicking them for the next {{!!duration}}.
2155: Caster's left leg is covered by bark for the next {{!!duration}}.
2156: Caster's legs are both encased in a single thick, steel pipe for the next {{!!duration}}.
2157: Caster's legs are now exactly as long as their arms for the next {{!!duration}}.
2158: Caster's legs can't support their weight for {{!!duration}}.
2159: Caster's legs double in length, and their arms shorten by 50%, then revert to normal after {{!!duration}}.
2160: Caster's legs weigh as much as iron for the next {{!!duration}}.
2162: Caster's limbs each belong to a different species for the next {{!!duration}}.
2163: Caster's lungs are visible through their flesh and clothing for the next {{!!duration}}.
2164: Caster's lungs function at twice normal efficiency for the next {{!!duration}}.
2165: Caster's lungs function at half normal efficiency for the next {{!!duration}}.
2166: Caster's lungs sound like bagpipes when they exert themself for the next {{!!duration}}.
2167: Caster's lungs stop working for {{!!2d4}} seconds.
2170: Caster's magic doesn't work if they're at least ankle-deep in water for the next {{!!l_duration}}.
2172: Any spells cast by the caster for the next {{!!duration}} are resistant to [[dispel magic]].
2173: Any time the caster casts a spell in the next {{!!duration}}, a filmy residue develops on precious metals within 5 yards of the caster and target.
2175: Caster's spells seem to issue from their eyes for the next {{!!duration}}.
2176: Caster's spells seem to issue from their mouth for the next {{!!duration}}.
2177: Caster's spells seem to issue from the ground for the next {{!!duration}}.
2178: An enemy of the caster suddenly knows caster's precise location for the next {{!!duration}}.
2179: Caster's motion is impeded by a strong wind that affects only them for the next {{!!duration}}.
2181: Caster's nearest ally is invisible to them for {{!!d4}} days.
2182: Caster's neck doubles in length for the next {{!!duration}}.
2183: Caster's neck is invisible for the next {{!!duration}}.
2185: Caster's next successful attack causes equal damage to them and their target.
2186: Caster's next successful attack heals its target of all damage and disease.
2187: Caster's next spell affects only half of its intended targets.
2188: Caster's next spell causes its target to become invisible.
2189: Caster's next spell fills the air with the sound of buzzing bees for {{!!duration}}.
2190: Caster's next spell functions as a [[disintegrate]] spell instead.
2191: Caster's next spell functions but has no visible effect.
2192: Caster's next spell functions but knocks them unconscious.
2193: Caster's next spell persists until they're injured.
2194: Caster's next spell turns its target bright blue for its duration.
2196: Caster's next [[conjuration]] instead turns them into the conjured creature or object for {{!!duration}}.
2197: Caster's next [[conjuration]] yields {{!!2d4}} decapitated human heads that vanish after {{!!duration}}.
2198: Caster's next [[conjuration]] yields {{!!2d4}}00 fluffy white rabbits that vanish one by one over the course of {{!!l_duration}}.
2199: Caster's next [[conjuration]] yields {{!!2d4}} chrome-plated ostriches that vanish after {{!!duration}}.
2200: Caster's next [[conjuration]] yields {{!!d7}} tiny purple [[imp]]s with hats that vanish after {{!!duration}}.
2201: Caster's next [[conjuration]] yields {{!!d4}}0 bushels of rotten apples.
2202: Caster's next [[conjuration]] yields an earth [[elemental]] and, inexplicably, a [[clawfoot]].
2203: Caster's next [[conjuration]] yields a bucket of brine-soaked plums.
2204: Caster's next [[conjuration]] yields a coil of rope one mile in length.
2206: Caster's next [[conjuration]] yields a goose that dies instantly.
2207: Caster's next [[conjuration]] yields a [[manticore]].
2209: Caster's next [[conjuration]] yields a puddle of highly unstable goo.
2210: Caster's next [[conjuration]] yields an ice sculpture in the shape of the intended object or creature.
2211: Caster's next [[conjuration]] yields an [[illusion]] of the intended effect. The illusion persists for {{!!duration}}.
2214: Caster's next [[conjuration]] yields double of whatever they're summoning.
2215: Caster's nose looks like a noose for the next {{!!duration}}.
2216: Caster's nose looks like an ear for the next {{!!duration}}.
2217: Caster's nostrils are stuffed full of pimentos.
2218: Caster's palms turn to stone for the next {{!!duration}}.
2219: Caster's pockets are filled with confectioner's sugar.
2220: Caster's pockets are filled with glue.
2221: Caster's pockets are filled with greasy candle stubs.
2222: Caster's pockets are filled with live minnows.
2223: Caster's pockets are filled with offal.
2224: Caster's pockets are filled with stringy pasta.
2225: Caster's pockets are filled with weeks-old goat cheese.
2227: Caster's pockets are inaccessible for {{!!d7}} days.
2228: Caster's pockets are lined with chain mail.
2229: Caster's pockets are lined with sharp, jagged teeth for the next {{!!duration}}.
2230: Caster's pockets vanish along with anything inside them. They reappear after {{!!l_duration}}.
2232: Caster's presence causes birds in nearby trees to fall silent for the next {{!!duration}}.
2233: Caster's presence causes bowstrings to be abnormally elastic for the next {{!!duration}}.
2234: Caster's presence causes clockwork devices to malfunction for the next {{!!duration}}.
2235: Caster's presence causes food to be drained of all flavor for the next {{!!duration}}.
2236: Caster's presence causes holy symbols to seem unusually hot for the next {{!!duration}}.
2238: Caster's presence causes magical weapons to glow a dim red for the next {{!!duration}}.
2239: Caster's presence causes musical instruments to go out of tune for the next {{!!duration}}.
2240: Caster's presence impels nearby people to sing wildly off-key for the next {{!!duration}}.
2241: Caster's presence causes the clanking of metal to be muted for the next {{!!duration}}.
2242: Caster's presence causes timekeeping devices to combust for the next {{!!duration}}.
2243: Caster's presence causes timekeeping devices to malfunction for the next {{!!duration}}.
2244: Caster's presence causes [[undead]] creatures to sneeze for the next {{!!duration}}.
2245: Caster's presence causes worked stone to sweat for the next {{!!duration}}.
2246: Caster's presence induces lightheartedness in [[dwarves|dwarf]] for the next {{!!duration}}.
2248: Caster's principal weapon bends until the ends are touching. It reverts after {{!!s_duration}}.
2249: Caster's principal weapon abruptly points true north.
2255: Caster's principal weapon glows as though it's red hot for the next {{!!duration}}.
2256: Caster's principal weapon is as shiny as mirror for {{!!d10}} months.
2257: Caster's principal weapon is extremely sticky to the touch for the next {{!!duration}}.
2258: Caster's principal weapon is matte black between sunset and dawn for the next {{!!2d4}} days.
2261: Caster's principal weapon is translucent like smoked glass for the next {{!!duration}}.
2262: Caster's principal weapon shrinks by 50% for the next {{!!duration}}.
2263: Caster's principal weapon sprouts luxuriant tresses for the next {{!!duration}}.
2264: Caster's reflection appears upside down from the next time they see it until {{!!duration}} later.
2265: Caster's reflection chants dire prophecies about him.
2266: Caster's reflection commits suicide when they next see it.
2268: Caster's reflection is not mirror-reversed from the next time they see it until {{!!duration}} later.
2269: Caster's reflection shows them as battered corpse from the next time they see it until {{!!duration}} later.
2270: Caster's reflection shows them as they was 10 years ago from the next time they see it until {{!!duration}} later.
2271: Caster's reflection shows them beaten nearly to death from the next time they see it until {{!!duration}} later.
2272: Caster's right arm is encased in a cylinder of solid crystal for the next {{!!duration}}.
2273: Caster's right arm is just like their left arm, facing backwards for the next {{!!duration}}.
2274: Caster's right arm resembles a horse's foreleg for the next {{!!duration}}.
2275: Caster's right hand is a perfect sphere at the end of their wrist for the next {{!!duration}}.
2276: Caster's right hand struggles to grip their right elbow for the next {{!!duration}}.
2277: Caster's right leg doubles in thickness for the next {{!!duration}}.
2278: Caster's right thigh is as long as their entire left leg for the next {{!!duration}}.
2279: Caster's skin appears cracked like an old oil painting for the next {{!!duration}}.
2280: Caster's skin appears pitted like Swiss cheese for the next {{!!duration}}.
2281: Caster's skin appears to have been boiled for the next {{!!duration}}.
2282: Caster's skin appears to have been riveted to their body in sheets for the next {{!!duration}}.
2283: Caster's skin appears to have been woven of flesh-colored thread for the next {{!!duration}}.
2284: Caster's skin can't be punctured by any mammal's teeth for the next {{!!duration}}.
2285: Caster's skin is blood red for {{!!2d4}} days.
2286: Caster's skin is completely free of moles, scars, and blemishes for the next {{!!duration}}.
2287: Caster's skin is covered by human bite-marks for the next {{!!duration}}.
2288: Caster's skin is fireproof but tarnishes quickly in sunlight for the next {{!!duration}}.
2289: Caster's skin is infused with countless tiny glass nuggets for the next {{!!duration}}.
2291: Caster's skin is plaid for the next {{!!duration}}.
2292: Caster's skin is suddenly the color of their hair for the next {{!!duration}}.
2293: Caster's skin ripples like a rain-spattered pond for the next {{!!duration}}.
2294: Caster's skin varies in opacity from hour to hour for the next {{!!2d4}} days.
2295: Caster's skull becomes intensely magnetic for the next {{!!duration}}.
2296: Caster's speech doesn't match the movement of their lips for the next {{!!duration}}.
2297: Caster's speech is clearly audible to all within 50 yards for the next {{!!duration}}.
2298: Caster's speech is utterly unintelligible for {{!!d4}} hours.
2299: Caster's speech is utterly unintelligible to themself for the next {{!!duration}}.
2420: Caster's spells are much weaker in effect for the next {{!!duration}}.
2421: Caster's spells no longer work on some particular person nearby for the next {{!!duration}}.
2422: Caster's spells are much stronger in effect for the next {{!!duration}}.
2426: Caster's teeth appear shiny and black like obsidian for the next {{!!duration}}.
2427: Caster's teeth appear to drip blood for one week.
2428: Caster's teeth become serrated and triangular like a shark's for the next {{!!duration}}.
2430: Caster's teeth cannot become invisible for the next {{!!duration}}.
2431: Caster's teeth grow continuously, like a rodent's, for the next {{!!2d4}} days, then revert to normal.
2433: Caster's tongue is bifurcated along half of its length for the next {{!!duration}}.
2434: Caster's tongue is invisible during daylight hours for the next {{!!2d4}} days.
2435: Caster's tongue is removable and reattachable for the next {{!!duration}}.
2436: Caster's voice becomes increasingly loud for the next {{!!duration}}, then reverts to normal.
2437: Caster's voice cracks like a teenage boy's voice for the next {{!!duration}}.
2438: Caster's voice inspires rage in dogs and wolves for the next {{!!2d4}} days.
2439: Caster's voice is hoarse and strained for {{!!2d4}} days.
2440: Caster's voice issues from their right hand instead of their mouth for the next {{!!duration}}.
2441: Caster's voice makes people feel hostile and aggressive for the next {{!!duration}}.
2442: Caster's voice resonates in any gems nearby for the next {{!!duration}}.
2444: Caster's voice seems to issue from 1-4 people around them for the next {{!!duration}}.
2445: Caster's voice seems to issue from their pockets for the next {{!!duration}}.
2446: Caster's voice seems to issue from some item they're now carrying for the next {{!!duration}}.
2447: Caster's voice sounds as if it's coming from a distant megaphone for the next {{!!duration}}.
2448: Caster's voice sounds as if it's coming through a metal tube for the next {{!!duration}}.
2450: Caster's voice sounds like that of each person to whom they speak for the next {{!!duration}}.
2451: Caster's voice sounds like the braying of donkeys for the next {{!!duration}}.
2452: Caster's voice sounds like the buzzing of metal bees for the next {{!!duration}}.
2453: Caster's voice sounds like the honking of geese for the next {{!!duration}}.
2454: Caster's voice sounds like the sputtering of a clogged drain for the next {{!!duration}}.
2455: Caster's waterskin is filled with mashed potatoes.
2456: Caster's waterskin makes its contents taste brackish and foul.
2458: Caster's weight increases tenfold while walking across ice for the next {{!!duration}}.
2460: Countless pine needles adhere tightly to the caster's skin for the next {{!!duration}}, then fall off.
2461: Countless tiny wood chips swirl about the caster for {{!!d4}} seconds.
2462: Countless tiny worms cascade from caster's ears.
2463: Crawling insects pour from caster's nostrils for {{!!s_duration}}.
2464: Cryptic messages are embossed on the caster's chest and back for the next {{!!duration}}.
2465: Cryptic runes cover the caster's arms and hands for the next {{!!duration}}.
2466: Cryptic symbols flash constantly across caster's forehead for the next {{!!duration}}.
2467: Damage from caster's next {{!!d7}} attacks appears {{!!d10}} seconds later
2472: Domestic cats react to caster with astonishing ferocity for the next {{!!duration}}.
2473: Each day at noon, caster's age is reduced by 50%, for the next {{!!2d4}} days, then reverts.
2474: Each day at noon, for the next 3 days, the caster's weapon heats up to 200° F for a few seconds.
2475: Each day at sunset, for the next 3 days, the caster suffers intense pain for {{!!2d4}} seconds.
2487: Each day, for the next {{!!2d4}} days, the caster can summon {{!!d10}} minnows up to {{!!d4}} times.
2491: Each day, for the next {{!!2d4}} days, the caster finds {{!!d10}} human eyeballs in their pocket.
2522: Each day, for the next {{!!2d4}} days, the caster wakes because a small pebble hits their forehead.
2524: Each day, for the next {{!!2d4}} days, the caster wakes beneath a layer of fine white sand.
2527: Each day, for the next {{!!2d4}} days, the caster wakes completely deaf until they drink something.
2530: Each day, for the next {{!!2d4}} days, the caster wakes in a pile of dry leaves.
2535: Each day, for the next {{!!2d4}} days, the caster wakes to find a loaf of warm bread on their chest.
2539: Each day, for the next {{!!2d4}} days, the caster wakes with a daisy sprouting from their mouth.
2542: Each day, for the next {{!!2d4}} days, the caster wakes with their mouth packed full of flour.
2567: Each night, for the next {{!!2d4}} nights, the caster triggers a random magical effect in their sleep.
2570: Each of the caster's big toes is now as long as the rest of their foot for the next {{!!duration}}.
2571: Each of the caster's big toes is now as wide as the rest of their foot for the next {{!!duration}}.
2572: Each of the caster's teeth is now a different and contrasting color for the next {{!!duration}}.
2573: Each of the caster's teeth screams each time they opens their mouth for the next {{!!duration}}.
2575: Eerie moans fill the air when caster touches holy water for the next {{!!duration}}.
2576: Efforts to become invisible make the caster much more visible for the next {{!!duration}}.
2578: [[Elementals|elemental]] summoned in the caster's presence are 20% larger for the next {{!!duration}}.
2580: [[Elementals|elemental]] summoned in the caster's presence are completely silent for the next {{!!duration}}.
2582: [[Elementals|elemental]] summoned in the caster's presence are invisible to them for the next {{!!duration}}.
2585: [[Elementals|elemental]] summoned in the caster's presence are terrified of them for the next {{!!duration}}.
2591: [[Elementals|elemental]] summoned in the caster's presence explode instantly for the next {{!!duration}}.
2597: [[Elementals|elemental]] summoned in the caster's presence vaguely resemble them for the next {{!!duration}}.
2602: Even in darkness, caster is visible as though in full daylight for the next {{!!duration}}.
2603: Every third tooth falls from caster's mouth. They regrow over the course of {{!!l_duration}}.
2605: Everyone now harboring ill will toward the caster forgets who they are.
2606: Everyone now harboring ill will toward the caster knows where they are.
2614: Everyone within one mile appears as a skeleton to the caster for the next {{!!duration}}.
2615: Everything caster eats for {{!!d10}} months tastes strongly of blood.
2616: Fine gold wire is visibly threaded through the caster's flesh for the next {{!!duration}}.
2617: Fire-based magic is invisible to the caster for the next {{!!duration}}.
2619: Flames shoot from caster's ears at least once per hour until dawn.
2620: Foliage grows to entangle caster's feet if they stand still for the next {{!!2d4}} hours.
2621: Food turns incorporeal while the caster touches it for the next {{!!2d4}} hours.
2624: For {{!!s_duration}}, the caster's left foot is fused to the ground.
2625: For {{!!s_duration}}, normal water can burn the caster like strong acid.
2626: For {{!!d4}} weeks, caster's eyelids glow brightly in the dark.
2627: For {{!!l_duration}}, caster's nose hovers {{!!d4}} inches before their face.
2634: Foul-smelling steam issues from the caster's nostrils for a few seconds.
2635: Half of the caster's body is as hairy as an ape. The hair falls out after {{!!duration}}.
2636: Half of the caster's body is immune to [[polymorph]] magic for the next {{!!duration}}.
2637: Half of the caster's hair is replaced by very fine silver wire for the next {{!!duration}}.
2640: Honey flows through caster's veins instead of blood for the next {{!!duration}}.
2642: Huge volumes of ectoplasm ooze from the caster's nostrils for the next {{!!s_duration}}.
2643: Icy winds buffet the caster for {{!!2d4}} days.
2720: If caster is hit by a bludgeon within the next {{!!duration}}, their head rings like a bronze gong.
2765: The caster acquires a new language. After {{!!l_duration}}, they suddenly forget most of it.
2888: One of the caster's hands turns into a foot for {{!!duration}}.
2892: The bones in one of the caster's hands vanish for {{!!duration}}.
2914: If caster tells a lie in the next {{!!2d4}} days, they feel strongly compelled to declare it outright. "I LIED!"
2931: The caster spits out a tiny replica of themself that persists for {{!!duration}}.
2974: Illusions cast by the caster make them 2X as heavy for their duration for the next {{!!2d4}} days.
2977: Iridescent plumage sprouts from caster's shoulder blades for the next {{!!duration}}.
2978: Lightning flashes about the caster's head for the next {{!!duration}}.
2980: Luxuriant, leafy foliage sprouts from the caster's head for the next {{!!duration}}.
2982: The next time the caster uses a charged magic item within the next {{!!2d4}} days, all charges are consumed, and instead of the intended effect, the caster emits a continuous belch for {{!!d4}}0 seconds.
2983: Animals seem to mock the caster while they're not looking for the next {{!!l_duration}}.
2993: Mocking, spectral voices taunt the caster incessantly for the next {{!!duration}}.
2994: Money paid by the caster appears to be obviously counterfeit for the next {{!!2d4}} days.
2996: Mysterious runes are visible on the caster's skin in moonlight for the next {{!!d4}} nights.
3008: Nearest tree falls on caster, pinning them but not harming them.
3014: Next {{!!d4}} attacks on the caster equally affect the attackers.
3015: Next attack on the caster causes them to hallucinate for {{!!l_duration}}.
3021: The next bridge that the caster crosses turns to chocolate for {{!!duration}}, then reverts.
3028: Next door opened by the caster becomes sentient and animated for the next {{!!duration}}.
3031: Next door opened by the caster causes a pit to open beneath their feet. The pit disappears as soon as all creatures have climbed out of it.
3033: Next door opened by the caster dispels any magic currently affecting them.
3034: Next door opened by the caster explodes as a [[fireball]].
3035: Next door opened by the caster explodes in a swarm of locusts.
3038: Next door opened by the caster gives them a useful bit of information.
3039: Next door opened by the caster hurls them out of the nearest window.
3041: Next door opened by the caster becomes as clear as glass for the next {{!!duration}}.
3045: Next door opened by the caster leads to a courtyard with no doors. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3047: Next door opened by the caster leads to a distant mountaintop. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3051: Next door opened by the caster leads to a fabulous ballroom. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3052: Next door opened by the caster leads to a featureless desert. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3061: Next door opened by the caster leads to a room full of hourglasses. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3065: Next door opened by the caster leads to a vast cornfield. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3066: Next door opened by the caster teleports them to a [[teleportation circle]] in a vast magical library. The caster is then teleported to the spot where this random effect was triggered after {{!!duration}}.
3067: Next door opened by the caster leads to a vast, snow-swept plain. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3073: Next door opened by the caster leads to another [[plane]] of existence. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3083: Next door opened by the caster leads to the last door they opened.
3084: Next door opened by the caster leads to the middle of a battlefield. The caster is teleported to the spot where this random effect was triggered after {{!!duration}}.
3091: Next door opened by the caster leads to this location.
3094: Next door opened by the caster [[arcane lock]]s shut behind him.
3096: Next door opened by the caster plunges that room into total darkness for {{!!s_duration}}.
3097: Next door opened by the caster releases a cloud of choking smoke that dissipates after {{!!duration}}.
3103: Next door opened by the caster triggers two random magical effects.
3104: Next door opened by the caster transmutes to heavy steel for {{!!duration}}.
3106: Next enemy to wound caster begins to resemble him. This persists for {{!!duration}}.
3113: Next enemy to wound caster is heavily smeared with bacon grease.
3119: Next enemy to wound caster suffers an equivalent injury.
3126: Next enemy wounded by the caster begins to age rapidly for {{!!s_duration}}. Then, their age reverts to normal.
3127: Next enemy wounded by the caster can no longer see the caster for {{!!duration}}.
3133: Next enemy wounded by the caster is invisible to them, and vice versa, for {{!!duration}}.
3138: Next enemy wounded by the caster teleports {{!!2d4}} feet in a random direction.
3142: Next enemy wounded by the caster turns to stone, then reverts after {{!!s_duration}}.
3179: Next person targeted by the caster's magic becomes hopelessly drunk for {{!!duration}}.
3181: Next person struck by the caster's magic is stricken blind and deaf for {{!!duration}}.
3185: Next person to touch the caster is suddenly dressed just like them.
3187: Next person to touch the caster is stricken bald for {{!!duration}}.
3190: Next person to whom caster speaks adopts the caster's voice for {{!!duration}}.
3194: Next person to whom caster speaks develops a stutter until sunset.
3196: Next person to whom caster speaks forgets who the caster is for the next {{!!duration}}.
3201: Next person to whom caster speaks is suddenly dressed just like them.
3205: Next person to whom caster speaks is soaked with icy brine.
3206: Next person to whom caster speaks is stricken deaf for {{!!2d4}} seconds.
3208: Next person to whom caster speaks is teleported {{!!d10}}0 feet in a random direction.
3215: Next person to whom caster speaks shrinks by 25% for {{!!duration}}.
3221: Next liquid imbibed by the caster causes them to spit out wood chips.
3222: Next liquid imbibed by the caster causes them to sprout feathers for {{!!duration}}.
3223: Next liquid imbibed by the caster causes them to sprout tentacles for {{!!duration}}.
3231: Next liquid imbibed by the caster enlarges their hands by 50% for the next {{!!duration}}.
3234: Next liquid imbibed by the caster glues their mouth shut for {{!!duration}}.
3314: Next liquid imbibed by the caster turns their skin orange for {{!!duration}}.
3315: Next liquid imbibed by the caster turns their speech to gibberish for {{!!duration}}.
3318: Next puddle stepped in by the caster freezes solid around their feet.
3319: Next puddle stepped in by the caster ignites like gasoline.
3322: Next puddle stepped in by the caster is, to them, {{!!d10}}0 feet deep. It reverts to a normal puddle after they remove their foot from it.
3327: Next puddle stepped in by the caster teleports them to a puddle nearby.
3329: Next puddle stepped in by the caster turns to blood.
3330: Next spell caster casts on themself also affects someone nearby.
3333: Next spell caster casts on themself persists for {{!!d4}} days.
3334: Next spell caster casts on themself takes effect {{!!2d4}} hours later.
3340: Next spell to hit the caster triggers two random magical effects.
3341: Next spell to hit the caster takes effect {{!!2d4}} hours later.
3359: Next tree or other vegetation touched by the caster crumbles to ash in minutes.
3364: No more than 60% of the caster's body can become invisible at a time for the next {{!!2d4}} days.
3367: Non-humanoid mammals are invisible to the caster for {{!!duration}}.
3373: Objects placed in caster's pockets freeze solid in minutes for the next {{!!duration}}.
3375: On any given day for the next {{!!2d4}} days, caster's left foot is 50% likely to be incorporeal.
3376: The caster sheds and regrows {{!!d10}} fingernails over the course of {{!!duration}}.
3443: One of caster's arms adopts the color and texture of brick for the next {{!!duration}}.
3444: One of caster's arms appears to be stripped of all flesh for the next {{!!duration}}.
3445: One of caster's arms becomes as limber as a snake for the next {{!!duration}}.
3449: One of caster's arms disappears until sunset tomorrow.
3450: One of caster's arms ignites in flames.
3451: One of caster's arms turns a pale white for {{!!l_duration}}.
3452: One of caster's arms is encased in a tight steel sheath for {{!!duration}}.
3453: One of caster's arms is impervious to magical cold for {{!!duration}}.
3455: One of caster's arms is scarred as though badly burned by acid for the next {{!!duration}}.
3456: One of caster's arms now juts from the center of their chest for the next {{!!duration}}.
3457: One of caster's arms oozes fetid slime for the next {{!!duration}}.
3458: One of caster's arms resembles a small, gnarled branch for the next {{!!duration}}.
3459: One of caster's arms shrivels to a dry husk and is restored after {{!!duration}}.
3460: One of caster's arms sprouts dozens of tiny, ugly feelers for the next {{!!duration}}.
3461: One of caster's arms turns to solid silver for the next {{!!duration}}.
3462: One of caster's eyes bulges like a fish eye, then reverts after {{!!duration}}.
3463: One of caster's eyes doubles in size for the next {{!!duration}}.
3464: One of caster's eyes doubles in size; the other shrinks by 50%. They revert to normal after {{!!duration}}.
3465: One of caster's eyes glows with infernal radiance for the next {{!!duration}}.
3466: One of caster's feet disintegrates. It grows back over the course of {{!!duration}}.
3467: One of caster's feet is replaced by an off-balance wheel for the next {{!!duration}}.
3468: One of caster's feet reforms into a perfect sphere for the next {{!!duration}}.
3469: One of caster's feet refuses to come anywhere near the other for the next {{!!duration}}.
3470: One of caster's hands doubles in size; the other shrinks by 50%. They revert to normal after {{!!duration}}.
3471: One of caster's hands is as durable as steel for the next {{!!duration}}.
3472: One of caster's hands is green and scaly like a lizard's claw for the next {{!!duration}}.
3473: One of caster's hands begins to rust over the next {{!!duration}}, then reverts to normal.
3474: One of caster's hands turns into an eagle's talon for the next {{!!duration}}.
3475: One of caster's knees locks whenever nimble footwork is required for the next {{!!duration}}.
3476: One of caster's pockets opens into an extradimensional space, like a [[bag of holding]]. This lasts for the next {{!!duration}}, after which anything in the pocket is forcefully thrown out.
3477: One side of caster's body adopts a mirror-bright sheen for the next {{!!duration}}.
3480: One side of caster's body changes color each hour for the next {{!!2d4}} hours.
3481: One side of caster's body is as hairy as an ape for the next {{!!duration}}.
3482: One side of caster's body is blurred as if seen through ice for the next {{!!duration}}.
3485: One side of caster's body is invulnerable to fire for the next {{!!duration}}.
3486: One side of caster's body is paralyzed for {{!!s_duration}}.
3487: One side of caster's body is rendered invisible for {{!!duration}}.
3488: One side of caster's body looks like a photo negative for the next {{!!duration}}.
3489: One side of caster's body shrinks by 10%, then reverts after {{!!duration}}.
3494: People not in the caster's presence tend to forget about them for the next {{!!d20}} days.
3495: Powerful jets of air blow from the caster's ears for the next {{!!duration}}.
3500: Right now, the caster can teleport up to 1d10 miles one time within the next {{!!duration}}.
3502: Rope breaks 10x as readily while the caster is using it for the next {{!!duration}}.
3503: Rope is 10x as strong while the caster is using it for the next {{!!duration}}.
3504: Scavengers and carrion birds react to caster as if they were dead for the next {{!!duration}}.
3505: Short, bony spikes sprout from caster's knuckles for the next {{!!duration}}.
3506: Small objects carried by caster seem 10X as heavy to them for the next {{!!duration}}.
3507: Smoke billows from the caster's head as from a coal chimney for the next {{!!duration}}.
3515: Someone nearby vanishes; {{!!d35}} seconds later, the caster disgorges them.
3523: Spell works normally; next casting automatically causes two random magical effects.
3527: The [[fireball]] spell won't function within 100 yards of caster for the next {{!!duration}}.
3528: The ground beneath caster's feet flows like water for the next {{!!s_duration}}.
3529: The ground beneath caster's feet heaves like a breathing giant for the next {{!!duration}}.
3530: The ground beneath caster's feet sinks a depth 2X their height. It reverts after the caster climbs out.
3531: The ground beneath caster's feet swirls like a whirlpool for the next {{!!duration}}.
3533: The left and right sides of caster's body hate each other for the next {{!!duration}}.
3542: The rear half of caster's body appears to be made of glass for the next {{!!duration}}.
3543: The rear half of caster's body is invisible for the next {{!!duration}}.
3544: The spell cast most recently upon caster is retroactively undone.
3547: Thick clouds of acrid steam issue from the ground near the caster for the next {{!!duration}}.
3548: Thick clouds of steam constantly billow from the caster's skin for the next {{!!duration}}.
3549: Thunder rumbles overhead whenever caster's blood is spilled for the next {{!!2d4}} days.
3550: To the caster, everyone appears to be sweating profusely for the next {{!!duration}}.
3551: To the caster, everyone looks and sounds exactly like them for the next {{!!duration}}.
3553: To the caster, everyone smells like a rotting corpse for the next {{!!duration}}.
3554: To the caster, the weather always appears overcast and gloomy for the next {{!!d7}} days.
3556: Tomorrow, caster can speak all languages until noon.
3559: Tomorrow morning, caster wakes to find themself surrounded by {{!!d35}} statues of themself in hideous poses.
3580: Tomorrow, caster is unable to cast magic before noon.
3620: Tomorrow, caster thinks they're awakened from a centuries-long sleep. The delusion persists for {{!!duration}}.
3625: Tomorrow, caster wakes {{!!d20}} miles from where they fell asleep.
3628: Tomorrow, caster wakes at this location.
3636: Tomorrow, caster wakes covered in pungent, glowing moss.
3638: Tomorrow, caster wakes embarrassingly drunk.
3639: Tomorrow, caster wakes in a coil of dried and sinuous vines.
3654: Trees and bushes express open hostility toward the caster for the next {{!!duration}}.
3655: Ugly thorns sprout from the caster's cheekbones for the next {{!!duration}}.
3660: Vile tentacles sprout from the caster's face for the next {{!!duration}}.
3662: Water feels like acid to the caster but doesn't actually harm them for the next {{!!duration}}.
3663: Water splashes from caster's footfalls for the next {{!!l_duration}}.
3664: Water trickles from caster's elbows for {{!!l_duration}}.
3706: When caster is angry anytime in the next {{!!2d4}} days, they turn bright green for {{!!s_duration}}.
3710: When caster is angry anytime in the next {{!!2d4}} days, insects appear to swarm over their face for {{!!s_duration}}.
3711: When caster is angry anytime in the next {{!!2d4}} days, steam billows from their nostrils.
3712: When caster is surprised anytime in the next {{!!2d4}} days, they randomly teleport {{!!d4}} yards in a random direction.
3713: When caster is surprised anytime in the next {{!!2d4}} days, their head briefly doubles in size.
3743: When caster next enters a building, they teleport onto its roof.
3744: When caster next enters a building, their clothes catch fire.
3862: When caster next says their name, {{!!2d4}} fish leap from their mouth.
3863: When caster next says their name, a bird flies into their mouth.
3865: When caster next says their name, they promptly forget their name for {{!!duration}}.
3866: When caster next says their name, their mouth is sealed shut for {{!!duration}}.
3869: When caster next touches money, they trigger two random magical effects.
3901: When caster next teleports, they arrive {{!!d4}} miles from the destination.
3902: When caster next teleports, they arrive {{!!2d4}} hours later than expected.
3903: When caster next teleports, they arrive blinded for {{!!d35}} seconds.
3905: When caster next teleports, they arrive invisible for {{!!s_duration}}.
3907: When caster next teleports, they arrive upside down.
3911: When caster next tries to make an illusory duplicate of themself, 10X the number of images appear.
3913: When caster next tries to make an illusory duplicate of themself, the images look like [[demon]]s.
3914: When caster next tries to make an illusory duplicate of themself, the images look like infants.
3915: When caster next tries to make an illusory duplicate of themself, the images look like skeletons.
3925: The caster sprouts wool from their arms which lasts for the next {{!!duration}}.
3926: When struck by any magic in the next {{!!duration}}, the caster triggers a random magical effect.
3939: When seen from behind, caster's torso appears riddled with large holes for the next {{!!duration}}.
3945: The caster is covered by ashes and soot.
3947: The caster temporarily inflates like a balloon.
3949: An invisible bronze gong is rung.
3950: Electricity crackles in the caster's hair
3951: Ghostly laughter echoes in the air.
3953: The caster becomes light as a feather for the next {{!!duration}}.
3956: The caster hears glass breaking everywhere for the next {{!!duration}}.
3966: The caster's bones glow visibly in their body for the next {{!!duration}}.
3968: The caster's ears shine like the sun for the next {{!!duration}}.
3969:
3973: Wherever caster walks for the next {{!!duration}}, they sound like they're on a squeaky floor.
3974: While caster is invisible anytime in the next {{!!l_duration}}, a faint outline can still be seen.
3975: While caster sleeps within the next {{!!2d4}} days, they appear to be a perfect cube.
3977: While caster sleeps within the next {{!!2d4}} days, they freeze solid but thaw before waking.
3979: While caster sleeps within the next {{!!2d4}} days, their arms and legs retract into their torso.
3980: While caster sleeps within the next {{!!2d4}} days, their body is translucent.
3981: While caster sleeps within the next {{!!2d4}} days, their body retracts into their head.
3984: While caster sleeps within the next {{!!2d4}} days, their head retracts into their body
3986: While caster sleeps within the next {{!!2d4}} days, luminous moths flutter over their body.
3987: While caster sleeps within the next {{!!2d4}} days, mysterious runes hover over their head.
3988: While caster sleeps within the next {{!!2d4}} days, rodents bring them sacrificial offerings.
3990: While indoors over the next {{!!l_duration}}, caster appears to be 5% larger.
3991: While indoors over the next {{!!l_duration}}, caster feels as if they're dragging heavy chains.
3992: While indoors over the next {{!!l_duration}}, caster feels as if they're in a blazing desert.
3993: While indoors over the next {{!!l_duration}}, caster feels as if they're on a ship's deck.
3994: While indoors over the next {{!!l_duration}}, caster feels as if they're on windswept tundra.
3996: While walking, the caster sounds as if they're wearing full plate armor for the next {{!!duration}}.
3997: Woodland creatures openly mock the caster and call them a coward for the next {{!!duration}}.
4001: {{!!d7}} of target's fingers reappear elsewhere on their body for the next {{!!duration}}.
4002: A handful of small glass marbles tumble from the target's nose.
4004: A nearby but invisible heckler pummels the target with tomatoes for {{!!s_duration}}.
4005: A nearby tree [[awaken]]s and swears allegiance to the target. It reverts to a normal tree after {{!!duration}}.
4006: A nearby tree [[awaken]]s, becomes ravenously carnivorous, and attacks the target.
4008: A nearby tree sprays its bark at the target, briefly blinding them.
4009: A skeleton identical to the target's appears {{!!d10}} feet from them. It vanishes after {{!!duration}}.
4010: A small fire blazes harmlessly in the target's mouth for the next {{!!duration}}.
4011: A tall picket fence encircles the target.
4012: A tentacle slithers from a nearby cave, sewer, or other dark place to grasp the target. It vanishes in a puff of purple smoke after {{!!duration}}.
4020: All voices sound alike to the target for {{!!2d4}} days.
4022: Ambient temperature feels 50° colder to target for the next {{!!duration}}.
4023: Ambient temperature rises by 10° when the target is angry for the next {{!!duration}}.
4024: An earthen duplicate of the target rises up and attacks him. It crumbles after {{!!duration}}.
4026: An evergreen sprouts from target's chest while they sleep tonight. It withers and dies, leaving pine needles everywhere, {{!!duration}} after they wake up.
4027: An item carried by target discharges two random magical effects when next used.
4028: An item carried by target explodes.
4030: An item carried by target releases narcotic vapors when next used.
4041: Any weapon that hits the target in the next {{!!duration}} turns clear as glass for {{!!s_duration}}.
4047: Any weapon that hits the target in the next {{!!duration}} turns to sponge as it does so. It reverts to normal after {{!!s_duration}}.
4050: Any clothing or armor now worn by target is soaked with tree sap.
4051: Any clothing or armor now worn by target shrinks by 30%.
4055: Any coins that target is now carrying weigh 100 pounds each for the next {{!!duration}}.
4064: Any [[magic item]]s carried by the target glow like embers until dawn.
4065: Any metal now in target's possession becomes intensely magnetic for the next {{!!duration}}.
4066: Any metal now in target's possession heats to its melting point over the next {{!!s_duration}}, then slowly cools to room temperature.
4069: Any metal now in target's possession is transparent like glass for the next {{!!duration}}.
4070: Any metal now in target's possession is water soluble until dawn.
4078: Any missile weapon hitting the target over the next {{!!duration}} instantly combusts.
4079: Any missile weapon hitting the target over the next {{!!duration}} sprouts vines and attempts to take root.
4081: Any weapons now carried by target are badly warped. If they were [[magic item]]s, they revert after {{!!duration}}.
4084: Any weapons now carried by target have their name on them.
4087: Any missiles fired at target over the next {{!!duration}} instantly sprout wings and fly away.
4091: Any missiles fired near the target over the next {{!!duration}} orbit them like satellites.
4092: Any missiles fired near target over the next {{!!duration}} shriek as they fly through the air.
4093: Any nearby [[undead]] howl wildly and attack the target exclusively for the next {{!!duration}}.
4094: Any nearby [[undead]] defend the target to the best of their ability for the next {{!!duration}}.
4096: Any nearby [[undead]] now look disturbingly like the target for the next {{!!duration}}.
4097: Any nearby [[undead]] obey the target for {{!!d35}} minutes.
4098: Any open wounds the target now has are welded closed like metal.
4099: Any packs, pouches, or bags carried by target are full of blood.
4100: Any packs, pouches, or bags carried by target are interconnected for the next {{!!duration}}.
4101: Any packs, pouches, or bags carried by target double in volume for the next {{!!duration}}.
4102: Any packs, pouches, or bags carried by target suddenly dump their contents.
4103: Any paper, parchment, etc. now carried by target combusts.
4104: Any paper, parchment, etc. now carried by target is fireproof for the next {{!!l_duration}}.
4105: Any paper, parchment, etc. now carried by target is rain-soaked.
4106: Any paper, parchment, etc. now carried by target turns to steel for the next {{!!duration}}.
4107: Any part of target not covered by clothing appears to be skeletal for the next {{!!duration}}.
4108: Any part of target not covered by clothing is badly sunburned.
4109: Any part of target not covered by clothing is invisible for the next {{!!duration}}.
4110: Any part of target not covered by clothing turns bright orange for the next {{!!duration}}.
4111: Any part of target now covered by clothing is covered in blisters. They heal over the course of {{!!l_duration}}.
4113: Any part of target now covered by clothing is invisible for the next {{!!duration}}.
4114: Any part of target now covered by clothing is hideously scarred for the next {{!!duration}}.
4115: Any spells cast in target's presence seem to originate from them.
4120: Any [[undead]] now within 10 yards of target combust.
4127: Any liquid now in contact with the target's body freezes solid.
4129: Any liquid now in contact with target's body turns to glue.
4130: Any liquid now in contact with target's body turns to lamp oil.
4131: Any liquid now in contact with target's body turns to mud for the next {{!!duration}}.
4132: Any liquid now in contact with target's body turns to stone for the next {{!!duration}}.
4167: Anyone looking at the target over the next {{!!duration}} suffers intense vertigo.
4168: Anyone nearby when target is wounded is compelled to applaud for {{!!2d4}} seconds.
4179: Anyone nearby with a drawn blade shouts the target's name.
4182: Anyone who touches the target in the next {{!!2d4}} seconds is briefly paralyzed.
4184: Anyone who touches the target in the next {{!!2d4}} seconds suffers severe burns.
4197: At any crossroads, target is inclined to turn left for the next {{!!l_duration}}.
4205: Beacon-bright light shines from target's palms for the next {{!!duration}}.
4206: Beacon-bright light shines from the soles of the target's feet for the next {{!!duration}}.
4207: Beacon-bright light shines from the target's principal weapon for the next {{!!duration}}.
4208: Beacon-bright light shines from the top of the target's head for the next {{!!duration}}.
4209: Bits of gristle tumble from the target's mouth while they speak for the next {{!!duration}}.
4210: Bits of hardened resin tumble constantly from target's ears for the next {{!!duration}}.
4211: Blades are magically blunted while the target wields them for the next {{!!duration}}.
4215: Both of target's arms are now on the same side of their body for the next {{!!duration}}.
4216: Both of target's arms jut from the same shoulder for the next {{!!duration}}.
4218: Bright flames dance harmlessly over target's body for {{!!s_duration}}.
4219: Bright flames ripple harmlessly along target's limbs for {{!!l_duration}}.
4220: Bright flames surround the target harmlessly for {{!!duration}}.
4221: Colored streamers shoot from target's ears for {{!!s_duration}}.
4222: Colored streamers shoot from target's nostrils for {{!!s_duration}}.
4223: Colorful smoke spews from target's every orifice for {{!!s_duration}}.
4224: Condensation endlessly forms upon and drips from target for the next {{!!duration}}.
4226: Countless glass shards whirl around the target for {{!!duration}}.
4227: Countless tiny moths flutter about the target's head for the next {{!!duration}}.
4228: Countless tiny, colorful orbs swirl harmlessly around the target for the next {{!!duration}}.
4230: Creatures or objects conjured in target's presence are clear like glass for the next {{!!duration}}.
4241: Dozens of tiny glass slivers fall harmlessly from target's mouth for the next {{!!duration}}.
4246: During battle, target experiences distracting hallucinations for the next {{!!duration}}.
4248: During battle, target perceives thick, acrid smoke all around them for the next {{!!duration}}.
4249: The target quacks like an enormous duck for the next {{!!duration}}.
4250: The target repeatedly chants a naughty limerick for the next {{!!duration}}.
4251: The target's allies are invisible to them for the next {{!!duration}}.
4256: The target's clothes billow with foul smoke for the next {{!!duration}}.
4257: The target's clothes moan like ghosts for the next {{!!duration}}.
4258: The target's ears flap like a bird's wings for the next {{!!duration}}.
4259: The target's flesh, hair, and gear turn white as snow for the next {{!!duration}}.
4260: The target's hands appear to be shrouded in flame for the next {{!!duration}}.
4261: The target's head is invisible for the next {{!!duration}}.
4262: The target's heartbeat is audible to all nearby for the next {{!!duration}}.
4275: Each day for the next {{!!2d4}} days, target's skin is a different vibrant color.
4277: Each of target's feet is chained to their neck for the next {{!!duration}}.
4278: Each of target's feet tries to race away in a different direction for the next {{!!s_duration}}.
4279: Each of target's feet weighs as much as the rest of their body for the next {{!!duration}}.
4280: Each of target's hands fuses to the opposite elbow for the next {{!!duration}}.
4284: Each time target is injured over the next {{!!duration}}, they howl like a wolf.
4285: Each time target opens their mouth for the next {{!!duration}}, a small toad leaps out of it.
4286: Each time target opens their mouth for the next {{!!duration}}, another tooth turns invisible. They return to normal after {{!!l_duration}}.
4287: Each time target opens their mouth for the next {{!!duration}}, they hear eerie music nearby.
4291: Electricity crackles in the air around the target for the next {{!!duration}}.
4292: Electricity crackles in the ground wherever the target steps for the next {{!!duration}}.
4293: Electricity crackles in the target's hair for {{!!duration}}.
4297: Every few seconds for the next {{!!duration}}, a spider crawls from target's mouth.
4302: Rats feel compelled to follow the target for {{!!2d4}} days.
4303: Every spell cast nearby in the next {{!!duration}} strikes the target.
4311: Everyone now within 10 yards of target is compelled to drop whatever they're holding.
4314: Everyone now within 10 yards of target is stricken bald for the next {{!!duration}}.
4316: Everyone now within 10 yards of target shouts the caster's name.
4331: Everything now worn or carried by target becomes sickly green for the next {{!!duration}}.
4332: Everything now worn or carried by target is strewn about the area.
4334: Exertion makes target exhale black smoke like a steam engine for the next {{!!duration}}.
4336: Fire is invisible to the target for the next {{!!duration}}.
4337: Foliage grows wildly beneath the target's feet, entangling them.
4338: For {{!!d50}} seconds, magic doesn't work within 100 yards of target.
4345: Glowing coals appear to be moving within the target's skin for the next {{!!duration}}.
4346: Half of target's body begins rapidly aging backwards for the next {{!!duration}}, after which it reverts to normal.
4347: Half of target's body is affected by reverse gravity for the next {{!!duration}}.
4348: Half of target's body is badly burned, the other half frostbitten.
4351: Half of target's body [[polymorph]]s into some kind of animal. They revert after {{!!duration}}.
4352: Half of target's body resembles half of the caster's body. It reverts after {{!!duration}}.
4353: Half of target's body shrinks by 25%. It reverts after {{!!duration}}.
4356: Half of target's fingers are invisible for the next {{!!duration}}.
4357: Half of target's head appears to be made of crystal for the next {{!!duration}}.
4358: Half of target's head appears to be made of metal for the next {{!!duration}}.
4359: Half of target's head appears to be stripped of flesh for the next {{!!duration}}.
4361: Half of target's head is covered in fine gold scales for the next {{!!duration}}.
4362: Half of target's head is covered in fragrant blue moss for the next {{!!duration}}.
4364: Half of target's limbs become donkey's limbs for the next {{!!duration}}.
4365: Hundreds of blood-red worms course from the target's nostrils over the next {{!!s_duration}}.
4366: Hundreds of small ice chips tumble from target's ears over the next {{!!s_duration}}.
4367: Hundreds of wasps swarm the target whenever they draw a weapon over the next {{!!d10}} days.
4391: The target is rendered squeaky clean.
4407: Anything the target is holding becomes fused to their hand or arm for the next {{!!duration}}.
4408: If target has a shield, it claps shut on their arm like a clamshell. It unclamps after {{!!duration}}.
4409: If target has a shield, it now weighs 500 pounds. It reverts to normal after {{!!duration}}.
4417: If target has any leather, it rots over {{!!s_duration}}.
4459: If target is carrying a pouch, it becomes a small [[bag of holding]] for the next {{!!duration}}.
4461: If target is carrying a pouch, it inflates like a hot air balloon for the next {{!!duration}}.
4468: If target is carrying any wood, it explodes into fiery splinters.
4470: If target is carrying any wood, it turns to sawdust.
4472: If target is carrying rope, they winds it tightly about their neck for the next {{!!duration}}.
4493: The target's legs double in length for the next {{!!duration}}.
4524: If target is wearing animal hide, it animates and attacks them for the next {{!!duration}}.
4527: The target's hands retract into their wrists for the next {{!!duration}}.
4528: If target is wearing any rings, they ignite on their fingers. The fire goes out after {{!!s_duration}}.
4538: If target is wearing armor, it constricts painfully about them for the next {{!!duration}}.
4541: If target is wearing armor, it rattles violently for {{!!d7}} hours.
4542: If target is wearing armor, it teleports {{!!2d4}} yards away.
4549: The target's feet become chicken's feet for the next {{!!duration}}.
4565: If target sits or lies down in the next {{!!duration}}, they teleport {{!!d50}} yards in a random direction.
4579: If target's hands touch in the next {{!!duration}}, they adhere to each other until dawn.
4580: If target is holding any metal, their hand turns to similar metal for the next {{!!duration}}.
4581: If target is holding any metal, it turns to glass for the next {{!!duration}}.
4582: If target is holding any metal, it turns to wood and vice versa for the next {{!!duration}}.
4584: Innumerable bats flutter around the target for the next {{!!duration}}.
4585: Insects swarm around the target for the next {{!!duration}}.
4586: Magic items trigger random magical effects for the target for {{!!2d4}} days.
4587: Magic items don't function for the target for the next {{!!duration}}.
4589: Melancholy moans issue from the target's weapon during battle for the next {{!!duration}}.
4592: Metal weapons within 10 yards of the target chime pleasantly when they strike anything for the next {{!!duration}}.
4594: Metal objects seem 10X heavier to the target while they hold them for the next {{!!duration}}.
4603: Nearest pine tree pelts the target with jagged pine cones for the next {{!!s_duration}}.
4605: Nearest tree sprays the target with boiling, caustic sap.
4618: Next creature slain by the target within {{!!duration}} combusts immediately.
4619: Next creature slain by the target within {{!!duration}} immediately rises as [[undead]].
4620: Next creature slain by the target within {{!!duration}} turns invisible upon death.
4621: Next creature slain by the target within {{!!duration}} very rapidly decomposes.
4622: Next {{!!2d4}} hours seem like a dream to the target.
4625: Next {{!!2d4}} spells cast at the target function as the current spell.
4626: Next {{!!d4}} spells cast at the target function at 2X normal power.
4627: Next {{!!d4}} spells cast at the target strike random targets nearby.
4628: Next beast touched by the target becomes ravenously carnivorous for {{!!duration}}.
4630: Next beast touched by the target shrinks by 75% for {{!!duration}}.
4631: Next beast touched by the target turns into a small [[glidewing]] for the next {{!!duration}}.
4632: Next item handled by the target transmutes into clay for {{!!duration}}.
4635: Next item handled by the target in the next {{!!duration}} painfully drains some of their life force.
4639: Next item handled by the target is invisible while they continue to touch it.
4643: Next item handled by the target makes their hands go numb for the next {{!!duration}}.
4644: Next item handled by the target in the next {{!!duration}} rapidly heals an injury the target has suffered.
4646: Next item handled by the target in the next {{!!duration}} seems to be 200 lbs.
4652: Next person to wound the target in the next {{!!duration}} suffers the same wound.
4654: Next person to wound the target in the next {{!!duration}} hallucinates wildly for {{!!s_duration}}.
4655: Next person to wound the target in the next {{!!duration}} inflicts maximum damage.
4657: Next person to wound the target in the next {{!!duration}} is immediately chained to them for {{!!2d4}} seconds, then the chains vanish.
4658: Next person to wound the target in the next {{!!duration}} is paralyzed for {{!!s_duration}}.
4659: Next person to wound the target in the next {{!!duration}} is splattered with fish guts.
4660: Next person to wound the target in the next {{!!duration}} is stricken blind until sunset.
4661: Next person to wound the target in the next {{!!duration}} is swarmed by aggressive bees.
4662: Next person to wound the target in the next {{!!duration}} is thrown into the nearest well.
4666: Next person to wound the target in the next {{!!duration}} resembles them for {{!!d20}} hours.
4670: Next person to wound the target in the next {{!!duration}} suffers overpowering vertigo for a few seconds.
4671: Next person to wound the target in the next {{!!duration}} suffers the damage instead.
4672: Next person to wound the target in the next {{!!duration}} teleports {{!!d50}} yards away
4673: Next person to wound the target in the next {{!!duration}} teleports {{!!d4}} yards straight up.
4674: Next wound the target suffers in the next {{!!duration}} instead is inflicted upon the caster.
4679: Next person to wound the target in the next {{!!duration}} totally disarms themself.
4685: Next person wounded by target in the next {{!!duration}} is stricken mute for the next {{!!duration}}.
4688: Next person wounded by target in the next {{!!duration}} flees panic-stricken for {{!!s_duration}}.
4689: Next person wounded by target in the next {{!!duration}} shrinks by {{!!d7}}0% for {{!!s_duration}}.
4690: Next person wounded by target in the next {{!!duration}} teleports {{!!d35}} yards in a random direction.
4695: Next puddle stepped in by target drenches them from head to toe.
4696: Next puddle stepped in by target explodes as a [[fireball]].
4697: Next puddle stepped in by target hardens like cement.
4699: Next puddle stepped in by target becomes a water [[elemental]] for {{!!duration}}.
4700: Next puddle stepped in by target becomes a highly concentrated acid for {{!!duration}}.
4703: Next puddle stepped in by target throws them {{!!d35}} yards in the air.
4704: Next puddle stepped in by target turns to glass.
4705: Next time target touches a tree, they partially turn to wood for the next {{!!duration}}.
4706: Next time target touches a tree, they're attacked by {{!!2d4}} squirrels for {{!!duration}}.
4707: Next time target touches a tree, it explodes into sawdust.
4759: Beasts react to the target as if they were a salt lick for the next {{!!duration}}.
4763: Normal voices seem deafeningly loud to the target for the next {{!!duration}}.
4767: On target's back is a button that, if pushed, lights up their head. The button persists for {{!!duration}}.
4769: On target's back is a button that, if pushed, makes them glow a different bright color. The button persists for {{!!duration}}.
4770: On target's back is a button that, if pushed, makes them sweat profusely. The button persists for {{!!duration}}.
4772: All wheels nearby turn invisible for the next {{!!duration}}.
4774: One of target's arms becomes as supple as rope for the next {{!!duration}}.
4775: One of target's arms can bend in {{!!d4}} additional places for the next {{!!duration}}.
4777: One of target's arms is bent like a corkscrew for the next {{!!duration}}.
4778: One of target's arms is bent like a shepherd's crook for the next {{!!duration}}.
4779: One of target's arms is replaced by a duplicate of their head for the next {{!!duration}}.
4780: One of target's arms is stripped to the bone but works normally for the next {{!!duration}}.
4781: One of target's arms loses all bone but functions like a tentacle for the next {{!!duration}}.
4782: One of target's arms turns into a small replica of their leg for the next {{!!duration}}.
4783: One of target's arms turns to a lion's foreleg for the next {{!!duration}}.
4784: One of target's eyes migrates to the back of their head for the next {{!!duration}}.
4785: One of target's feet is fused into an anvil for the next {{!!duration}}.
4786: One of target's feet rotates 180° at the ankle for the next {{!!duration}}.
4787: One of target's hands appears to have been flattened by a hammer for the next {{!!duration}}.
4788: One of target's hands becomes hideously contorted and deformed for the next {{!!duration}}.
4794: One of target's hands glows brightly for the next {{!!duration}}.
4796: One of target's hands is fireproof; the other hand vanishes. They revert to normal after {{!!duration}}.
4801: One of target's hands is shaped like an orangutan's hand for the next {{!!duration}}.
4802: One of target's hands migrates to the top of their head for the next {{!!duration}}.
4803: One of target's hands oozes a viscous liquid like sap for the next {{!!duration}}.
4805: One of target's hands turns into a hoof for the next {{!!duration}}.
4806: One of target's hands turns into a perfect cube of granite for the next {{!!duration}}.
4807: One of target's hands turns into a replica of a rabbit's head for the next {{!!duration}}.
4808: One of target's hands turns into sponge for the next {{!!duration}}.
4810: One of target's legs and one of their arms become as clear as glass for the next {{!!duration}}.
4811: One of target's legs and one of their arms seem to be made of wood for the next {{!!duration}}.
4812: One of target's legs and one of their arms shrink by 50% for the next {{!!duration}}.
4813: One of target's legs and one of their arms turn invisible for the next {{!!duration}}.
4815: One of target's limbs seems to be soaked with milk for the next {{!!duration}}.
4816: One of target's limbs appears to be made of diamond for the next {{!!duration}}.
4817: One of target's limbs becomes wildly disobedient during combat for the next {{!!duration}}.
4819: One of target's limbs is illusory for the next {{!!duration}}.
4820: One of target's limbs can not be rendered invisible for the next {{!!duration}}.
4821: One of target's limbs can't be armored for the next {{!!duration}}.
4822: One of target's limbs develops an intense hatred for the others for the next {{!!duration}}.
4823: One of target's limbs falls off and tries to escape. It flies back in place and reattaches after {{!!duration}}.
4824: One of target's limbs glows bright blue in the dark for the next {{!!duration}}.
4825: One of target's limbs must move 3x slower. This persists for {{!!duration}}.
4828: One of the target's limbs is controlled by the caster for {{!!d4}}0 seconds.
4829: One of target's limbs is covered in feathers for the next {{!!duration}}.
4833: One of target's limbs is made of porcelain but functions normally for the next {{!!duration}}. If shattered, it still reverts to flesh after {{!!duration}} but does not reassemble.
4834: One of target's limbs is paralyzed for {{!!l_duration}}.
4835: One of target's limbs is replaced by a hideous tentacle for {{!!duration}}.
4838: One of target's limbs now juts from the center of their back for the next {{!!duration}}.
4840: One of target's limbs retracts into their torso when not in use for the next {{!!duration}}.
4841: One of target's limbs seems to belong to a different species for the next {{!!duration}}.
4842: One of target's limbs shrinks by 5% per second for the next {{!!s_duration}}, then reverts to normal.
4844: One of target's limbs turns bright green for the next {{!!duration}}.
4845: One of target's limbs turns to a tree limb for the next {{!!duration}}.
4846: One of target's limbs turns to solid gold for the next {{!!duration}}.
4848: One or more of target's allies thinks that target is a traitor for the next {{!!duration}}.
4851: Ordinary water is as intoxicating to target as distilled spirits for the next {{!!duration}}.
4852: Ordinary water is incredibly impressive to the target for the next {{!!duration}}.
4881: Phosphorescent beetles teem over target's skin for {{!!duration}}.
4882: Printed text appears hopelessly garbled while target is nearby for the next {{!!duration}}.
4883: Rope hisses like a snake while target is near it for the next {{!!duration}}.
4884: Rope tends to become hopelessly tangled when target uses it for the next {{!!duration}}.
4885: Seltzer water sprays from the target's nose for {{!!s_duration}}.
4886: Shimmering lights play over the target's skin during combat for the next {{!!duration}}.
4887: Smoke issues from the ground near the target for the next {{!!duration}}.
4890: Smoke pours from target's skin for the next {{!!duration}}.
4895: Sparks fly from target's ears as from a grindstone for the next {{!!duration}}.
4898: Sparks fly from target's nostrils as they speak for the next {{!!duration}}.
4899: Spectral voices echo everything that the target says for the next {{!!duration}}.
4900: Suddenly {{!!2d4}} humanoid [[manifestation]]s appear and attack the target. They vanish after {{!!duration}}.
4901: Suddenly {{!!2d4}} humanoid [[manifestation]]s appear and offer trinkets to the target. They vanish after {{!!duration}}.
4903: Suddenly {{!!2d4}} humanoid [[manifestation]]s people appear and worship the target. They vanish after {{!!duration}}.
4904: Suddenly {{!!d4}} people nearby resemble the target for the next {{!!duration}}.
4906: Sulfurous mud oozes from target's clothes for {{!!d7}} hours.
4909: Summoned creatures are invisible to the target for the next {{!!duration}}.
4916: Swords can't come within ten feet of the target for {{!!s_duration}}.
4917: Swords within 10 yards of the target drip with the target's blood for the next {{!!duration}}.
4918: Weapons pass harmlessly through the target's body for {{!!s_duration}}.
4919: Target acquires a new language and refuses to speak any other for the next {{!!duration}}.
4923: Target acts as though they're the only person who really exists for the next {{!!duration}}.
4927: Target acts like a child for {{!!duration}}.
4928: Target acts like a horse for {{!!duration}}.
4930: Target changes accents for every sentence they speak for the next {{!!duration}}.
4932: Target suddenly ages {{!!d4}}0 years. They revert to normal after {{!!duration}}.
4946: Target and nearest creature are chained together for {{!!duration}}, then the chain vanishes.
4953: Target and the next person they attack are soaked with icy brine.
4954: Target and the next person they attack both shrink by 40% for the next {{!!duration}}.
4958: Target and the next person they attack teleport {{!!2d4}} yards in a random direction.
4959: Target and the next person they attack vanish for {{!!s_duration}}.
4961: Target appears to be {{!!d20}} inches taller than they really are for the next {{!!duration}}.
4962: Target appears to be a hideous corpse for the next {{!!duration}}.
4964: Target appears to be in the middle of a terrible rainstorm for the next {{!!duration}}.
4965: Target appears to be made of chocolate for the next {{!!duration}}.
4967: Target appears to be wearing a cloak of shimmering fire for the next {{!!duration}}.
4968: Target appears to have been assembled out of bamboo for the next {{!!duration}}.
4975: Target asserts that all contracts are null and void. The delusion persists for the next {{!!duration}}.
4976: Target asserts that all gold within 10 miles is counterfeit. The delusion persists for the next {{!!duration}}.
4978: Target asserts that anyone who drinks their blood will live forever. The delusion persists for the next {{!!duration}}.
4979: Target asserts that dangerous organisms live within their flesh for the next {{!!duration}}.
4980: Target asserts that death no longer has any power over them for the next {{!!duration}}.
4981: Target asserts that fire has no effect upon them for the next {{!!duration}}.
4982: Target asserts that they and the caster have been allies for years. The delusion persists for the next {{!!duration}}.
4985: Target asserts that they can divine the future, for the right price. The delusion persists for the next {{!!duration}}.
4987: Target asserts that they can issue divine edicts on behalf of the [[Sovereign Host]]. The delusion persists for the next {{!!duration}}.
4990: Target asserts that they can summon earth [[elemental]]s by eating dirt. The delusion persists for the next {{!!duration}}.
4998: Target asserts that they died {{!!s_duration}} ago. The delusion persists
for the next {{!!duration}}.
4999: Target asserts that they died {{!!2d4}} years ago. The delusion persists for the next {{!!duration}}.
5000: Target asserts that they have a key that unlocks their skull. The delusion persists for the next {{!!duration}}.
5002: Target asserts that they have only {{!!duration}} to live. The delusion persists until the end of that time.
5003: Target asserts that they have the power to bestow godhood. The delusion persists for the next {{!!duration}}.
5004: Target asserts that they has the power to create and destroy souls. The delusion persists for the next {{!!duration}}.
5008: Target asserts that they are the caster's grandparent. The delusion persists for the next {{!!duration}}.
5009: Target asserts that they knows exactly who is destined to kill them. The delusion persists for the next {{!!duration}}.
5010: Target asserts that they knows the location of a secret holy book. The delusion persists for the next {{!!duration}}.
5012: Target asserts that they knows when, where, and how they'll die. The delusion persists for the next {{!!duration}}.
5013: Target asserts that they must choose which of their allies must die. The delusion persists for the next {{!!duration}}.
5014: Target asserts that they were bitten by a werewolf one month ago. The delusion persists for the next {{!!duration}}.
5015: Target asserts that they will become omnipotent upon death. The delusion persists for the next {{!!duration}}.
5018: Target asserts that they'll combust if anyone says their name for the next {{!!duration}}, or until someone says their name.
5020: Target asserts that they'll combust if they get wet for the next {{!!duration}}.
5022: Target asserts that they'll combust if they're outdoors at sunset for the next {{!!duration}}.
5023: Target asserts that they'll combust if their blood is spilled for the next {{!!duration}}.
5026: Target asserts that they'll die if anyone harms the caster for the next {{!!duration}}.
5031: Target asserts that they'll die if they changes or cleans their clothes for the next {{!!duration}}.
5032: Target asserts that they'll die if they close their eyes or blink. The delusion persists for the next {{!!duration}}.
5033: Target asserts that they'll die if they crosses moving water. The delusion persists for the next {{!!duration}}.
5036: Target asserts that they'll die if they draw/sheathe their weapon. The delusion persists for the next {{!!duration}}.
5037: Target asserts that they'll die if they eats during the next 4 days. The delusion persists for the next {{!!duration}}.
5039: Target asserts that they'll die if they open their eyes. The delusion persists for the next {{!!duration}}.
5041: Target asserts that they'll die if they sees their own blood. The delusion persists for the next {{!!duration}}.
5044: Target asserts that they'll die if they stop dancing. The delusion persists for the next {{!!duration}}.
5045: Target asserts that they'll die if they stop talking. The delusion persists for the next {{!!duration}}.
5046: Target asserts that they'll die if they touch anyone else's blood. The delusion persists for the next {{!!duration}}.
5047: Target asserts that they'll die if they touch gold. The delusion persists for the next {{!!duration}}.
5048: Target asserts that they'll die if they touch ice. The delusion persists for the next {{!!duration}}.
5049: Target asserts that they'll die if they touch any metal. The delusion persists for the next {{!!duration}}.
5056: Target asserts that they'll die the next time they eat. The delusion persists for the next {{!!duration}}.
5058: Target asserts that they'll die the next time they sleep. The delusion persists for the next {{!!duration}}.
5059: Target asserts that they'll die in the next {{!!duration}} unless they burn all of their clothing. The delusion persists until that time passes.
5061: Target asserts that they'll die unless they cut off their own hand. The delusion persists for the next {{!!duration}}.
5063: Target asserts that they'll die unless they destroy their weapon. The delusion persists for the next {{!!duration}}.
5067: Target asserts that they'll die unless they kill the caster. The delusion persists for the next {{!!duration}}.
5072: Target asserts that they'll die unless they take a vow of pacifism. The delusion persists for the next {{!!duration}}.
5076: Target asserts that they'll die when the caster casts another spell. The delusion persists for the next {{!!duration}}.
5083: Target asserts that they'll vanish forever if they fall asleep.
5084: Target asserts that they'll vanish forever if they leaves this area. The delusion persists for the next {{!!duration}}.
5085: Target asserts that they'll vanish into the ground at dawn tomorrow.
5087: Target asserts that they're a ghost and must haunt this area. The delusion persists for the next {{!!duration}}.
5088: Target asserts that they're a highly qualified thoracic surgeon. The delusion persists for the next {{!!duration}}.
5090: Target asserts that they're a summoned creature about to be banished. The delusion persists for the next {{!!duration}}.
5094: Target asserts that they've been fatally wounded. The delusion persists for the next {{!!duration}}.
5096: Target asserts that they've been replaced by a [[doppelganger]]. The delusion persists for the next {{!!duration}}.
5097: Target asserts that they're brother to [[dragon]]s and companion to owls
5099: Target asserts that they're eager to exterminate their species.
5102: Target asserts that they're immune to magic. The delusion persists for the next {{!!duration}}.
5107: Target asserts that they're protected by a host of [[demon]]s. The delusion persists for the next {{!!duration}}.
5108: Target asserts that they're rapidly bleeding to death. The delusion persists for the next {{!!duration}}.
5112: Target asserts that they're supernaturally beautiful.
5116: Target asserts that they're transforming into some kind of beast. The delusion persists for the next {{!!duration}}.
5117: Target asserts that they're unspeakably ugly. The delusion persists for the next {{!!duration}}.
5118: Target asserts that they're water soluble. The delusion persists for the next {{!!duration}}.
5119: Target asserts that their actions are in accordance with prophecy. The delusion persists for the next {{!!duration}}.
5121: Target asserts that their allies have forsaken them. The delusion persists for the next {{!!duration}}.
5125: Target asserts that their clothes are writhing with snakes. The delusion persists for the next {{!!duration}}.
5126: Target asserts that their clothing is trying to kill him. The delusion persists for the next {{!!duration}}.
5133: Target asserts that their soul will be destroyed if they're injured. The delusion persists for the next {{!!duration}}.
5134: Target asserts that their touch can induce madness. The delusion persists for the next {{!!duration}}.
5136: Target asserts that no one nearby really exists. The delusion persists for the next {{!!duration}}.
5139: Target asserts that puns and rhymes are painful to them. The delusion persists for the next {{!!duration}}.
5144: Target asserts that the caster is a fraud and a charlatan. The delusion persists for the next {{!!duration}}.
5146: Target asserts that the caster's spell functioned as intended.
5147: Target asserts that the king owes them a huge favor. The delusion persists for the next {{!!duration}}.
5151: Target asserts that whoever kills them will become a god. The delusion persists for the next {{!!duration}}.
5159: Target attacks the next person nearby who says their own name.
5161: Target attacks the next person who address them by name.
5166: Target attempts to ingest any ink they see for the next {{!!duration}}.
5167: Target attempts to mimic the caster's every move for the next {{!!duration}}.
5169: Target attempts to strangle themself with their bare hands for the next {{!!s_duration}}.
5171: Target attracts leeches, maggots, slugs, and snails for the next {{!!duration}}.
5172: Target babbles incoherently for {{!!s_duration}}.
5173: Target barks like a dog when they thinks they see magic for the next {{!!duration}}.
5175: Target's skin becomes stark white for the next {{!!duration}}.
5178: Target becomes intensely covetous of any [[magic item]] they see for the next {{!!duration}}.
5180: Target becomes nearly insane with rage whenever anyone says their name for the next {{!!duration}}.
5191: Target begs someone to set them ablaze for the next {{!!duration}}.
5192: Target believes anything the caster says to them for the next {{!!duration}}.
5194: Target believes no factual statement they hear for the next {{!!duration}}.
5196: Target believes that they can't be harmed by a fall from any height for the next {{!!duration}}.
5197: Target believes that they can't be slain by metal weapons for the next {{!!duration}}.
5198: Target believes that their allies are conspiring to rob them. The delusion persists for the next {{!!duration}}.
5199: Target believes that nearly everyone is lying to them. The delusion persists for the next {{!!duration}}.
5200: Target believes that whatever they last ate gave them eternal life. The delusion persists for the next {{!!duration}}.
5201: Target believes that whatever they last ate is still alive. The delusion persists for the next {{!!duration}}.
5204: Target believes that whatever they last ate was their last meal. The delusion persists for the next {{!!duration}}.
5205: Target believes that whatever they last ate was worth a fortune. The delusion persists for the next {{!!duration}}.
5208: Target bleeds from every orifice for {{!!s_duration}} but is unharmed.
5210: Target expels bright blue fog with every breath for the next {{!!duration}}.
5212: Target briefly becomes invisible to anyone who wounds them for the next {{!!duration}}.
5213: Target briefly resembles anyone who wounds them for the next {{!!duration}}.
5214: Target briefly resembles the caster each time either of them is wounded for the next {{!!duration}}.
5215: Target bursts into flame for the next {{!!s_duration}}, at which point the flames sputter out.
5216: Target is covered in moss and lichens.
5218: Target becomes totally nondescript and unremarkable for the next {{!!duration}}. They are hard to focus on, and blend easily into the crowd, as if they're wearing an [[inconspicuous hat]].
5231: Target can bend their spine 120° midway along its length for the next {{!!duration}}.
5233: Target can cast [[lightning bolt]] without expending energy for the next {{!!duration}}.
5238: Target's face changes color every {{!!s_duration}} for the next {{!!duration}}.
5242: Target can cast the [[command]] spell for the next {{!!duration}}.
5248: Everything the target tries to say over the next {{!!duration}} is delayed by {{!!s_duration}}.
5254: Target can divine the caster's exact location for the next {{!!l_duration}}.
5255: Target can do nothing but scream for {{!!duration}}.
5256: Target is [[charm]]ed by the caster for the next {{!!duration}}.
5257: A four-foot-high wall of snow materializes halfway between the caster and the target.
5258: Target exhales fire with every breath for the next {{!!2d4}} breaths.
5275: Target is compelled to ingest a single coin.
5286: Target knows the location of every bear within one mile for the next {{!!duration}}.
5288: An exact copy of the target appears next to them and persists for {{!!s_duration}}.
5289: An exact copy of the caster appears next to the target and persists for {{!!s_duration}}.
5291: Target's voice issues from a nearby object for the next {{!!duration}}.
5293: Target's voice is 2 octaves higher for the next {{!!duration}}.
5294: Target's voice is 2 octaves lower for the next {{!!duration}}.
5295: Target can make their whisper heard by anyone in their line of sight
5322: Target can cast [[polymorph]] for the next {{!!duration}}.
5332: Target's ears retract into their skull, and can be retracted and extended by the target at will for the next {{!!duration}}.
5333: One of the target's limbs retract into their body, and can be retracted and extended by the target at will for the next {{!!duration}}.
5340: Target's palms shine with torchlight for the next {{!!duration}}.
5341: The soles of the target's feet shine with torchlight for the next {{!!duration}}.
5342: Target can speak only in a full shout for the next {{!!duration}}.
5343: Target can speak only in grunts for the next {{!!duration}}.
5345: Target can speak only in whale song for the next {{!!duration}}.
5347: Target can speak with flies and gnats for the next {{!!duration}}.
5362: Target can cast [[conjure elemental]] to conjure an earth [[elemental]] one time.
5374: Target can understand every language they hear for the next {{!!duration}}.
5375: Target's non-dominant hand becomes dominant, and vice versa, for the next {{!!duration}}.
5387: Target can't be affected by the caster's magic for {{!!duration}}.
5398: Target can't be detected by invisible creatures for the next {{!!duration}}.
5399: Target can't be detected by magical attempts at scrying for the next {{!!duration}}.
5408: Target can't be harmed by fire for the next {{!!duration}}.
5418: Target can't be knocked off balance by any physical force for the next {{!!duration}}.
5419: Target can't be magically detected by anyone not of their race for the next {{!!duration}}.
5429: Target can't be wounded by metal weapons until sunset tonight.
5431: Target can't breathe for {{!!d4}}0 seconds.
5432: Target can't breathe until they remove their boots or shoes.
5435: Target can't come within 10 feet of any fire now burning for the next {{!!duration}}.
5436: Target can't come within 10 yards of the caster for the next {{!!duration}}.
5449: Target can't draw their weapon or sheathe it if it's now drawn for the next {{!!duration}}.
5453: Target can't hear their own voice for the next {{!!duration}}.
5459: Target can't hear voices for {{!!duration}}.
5465: Target can't lie, equivocate, or tell half-truths for the next {{!!duration}}.
5466: Target can't move more than 10 yards from the caster for the next {{!!duration}}.
5467: Target can't pass through doorways for the next {{!!duration}}.
5468: Target can't say anyone's name for the next {{!!duration}}.
5470: Target can't see light other than sunlight or reflected sunlight for the next {{!!duration}}.
5471: Target can't see or hear any of their allies for the next {{!!duration}}.
5473: Target can't see or hear living creatures for the next {{!!s_duration}}.
5475: Target can't see or hear metal objects for {{!!duration}}.
5476: Target can't see sunlight or reflected sunlight for the next {{!!duration}}.
5485: Target can't speak for the next {{!!duration}}.
5488: Target can't speak unless they cover their mouth for the next {{!!duration}}.
5504: Target can't walk until the caster says their own name or until after {{!!duration}}.
5507: Target can't wield any weapon in their dominant hand for the next {{!!duration}}.
5511: Target is compelled to random tap on inanimate objects with whatever they are holding for the next {{!!duration}}.
5512: Target challenges their closest ally to single combat to the death. The delusion persists for the next {{!!d4}} minutes.
5513: Target chants nonsensically for {{!!s_duration}}.
5514: Target clatters when they walks like a barrel full of pots and pans for the next {{!!duration}}.
5515: Target collapses into a fetal position for {{!!s_duration}}.
5520: Target confesses to a list of crimes, none of which has happened, for the next {{!!s_duration}}.
5523: Target confesses to rampant kleptomania for the next {{!!s_duration}}.
5525: Target exudes fragrant soap suds for the next {{!!duration}}.
5527: Target coughs incessantly, but their actions are unimpaired, for the next {{!!duration}}.
5528: Target sprouts a horse tail for the next {{!!duration}}.
5531: Target crouches and begins eating dirt, twigs, gravel, etc. for the next {{!!duration}}.
5532: Target crows like a rooster.
5533: Target dares {{!!d4}} of their allies to try to behead him.
5534: Target declares this area to be a sanctified ground for the next {{!!duration}}.
5535: Target transforms into a [[gibbering mouther]] for the next {{!!duration}}.
5537: Target develops a pronounced stutter for the next {{!!duration}}.
5543: Target spits out a handful of acorns every few moments for the next {{!!duration}}.
5545: Target disgorges a pound of feathers.
5548: Target disgorges {{!!d35}} dragonflies.
5549: Target disgorges a clump of tiny, phosphorescent worms.
5551: Target disgorges a gallon of boiling pitch.
5552: Target disgorges {{!!2d4}} small birds.
5553: Target disgorges {{!!d20}} pounds of slag.
5554: Target disgorges {{!!d35}}0 feet of hemp rope.
5555: Target disgorges {{!!2d4}} sheets of pristine parchment.
5557: Target disgorges a 50 pound sack of potatoes.
5562: Target disgorges a bundle of razor-sharp shards of glass.
5564: Target disgorges a corked bottle of wine.
5567: Target disgorges a full-sized statue of a nearby ally.
5570: Target disgorges a [[homunculus]].
5571: Target disgorges a huge quantity of raisins, dates, and figs.
5573: Target disgorges a large slab of marble.
5574: Target disgorges a map of the surrounding area centered on their location.
5575: Target disgorges a one-half-size clone of the caster, which vanishes after {{!!duration}}.
5577: Target disgorges a slimy slug as long and thick as their arm. It vanishes after {{!!duration}}.
5584: Target disgorges a two-foot square pane of glass.
5588: Target disgorges an egg that, if broken, turns into a small boat. It vanishes after {{!!duration}}.
5589: Target disgorges an entire trombone.
5590: Target disgorges an exact copy of the clothes they're now wearing. They vanish after {{!!duration}}.
5593: Target disgorges several gallons of house paint.
5594: Target disgorges several gallons of viscous, highly adhesive goo.
5607: Target drowns for {{!!d7}}0 seconds but is fine afterward.
5617: Target experiences searing pain when their skin is touched for the next {{!!duration}}.
5622: Target exudes a scent like something dredged from the ocean floor for the next {{!!duration}}.
5623: Target exudes a scent reminiscent of skunks for the next {{!!duration}}.
5644: Target exudes an offensive stench that they themselves can't smell for the next {{!!duration}}.
5645: Target fails at their next attempt at fine manual dexterity within the next {{!!duration}}.
5646: Target falls asleep for {{!!duration}}, unless they are shaken awake first.
5647: Target fanatically defends the caster for the next {{!!d7}}0 seconds.
5650: Target feels as if they're walking on a high tightrope for the next {{!!duration}}.
5651: Target feels as if they're wearing an enormous hat made of lead for the next {{!!duration}}.
5652: Target feels as if their clothes are trying to digest them for the next {{!!duration}}.
5655: Target feels as if thorns have sprouted in their clothes for the next {{!!duration}}.
5657: Target feels as though they just ate three pounds of butter for the next {{!!duration}}.
5669: Target feels as though their teeth are spinning in their mouth for the next {{!!duration}}.
5683: Target feels like they're having the time of their life for the next {{!!duration}}.
5685: Target feels the ground shake as during a powerful earthquake for the next {{!!duration}}.
5717: Target flees from anyone who addresses them by name for the next {{!!duration}}.
5724: Target forgets everything said to them in the past {{!!d4}} hours.
5732: Target forgets how to use doors for the next {{!!duration}}.
5734: Target forgets that their allies know who they are for the next {{!!duration}}.
5749: One of target's arms turns to steam. It reappears after {{!!duration}}.
5771: Target gives whatever they're holding to the person standing nearest to them.
5772: Target glows bright blue for the next {{!!duration}}.
5776: Target glows with a bright, rainbow aura that gets brighter if they try to be stealthy. It persists for the next {{!!duration}}.
5782: Target goes berserk if they touch gold in the next {{!!duration}}.
5784: Target goes into a homicidal rage for {{!!d4}}0 seconds, then passes out. They wake up after {{!!duration}}.
5785: Target goes into a homicidal rage for {{!!d4}}0 seconds, then vanishes. They reappear after {{!!duration}}.
5789: Target grows an additional {{!!d7}} fingers that vanish after {{!!duration}}.
5790: Target grows an additional pair of ears atop their head that vanish after {{!!duration}}.
5791: Target grows an additional pair of eyes somewhere on their face that vanish after {{!!duration}}.
5792: Target has {{!!d10}}0 tiny steel spheres embedded in their skin for the next {{!!duration}}.
5794: Target becomes incredibly physically strong for {{!!s_duration}}.
5800: Target has a blowhole in the back of their neck for the next {{!!duration}}.
5802: Target has a compartment in their torso able to carry small items. It persists for the next {{!!duration}}.
5803: Target has a complete but false memory of the past 24 hours. It reverts to normal after {{!!duration}}.
5808: Target has a harmless hole in their forehead as large as their fist. It reverts to normal after {{!!duration}}.
5809: Target has a hole in their torso big enough to accommodate their head for the next {{!!duration}}.
5822: Target has a mane like a lion for the next {{!!duration}}.
5825: Target has a raised, square protuberance jutting from their chest for the next {{!!duration}}.
5826: Target has a relief of the caster's face embossed on their back for the next {{!!duration}}.
5832: Target has a seizure lasting for {{!!duration}}, or until they are targeted by another spell.
5835: Target has a small lamp in their forehead like a miner's helmet. It persists for {{!!duration}}.
5836: Target has a small lump on their forehead like a horseshoe for the next {{!!duration}}.
5837: Target has a small steel ring jutting from each shoulder blade for the next {{!!duration}}.
5838: Target has a harmless star-shaped hole running completely through their head for the next {{!!duration}}.
5840: Target has a steel bolt harmlessly running completely through their head for the next {{!!duration}}.
5841: Target has a strange tattoo that, if touched, causes them to weep. It vanishes after {{!!duration}}.
5846: Target has a tiny extradimensional compartment beneath one of their fingernails. It reverts to normal after {{!!duration}}.
5847: Target has a violent coughing fit that persists until sunrise.
5850: Target has a wooden bucket firmly affixed to their head for the next {{!!duration}}.
5851: Target has an exact copy of everything now carried by the caster, scattered around their feet. It persists for the next {{!!duration}}.
5854: Target has an immobilizing steel brace on one of their legs for the next {{!!duration}}.
5856: Target has an overpowering fear of shoes and other footwear for the next {{!!duration}}.
5867: Target has their name tattooed all over their body for the next {{!!duration}}.
5870: Target has innumerable feathers stuck to their skin for the next {{!!duration}}.
5881: Target has no idea of where they are or what they're doing. Their memory is restored after {{!!duration}}.
5890: Target has prominent mandibles like an ant for the next {{!!duration}}.
5891: Target has six eyes spaced evenly around their skull for the next {{!!duration}}.
5894: Target has terrifying hallucinations about their own death for the next {{!!duration}}.
5895: Target has the caster's name tattooed all over their body for the next {{!!duration}}.
5896: Target has the head and right arm of a common housefly for the next {{!!duration}}.
5897: Target has three identical faces spaced evenly around their skull for the next {{!!duration}}.
5898: Target has ugly, thorny projections along both of their arms for the next {{!!duration}}.
5910: Target hates their nearest ally as much as their most bitter enemy for the next {{!!duration}}.
5911: Target hears cheers and applause for the next {{!!duration}}.
5914: Target hears their own voice endlessly chanting their own name for the next {{!!duration}}.
5915: Target hears their own voice screaming in their ears for the next {{!!duration}}.
5916: Target hears their own voice whispering words of comfort to them for the next {{!!duration}}.
5919: Target hears the clattering of swords for the next {{!!duration}}.
5920: Target hears the crash of cymbals whenever they use a magic item or end a sentence for the next {{!!duration}}.
5921: Target hears the noisy buzzing of countless bees for the next {{!!duration}}.
5922: Target hears thunder booming all around him, but no one else does. This persists for the next {{!!duration}}.
5923: Target hoots like a foghorn.
5924: Target increases in size and mass by 20% for the next {{!!duration}}.
5928: Target insists that their body is real and spectacular for the next {{!!duration}}.
5954: Target is at the heart of an invisible thunderstorm for the next {{!!duration}}.
5957: Target is weightless for the next {{!!duration}}.
5959: Target is afflicted with [[lycanthropy|lycanthrope]] for the next {{!!l_duration}}.
5962: Target is attacked by {{!!d50}} tiny skeletal bats for the next {{!!duration}}, after which they collapse into piles of tiny bones.
5963: Target is attacked by {{!!2d4}} housecats for the next {{!!duration}}, after which they flee.
5966: Target is attacked by dozens of crows for the next {{!!duration}}, and then they all vanish.
5968: Target is attacked by moths for the next {{!!duration}}.
5973: Target is blown back {{!!d4}}0 yards.
5974: Target is bound by fine but very durable silver chains that vanish after {{!!duration}}.
5975: Target is briefly blinded by a dense cloud of powdered sugar.
5976: Target is briefly blinded by countless flies swarming around him.
5977: Target is buffeted by mighty winds that affect no one else for the next {{!!duration}}.
5978: Target is buried by a heap of mildewed potato peelings.
5979: Target is buried by a sudden avalanche; no one else is affected.
5980: Target is buried up to their knees in burning coals.
5981: Target is buried up to their knees in shiny new gold coins. The coins vanish after {{!!duration}}.
5994: Target is certain that they're a plant-based creature for the next {{!!duration}}.
6002: Target is coated in a delicious honey glaze.
6003: Target is coated in boiling pitch.
6004: Target is completely enclosed by a layer of living flesh. Once it is peeled off of them, it rapidly decays.
6005: Target is constricted as though squeezed by an invisible python for the next {{!!duration}}.
6006: Target is covered by a suit of full plate armor, made of glass.
6007: Target is covered by a thick shawl of vulture feathers.
6008: Target is covered by coarse and musky wool like a yak.
6009: Target is covered by dozens of slugs and snails.
6010: Target is covered by thick, ugly scales for the next {{!!duration}}.
6018: Target is draped in a gossamer shawl that vanishes after {{!!duration}}.
6020: Target is draped in foul-smelling seaweed.
6021: Target is draped in hundreds of long colorful threads.
6024: Target is dressed like a court jester.
6029: Target is encased in the ground up to their neck.
6030: Target is encased in a glass box quickly filling with water. It vanishes after {{!!duration}}, but the water persists and splashes all over the ground.
6031: Target is encased in a large, hollow sphere of ice.
6032: Target is encased in a marble sarcophagus that vanishes after {{!!duration}}.
6033: Target is encased in a sealed wicker basket that vanishes after {{!!duration}}.
6034: Target is encased in a skin-tight plaster cast that vanishes after {{!!duration}}.
6036: Target is encircled by a chest-high wall of packed snow.
6037: Target is encircled by a waist-high iron fence that vanishes after {{!!duration}}.
6038: Target is encircled by a zone of intense cold for the next {{!!duration}}.
6041: Target is encircled by an illusory wall of chattering skulls for the next {{!!duration}}.
6042: Target is encircled by tall icicles, each as thick as their leg.
6043: Target is enclosed for {{!!duration}} in an impenetrable 10-foot sphere of force.
6044: Target is enclosed in a shrinking steel cage for {{!!d4}}0 seconds.
6045: Target is enraged beyond all rational control for the next {{!!s_duration}}.
6046: Target is ensconced in velvet.
6048: Target is especially receptive to suggestion for the next {{!!duration}}.
6056: Target is harassed by skeletal crows for the next {{!!duration}}.
6063: Target is holding an anvil and can't put it down for {{!!2d4}}0 seconds, after which it vanishes.
6064: Target is holding an egg in each hand and must not break them. The eggs vanish after {{!!duration}}.
6066: Target is horribly afraid of cooked or salted meat for the next {{!!duration}}.
6067: Target is horribly scarred, as though shredded and reassembled, for the next {{!!duration}}.
6076: Target is immune to all injury for the next {{!!duration}}.
6088: Target can see through all illusions for the next {{!!duration}}.
6092: Target is immune to lightning for the next {{!!duration}}.
6096: Target cannot be magically healed for the next {{!!duration}}.
6112: Target is in the middle of a typhoon, but no one else is, which persists for the next {{!!duration}}.
6121: Target is invisible while shouting for the next {{!!duration}}.
6136: Target is surrounded by golden light until dawn tomorrow.
6140: Target is liquefied but reforms over the course of {{!!duration}}.
6143: Target is mesmerized by the sound of clinking metal for the next {{!!duration}}.
6145: Target is now standing {{!!d7}}0 yards behind the spell's target point.
6146: Target is now standing atop the tallest mountain within 100 miles. They teleport back to their origin position after {{!!duration}}.
6147: Target is numb to all physical sensation for {{!!s_duration}}.
6151: Target is obsessed with ridding themself of their shadow for the next {{!!duration}}.
6152: Target is obsessively covetous of some item that they can now see for the next {{!!duration}}.
6155: Target is obsessively protective someone they're never met for the next {{!!duration}}.
6156: Target is overwhelmingly drunk for {{!!s_duration}}, then totally sober.
6158: Target is pelted by hundreds of acorns.
6159: Target is pelted by snowballs for {{!!s_duration}}.
6160: Target is pelted by tiny, red hot coals for {{!!s_duration}}.
6166: Target is suddenly physically exhausted.
6170: Target is pursued by rogue shadows that resemble their own for the next {{!!duration}}.
6179: Target is rendered deaf and blind for {{!!s_duration}}.
6182: Target is rendered mute for {{!!duration}}.
6183: Target is scarred as though they were pressed against a hot screen for the next {{!!duration}}.
6185: Target is sheathed in a large, living sponge for the next {{!!s_duration}}, then it vanishes.
6186: Target is sheathed in a plant like a huge pea pod. It vanishes after {{!!duration}}.
6187: Target is sheathed in blood-soaked strips of leather.
6188: Target is covered in wax.
6189: Target is shoved to the ground every few seconds for the next {{!!d4}} minutes.
6190: Target is showered by sawdust every few seconds for the next {{!!d4}} minutes.
6191: Target is showered by shaved ice every few seconds for the next {{!!d4}} minutes.
6200: Target is smeared in some kind of fireproof jell.
6205: Target is stricken completely hairless. Their hair grows back over the course of {{!!duration}}.
6206: Target is stricken deaf, blind, and mute for {{!!s_duration}}.
6211: Target is struck by lightning.
6212: Target is struck by lightning every few seconds for the next {{!!d4}} minutes.
6218: Target is stung by a bee as large as a fist.
6222: Target is suddenly holding an anvil in each arm.
6226: Target is suddenly holding an enormous bouquet of roses. The roses vanish after {{!!duration}}.
6228: Target is suddenly holding the nearest corpse in their arms.
6229: Target is suddenly lying in a four-poster canopy bed.
6237: Target is suddenly on the verge of utter dehydration.
6246: Target is suddenly sitting in a bucket full of ice water.
6252: Target is suddenly standing atop a heap of shattered masonry.
6253: Target is suddenly standing atop a rickety and very tall fence.
6254: Target is suddenly standing atop a tall ladder.
6255: Target is suddenly standing atop the nearest corpse.
6263: Target is suddenly standing on a trapdoor over a very deep pit.
6264: Target is suddenly standing on the shoulders of a nearby ally.
6266: Target is suddenly standing under the nearest bridge.
6270: Target is suddenly wearing a cast-iron straightjacket, which vanishes after {{!!duration}}.
6274: Target is suddenly wearing an ornate saddle of very high quality. It vanishes after {{!!duration}}.
6277: Target is surrounded by pandering sycophants, hazy [[manifestation]]s which vanish after {{!!duration}}.
6278: Target is surrounded by rabid wolves. They vanish after {{!!duration}}.
6280: Target is surrounded by vermin and small pests for the next {{!!duration}}.
6295: Target is thrown {{!!d4}}0 seconds into the future.
6296: Target is thrown {{!!2d4}} yards into the air.
6297: Target is thrown down the nearest flight of stairs.
6301: Target is tied to the ground with rope made of their own hair. The rope vanishes after {{!!duration}}.
6302: Target is tightly bound by strips of adhesive cloth for the next {{!!duration}}.
6303: Target is tightly chained to the nearest tree. The chain vanishes after {{!!duration}}.
6304: Target is tightly swaddled in a coarse wool blanket.
6306: Target is tightly wrapped in strips of raw and greasy bacon.
6311: Target is tormented by shrill and discordant music for the next {{!!duration}}.
6319: Target is unable to look directly at the caster for the next {{!!duration}}.
6320: Target is unaffected by wind for the next {{!!duration}}.
6322: Target is unusually clumsy for {{!!duration}}.
6326: Target is violently pushed {{!!d10}} yards, and is stunned for {{!!d20}} seconds.
6328: Target is wearing a formal suit made entirely of lettuce.
6338: Target jingles like sleigh bells when they walk for the next {{!!duration}}.
6345: Target knows the current location of every [[dwarf]] within 10 miles for the next {{!!duration}}.
6346: Target knows the location of every lock within one mile for the next {{!!duration}}.
6353: Target leeches health from the caster for a few seconds, rapidly recovering from injures while the caster suffers necrotic damage.
6354: Target levitates {{!!d10}}0 yards into the air for {{!!duration}}.
6355: Target levitates {{!!2d4}} feet into the air for {{!!duration}}.
6358: Target looks as though half of their body is made of pumice for the next {{!!duration}}.
6359: Target looks as though half of their body is made of wood for the next {{!!duration}}.
6360: Target looks as though they're made entirely of clay for the next {{!!duration}}.
6361: Target looks exactly like the caster for the next {{!!duration}}.
6362: Target looks like a photo-negative for the next {{!!duration}}.
6382: Target loses the sense of object permanence for the next {{!!duration}}.
6384: Target makes a spirited effort to disarm their allies for the next {{!!s_duration}}.
6385: Target makes a spirited effort to eat their own foot for the next {{!!duration}}.
6394: Target mimics the actions of one of their allies for the next {{!!duration}}.
6395: Target mimics the caster's actions for the next {{!!duration}}.
6396: Target mistakes themself for someone else for the next {{!!duration}}.
6397: Target moos like a cow at random intervals for the next {{!!duration}}.
6416: Target must lie whenever they're asked their name for the next {{!!duration}}.
6419: Target teleports back to this location after {{!!duration}}.
6424: Target's left leg bursts into flame.
6442: Target must say their name every time they draw a weapon or try to intimidate someone for the next {{!!duration}}.
6447: Target now has three legs spaced evenly around their pelvis. They vanish after {{!!duration}}.
6448: Target obsessively cleans and polishes anything they're holding for the next {{!!duration}}.
6454: Target does not need to blink for the next {{!!l_duration}}.
6455: Target does not need to eat for the next {{!!2d4}} days.
6463: Target perceives everyone nearby to be sheathed in golden flame for the next {{!!duration}}.
6465: Target perceives everyone nearby to look just like them for the next {{!!duration}}.
6470: Target is bathed in silver light for the next {{!!duration}}.
6485: Target presents a long list of grievances to the caster for the next {{!!duration}}.
6488: Target punches their jaw repeatedly for the next {{!!s_duration}} or until they knock themself out.
6489: Target quickly regenerates any injury for the next {{!!duration}}.
6490: Target races away in a random direction and can't stop for the next {{!!duration}}.
6504: Target rattles like a bucket of stones when they move for the next {{!!duration}}.
6558: Target reacts violently to anyone who wears jewelry for the next {{!!duration}}.
6559: Target reacts violently to anyone who is wearing a hat for the next {{!!duration}}.
6575: Target receives a massive shock the next time they touch metal.
6583: Target reeks of gasoline for the next {{!!duration}}.
6584: Target reeks of manure for the next {{!!duration}}.
6585: Target reflection appears in every mirror within {{!!d4}} miles for the next {{!!duration}}.
6606: Target transforms into an infant but quickly grows to their correct age over the course of {{!!duration}}.
6611: Target roars like a lion.
6614: Target salivates heavily for the next {{!!duration}}.
6616: Target secretes gallons of foul brine over the next {{!!s_duration}}.
6617: Target secretes a glue-like substance from their eyes, nose, and ears over the next {{!!s_duration}}.
6618: Target sees anything more than 20 yards away as dull gray for the next {{!!duration}}.
6622: Target shimmers like a desert mirage for the next {{!!duration}}.
6623: Target shrinks by 25% for the next {{!!duration}}.
6634: Target smells strongly of cabbage for the next {{!!duration}}.
6636: Target smells strongly of sour milk for the next {{!!duration}}.
6637: Target smells strongly of vanilla for the next {{!!duration}}.
6638: Target sneezes and {{!!d35}} angry wasps spew from their nose.
6639: Target sneezes and blows {{!!d4}} pounds of iron filings from their nose.
6640: Target sneezes and blows all of their teeth from their mouth. They fly back and reattach after {{!!s_duration}}.
6641: Target snorts like a pig before and after the next time they say their name.
6642: Target sounds as though they're shouting through a distant megaphone for the next {{!!duration}}.
6644: Target spends {{!!duration}} obsessing over the impact of their actions.
6645: Target spends {{!!duration}} trying to fell a tree with their bare hands.
6647: Target spends {{!!duration}} praising the caster for their magic skills.
6648: Target spends {{!!s_duration}} trying to convince themself they're dead.
6651: Target is suddenly enclosed in a silky cocoon.
6652: Target spins like a top for {{!!s_duration}}.
6653: Target spits out small lumps of coal every few seconds for the next {{!!duration}}.
6654: Target sprays a gallon of milk from their nose.
6655: Target sprays a huge gout of jet-black ink from their nose.
6656: Target sprouts {{!!d10}} additional noses all over their body which persist for {{!!duration}}.
6657: Target sprouts {{!!d10}} fingers from their cheeks, which persist for {{!!duration}}.
6658: Target sprouts {{!!d10}} pairs of delicate antennae, which persist for {{!!duration}}.
6659: Target sprouts {{!!d10}}0 additional ears on their body, which persist for {{!!duration}}.
6661: Target sprouts {{!!d35}} tufts of coarse, ugly hair on their body, which fall out after {{!!duration}}.
6662: Target sprouts a bunch of flexible metal tines on their face, which fall out and vanish after {{!!duration}}.
6663: Target sprouts a clumsy elephant's trunk at the back of their head, which vanishes after {{!!duration}}.
6664: Target sprouts a collar of holly from the skin of their neck, which vanishes after {{!!duration}}.
6665: Target sprouts a horse's tail from the center of their chest, which vanishes after {{!!duration}}.
6666: Target sprouts a long, prehensile tail from their chest, which vanishes after {{!!duration}}.
6667: Target sprouts a non-functional face between their shoulder blades, which vanishes after {{!!duration}}.
6668: Target sprouts a non-functioning hand from the top of their head, which vanishes after {{!!duration}}.
6669: Target sprouts a pair of compound eyes from their cheekbones, which persist for {{!!duration}}.
6670: Target sprouts a pair of tentacles from their forehead, which persist for {{!!duration}}.
6671: Target sprouts a pair of retractable fangs in each palm, which vanish after {{!!duration}}.
6672: Target sprouts a pig's tail from between their eyes, which vanishes after {{!!duration}}.
6673: Target sprouts a small foot from the top of their head, which vanishes after {{!!duration}}.
6674: Target sprouts a torch sconce between their shoulder blades, which vanishes after {{!!duration}}.
6675: Target sprouts a vulture's wing between their shoulder blades, which vanishes after {{!!duration}}.
6676: Target sprouts an additional foot from each knee, which vanish after {{!!duration}}.
6677: Target sprouts an additional foot from each shoulder, which vanish after {{!!duration}}.
6678: Target sprouts an additional forearm and hand from one elbow, which vanish after {{!!duration}}.
6679: Target sprouts an additional hand from each shoulder, which vanish after {{!!duration}}.
6680: Target sprouts an additional hand from one of their arms, which vanishes after {{!!duration}}.
6681: Target sprouts an additional hand from the palm of one hand, which vanishes after {{!!duration}}.
6682: Target sprouts an additional head beside the existing one, which vanishes after {{!!duration}}.
6683: Target sprouts an additional limb, which vanishes after {{!!duration}}.
6684: Target sprouts an additional mouth next to their original one, whiches vanish after {{!!duration}}.
6685: Target sprouts an additional pair of eyes on their forehead, which vanish after {{!!duration}}.
6686: Target sprouts an additional pair of nostrils on their forehead, which vanish after {{!!duration}}.
6687: Target sprouts an additional pair of thumbs on their forehead, which vanish after {{!!duration}}.
6688: Target sprouts an additional thumb from the back of each hand, which vanish after {{!!duration}}.
6689: Target sprouts an iguana's tail from their chin, which vanishes after {{!!duration}}.
6690: Target sprouts an [[awaken]]ed mushroom atop their head, which vanishes after {{!!duration}}.
6691: Target sprouts an ox horn from their chin, which vanishes after {{!!duration}}.
6692: Target sprouts an ox horn from one side of their head, which vanish after {{!!duration}}.
6693: Target sprouts countless leaves, each bearing a mysterious rune, over the next {{!!duration}}.
6694: Target sprouts deer antlers from their shoulder blades, which vanish after {{!!duration}}.
6695: Target sprouts enormous fangs from their lower jaw, which vanish after {{!!duration}}.
6696: Target sprouts harmless but acrid blue mold all over their body over the next {{!!duration}}, after which it immediately rots away.
6697: Target sprouts retractable iron claws from their fingers, which vanish after {{!!duration}}.
6698: Target sprouts small, flashing lights along their spine, which vanish after {{!!duration}}.
6699: Target sprouts wool like a sheep for the next {{!!duration}}.
6702: Target stretches into an upright "X" for {{!!s_duration}}.
6703: Target struggles with some trite philosophical conundrum for the next {{!!duration}}.
6704: Target suddenly has 2d10 carpenter's nails in their mouth. They vanish after {{!!duration}}.
6705: Target suddenly has a small horseshoe in their mouth. It vanishes after {{!!duration}}.
6720: Target suffers a fit of crippling paranoia for {{!!s_duration}}.
6721: Target suffers a seizure lasting {{!!s_duration}}.
6725: Target suffers from a disfiguring pox, but their teeth are radiant. The target is restored to normal after {{!!duration}}.
6731: Target is affected by [[feather fall]] for the next {{!!duration}}.
6741: Target suffers severe frostbite the next time they touch metal in the next {{!!duration}}.
6742: Target suffers a splitting headache for the next {{!!duration}}.
6745: Target swears undying loyalty to the next person to say their name. The delusion persists for the next {{!!duration}}.
6746: Target sweats viscous and fragrant oil for the next {{!!duration}}.
6747: Target teleports {{!!2d4}} yards north every {{!!s_duration}} for the next {{!!duration}}.
6757: Target teleports to a barren, arctic wasteland for {{!!duration}}.
6759: Target teleports to a tiny and distant island for {{!!duration}}.
6760: Target teleports to an impenetrable forest for {{!!duration}}.
6762: Target teleports to the caster's location in exactly {{!!duration}}.
6803: Target thinks that the nearest statue was once their close friend. The delusion persists for the next {{!!duration}}.
6804: Target throws all of their belongings into the next fire they see. Their delusion persists for the next {{!!duration}}.
6807: Target trips and falls every few seconds over the next {{!!duration}}.
6810: Target trusts everyone unquestioningly, no matter how unworthy, for the next {{!!duration}}.
6811: Target trusts no one who's visibly carrying a weapon for the next {{!!duration}}.
6812: Target trusts the caster absolutely and unquestioningly for the next {{!!duration}}.
6814: Target turns in a circle every time they passes through a doorway for the next {{!!duration}}.
6815: Target turns into a pumpkin for the next {{!!duration}}.
6816: Target turns into a tree for the next {{!!duration}}.
6819: Target vanishes until 3 different people say their name.
6829: Target vows to return to this exact spot once per week.
6834: Target wails inconsolably for {{!!s_duration}}.
6849: Target wakes tomorrow within a few yards of the caster.
6870: Target wobbles and clangs like a buoy for the next {{!!duration}}.
6875: Target's age fluctuates {{!!d50}} years every {{!!s_duration}} for the next {{!!duration}}.
6880: Target's allies all sound just like them for the next {{!!duration}}.
6881: Target's allies are healed of all injuries, but physically exhausted.
6883: Target's allies are condescending and patronizing to them for the next {{!!duration}}.
6886: Target's allies are teleported {{!!2d4}} feet in random directions.
6891: Target's allies can come within 10 yards of them for the next {{!!duration}}.
6895: Target's allies can't distinguish the target from the caster for the next {{!!duration}}.
6897: Target's allies can't look directly at them for the next {{!!duration}}.
6908: Target's allies look just like them for the next {{!!duration}}.
6924: Target's allies think that the target is ablaze for the next {{!!duration}}.
6932: Target's allies think that the target has ingested a powerful toxin for the next {{!!duration}}.
6934: Target's allies think that the target is under the caster's control for the next {{!!duration}}.
6935: Target's allies think that the target's name is "Fungus" for the next {{!!duration}}.
6936: Target's allies think that the target's touch is poisonous to them for the next {{!!duration}}.
6940: Target's ankle is tightly chained to their neck for the next {{!!duration}}.
6944: Target's arms are as limp as rope for the next {{!!duration}}.
6945: Target's arms are encased in straight, tight-fitting steel tubes for the next {{!!duration}}.
6946: Target's arms are as limber as snakes for the next {{!!duration}}.
6947: Target's arms are replaced by inert duplicates of their head for the next {{!!duration}}.
6948: Target's arms can't be bound by cloth, rope, or vines for the next {{!!duration}}.
6952: Target's arms flap like a hummingbird's wings for the next {{!!duration}}.
6954: Target's arms reflect light like a mirror for the next {{!!duration}}.
6955: Target's arms shrink to the size of an infant's arms for the next {{!!duration}}.
6956: Target's arms spin like propellers for the next {{!!duration}}.
6957: Target's arms vanish, and they sprout a trunk like an elephant. They revert to normal after {{!!duration}}.
6958: Target's arms wheeze like hydraulics when they move them for the next {{!!duration}}.
6959: Target's arms wriggle like angry snakes for the next {{!!duration}}.
6970: Target's blood can eat through steel and iron like acid for the next {{!!duration}}.
6976: Target's blood smells powerfully of sulfur for the next {{!!duration}}.
6977: Target's body appears to be full of holes like Swiss cheese for the next {{!!duration}}.
6978: Target's body appears to be made entirely of cork for the next {{!!duration}}.
6979: Target's body appears to be made of porous wax for the next {{!!duration}}.
6982: Target's body inflates to twice its normal volume for the next {{!!duration}}.
6983: Target's body is covered with sores and blisters for the next {{!!duration}}.
6987: Target's body rings like an enormous church bell four times.
6988: Target's body slowly absorbs any clothing they wear over the course of {{!!duration}}, then spits it back out.
6989: Target's body, clothing, and gear are uniformly bright orange for the next {{!!duration}}.
6992: Target's bones are intensely magnetic for the next {{!!duration}}.
6995: Target's bones are visible through their skin for the next {{!!duration}}.
6997: Target's bones stay visible if the target turns invisible for the next {{!!l_duration}}.
7005: Target's boots come alive for {{!!duration}}.
7007: Target's boots fuse to the ground where they're now standing for the next {{!!duration}}.
7008: Target's boots turn to glass. They revert after {{!!duration}}, but do not reassemble if shattered.
7016: Target's clothes and gear are affected by reverse gravity for the next {{!!duration}}.
7020: Target's clothes appear to be made of ice, but are still flexible.
7025: Target's clothes are suddenly chilled to sub-freezing temperatures.
7028: Target's clothes are extraordinarily elastic for the next {{!!duration}}.
7032: Target's clothes are soaked with beer.
7033: Target's clothes are soaked with butterscotch pudding.
7034: Target's clothes are soaked with deer musk.
7035: Target's clothes are soaked with icy water once every 12 seconds for the next {{!!d4}} minutes.
7036: Target's clothes are soaked with strong perfume.
7037: Target's clothes are stuffed full of snow.
7038: Target's clothes attract wasps, hornets, and bees for the next {{!!duration}}.
7039: Target's clothes billow with foul smoke for the next {{!!duration}}.
7043: Target's clothes can't be moved more than 10 yards from this spot for the next {{!!duration}}.
7048: Target's clothes double in size every 10 seconds for the next {{!!2d4}} seconds, then revert to normal.
7049: Target's clothes double in weight, then revert after {{!!duration}}.
7050: Target's clothes exactly match the caster's clothes, then revert after {{!!duration}}.
7051: Target's clothes exude fragrant smoke for the next {{!!duration}}.
7052: Target's clothes glow in the dark for the next {{!!duration}}.
7054: Target's clothes heat to 200° F, then immediately start cooling.
7062: An article of the target's clothing or armor teleports {{!!2d4}} feet in a random direction.
7063: Some of the target's clothes totally unravel over the next {{!!s_duration}}.
7065: Target's clothes writhe like a living creature for {{!!s_duration}}.
7080: Target's ears are prehensile for the next {{!!duration}}.
7081: Target's ears are the size of dinner plates for the next {{!!duration}}.
7083: Target's ears melt like wax, then revert to normal after {{!!s_duration}}.
7085: Target's ears migrate to their shoulders for the next {{!!duration}}.
7086: Target's ears shrivel and fall off over the course of {{!!s_duration}}, and then are restored 10 seconds later.
7087: Target's ears turn slowly counter-clockwise for the next {{!!duration}}.
7088: Target's ears, nose, and lips are invisible for the next {{!!s_duration}}.
7089: Target's ears, nose, and lips double in size for the next {{!!duration}}.
7091: Target's ears, nose, and lips turn bright blue for the next {{!!duration}}.
7094: Target's expression is locked into a manic smile for the next {{!!duration}}.
7095: Target's eyes appear to be bundles of writhing worms for the next {{!!duration}}.
7096: Target's eyes appear to be tiny fireballs for the next {{!!duration}}.
7098: Target's eyes bulge from the top of their head like a frog's eyes for the next {{!!duration}}.
7099: Target's eyes bulge to 3x size for the next {{!!duration}}.
7100: Target's eyes burst, blinding him, but they grow back over the course of {{!!duration}}.
7101: Target's eyes can move independently, like a chameleon's, for the next {{!!duration}}.
7102: Target's eyes each have {{!!d4}} additional irises and pupils for the next {{!!duration}}.
7104: Target's eyes merge into a single eye somewhere on their face for the next {{!!duration}}.
7105: Target's eyes migrate to just above their ears for the next {{!!duration}}.
7106: Target's eyes see normally but appear lifeless like a doll's eyes for the next {{!!duration}}.
7107: Target's eyes steam and hiss like quenching metal for the next {{!!duration}}.
7108: Target's face appears to have been roughly chiseled out of coal for the next {{!!duration}}.
7109: Target's face appears to have been welded to their skull for the next {{!!duration}}.
7110: Target's face begins to look more and more bat-like over the course of {{!!duration}}, then is reverted to normal.
7112: Target's face glows pale green for the next {{!!s_duration}}. This repeats every time they tell a lie in the next {{!!duration}}.
7113: Target's face is sunburned in a checkerboard pattern.
7114: Target's face is completely flat for the next {{!!duration}}.
7115: Target's face is scarred as by acid or flame for the next {{!!duration}}.
7117: Target's face is tattooed with cryptic runes and sigils for the next {{!!duration}}.
7120: Target's face looks like badly melted wax for the next {{!!duration}}.
7121: Target's face migrates to the top of their head for the next {{!!duration}}.
7125: Target's feet appear to be made of clay for the next {{!!duration}}.
7126: Target's feet are fused to the ground beneath them for the next {{!!duration}}.
7127: Target's feet are clear like glass for the next {{!!duration}}.
7128: Target's feet are now prehensile for the next {{!!duration}}.
7129: Target's feet can rotate 360° at the ankle without harm for the next {{!!duration}}.
7130: Target's feet can't come within one yard of each other for the next {{!!duration}}.
7132: Target's feet shriek incessantly while they wears shoes or boots for the next {{!!duration}}.
7133: Target's fingernails are hard as steel and susceptible to rust for the next {{!!duration}}.
7134: Target's fingernails begin to grow {{!!d7}} inches per minute for {{!!2d4}} minutes.
7135: Target's fingernails glow like burning coals for the next {{!!duration}}.
7136: Target's fingernails pulse with a red glow for the next {{!!duration}}.
7138: Target's fingers and thumbs are intertwined like tangled rope for the next {{!!duration}}.
7139: Target's fingers and thumbs connect directly to their wrists for the next {{!!duration}}.
7140: Target's fingers and thumbs shuffle positions for the next {{!!duration}}.
7141: Target's fingers merge into a single digit like a mitten for the next {{!!duration}}.
7142: Target's fists are attracted to each other like strong magnets for the next {{!!duration}}.
7143: Target's fists are each as large as their head for the next {{!!duration}}.
7144: Target's fists can't come within five feet of the ground for the next {{!!duration}}.
7145: Target's fists retract into their forearms when not in use for the next {{!!duration}}.
7146: Target's flesh is utterly transparent to artificial light for the next {{!!duration}}.
7147: Target's footfalls strike sparks on the ground for the next {{!!duration}}.
7148: Target's footprints are perfectly rectangular for the next {{!!duration}}.
7149: Target's footprints completely vanish after {{!!2d4}} seconds for the next {{!!duration}}.
7150: Target's footprints look like arrows pointing which way they went for the next {{!!duration}}.
7152: Target's forearms are invisible for the next {{!!duration}}.
7154: Target's hair falls out and is replaced by lush feathers. It reverts after {{!!duration}}.
7155: Target's hair falls out and is replaced by thick grass. It reverts after {{!!duration}}.
7156: Target's hair falls out and tiny spikes sprout all over their head. It reverts after {{!!duration}}.
7157: Target's hair floats as though underwater for the next {{!!duration}}.
7158: Target's hair grows {{!!2d4}} inches over the next few seconds, and again each time they're struck by magic for the next {{!!duration}}.
7160: Target's hair is styled into a tall bouffant.
7161: Target's hair moves from their head to somewhere else on their body for the next {{!!duration}}.
7162: Target's hair noticeably changes color every 10 seconds for the next {{!!duration}}.
7163: Target's hands and feet are abnormally spongy for the next {{!!duration}}.
7164: Target's hands and feet are scarred with arcane symbols for the next {{!!duration}}.
7165: Target's hands and feet are tightly wrapped in adhesive cloth. The cloth vanishes after {{!!duration}}.
7167: Target's hands and feet give off unsettling vapors for the next {{!!duration}}.
7168: Target's hands and feet reform into perfect cubes for the next {{!!duration}}.
7169: Target's hands and feet shuffle their locations, then revert after {{!!duration}}.
7170: Target's hands and feet turn to pig's hooves for the next {{!!duration}}.
7171: Target's hands applaud despite their wishes for the next {{!!s_duration}}.
7172: Target's hands are bound in [[adamantine]] shackles, which vanish after {{!!duration}}.
7173: Target's hands are encased in thick blobs of candle wax.
7174: Target's hands are invisible while they hold anything for the next {{!!duration}}.
7175: Target's hands are suddenly slicked with butter.
7177: Target's hands are shaped like those of a bat, minus the wings, for the next {{!!duration}}.
7178: Target's hands are utterly paralyzed until they're struck by magic, or until after {{!!duration}}.
7179: Target's hands attempt to strangle them for {{!!duration}}.
7187: Target's hands change color every 10 seconds for {{!!duration}}, then revert to normal.
7190: Target's hands flap like birds' wings for {{!!s_duration}}.
7191: Target's hands freeze to the next object they touch. The magic persists for {{!!duration}}.
7192: Target's hands fuse to the next metal object they handle. They are unstuck after {{!!duration}}.
7193: Target's hands fuse together behind their back for the next {{!!duration}}.
7194: Target's hands itch slightly for the next {{!!duration}}.
7195: Target's hands look black and necrotic after handling [[magic item]]s for the next {{!!duration}}. Their hands then revert.
7196: Target's hands melt like wax, then are restored after {{!!duration}}.
7197: Target's hands rotate 180° at the wrists and stay that way for {{!!duration}}.
7198: Target's hands shrink by 50% for the next {{!!duration}}.
7199: Target's hands steam vigorously for {{!!s_duration}} now and again whenever magic is cast within 10 yards for the next {{!!duration}}.
7200: Target's hands try to grab their ankles while they're walking for the next {{!!duration}}.
7201: Target's hands turn to metal but otherwise function normally for the next {{!!duration}}.
7203: Target's hat animates and attempts to eat their head for the next {{!!duration}}.
7204: Target's hat bleeds profusely for the next {{!!duration}}.
7205: Target's hat is replaced by a spittoon or chamber pot.
7206: Target's hat is replaced by half of a hollowed-out coconut.
7207: Target's head always appear to face true north for the next {{!!duration}}.
7208: Target's head appears as a photo-negative for the next {{!!duration}}.
7210: Target's head appears to be a naked brain for the next {{!!duration}}.
7211: Target's head appears to be made of delicate porcelain for the next {{!!duration}}.
7212: Target's head appears to be made of fire for the next {{!!duration}}.
7213: Target's head appears to be made of ice for the next {{!!duration}}.
7214: Target's head appears to be made of pure gold for the next {{!!duration}}.
7215: Target's head appears to be made of sand for the next {{!!duration}}.
7216: Target's head appears to be made of the finest crystal for the next {{!!duration}}.
7217: Target's head appears to be made of wood for the next {{!!duration}}.
7218: Target's head appears to be severely cracked like an egg for the next {{!!duration}}.
7219: Target's head blazes with illusory fire for the next {{!!duration}}.
7223: Target's head deflates like a balloon, then reinflates over the course of {{!!s_duration}}.
7224: Target's head explodes but regrows over the next {{!!d7}}0 seconds.
7225: Target's head explodes. They die.
7226: Target's head glows like a jack-o-lantern for the next {{!!duration}}.
7231: Target's head doubles in size for the next {{!!duration}}.
7235: Target's head is covered in coarse and ugly scales for the next {{!!duration}}.
7236: Target's head is covered with numerous disc-shaped scars for the next {{!!duration}}.
7237: Target's head is encased in a durable, transparent globe for the next {{!!duration}}.
7238: Target's head is enclosed in an indestructible transparent helmet for the next {{!!duration}}.
7239: Target's head is enwrapped in delicate gold filigree for the next {{!!duration}}.
7240: Target's head is flattened on top like a pounded wooden stake for the next {{!!duration}}.
7246: Target's head is invisible from the chin to the ears for the next {{!!duration}}.
7248: Target's head is jiggly like a lump of gelatin for the next {{!!duration}}.
7251: Target's head is shaped like a light bulb for the next {{!!duration}}.
7253: Target's head is stuck in a huge conch shell.
7256: Target's head seems on the verge of bursting for the next {{!!s_duration}}.
7257: Target's head shrinks to the size of their closed fist for the next {{!!duration}}.
7258: Target's head spins rapidly at the neck for {{!!s_duration}}.
7259: Target's head rapidly molts like a snakeskin.
7260: Target's head strongly resembles a foot for the next {{!!duration}}.
7261: Target's head throbs visibly for the next {{!!duration}}.
7262: Target's head vanishes and their face appears on their chest for the next {{!!duration}}.
7270: Target's hindquarters resemble those of a donkey for the next {{!!duration}}.
7273: Target's image appears on every flag and banner within 1 mile.
7274: Target's heart turns to gold for the next {{!!l_duration}}. This kills them in seconds.
7280: Target's jawbone becomes that of a donkey for the next {{!!duration}}.
7281: Target's knees and elbows become ball-joints like their shoulders for the next {{!!duration}}.
7282: Target's knees and elbows can't straighten to more than 120° for the next {{!!duration}}.
7283: Target's knees and elbows creak like rusty metal for the next {{!!duration}}.
7284: Target's knees and elbows vanish for the next {{!!duration}}.
7285: Target's large intestine explodes.
7286: Target's left arm becomes incredibly physically strong for {{!!duration}}.
7288: Target's left arm turns invisible for the next {{!!duration}}.
7289: Target's left arm moves to their right shoulder for the next {{!!duration}}.
7290: Target's left foot appears to be that of a large duck for the next {{!!duration}}.
7294: Target's left foot sinks six inches into the ground at each step for the next {{!!duration}}.
7295: Target's left foot sprouts a pair of thumbs, which last for the next {{!!duration}}.
7296: Target's left foot takes root in the ground for the next {{!!duration}}.
7297: Target's legs are covered in bark for the next {{!!duration}}.
7299: Target's legs are invisible in direct sunlight for the next {{!!duration}}.
7300: Target's legs are shaped like springs and twang when they walks for the next {{!!duration}}.
7302: Target's legs exactly resemble their arms for the next {{!!duration}}.
7303: Target's legs exchange positions for the next {{!!duration}}.
7304: Target's legs fuse together, and their arms fuse to their sides, for the next {{!!duration}}.
7305: Target's legs shrink by 5% each time they take a step for the next {{!!duration}}. After that, they are restored to normal.
7307: Target's limbs change proportion to match those of an infant. They revert to normal after {{!!duration}}.
7308: Target's limbs shrink to the size of an infant's limbs for the next {{!!duration}}.
7309: Target's lips are sewn shut with fine gold wire. The wire vanishes after {{!!duration}}.
7310: Target's lips move constantly for the next {{!!duration}}.
7311: Target's lips vanish for the next {{!!duration}}.
7317: Target's memories of the last {{!!d10}} hours are full of butterflies.
7318: Target's memories of the last {{!!d10}} hours are vivid but incorrect.
7335: Target's mouth and each nostril is plugged by a cork.
7336: Target's mouth and one of their eyes exchange places for the next {{!!duration}}.
7337: Target's mouth appears to be full of angry hornets.
7340: Target's mouth glows as though they're eating fireflies for the next {{!!duration}}.
7341: Target's mouth glows like a forge for the next {{!!duration}}.
7342: Target's mouth is full of moths.
7343: Target's mouth is now located on the back of their head for the next {{!!duration}}.
7344: Target's mouth is packed completely full of leaves.
7345: Target's mouth is replaced by a duck's bill for the next {{!!duration}}.
7346: Target's mouth is replaced by a hideous scolex (sucker with hooks) for the next {{!!duration}}.
7347: Target's mouth is replaced by a toucan's beak for the next {{!!duration}}.
7348: Target's mouth opens to a span of {{!!d4}}0 inches, then snaps shut. This causes them no harm.
7349: Target's mouth vanishes for the next {{!!duration}}.
7350: Target's neck and head shift {{!!d7}} inches to the left. They revert after {{!!duration}}.
7351: Target's neck attempts to devour their head for the next {{!!duration}}.
7352: Target's neck can extend an additional {{!!d4}} feet at will for the next {{!!duration}}.
7353: Target's neck retracts into their torso for the next {{!!duration}}.
7355: Target's neck doubles in length for the next {{!!duration}}.
7356: Target's neck flares like a lizard's frill when they're angry for the next {{!!duration}}.
7357: Target's neck has a frill like a triceratops for the next {{!!duration}}.
7358: Target's neck is as thin as a spear-shaft for the next {{!!duration}}.
7359: Target's neck is encircled by a tight steel collar for the next {{!!duration}}.
7361: Target's neck is scarred and twisted as if they survived a hanging for the next {{!!duration}}.
7362: Target's next attack affects themself as well.
7375: Target's nose looks like a small, clenched fist for the next {{!!duration}}.
7376: Target's nose turns into a wolf's snout for the next {{!!duration}}.
7377: Target's nose turns to flint for the next {{!!duration}}.
7378: Target's nostrils are each as large as their mouth for the next {{!!duration}}.
7379: Target's nostrils glow for the next {{!!duration}}.
7380: Target's nostrils migrate to the top of their head for the next {{!!duration}}.
7381: A [[zombie]] appears near the target that looks just like a rotted version of the target. It vanishes after {{!!duration}}.
7383: Target's pockets and mouth are full of sand.
7384: Target's possessions are hidden somewhere nearby.
7389: Target's presence causes birds to fall silent for the next {{!!duration}}.
7391: Target's presence causes insects to exhibit strange behaviors for the next {{!!duration}}.
7392: Target's presence causes magical metal to appear badly tarnished for the next {{!!duration}}.
7393: Target's presence causes metal to yield disturbing reflections for the next {{!!duration}}.
7395: Target's presence causes nearby [[conjuration]] magic to fail for the next {{!!duration}}.
7396: Target's presence causes [[undead]] to appear to smolder gently for the next {{!!duration}}.
7397: Target's presence makes summoned creatures vanish for the next {{!!duration}}.
7399: Target's presence makes fires burn in a festive blue-green hue for the next {{!!duration}}.
7400: Target's presence makes foliage appear sickly and blighted for the next {{!!duration}}.
7408: Target's presence makes smoke assume disturbing, ghostly shapes for the next {{!!duration}}.
7409: Target's presence renders clockwork devices temporarily inert for the next {{!!duration}}.
7412: Target's principal weapon (or whatever they are holding) sprouts {{!!d20}} roses.
7414: Target's shadow appears to flicker like a shadowy flame for the next {{!!duration}}.
7416: Target's shadow races around them in a tight circle for the next {{!!duration}}.
7417: Target's shadow rises up and tries to strangle him, as a [[shadow]] of [[Mabar]], for the next {{!!duration}}.
7418: Target's skin acquires {{!!d10}}0 blasphemous tattoos. They vanish one at a time over the course of {{!!duration}}.
7422: Target's skin appears to be the texture of pumice for the next {{!!duration}}.
7423: Target's skin appears to be the texture of sandstone for the next {{!!duration}}.
7424: Target's skin appears to have been gnawed by countless rodents for the next {{!!duration}}.
7425: Target's skin appears to have been roughly stitched together for the next {{!!duration}}.
7428: Target's skin appears uniformly smooth and waxy for the next {{!!duration}}.
7429: Target's skin appears weathered like an ancient statue for the next {{!!duration}}.
7438: Target's skin cracks painfully like a dried-up riverbed. It heals over the course of {{!!duration}}.
7439: Target's skin develops an intricate patchwork of scars. They vanish after {{!!duration}}.
7440: Target's skin displays a series of concentric rings like a target. The rings vanish after {{!!duration}}.
7441: Target's skin displays cryptic and constantly-changing runes for the next {{!!duration}}.
7442: Target's skin doubles in size. It reverts after {{!!duration}}.
7443: Target's skin erupts into countless weeping boils. They heal after {{!!duration}}.
7444: Target's skin erupts with {{!!d35}} acrid fungal outgrowths that persist for the next {{!!duration}}.
7445: Target's skin freezes to their weapon each time they wield it for the next {{!!duration}}.
7447: Target's skin glistens as though soaked with lamp oil for the next {{!!duration}}.
7448: Target's skin glows cherry red for the next {{!!duration}}.
7449: Target's skin glows pale green for the next {{!!duration}}.
7450: Target's skin has the texture of rough bark for the next {{!!duration}}.
7453: Target's skin looks like an intricate pattern of tiny tiles for the next {{!!duration}}.
7454: Target's skin looks like crumpled paper for the next {{!!duration}}.
7455: Target's skin is as hard as bronze for the next {{!!duration}}.
7457: Target's skin is charred and blackened, but they are unharmed. Their skin reverts after {{!!duration}}.
7458: Target's skin is covered in scales like a fish for the next {{!!duration}}.
7459: Target's skin is flayed from their limbs, but it regrows by dawn.
7460: Target's skin turns the color of the next stone they touch. It reverts after {{!!duration}}.
7461: Target's skin is invisible by firelight for the next {{!!duration}}.
7463: Target's skin is invisible while they're standing in water for the next {{!!duration}}.
7465: Target's skin is magnetic for the next {{!!duration}}.
7466: Target's skin is patterned like a checkerboard for the next {{!!duration}}.
7467: Target's skin is patterned like a cow for the next {{!!duration}}.
7468: Target's skin is patterned like camouflage for the next {{!!duration}}.
7469: Target's skin is clammy and moist for the next {{!!duration}}.
7470: Target's skin is crisscrossed with fine lines for the next {{!!duration}}.
7471: Target's skin is repeatedly tattooed with caster's name for the next {{!!duration}}.
7472: Target's skin is repeatedly tattooed with their own name for the next {{!!duration}}.
7477: Target's skin ripples in the wind like a cloth sheet for the next {{!!duration}}.
7479: Target's skin shimmers like mother-of-pearl for the next {{!!duration}}.
7480: Target's skin sizzles harmlessly on contact with water for the next {{!!duration}}.
7484: Target's skin writhes and pulses for the next {{!!duration}}. Or, just while they're eating.
7486: Target's skull sprouts numerous knobby projections for the next {{!!duration}}.
7487: Target's speech is intelligible to anyone, regardless of language, for the next {{!!duration}}.
7488: Target's speech is reversed while their weapon is drawn for the next {{!!duration}}.
7490: Target's speech sounds like the buzzing of innumerable bees for the next {{!!duration}}.
7491: Target's spine bends 90° halfway along its length for the next {{!!duration}}.
7492: Target's spine can twist 360° without harming them for the next {{!!duration}}.
7493: Target's spine doubles in length for the next {{!!duration}}.
7494: Target's spine is fused into a single bone for the next {{!!duration}}.
7497: Target's spine juts from their flesh along their entire back for the next {{!!duration}}.
7498: Target's spine sprouts needle-sharp projections for the next {{!!duration}}.
7499: Target's spine twists like a corkscrew for the next {{!!duration}}.
7500: Target's sternum sprouts 2d4 inch-long spikes for the next {{!!duration}}.
7504: Target's sweat is brightly phosphorescent for the next {{!!duration}}.
7505: Target's teeth and tongue fall out when they next open their mouth. They grow back over the course of {{!!duration}}.
7506: Target's teeth and tongue turn invisible for the next {{!!duration}}.
7507: Target's teeth are etched with cryptic runes for the next {{!!duration}}.
7508: Target's teeth are perfectly reflective of natural light for the next {{!!duration}}.
7511: Target's teeth glow brightly while their mouth is open for the next {{!!duration}}.
7512: Target's teeth glow like coals in a forge for the next {{!!duration}}.
7513: Target's teeth glow like torches for the next {{!!duration}}.
7514: Target's teeth resonate in their jaw for the next {{!!duration}}.
7515: Target's teeth shoot from their mouth like bullets. They regrow over the course of {{!!duration}}.
7516: Target's teeth teleport into the mouth of someone nearby. They regrow over the course of {{!!duration}}.
7517: Target's teeth turn as black as coal for the next {{!!duration}}.
7519: Target's teeth turn to soap for the next {{!!duration}}.
7520: Target's teeth turn to steel for the next {{!!duration}}.
7522: Target's toes are each as large as their big toe for the next {{!!duration}}.
7524: Target's toes constantly exude a fragrant steam for the next {{!!duration}}.
7525: Target's toes each grow {{!!d10}}, {{!!2d4}}, {{!!d4}}, or {{!!d7}} inches longer. They revert after {{!!duration}}.
7526: Target's torso and arms are encased in tight-fitting steel plate for the next {{!!duration}}, then the armor disappears.
7527: Target's torso and arms are invisible for {{!!l_duration}}.
7532: Target's torso is harmlessly pierced by {{!!d35}} long needles. The needles fall out after {{!!s_duration}}.
7536: Target's torso shines like a beacon for the next {{!!duration}}.
7538: Target's torso shrinks by 50% for the next {{!!duration}}.
7539: Target's torso sprouts a face with malign intelligence and power for the next {{!!duration}}.
7540: Target's torso teleports {{!!d4}} feet to the left. It floats in place, and the target can still move their limbs and head like nothing changed. The effect reverts after {{!!duration}}.
7544: Target's voice causes metal to resonate lightly for the next {{!!duration}}.
7545: Target's voice crackles with static until sunrise tomorrow for the next {{!!duration}}.
7551: Target's voice issues from their navel for the next {{!!duration}}.
7553: Target's voice issues from the nearest wooden object for the next {{!!duration}}.
7554: Target's voice issues from this spot for the next {{!!d7}} days.
7555: Target's voice seems to issue from whomever they're addressing for the next {{!!duration}}.
7556: Target's voice sounds as though they're shouting from a distance for the next {{!!duration}}.
7557: Target's voice sounds like a muted trumpet for the next {{!!duration}}.
7558: Target's voice is one octave higher for the next {{!!duration}}.
7559: Target's voice is one octave lower for the next {{!!duration}}.
7560: Target's voice sounds like the braying of donkeys for the next {{!!duration}}.
7561: Target's voice sounds like the chirping of crickets for the next {{!!duration}}.
7562: Target's voice sounds like the honking of geese for the next {{!!duration}}.
7563: Target's voice sounds oddly artificial and disturbing for the next {{!!duration}}.
7564: Target's waterskin is filled with blood.
7565: Target's waterskin is filled with hot pepper sauce.
7568: Target's waterskin is filled with molten gold.
7570: Target's weapon adheres to the next creature whose blood it draws.
7583: Target's weapon blazes with illusionary flame while it's drawn for the next {{!!duration}}.
7584: Target's weapon burns anyone who wields it, other than the target, for the next {{!!duration}}.
7586: Target's weapon burns target's hand the next time they wield it within the next {{!!duration}}.
7589: Target's weapon hurls 4 [[magic missile]]s at random targets, then it disappears.
7594: Target's weapon sprays a torrent of ink for {{!!s_duration}}.
7604: Target's weapon can't pass through doorways for the next {{!!duration}}.
7608: Target's weapon clangs like a bell when used in melee for the next {{!!duration}}.
7609: Target's weapon coils about their arm for the next {{!!duration}}.
7610: Target's weapon delivers an electrical shock with every strike for the next {{!!duration}}.
7611: Target's weapon develops an intense and obvious dislike of them for the next {{!!duration}}.
7612: Target's weapon dims light in a 10-yard radius while it's drawn for the next {{!!duration}}.
7614: Target's weapon disintegrates.
7619: Target's weapon is struck by lightning.
7620: Target's weapon drips with blood for the next {{!!duration}}.
7621: Target's weapon drips with molasses for the next {{!!duration}}.
7625: Target's weapon giggles menacingly upon contact with blood for the next {{!!duration}}.
7626: Target's weapon glows as bright as the sun, but only to the target for the next {{!!duration}}.
7628: Target's weapon glows blue for the next {{!!duration}}.
7634: Target's weapon glows red hot for the next {{!!duration}}.
7635: Target's weapon grows to 10x its normal size for the next {{!!duration}}.
7637: Target's weapon is enhanced as the [[magic weapon]] spell.
7642: Target's weapon has a constant sheath of frost for the next {{!!duration}}.
7647: Target's weapon hisses during battle like quenched steel for the next {{!!duration}}.
7648: Target's weapon hums audibly for the next {{!!duration}}.
7654: Target's weapon inflates like a balloon, then deflates after {{!!duration}}.
7677: Target's weapon is as pliant as soft clay for the next {{!!duration}}.
7678: Target's weapon is as supple as silk for the next {{!!duration}}.
7679: Target's weapon is bent into a torc around their neck, then reverts after {{!!duration}}.
7680: Target's weapon is bent into a gnarled shape.
7681: Target's weapon is chained by its hilt to a collar about their neck for the next {{!!duration}}.
7683: Target's weapon turns to glass for the next {{!!duration}}.
7684: Target's weapon is duplicated, and clatters to the ground next to them. The original vanishes after {{!!duration}} but the duplicate remains.
7687: Target's weapon is etched with their likeness.
7689: Target's weapon is highly elastic along its long axis for the next {{!!duration}}.
7703: Target's weapon is riddled with holes but functions normally for the next {{!!duration}}.
7704: Target's weapon is sheathed in a scab-like shell for the next {{!!duration}}.
7705: Target's weapon is sheathed in a shell of chocolate.
7706: Target's weapon is sheathed in a soft wool tube.
7707: Target's weapon is stuck high in the branches of a nearby tree.
7711: Target's weapon is translucent like smoked glass for the next {{!!duration}}.
7712: Target's weapon is twisted like a corkscrew for the next {{!!duration}}.
7714: Target's weapon is weightless when not in use for the next {{!!duration}}.
7720: Target's weapon melts like a candle.
7725: Target's weapon puts forth huge plumes of smoke for the next {{!!duration}}.
7729: Target's weapon repels normal flame to a distance of three feet for the next {{!!duration}}.
7732: Target's weapon rings like a bell for the next {{!!s_duration}}.
7734: Target's weapon shatters the next time it strikes metal.
7735: Target's weapon shrieks until the next sunset.
7736: Target's weapon shrinks by 75%. It reverts after {{!!duration}}.
7739: Target's weapon sprouts {{!!d10}}0 teeth along its length. They fall out and vanish after {{!!duration}}.
7740: Target's weapon sprouts leaves. They shrivel and fall off after {{!!duration}}.
7742: Target's weapon teleports exactly 1d10 yards due north.
7750: Target's weapon turns into a shield for the next {{!!duration}}.
7757: Target's weapon vanishes, then reappears in the same spot it vanished {{!!s_duration}} later.
7767: Target's weapon weighs as much as they do for the next {{!!duration}}.
7768: Target's weapon whispers terrible secrets to any who wield it for the next {{!!duration}}.
7771: Target's weapons and gear teleport {{!!2d4}} yards into the air.
7773: Target's weight temporarily doubles with each step upon a bridge. It reverts after {{!!s_duration}}.
7774: Teleportation is impossible within 10 yards of target for the next {{!!duration}}.
7778: The ground beneath target's feet acts as a trampoline for the next {{!!duration}}.
7779: The ground beneath target's feet shines like the sun for the next {{!!duration}}.
7780: The ground beneath target's feet collapses into a cave below. After they climb out, the hole immediately seals behind them.
7787: The ground beneath the target's feet explodes as if they stepped on a [[blast disk]].
7788: The ground beneath the target's feet exudes noxious and fetid vapors for the next {{!!duration}}.
7789: The ground now at target's feet heats to 300 degrees F.
7795: The ground now at target's feet is charred black as by a bonfire.
7796: The ground now at target's feet is dangerously slick with ice.
7799: The ground now at target's feet is fused into glass.
7800: The ground now at target's feet is intensely magnetic for the next {{!!duration}}.
7804: The ground now at target's feet is soaked with blood.
7805: The ground now at target's feet is strewn with shards of metal.
7806: The ground now at target's feet is strongly adhesive.
7807: The ground now at target's feet is the back of a huge turtle. It reverts after {{!!s_duration}}.
7809: The ground now at target's feet is yanked from under them like an invisible tablecloth.
7810: The ground now at target's feet rises {{!!d10}}0 yards into the air, then falls.
7813: The ground now at target's feet sinks {{!!d10}} yards into the ground. When they climb out, the ground rises to its normal level.
7814: The ground now at target's feet starts to digest them. It reverts to normal after {{!!duration}}.
7817: The ground now at target's feet turns to cobblestone.
7818: The ground now at target's feet turns to molten glass that hardens after a few seconds.
7819: The ground now at target's feet turns to quicksand. It reverts after {{!!duration}}.
7820: The ground now at target's feet turns to warm butter. It reverts after {{!!duration}}, which might leave the target stuck ankle-deep in the ground.
7821: The ground below the target's feet turns to grassy soil.
7823: The left half of target's skeleton vanishes. It returns after {{!!duration}}.
7833: The top few inches of target's head vanish, but they are unharmed. Their head reverts to normal after {{!!duration}}.
7834: Thousands of nails are embedded harmlessly in target's flesh. They vanish after {{!!duration}}.
7835: Thousands of snails rain down harmlessly upon the target. They vanish {{!!2d4}} seconds after they land.
7838: To the target, all liquids taste like strong vinegar for the next {{!!duration}}.
7839: To the target, all liquids taste like the sweetest nectar for the next {{!!duration}}.
7840: To the target, everyone appears to be a hideously decayed corpse for the next {{!!duration}}.
7842: To the target, everyone appears to be plated in gold for the next {{!!duration}}.
7854: Vines bind the target tightly to a nearby tree. They wither and crumble after {{!!duration}}.
7855: Vines sprout from any open wounds the target now has. They wither and crumble after {{!!duration}}.
7856: Vines sprout from the ground at target's feet and attack them for {{!!duration}}.
7857: Vines sprout from the target's weapon and bind their limbs for the next {{!!duration}}.
7858: Viscous slime drips from the target's mouth for the next {{!!duration}}.
7860: Water boils on contact with the target's flesh for the next {{!!duration}}.
7867: Water spews from target's ears for the next {{!!s_duration}}.
7871: Whatever is now in target's hand heats to 500°F, then cools naturally.
7872: Whatever is now in target's hand is embossed with their name. It reverts to normal after {{!!duration}}.
7873: Whatever is now in target's hand is replaced by a sunflower. It reverts to normal after {{!!duration}}.
7876: Whatever is now in target's hand turns to gold. It reverts to normal after {{!!duration}}.
7877: Whatever is now in target's hand vanishes for {{!!s_duration}}, then reappears in the exact location it vanished.
7878: Whatever is now in target's hand weighs more than they do. It reverts to normal after {{!!duration}}.
7881: Whatever target is wearing is stuck to them like glue for the next {{!!duration}}.
7906: A nearby tree drops all of its leaves.
7909: The target feels compelled to declare their name and title now and any time they draw a weapon for the next {{!!duration}}.
7915: The target is stunned for {{!!s_duration}}.
7928: A small tree sprouts from the target's chest. It withers and crumbles after {{!!duration}}.
7957: When target next touches rope, it attacks them as if it were a snake. It reverts after {{!!duration}}.
7959: When target next touches rope, it shocks them like electrical wire.
7960: When target next touches rope, it winds around them and combusts.
7966: When target next says their name, their clothes are soaked with brine.
7968: When target next says their name, a chorus of mocking laughter echoes in the sky.
7975: The target sneezes, and bits of hot gravel spray from their nostrils.
7978: While outdoors, target perceives everything to be shrouded in fog for the next {{!!duration}}.
7989: While target stands still, they rotate slowly counter-clockwise
7990: While target stands still, pigeons treat them just like a statue for the next {{!!duration}}.
8001: A huge mound of dirt and rock rise as an angry earth [[elemental]] that persists for {{!!duration}}.
8002: {{!!2d4}} nearby trees uproot and race to the nearest town square. They then topple over.
8003: {{!!2d4}} nearby trees uproot and float into the sky.
8004: {{!!2d4}}0 adorable but incorporeal puppies scamper through the area, then vanish after {{!!duration}}.
8005: {{!!d10}}0 skeletons rise from the ground and begin building a pyramid. They vanish one by one over the course of {{!!duration}}.
8006: {{!!d10}}0 stone spheres, one foot in diameter, appear scattered around the area.
8008: {{!!d50}}0 clay bricks fall from the sky.
8009: {{!!d10}}0 skeletons rise from the ground and march to the sea. They crumble to dust after {{!!duration}}.
8010: {{!!d20}} skeletons rise from the ground and attack anyone nearby. They vanish after {{!!duration}}.
8011: {{!!d4}} creatures nearby are suddenly gold-plated. They revert after {{!!duration}}.
8012: {{!!2d4}} creatures nearby double in size. They revert after {{!!duration}}.
8013: {{!!2d4}} gallons of molten gold pour from the target point. It vanishes after {{!!duration}}.
8014: {{!!d4}} golden apples appear nearby. They vanish after {{!!duration}}.
8015: {{!!d7}} aggressive, human-sized pigeons appear in the area. They vanish one by one over the course of {{!!duration}}.
8016: {{!!d7}} horses nearby are turned into carousel horses. They revert after {{!!duration}}.
8019: {{!!2d4}} people nearby are chained together for the next {{!!duration}}.
8020: {{!!2d4}} people nearby are duplicated exactly. Their duplicates vanish after {{!!duration}}.
8021: {{!!d7}} people nearby are hurled {{!!d10}}0 feet into the air.
8023: {{!!d7}} people nearby feel a strong gravitational pull towards the target point for the next {{!!duration}}.
8024: {{!!d7}} people nearby are tarred and feathered.
8025: {{!!d7}} people nearby are teleported up to {{!!2d4}} yards in random directions.
8028: {{!!d7}} people nearby feel like they're drowning for the next {{!!duration}}.
8029: {{!!d7}} people nearby flee from the area at top speed.
8030: {{!!d7}} people nearby grow feathers like peacocks. They revert to normal after {{!!duration}}.
8031: {{!!d7}} people nearby grow wool like sheep. They revert to normal after {{!!duration}}.
8032: {{!!d7}} people nearby look exactly like the target for the next {{!!duration}}.
8033: {{!!d7}} people nearby look exactly like the caster for the next {{!!duration}}.
8034: {{!!d7}} people nearby look like children for the next {{!!duration}}.
8035: {{!!d7}} creatures nearby are disintegrated.
8036: {{!!d7}} people nearby shrink by 30-70% for the next {{!!duration}}.
8038: {{!!d20}}0 spectators ([[manifestation]]s) appear in the area, cheering and shouting. They vanish after {{!!duration}}.
8039: {{!!d10}}0 wild bulls appear in the area. They vanish after {{!!duration}}.
8040: {{!!d4}}0 duplicates of someone nearby appear in the area. They vanish after {{!!duration}}.
8043: A {{!!d10}}0 yard radius is blanketed by [[cloudkill]].
8044: A {{!!d10}}0 yard radius is blanketed by snow to a depth of {{!!2d4}} feet.
8045: A {{!!d10}}0 yard radius is carpeted with small white pebbles.
8046: A {{!!d10}}0 yard radius is covered by a dense growth of fragrant grass.
8047: A {{!!d10}}0 yard radius is covered by ankle-deep fetid mud.
8048: A {{!!d10}}0 yard radius is covered by ankle-deep white sand.
8049: A {{!!d10}}0 yard radius is covered by slimy, decaying vegetable matter.
8050: A {{!!d10}}0 yard radius is covered with acrid cinders and ash.
8051: A {{!!d10}}0 yard radius is covered with clumps of plaster.
8053: A {{!!d10}}0 yard radius is encircled by a dense curtain of smoke that lingers for {{!!duration}}.
8055: A {{!!d10}}0 yard radius is encircled by a ring of raised earth.
8056: A {{!!d10}}0 yard radius is encircled by a wall of hay bales.
8058: A {{!!d10}}0 yard radius is rendered totally silent for the next {{!!duration}}.
8059: A {{!!d10}}0 yard radius is shaken by a powerful earthquake for the next {{!!duration}}.
8060: A {{!!d10}}0 yard radius is strewn with blood-soaked rags. They vanish after {{!!duration}}.
8061: A {{!!d10}}0 yard radius is strewn with decaying marine life. It all vanishes after {{!!duration}}.
8062: A {{!!d10}}0 yard radius is strewn with jagged metal and coils of wire. It vanishes after {{!!duration}}.
8063: A {{!!d10}}0 yard radius is strewn with seashells and driftwood.
8065: A {{!!d10}}0 yard radius swirls with finely-milled flour for {{!!s_duration}}. Then, {{!!duration}} later, the flour vanishes.
8070: A 500 pound iron slab appears {{!!d10}} yards above the target point. It vanishes after {{!!s_duration}}.
8075: A column of green light shines from the target point into the sky for the next {{!!duration}}.
8076: A cube of dry ice 10 feet across appears at the target point.
8077: A cube of granite 10 feet across appears at the target point. It vanishes after {{!!duration}}.
8078: A deafening cacophony blares from the target point for the next {{!!duration}}.
8080: A dense tangle of thorny vines fills the area for the next {{!!duration}}.
8081: A featureless black slab appears nearby measuring 1 x 4 x 9 feet. It gradually shrinks over the course of {{!!duration}} until it vanishes completely.
8082: A fissure runs from beneath the target point to the ground beneath the caster.
8084: A flock of {{!!d50}} human-sized geese lands in the area. They make a ruckus, then vanish after {{!!duration}}.
8086: An old shipwrecked galleon covered in ice appears nearby, then vanishes after {{!!s_duration}}.
8088: A giant sequoia quickly grows from beneath the target point. It vanishes after {{!!duration}}.
8089: A heavy rope runs from the target point into the sky. It crumbles to ash after {{!!duration}}.
8090: A herd of animals not native to this area stampedes through it. They vanish after {{!!duration}}.
8091: A [[kruthik]] hive lord races through the area. It vanishes after {{!!duration}}.
8094: A huge earthen fist rises from the ground below the target point.
8096: A huge outcrop of beautiful crystals erupts under the target point. They vanish after {{!!duration}}.
8098: A huge volume of confetti rains down in a 100 yard radius. The confetti vanishes before it hits the ground.
8099: A jug full of highly volatile liquid appears at the target point.
8100: A large pool of fetid slime appears beneath the target point. It evaporates fully over the course of {{!!duration}}.
8102: A large pool of molten iron appears beneath the target point.
8117: A lump of lead appears at the target point.
8119: A mighty hailstorm pummels the area for {{!!duration}}.
8120: A mysterious gold sarcophagus appears at the target point. It vanishes after {{!!s_duration}}.
8122: A {{!!d10}}0 yard radius appears gloomy and blighted for {{!!duration}}.
8123: A {{!!d10}}0 yard radius is illuminated by full daylight for {{!!d4}} days.
8124: A {{!!d10}}0 yard radius rotates 360° over the course of {{!!duration}}.
8127: A perfect 10 foot sphere of ice appears at the target point.
8128: A [[dretch]] appears at the target point. It vanishes after {{!!duration}}.
8129: A [[chain devil]] emerges from the target point. It vanishes after {{!!duration}}.
8131: A [[hezrou]] emerges from the target point. It vanishes after {{!!duration}}.
8133: A sandstorm sweeps through the area for {{!!duration}}.
8134: A sculpted ice portrait appears for everyone within 50 yards.
8136: A [[sphere of annihilation]] appears at the spell's target point, then vanishes after {{!!s_duration}}.
8137: A steel tower 100 yards tall emerges form under the target point. It vanishes after {{!!duration}}.
8139: A stone cube 25 yards across rises from beneath the target point. It vanishes after {{!!duration}}.
8140: A terrible din fills the air like the clanging of pots and pans for the next {{!!duration}}.
8144: A tornado arises at the target point and persists for the next {{!!duration}}.
8145: A torrent of thick, soapy foam sprays from the target point.
8146: A viscous corrosive fluid drips coats all exposed rock nearby.
8148: A volley of {{!!d20}}0 arrows rains down on the area.
8150: A random magical effect occurs when each of the next 4 people speak nearby.
8151: Abnormally large locusts plague the area for the next {{!!duration}}.
8152: Acrid fungus sprouts under the target point and quickly spreads, eventually dying off and vanishing after {{!!duration}}.
8153: Air in this area is 75% thinner than the surrounding atmosphere for the next {{!!duration}}.
8156: All armor within 50 yards becomes clear like glass for the next {{!!duration}}.
8157: All armor within 50 yards is as heavy as lead for the next {{!!duration}}.
8158: All armor within 50 yards is weightless for the next {{!!duration}}.
8159: All armor within 50 yards is incorporeal for the next {{!!duration}}.
8160: All artificial light sources within 50 yards are rendered inert for the next {{!!duration}}.
8164: All birds within 50 yards explode over the course of {{!!s_duration}}.
8165: All birds within 50 yards are completely plucked.
8166: All bladed weapons within 50 yards are intensely magnetic for the next {{!!duration}}.
8168: All blades within 50 yards are engraved with cryptic sigils for the next {{!!duration}}.
8170: All blades within 50 yards become clear like glass for the next {{!!duration}}.
8171: All blades within 50 yards bend 90° halfway along their length. They all revert after {{!!duration}}.
8173: All blades within one mile are blunted until sunset.
8174: All blades within one mile glow cherry red for the next {{!!duration}}.
8175: All bowstrings within 50 yards break.
8179: All chain mail within 50 yards is slicked with ice.
8180: All chain mail within 50 yards is strongly magnetic for the next {{!!duration}}.
8181: All cloth within 50 yards begins to digest itself for the next {{!!duration}}.
8183: All cloth within 50 yards is as shiny and lustrous as gold for the next {{!!duration}}.
8185: All cloth within 50 yards is rendered as stiff as wood for the next {{!!duration}}.
8186: All cloth within 50 yards is scrubbed clean.
8187: All cloth within 50 yards is soaked with gasoline.
8188: All cloth within 50 yards seems unusually heavy for the next {{!!duration}}.
8189: All cloth within 50 yards smolders and smokes for the next {{!!duration}}.
8191: All cloth within 50 yards turns to burlap for the next {{!!duration}}.
8193: All coins within 50 yards appear in a heap at the target point.
8194: All coins within 50 yards are engraved with cryptic runes for the next {{!!duration}}.
8196: All coins within 50 yards become flexible as rubber for the next {{!!duration}}.
8199: All coins within 50 yards heat to 300°F, then rapidly cool.
8201: All coins within 50 yards display the face of the caster for the next {{!!duration}}.
8202: All curses now in effect within 100 yards are negated.
8209: All [[dwarves|dwarf]] within 50 yards have orange skin and green hair for the next {{!!duration}}.
8214: All [[elves|elf]] within 50 yards sprout jagged fangs for the next {{!!duration}}.
8216: All ferrous metal within 50 yards doubles in weight for the next {{!!duration}}.
8217: All ferrous metal within 50 yards is as shiny & lustrous as gold for the next {{!!duration}}.
8219: All ferrous metal within 50 yards is magnetized for the next {{!!duration}}.
8220: All ferrous metal within 50 yards is cleaned of all rust.
8222: All ferrous metal within 50 yards is strangely opalescent for the next {{!!duration}}.
8223: All ferrous metal within 50 yards vanishes until after {{!!duration}}, when it reappears in the same spot it vanished from.
8224: All fires lit in this area are waterproof for the next {{!!duration}}.
8225: All fires lit in this area flare up wildly for the next {{!!s_duration}}.
8226: All fires lit in this area reek of brimstone for the next {{!!duration}}.
8227: All flesh within 50 yards is clear like glass for the next {{!!duration}}.
8230: All food consumed within 50 yards is overpoweringly delicious for the next {{!!duration}}.
8231: All food consumed within 50 yards is unpalatably bitter for the next {{!!duration}}.
8233: All food within 50 yards freezes solid.
8234: All food within 50 yards is crawling with illusory maggots for the next {{!!duration}}.
8237: All food within 50 yards turns to salt.
8240: All forged steel within 50 yards turns to slate for the next {{!!duration}}.
8242: All gems within 50 yards become spherical for the next {{!!duration}}.
8246: All [[gnome]]s within 50 yards grow {{!!d20}} inches. They revert to normal after {{!!duration}}.
8253: All [[goblinoid]]s within 50 yards turn vibrant pink for {{!!duration}}.
8256: All gold within 50 yards begins to rust rapidly. It reverts after {{!!duration}}.
8260: All gold within 50 yards is attracted to magnets like iron for the next {{!!duration}}.
8261: All gold within 50 yards is drawn to the target point for the next {{!!duration}}.
8264: All gold within 50 yards is severely tarnished.
8265: All gold within 50 yards vanishes for the next {{!!duration}}, then reappears at the exact location where it vanished from.
8266: All gold within 50 yards is weightless for {{!!duration}}.
8267: All gold within 50 yards sweats some kind of foul liquid for the next {{!!duration}}.
8268: All gold within 50 yards is cleaned and polished.
8270: All halflings within 50 yards grow {{!!d4}} inches of hair every second for the next {{!!s_duration}}. It reverts to normal {{!!d20}} seconds later.
8271: All hats or helmets within 50 yards are drawn to the target point for the next {{!!duration}}.
8272: All hats or hoods within 50 yards burst into flame for {{!!s_duration}}.
8273: All herbivores within 100 yards are panic-stricken for the next {{!!duration}}.
8275: All horses or other mounts within 100 yards shrink by 1% per second for the next {{!!duration}}, then revert to normal.
8277: All horses or other mounts within 50 yards become clear like glass for the next {{!!duration}}.
8280: All humans within 10 miles are suddenly wearing peculiar hats. The hats vanish after {{!!duration}}.
8282: All inanimate matter nearby wobbles as though made of gelatin for the next {{!!duration}}.
8285: All ink within one mile is invisible for the next {{!!duration}}.
8287: All inorganic matter within 50 yards appears blurry for the next {{!!duration}}.
8289: All inorganic matter within 50 yards turns to ice for the next {{!!duration}}.
8293: All leather within 50 yards begins sweating profusely for the next {{!!duration}}.
8294: All leather within 50 yards is as rigid as steel for the next {{!!duration}}.
8295: All leather within 50 yards shatters like glass. It mends and restores itself after {{!!duration}}.
8296: All leather within 50 yards turns to silk, then reverts to normal after {{!!duration}}.
8298: All living creatures nearby are enraged beyond reason for the next {{!!s_duration}}.
8304: All [[magic item]]s within 50 yards appear to be blazing with fire for the next {{!!duration}}.
8306: All [[magic item]]s within 50 yards disappear for the next {{!!duration}}, then reappear in the exact spot they vanished from.
8308: All [[magic item]]s within 50 yards hum softly for the next {{!!duration}}.
8309: All magic potions within 50 yards are 10X as powerful.
8311: All magic potions within 50 yards are rendered inert.
8312: All magic potions within 50 yards become [[potions of flying|potion of flying]].
8313: All magic potions within 50 yards freeze solid, then slowly begin to thaw.
8315: All magic potions within 50 yards induce wild hallucinations for {{!!duration}}.
8326: All jewelry within 50 yards shines as brightly as the sun for the next {{!!duration}}.
8331: All magic weapons nearby are incorporeal for the next {{!!duration}}.
8333: All magic weapons nearby glow like fireflies for the next {{!!duration}}.
8334: All magic weapons nearby lose their enchantments for the next {{!!duration}}.
8340: All magical light sources within 50 yards are 2X as bright for the next {{!!duration}}.
8341: All magical light sources within 50 yards dim by 50% for the next {{!!duration}}.
8342: All magical light sources within 50 yards are extinguished.
8345: All magical light sources within 50 yards flash like strobes for the next {{!!duration}}.
8346: All magical light sources within 50 yards hum loudly while in use for the next {{!!duration}}.
8348: All magical light sources within 50 yards produce blood-red light for the next {{!!duration}}.
8349: All magical light sources within 50 yards yield [[darkness]] instead for the next {{!!duration}}.
8350: All mechanical locks within 50 yards are fused shut for the next {{!!duration}}.
8351: All mechanical locks within 50 yards are invisible for the next {{!!duration}}.
8353: All mechanical locks within 50 yards spring open.
8356: All metal armor nearby is drenched in vinegar.
8357: All metal armor nearby is chilled to freezing.
8361: All metal gauntlets within 50 yards close into fists for the next {{!!duration}}.
8362: All metal gauntlets within 50 yards heat to 300°F, then begin cooling rapidly.
8365: All metal gauntlets within 50 yards turn to silk, then revert after {{!!duration}}.
8366: All metal weapons wielded nearby heat to 300°F, then begin cooling rapidly.
8367: All metal within 50 yards appears to be made of solid shadow for the next {{!!duration}}.
8369: All metal within 50 yards is entirely non-reflective for the next {{!!duration}}.
8374: All metal within 50 yards is polished to mirror-brightness.
8375: All metal within 50 yards is twice as heavy for the next {{!!duration}}.
8376: All metal within 50 yards liquefies for {{!!s_duration}}, then reforms after {{!!duration}}.
8377: All metal within 50 yards shimmers like mother of pearl for the next {{!!duration}}.
8378: All missile weapons within 50 yards are inoperative for the next {{!!duration}}.
8379: All missile weapons within 50 yards combust when they're fired for the next {{!!duration}}.
8381: All missile weapons within 50 yards vanish when they're fired for the next {{!!duration}}.
8382: All nearby age {{!!d35}} years but return to normal over the course of {{!!duration}}.
8396: All non-magical animals nearby shrink by 40%, then slowly grow back to their normal size over the course of {{!!duration}}.
8397: All non-magical books within 50 yards are duplicated. Their duplicates vanish after {{!!duration}}.
8400: All non-sentient animals nearby are panic-stricken for the next {{!!duration}}.
8402: All open wounds within 50 yards steam violently but harmlessly for the next {{!!duration}}.
8403: All paper now nearby glows in the dark for the next {{!!duration}}.
8405: All plant life within 50 yards is sky-blue for the next {{!!duration}}.
8406: All plant-based fabric within 50 yards becomes dull brown.
8407: All plant-based fabric within 50 yards combusts.
8408: All [[divine magic]] within 50 yards is nullified for the next {{!!duration}}.
8410: All reflective surfaces in the area display imaginary scenes for the next {{!!duration}}.
8411: All reflective surfaces in the area display scenes of carnage for the next {{!!duration}}.
8412: All right arms within 50 yards are incorporeal for the next {{!!duration}}.
8414: All right arms within 50 yards are paralyzed for the next {{!!duration}}!duration}}.
8415: All rope within 50 yards can't be cut or broken for the next {{!!duration}}.
8416: All rope within 50 yards ignites along its entire length.
8417: All rope within 50 yards is as rigid as wood for the next {{!!duration}}.
8420: All rope within 50 yards is invisible for the next {{!!duration}}.
8421: All rope within 50 yards shortens by 80%.
8422: All rope within 50 yards straightens and becomes hard as stone for the next {{!!duration}}.
8423: All rope within 50 yards stretches like elastic for the next {{!!duration}}.
8424: All rope within 50 yards turns to flesh for the next {{!!duration}}.
8426: All saddles within 50 yards disappear. They reappear after {{!!duration}} in the exact spot where they vanished from.
8427: All shields within 50 yards are fragile like glass for the next {{!!duration}}.
8430: All shields within 50 yards are imprinted with their wielder's face for the next {{!!duration}}.
8432: All soil and rock within 50 yards turns invisible for {{!!duration}}.
8435: All spells cast in the last {{!!d35}} seconds are retroactively negated.
8436: All spells cast in the last {{!!d35}} seconds recur in {{!!d35}} seconds.
8437: All spells cast in the next {{!!d35}} seconds are invisible in effect.
8438: All spells cast in the next {{!!d35}} seconds occur {{!!d35}} seconds later.
8439: All spells cast in this area are accompanied by trumpet fanfare for the next {{!!duration}}.
8440: All spells cast in this area are delayed by {{!!d35}} seconds for the next {{!!duration}}.
8441: All summoned creatures within 50 yards are dismissed.
8445: All teeth within 50 yards are as black as coal for {{!!duration}}.
8446: All teeth within 50 yards are rendered invisible for {{!!duration}}.
8447: All tempered metal within 50 yards is reduced in weight by 50% for the next {{!!duration}}.
8448: All tempered metal within 50 yards is soft as rubber for the next {{!!duration}}.
8450: All thumbs within 50 yards vanish for the next {{!!duration}}.
8453: All trees within 50 yards drop their leaves until next spring.
8454: All trees within 50 yards are glazed with ice.
8457: All trees within 50 yards become ambulatory for the next {{!!duration}}.
8459: All trees within 50 yards begin chanting a low drone for the next {{!!duration}}.
8460: All trees within 50 yards [[awaken]] for {{!!duration}} then revert to normal.
8461: All trees within 50 yards turn invisible for the next {{!!duration}}.
8465: All trees within 50 yards explode into sawdust.
8466: All trees within 50 yards double in height, then slowly revert over the course of {{!!duration}}.
8467: All trees within 50 yards drip with blood for the next {{!!duration}}.
8470: All trolls within 50 yards lose their ability to regenerate.
8471: All [[undead]] within 50 yards turn to wood for the next {{!!duration}}.
8472: All [[undead]] within 50 yards vanish until sunset tomorrow.
8474: All [[undead]] within 50 yards are teleported {{!!2d4}} feet in random directions.
8476: All [[undead]] within 50 yards exhale clouds of fog for the next {{!!duration}}.
8477: All [[undead]] within 50 yards combust and burn for the next {{!!duration}}.
8480: All vegetable matter within 50 yards, alive or dead, dissolves.
8484: All vegetation within 50 yards becomes incredibly lush.
8485: All vegetation within 50 yards dies within {{!!d35}} seconds.
8486: All vegetation within 50 yards grows 100X as fast for the next {{!!duration}}.
8487: All vegetation within 50 yards is frozen solid.
8488: All vegetation within 50 yards turns bone-white for the next {{!!duration}}.
8490: All voices within 50 yards seem to issue from the same person for the next {{!!duration}}.
8491: All voices within 50 yards sound identical for the next {{!!duration}}.
8492: All water within 50 yards is chilled to just above freezing.
8493: All water within 50 yards becomes invisible for the next {{!!duration}}.
8494: All water within 50 yards becomes thick like gelatin for the next {{!!duration}}.
8496: All water within 50 yards doubles in volume.
8500: All water within 50 yards smells and tastes strongly of fish for the next {{!!duration}}.
8502: All water within 50 yards turns to glass for the next {{!!duration}}.
8503: All water within 50 yards turns to milk for the next {{!!duration}}.
8507: All weapons within 50 yards appear to be made of bone for the next {{!!duration}}.
8510: All weapons within 50 yards are affected by the [[magic weapon]] spell for the next {{!!duration}}.
8515: All weapons within 50 yards are caked in sticky clay.
8516: All weapons within 50 yards are cleaned, polished, and sterilized.
8518: All weapons within 50 yards are etched with their owners' names.
8521: All weapons within 50 yards are marked with demonic sigils for the next {{!!duration}}.
8522: All weapons within 50 yards are piled at the target point.
8523: All weapons within 50 yards are repelled from the target point for the next {{!!duration}}.
8524: All weapons within 50 yards are sealed in candle wax.
8525: All weapons within 50 yards are stuck in their sheathes for the next {{!!duration}}.
8526: All weapons within 50 yards are terribly unwieldy for the next {{!!duration}}.
8528: All weapons within 50 yards attract flies and gnats for the next {{!!duration}}.
8529: All weapons within 50 yards exude aromatic smoke for the next {{!!duration}}.
8530: All weapons within 50 yards glow red as though they're very hot for the next {{!!duration}}.
8531: All weapons within 50 yards hum in the presence of spilled blood for the next {{!!duration}}.
8532: All weapons within 50 yards are bent like corkscrews, then revert after {{!!duration}}.
8536: All wheeled vehicles within 50 yards burst into flame.
8537: All wheeled vehicles within 50 yards sink 2 feet into the mud.
8539: All wheels within 50 yards become perfectly square for the next {{!!duration}}.
8541: All who saw this casting are healed of any minor injuries.
8542: All who saw this casting are soaked with cold gravy.
8543: All who saw this casting are stricken mute for the next {{!!duration}}.
8544: All who saw this casting are stricken totally deaf for the next {{!!duration}}.
8545: All who saw this casting vanish for {{!!duration}}, then reappear in the same spot they vanished from.
8548: All who saw this casting giggle like lunatics for the next {{!!duration}}.
8552: All who saw this casting suffer a small amount of necrotic damage.
8553: All who saw this casting are compelled to stare at the target point for the next {{!!duration}}.
8558: All within 10 feet are teleported {{!!2d4}} feet in random directions.
8559: All within 10 feet point suffer a small amount of necrotic damage.
8567: All within 50 yards acquire a distinctive non-local accent for the next {{!!duration}}.
8570: All within 50 yards and in armor are paralyzed for {{!!duration}}.
8571: All within 50 yards appear blurry to each other for {{!!duration}}.
8573: All within 50 yards appear to be covered with festering sores for the next {{!!duration}}.
8591: All within 50 yards are covered in chocolate.
8594: All within 50 yards turn a peculiar shade of blue-gray for the next {{!!duration}}.
8599: All within 50 yards are attacked by locusts for the next {{!!duration}}.
8606: All within 50 yards are carrying an identical iron medallion which vanishes after {{!!duration}}.
8608: All within 50 yards are carrying small discs of carved stone which vanish after {{!!duration}}.
8612: All within 50 yards are covered in coal tar.
8613: All within 50 yards are covered in powdered sugar.
8614: All within 50 yards are covered with honey and feathers.
8617: All within 50 yards are doused with molasses.
8619: All within 50 yards are draped in tough, fibrous filaments.
8620: All within 50 yards are draped with pungent floral garlands.
8621: All within 50 yards are drenched with cold, soapy water.
8622: All within 50 yards are drenched with olive oil.
8623: All within 50 yards are dressed and painted like clowns.
8624: All within 50 yards are have jet-black hair for the next {{!!duration}}.
8626: All within 50 yards are dressed in illusory formal wear for the next {{!!duration}}.
8627: All within 50 yards are dressed in illusory full plate armor for the next {{!!duration}}.
8634: All within 50 yards are affected by the [[hold]] spell for the next {{!!duration}}.
8635: All within 50 yards are holding tiny stone carvings of themselves. The carvings vanish after {{!!duration}}.
8643: All within 50 yards are individually shrouded in fog for the next {{!!duration}}.
8644: All within 50 yards are invisible for the next {{!!duration}}.
8652: All within 50 yards are liberally sprayed with octopus ink.
8654: All within 50 yards are now wearing tap-shoes.
8656: All within 50 yards are overpoweringly thirsty for the next {{!!duration}}.
8661: All within 50 yards are profoundly drunk for {{!!duration}}.
8662: All within 50 yards are pushed {{!!d10}} yards from the target point.
8663: All within 50 yards are ravenously hungry for the next {{!!duration}}.
8664: All within 50 yards are healed of their injuries.
8667: All within 50 yards are showered in maggots.
8668: All within 50 yards are smeared with a foul-smelling gelatin.
8669: All within 50 yards are sprayed with skunk musk.
8670: All within 50 yards are standing on three-foot cast iron discs. The discs vanish after {{!!duration}}.
8672: All within 50 yards are stricken mute for {{!!duration}}.
8674: All within 50 yards are suddenly arranged in a big circle.
8675: All within 50 yards are suddenly barefoot.
8677: All within 50 yards are suddenly seated in the lotus position.
8679: All within 50 yards are thoroughly cleaned, as with the spell [[prestidigitation]].
8681: All within 50 yards are unable to breathe for {{!!d35}} seconds.
8682: All within 50 yards are unable to move their feet for {{!!s_duration}}.
8688: All within 50 yards are wearing ostrich feathers in their hair.
8689: All within 50 yards are wearing wooden shoes. The shoes revert to normal after {{!!duration}}.
8690: All within 50 yards become hopelessly lost for {{!!duration}}.
8695: All within 50 yards dance lasciviously for the next {{!!duration}}.
8700: All within 50 yards exchange places with someone else nearby.
8701: All within 50 yards exhale steam as if the air were very cold for the next {{!!duration}}.
8702: All within 50 yards feel a wildly different ambient temperature for the next {{!!duration}}.
8703: All within 50 yards feel insects crawling over their skin for the next {{!!duration}}.
8704: All within 50 yards feel intense hunger at the sight of blood for the next {{!!duration}}.
8705: All within 50 yards feel overpowering fear for the next {{!!duration}}.
8706: All within 50 yards feel unfocused yet overwhelming disgust for the next {{!!duration}}.
8707: All within 50 yards find mystical tattoos on their bodies for the next {{!!duration}}.
8712: All within 50 yards grow {{!!d7}} inches, then slowly revert to their normal height over the course of {{!!duration}}.
8713: All within 50 yards have a copy of a mysterious brass key. It vanishes after {{!!duration}}.
8716: All within 50 yards have clouded vision for {{!!duration}}.
8718: All within 50 yards have pockets full of butter.
8721: All within 50 yards are overwhelmed with exhaustion.
8723: All within 50 yards laugh like lunatics for the next {{!!duration}}.
8724: All within 50 yards levitate {{!!d4}} feet for {{!!s_duration}}.
8727: All within 50 yards suffer a small amount of necrotic damage every second they stay in this area for the next {{!!d10}}0 seconds.
8731: All within 50 yards move as if they're underwater for the next {{!!duration}}.
8734: All within 50 yards must remain within 10 yards of each other for the next {{!!duration}}.
8741: All within 50 yards are soaked with icy brine.
8744: All within 50 yards are thrown into nearby trees.
8745: All within 50 yards are tightly bound in wire, which vanishes after {{!!s_duration}}.
8749: All within 50 yards sink {{!!d35}} inches into the ground for the next {{!!duration}}.
8750: All within 50 yards suffer blinding pain for the next {{!!s_duration}}.
8753: All within 50 yards are afflicted with burning hair for the next {{!!d7}} seconds.
8758: All within 50 yards now have bright blue hair for the next {{!!duration}}.
8760: All within 50 yards quickly devour any food that they're carrying for the next {{!!s_duration}}.
8761: All within 50 yards run at top speed toward the target point for the next {{!!s_duration}}.
8763: All within 50 yards shrink {{!!d7}} inches, then grow back to their normal height over the course of {{!!duration}}.
8764: All within 50 yards smell like carrion for the next {{!!duration}}.
8765: All within 50 yards smell strongly of alcohol for the next {{!!duration}}.
8766: All within 50 yards smell strongly of brimstone until sunrise.
8767: All within 50 yards smell strongly of manure for the next {{!!duration}}.
8768: All within 50 yards suddenly have perfectly groomed hair.
8782: All within 50 yards weep hysterically for the next {{!!duration}}.
8783: All within 50 yards smell strongly of peppermint for the next {{!!duration}}.
8787: All within 50 yards will be fully healed of their injuries after {{!!duration}}.
8792: All worked stone within 50 yards absorbs water like a sponge for the next {{!!duration}}.
8793: All worked stone within 50 yards begins eroding rapidly for the next {{!!duration}}, then is restored.
8794: All worked stone within 50 yards blazes with illusory flame for the next {{!!duration}}.
8795: All worked stone within 50 yards clangs like bronze bells for the next {{!!duration}}.
8796: All worked stone within 50 yards hums audibly for the next {{!!duration}}.
8798: All worked stone within 50 yards is as shiny as a mirror for the next {{!!duration}}.
8799: All worked stone within 50 yards is briefly pliant as soft clay for the next {{!!duration}}.
8800: All worked stone within 50 yards is clear like glass for the next {{!!duration}}.
8802: All worked stone within 50 yards is now {{!!d20}}0° colder, then slowly warms to ambient temperature.
8804: All worked stone within 50 yards oozes blood for the next {{!!duration}}.
8806: All worked stone within 50 yards turns to ice for the next {{!!duration}}.
8807: All written text within 50 yards appears reversed in sunlight for the next {{!!duration}}.
8809: All written text within 50 yards hums audibly while being read for the next {{!!duration}}.
8810: All written text within 50 yards is reversed for the next {{!!duration}}.
8811: All written text within 50 yards shrinks by 50% for the next {{!!duration}}.
8819: An enormous black disc hovers over the area for the next {{!!duration}}.
8823: An enormous fishing net settles over a 50 yard radius. It vanishes after {{!!duration}}.
8824: An enormous head of sculpted stone bursts from the ground. It vanishes, and the hole is mended, after {{!!duration}}.
8825: An enormous oak tree appears at the target point. It vanishes after {{!!duration}}.
8826: An enormous sand castle appears at the target point. It vanishes after {{!!duration}}.
8827: An enormous volume of acrid smoke spews from the target point for {{!!s_duration}}. It lingers for {{!!duration}}, then vanishes.
8836: An intoxicatingly delightful scent issues from the target point for the next {{!!duration}}.
8837: An intricate maze of panels of ice sprouts in a 50 yard radius.
8838: An intricate maze of tall hedges sprouts in a 50 yard radius.
8839: An intricate sculpture of blown glass appears at the target point. It vanishes after {{!!duration}}.
8840: A whistling octopus slithers through the area, then vanishes after {{!!duration}}.
8841: An overpoweringly foul stench issues from the target point for the next {{!!duration}}.
8843: Ants appear to swarm on all blades within 50 yards for the next {{!!duration}}.
8844: Any active charms and enchantments nearby are negated for the next {{!!duration}}.
8845: Any alcoholic beverages within 50 yards are now 10X as potent for the next {{!!duration}}.
8847: Any alcoholic beverages within 50 yards combust violently.
8861: Any fires now burning within 50 yards are extinguished.
8862: Any fires now burning within 50 yards exude psychedelic smoke for the next {{!!duration}}.
8863: Any fires now burning within 50 yards provide no heat for the next {{!!duration}}.
8864: Any fires now burning within 50 yards provide no light for the next {{!!duration}}.
8866: Any fires now burning within 50 yards quadruple in size for the next {{!!duration}}.
8872: Any food now within 50 yards turns to iron. It reverts after {{!!duration}}.
8888: Any non-living wood within 50 yards becomes clear like glass for the next {{!!duration}}.
8889: Any open wounds in the area heal into scars shaped like runes.
8894: Any ranged spells cast nearby are delayed for {{!!s_duration}} for the next {{!!duration}}.
8901: Any standing water within 50 yards boils violently for the next {{!!s_duration}}.
8914: Anyone carrying food nearby is swarmed by countless wasps for the next {{!!duration}}.
8918: Anyone in armor within 10 yards can't breathe for {{!!d4}}0 seconds.
8923: Anyone in armor within 10 yards is pelted by hail for {{!!d50}} seconds.
8924: Anyone in armor within 10 yards is thrown {{!!d20}} yards away from the caster.
8927: Anyone in armor within 10 yards sneezes repeatedly for {{!!duration}}.
8929: Anyone nearby and facing the target point disappears for {{!!s_duration}}.
8930: Anyone nearby and facing the target point is blinded for the next {{!!duration}}.
8932: Anyone nearby and facing the target point is covered by moss.
8933: Anyone nearby and facing the target point is covered in soot
8934: Anyone nearby and facing the target point is dusted with flour
8938: Anyone nearby and facing the target point loses all hair, but it grows back over the course of {{!!duration}}.
8940: Anyone nearby and less than five feet tall grows {{!!d7}} inches, then reverts to their normal height after {{!!duration}}.
8943: Anyone nearby and more than five feet tall shrinks to that height. After {{!!duration}}, they revert to their normal height.
8958: Anyone nearby who tries to turn invisible glows brightly instead for the next {{!!duration}}.
8960: Anyone nearby who turns invisible over the next {{!!duration}} is bright orange for {{!!l_duration}} after they become visible.
8962: Anyone nearby who used magic in the last 30 seconds is soaked in brine.
8993: Anyone wielding a weapon nearby is knocked to the ground.
8994: Anyone on a horse or other mount within 50 yards falls from it clumsily.
9004: Anyone using magic nearby briefly appears to be made of wood for the next {{!!duration}}.
9005: Anyone using magic nearby gives off a pungent and offensive odor for the next {{!!duration}}.
9006: Anyone using magic nearby over the next {{!!duration}} glows a pale green hue for {{!!s_duration}}.
9016: Blinding smoke issues from the ground when magic is cast nearby for the next {{!!duration}}.
9017: Blinding smoke swirls about the area for the next {{!!duration}}.
9018: Blood sprays from the target point like water from a hose for the next {{!!duration}}.
9019: Celestial voices resonate in the air for the next {{!!duration}}.
9020: Combustion can not occur within 10 yards of the target point for the next {{!!duration}}.
9022: Countless droplets of sticky black tar rain down on the area for the next {{!!duration}}.
9023: Countless sharpened stakes jut from the ground in the area, then vanish after {{!!duration}}.
9024: Countless slugs and snails litter the ground, then slither into the earth over the course of {{!!duration}}.
9025: Countless small lumps of cheese rain down on the area for the next {{!!duration}}.
9026: Countless tiny carvings of wooden ducks rain down on the area for the next {{!!duration}}.
9027: Diabolical voices issue from the target point for the next {{!!duration}}.
9028: Translucent jellyfish drift through the air high overhead for the next {{!!duration}}.
9029: Displays of hostile emotion are impossible nearby for the next {{!!duration}}.
9031: [[Divination|divination]] magic is impossible or wildly unreliable within 50 yards for the next {{!!duration}}.
9033: Eerie and ominous susurrations issue from the air for the next {{!!duration}}.
9034: Enormous birds circle silently overhead for the next {{!!duration}}.
9040: Every tree within 50 yards has an eerie face carved in its bark. The face vanishes after {{!!duration}}.
9041: Every tree within 50 yards has cryptic runes carved in its bark. The runes vanish after {{!!duration}}.
9042: Every tree within 50 yards hums sonorously for the next {{!!duration}}.
9044: Everyone within 10 yards is chained together for the next {{!!duration}}.
9045: Everyone within 50 yards disgorges a large, hairy spider.
9050: Everyone within 50 yards has a big snowball in their pocket.
9051: Everyone within 50 yards has a hen's egg in their pocket.
9052: Everyone within 50 yards has a lit candle in their pocket.
9054: Everyone within 50 yards has a live salmon in their pocket.
9055: Everyone within 50 yards has a lump of quartz in their mouth.
9056: Everyone within 50 yards has a red hot coal in their pocket.
9058: Everyone within 50 yards has a small diamond in their pocket. It vanishes after {{!!duration}}.
9059: Everyone within 50 yards has an iron ring around their wrist. It vanishes after {{!!duration}}.
9060: Everyone within 50 yards has delicate glass globe in their pocket. It vanishes after {{!!duration}}.
9061: Everyone within 50 yards has someone's severed hand in their pocket. It vanishes after {{!!duration}}.
9063: Everyone within 50 yards is holding a wooden cup full of wine. It vanishes after {{!!duration}}.
9066: Everyone within 50 yards is standing in a small bucket. The buckets vanish after {{!!duration}}.
9069: Everyone within 50 yards is suddenly holding a bucket of chum. The buckets and their contents vanish after {{!!duration}}.
9070: Everyone within 50 yards is suddenly holding a chicken. The chickens vanish after {{!!duration}}.
9072: Everyone within 50 yards is suddenly holding a small skull. The skulls vanish after {{!!duration}}.
9073: Everyone within 50 yards is suddenly holding an ingot of lead. The ingots vanish after {{!!duration}}.
9075: Everyone within 50 yards is tattooed with a sequential number. The tattoos fade, in order, over the course of {{!!duration}}.
9082: Everything within 50 yards appears to be lit by blacklight for the next {{!!duration}}.
9084: Everything within 50 yards is drained of color for the next {{!!duration}}.
9085: Everything within 50 yards shakes violently for the next {{!!duration}}.
9090: Fast-drying concrete covers the area to a depth of {{!!d20}} inches.
9091: Fire belches forth from the target point for the next {{!!duration}}.
9092: Fires in this area are drawn toward the target point for the next {{!!duration}}.
9097: For {{!!duration}}, any spells cast nearby turn their casters yellow
9100: For {{!!duration}}, fires lit nearby are visible through metal or stone
9103: For {{!!duration}}, the ground within 50 yards flexes like elastic.
9104: For {{!!duration}}, the ground within 50 yards turns to quicksand.
9112: For {{!!duration}}, flashing lights accompany spells cast in this area.
9117: Gravity is skewed by 45° in this area for the next {{!!duration}}.
9118: Gravity within 50 yards has no effect on wood for the next {{!!duration}}.
9119: Half a ton of iron filings sprays from the target point. It vanishes after {{!!duration}}.
9120: Half a ton of pureed carrots sprays from the target point. It vanishes after {{!!duration}}.
9122: Half of the people nearby are teleported {{!!d10}}0 feet north.
9125: Hallucinogenic mist billows from the target point for the next {{!!duration}}.
9126: Highly flammable gas sprays from the target point for the next {{!!duration}}.
9127: Horrific, deafening laughter echoes through the area for the next {{!!duration}}.
9130: Huge volumes of strongly emetic vapor spray from the target point for the next {{!!s_duration}}.
9131: Huge, cryptic symbols appear on the ground near the target point. They vanish after {{!!duration}}.
9132: Hundreds of highly venomous snakes emerge from the ground. They vanish after {{!!s_duration}}.
9133: Hundreds of hungry dogs appear in the area. They vanish after {{!!duration}}.
9134: Hundreds of thousands of acorns fall from the sky. They slowly shrink over the course of {{!!l_duration}} until they vanish.
9135: Hurricane-strength winds swirl around the target point for the next {{!!duration}}.
9136: Ice cold water sprays from the ground beneath the target point for the next {{!!duration}}.
9137: Ice suddenly covers the ground nearby to a depth of {{!!d4}} inches.
9138: Icy mist issues from the target for {{!!duration}}.
9139: If indoors, all exits are sealed for {{!!l_duration}}; if not, roll again.
9158: Innumerable glowing orbs emerge from the target point for the next {{!!duration}}, then vanish.
9159: It's suddenly night, lasting until dawn would normally occur.
9160: Jagged rocks erupt from the ground in a 100 yard radius.
9161: Large poppies bloom in a 100 yard radius from the target point.
9162: Lightning bolts issue from the spell's target point for the next {{!!s_duration}}.
9163: Loud thunder booms overhead.
9165: Magical healing is not possible within 50 yards for the next {{!!duration}}.
9167: Magical illusions are immediately dispelled within 50 yards for the next {{!!duration}}.
9168: Magical invisibility is impossible within 50 yards for the next {{!!duration}}.
9171: Missiles fired nearby all fly toward the same creature for the next {{!!duration}}.
9174: Missiles fired nearby crash like thunder when they hit for the next {{!!duration}}.
9175: Missiles fired nearby disintegrate while in flight for the next {{!!duration}}.
9176: Missiles fired nearby explode into embers in flight for the next {{!!duration}}.
9177: Missiles fired nearby fly straight up into the sky and vanish for the next {{!!duration}}.
9178: Missiles fired nearby have an absolute range limit of 10 yards for the next {{!!duration}}.
9179: Missiles fired nearby hit the spell's target point for the next {{!!duration}}.
9181: Missiles fired nearby invariably miss their targets for the next {{!!duration}}.
9182: Missiles fired nearby leave colorful trails of light for the next {{!!duration}}.
9191: Natural animals in this area flee from magic for the next {{!!duration}}.
9194: Nearest bridge appears to be a rainbow for the next {{!!duration}}.
9195: Nearest bridge appears to be made of thick fog for the next {{!!duration}}.
9196: Nearest bridge can't be crossed by anyone wearing footwear for the next {{!!duration}}.
9197: Nearest bridge collapses after {{!!duration}}.
9198: Nearest bridge is as pliant as rubber for the next {{!!duration}}.
9199: Nearest bridge is flashes in flames for {{!!s_duration}}.
9200: Nearest bridge is clear like glass for the next {{!!duration}}.
9201: Nearest bridge is made of teeth for the next {{!!duration}}.
9203: Nearest bridge takes {{!!2d4}} hours to cross, but time seems to be moving at a normal speed to those on the bridge. The effect lasts for {{!!l_duration}} to those outside.
9205: Nearest bridge turns invisible for the next {{!!duration}}.
9206: Nearest building can only be entered by walking backwards for the next {{!!duration}}.
9207: Nearest building is exactly duplicated at the target point for the next {{!!duration}}.
9208: Nearest door appears at the target point.
9212: Nearest door opens to a point {{!!d10}}0 yards in the air. It reverts to normal after {{!!duration}}.
9213: Nearest door opens to the target point for the next {{!!duration}}.
9215: Nearest doorway can't be traversed by anyone wearing armor for the next {{!!duration}}.
9216: Nearest doorway causes all who pass through it to age {{!!d20}} years. They revert to their actual age after {{!!duration}}.
9221: Nearest horse or quadrupedal animal becomes bipedal for the next {{!!duration}}.
9222: Nearest horse or mount sprouts two additional pairs of functional legs for the next {{!!duration}}.
9248: Nearest tree periodically shoots poisonous thorns over the next {{!!duration}}.
9249: Nearest tree turns to bronze for the next {{!!duration}}.
9250: Nearest tree turns to solid gold for the next {{!!duration}}.
9251: Nearest tree uproots and goes on a rampage for the next {{!!duration}}.
9272: Nearest river freezes solid over the next {{!!s_duration}}, then thaws after {{!!duration}}.
9276: Nearest river is now twice as deep as it was this morning. It reverts over the course of {{!!duration}}.
9277: Nearest river is blood red but is otherwise unchanged. It reverts over the course of {{!!l_duration}}.
9308: Reroll on this table. The next {{!!2d4}} spells cast in this area also trigger random magical effects.
9325: A person in within 50 yards disgorges a large steel bowl. It vanishes after {{!!duration}}.
9366: Next person nearby to use magic is turned to wood for the next {{!!duration}}.
9367: Next person nearby to use magic is wrapped in a cocoon for the next {{!!duration}}.
9368: Next person nearby to use magic loses the ability to feel pain for the next {{!!duration}}.
9372: Next person nearby to use magic turns bright pink for {{!!duration}}.
9373: Next person nearby to use magic turns into a frog or a dove for the next {{!!duration}}.
9375: Next person nearby to use magic turns invisible above their nose for the next {{!!duration}}.
9378: Next person slain nearby crumbles into a heap of toxic ash.
9379: Next person slain nearby disappears without a trace.
9380: Next person slain nearby explodes messily.
9381: Next person slain nearby flies into the air and vanishes.
9385: Next person slain nearby transmutes into hundreds of mice that scatter in all directions.
9388: Next person slain nearby is immediately plated in chrome.
9389: Next person slain nearby is resurrected as the spell [[raise dead]] after {{!!s_duration}}.
9393: Next person slain nearby slowly transforms into solid gold, then vanishes after {{!!duration}}.
9394: Next person slain nearby sputters about like a deflating balloon.
9395: Next person slain nearby turns into a large swine as they die.
9400: Next person to cross the nearest bridge turns into a [[troll]] for the next {{!!duration}}.
9403: Next spell cast nearby affects {{!!d4}} other targets nearby.
9404: Next spell cast also [[polymorph]]s the target into a random beast.
9433: Next weapon drawn nearby hurls itself into the sky.
9437: Next weapon drawn nearby instantly quadruples in size. It reverts to normal after {{!!duration}}.
9439: Next weapon drawn nearby is attracted to the spell's target point for the next {{!!duration}}.
9440: Next weapon drawn nearby is instantly struck by lightning.
9446: Next weapon drawn nearby pulses with strange lights and music for the next {{!!duration}}.
9449: Next weapon drawn nearby vanishes until the melee is over.
9507: Night falls in {{!!s_duration}} and lasts for {{!!duration}}.
9508: No bipedal creatures can come within 10 yards of the target point for the next {{!!duration}}.
9509: No bipedal creatures can speak within 50 yards of the target point for the next {{!!duration}}.
9530: No one within 50 yards can draw a weapon for {{!!duration}}.
9531: No one within 50 yards can leave the area for {{!!duration}}.
9543: No plants can grow within 50 yards of the target point for the next {{!!d7}} weeks.
9556: One random sword nearby opens like an umbrella. It reverts after {{!!duration}}.
9560: One random sword nearby turns into a flock of doves. They revert after {{!!duration}}.
9572: Rats and similar vermin are drawn to this area in great numbers over the next {{!!duration}}.
9574: Scalding steam sprays violently from the spell's target point for the next {{!!duration}}.
9576: Several large saw blades whirl through the area for {{!!s_duration}}.
9577: Shadows in this area seem to conceal malicious, mischievous [[imp]]s for the next {{!!duration}}.
9578: Small pebbles pelt all within 50 yards for the next {{!!duration}}.
9579: Snow falls heavily in the area for {{!!duration}}.
9615: Someone nearby dances like a marionette for {{!!s_duration}}.
9619: Someone nearby disgorges {{!!2d4}} large housecats, which vanish after {{!!duration}}.
9620: Someone nearby disgorges {{!!2d4}} severed hands, which vanish after {{!!duration}}.
9621: Someone nearby disgorges a tin bucket of hot coals, which vanishes after {{!!duration}}.
9622: Someone nearby disgorges a copy of themself, which vanishes after {{!!duration}}.
9623: Someone nearby doubles in weight suddenly, then reverts to normal after {{!!duration}}.
9645: Someone nearby glows from within as though they're swallowed a torch for the next {{!!duration}}.
9646: Someone nearby goes berserk and is invulnerable for {{!!duration}}.
9654: Someone nearby has two extra thumbs jutting from their forehead for the next {{!!duration}}.
9656: Someone nearby inflates like a puffer fish for the next {{!!duration}}.
9672: Someone nearby is chained high in the branches of a nearby tree for the next {{!!duration}}.
9681: Someone nearby is dragged towards the target point for {{!!s_duration}}.
9684: Someone nearby is encased up to their chin in a large glass cube for the next {{!!duration}}.
9685: Someone nearby is entangled in a massive snarl of ribbons for the next {{!!duration}}.
9688: Someone nearby is hit by lightning.
9689: Someone nearby is immobilized at the spell's target point for the next {{!!duration}}.
9699: Someone nearby is possessed by {{!!d4}} [[quasit]]s.
9706: Someone nearby is sheathed in candle wax.
9709: Someone nearby is suddenly hideously deformed for the next {{!!duration}}.
9714: Someone nearby is unable to bend their legs for the next {{!!duration}}.
9716: Someone nearby is wearing a suit of solid gold plate armor, until it vanishes {{!!duration}} later.
9717: Someone nearby is wearing a suit of the finest sheer silk, until it vanishes {{!!duration}} later.
9718: Someone nearby leaves footprints that smolder harmlessly for the next {{!!s_duration}}.
9722: Someone nearby turns into a large frog. They revert to normal after {{!!duration}}.
9727: Someone nearby freezes solid for {{!!s_duration}}, then thaws rapidly.
9733: Someone nearby is suddenly attacked by their clothing for {{!!duration}}.
9735: Nearby, someone's head doubles in size. It reverts after {{!!duration}}.
9741: Someone nearby now has a blowhole but no nose for the next {{!!duration}}.
9742: Someone nearby now has baleen instead of conventional teeth for the next {{!!duration}}.
9743: Someone nearby now has three legs spaced evenly around their pelvis for the next {{!!duration}}.
9744: Someone nearby now has two feet jutting from each ankle for the next {{!!duration}}.
9764: Someone nearby shrinks by 50% from the waist up for the next {{!!duration}}.
9767: Someone nearby spins and spits water like a garden sprinkler for the next {{!!s_duration}}.
9768: Someone nearby sprays blood-red foam from their nose for {{!!s_duration}}.
9769: Someone nearby sprouts a [[troll]]'s arm from the center of their chest. It vanishes after {{!!duration}}.
9770: Someone nearby sprouts a turtle's shell atop their head. It vanishes after {{!!duration}}.
9771: Someone nearby sprouts non-functional bat wings, which vanish after {{!!duration}}.
9772: Someone nearby sprouts inflatable sacs from their shoulder blades, which vanish after {{!!duration}}.
9773: Someone nearby sprouts ornate feathers from their tongue, which vanish after {{!!duration}}.
9774: Someone nearby sprouts plates from their back like a stegosaurus, which vanish after {{!!duration}}.
9775: Someone nearby suddenly has a neck like a giraffe, which reverts to normal after {{!!duration}}.
9776: Someone nearby suddenly has eight eyes like a spider for the next {{!!duration}}.
9777: Someone nearby suddenly has eight legs for the next {{!!duration}}.
9778: Someone nearby suddenly has feet like a chicken for the next {{!!duration}}.
9782: Someone nearby teleports {{!!2d4}} yards in a random direction.
9790: Someone nearby tries to eat their own hands for the next {{!!duration}}.
9793: Someone nearby tries to swallow their own arm, elbow first, for the next {{!!duration}}.
9794: Someone nearby triggers two random magical effects when they next cross a bridge
9795: Someone nearby triggers two random magical effects when they next traverse a doorway
9797: Someone nearby turns to a heap of gold dust. They revert after {{!!duration}}.
9798: Someone nearby turns to a heap of moist sand. They revert after {{!!duration}}.
9799: Someone nearby turns to salt. They revert after {{!!duration}}.
9800: Someone nearby turns to stone. They revert after {{!!duration}}.
9801: Someone nearby turns to water. They revert after {{!!duration}}.
9802: Someone nearby turns to wood. They revert after {{!!duration}}.
9820: Suddenly it's raining harder than anyone has ever experienced for the next {{!!duration}}.
9821: Suddenly the area is covered in 6-inch snow that vanishes after {{!!duration}}.
9823: Temperature within 100 yards drops 1° per minute for {{!!l_duration}}, then climbs back to regular temperature.
9824: Temperature within 100 yards rises 1° per minute for {{!!l_duration}}, then drops back to regular temperature.
9825: The arms of someone nearby turn into wings like those of a duck for the next {{!!duration}}.
9826: The complete skeleton of a huge [[red dragon]] tumbles from the sky. It vanishes after {{!!duration}}.
9830: The entire area gives an impression of peace and tranquility for the next {{!!duration}}.
9831: The entire area gives off a powerful impression of loneliness for the next {{!!duration}}.
9833: The entire area hums as if vast machinery is buried in the ground for the next {{!!duration}}.
9852: The entire area is shrouded in a thick and pungent fog for the next {{!!duration}}.
9853: The entire area is strewn with jellyfish like a shore at low tide for the next {{!!duration}}, at which point they all vanish.
9854: The entire area is thickly shrouded by dust and cobwebs for the next {{!!duration}}.
9859: The entire area suffers an intense blizzard for {{!!s_duration}}.
9867: The ground beneath the target point is charged with electricity for the next {{!!duration}}.
9875: The ground within 50 yards is carpeted for the next {{!!duration}}.
9878: The ground within 50 yards is incredibly sticky for the next {{!!duration}}.
9879: The ground within 50 yards is now perfectly smooth steel for the next {{!!duration}}.
9880: The ground within 50 yards is swampy and waterlogged for the next {{!!duration}}.
9881: The ground within 50 yards is tangled with invisible vines for the next {{!!duration}}.
9886: The ground within 50 yards swarms with biting insects for the next {{!!duration}}.
9889: The largest creature within 50 yards nearby doubles in size for {{!!duration}}.
9933: The scent of honey and roses permeates everything within 50 yards for the next {{!!duration}}.
9934: The scent of rotten eggs permeates everything within 50 yards for the next {{!!duration}}.
9936: The sky appears to teem with a vast host of angels for {{!!s_duration}}.
9937: The sky overhead swirls with dark colors for {{!!s_duration}}.
9938: The sky whirls with dazzling colors for the next {{!!s_duration}}.
9939: The sound of hundreds of barking dogs fills the air for the next {{!!s_duration}}.
9940: The sound of mighty winds fills the air, but the air is calm, for the next {{!!s_duration}}.
9941: The spell that triggered this effect discharges randomly every few seconds for the next {{!!duration}}.
9950: The tallest person in the area grows by 50% for the next {{!!duration}}.
9963: The target point is sealed in a 10 foot globe of force for the next {{!!duration}}.
9964: The target point is the center of an [[antimagic field]] for the next {{!!duration}}.
9967: The target point radiates intense cold for {{!!duration}}.
9968: The target point radiates intense heat for {{!!duration}}.
9969: The target point scrambles any effort to teleport near it for the next {{!!duration}}.
9974: Thousands of teeth rain down from the sky for the next {{!!duration}}, then they all vanish.
9975: Thousands of tiny glass ovoids fall from the sky for the next {{!!duration}}, then they all vanish.
9980: Triumphant fanfare fills the air for the next {{!!s_duration}}.
9982: Very salty rain falls for {{!!l_duration}}.
9985: Volcanic ash blankets the area to a depth of {{!!d4}} inches.
9988: Water consumed in this area tastes like the finest wine.
9989: Water consumed in this area tastes strongly of manure.
9990: Water gushes from the target point for {{!!duration}}.
9996: While in this area, no one can include nouns in their speech for the next {{!!duration}}.
9997: While in this area, no one can inflict or suffer any injury for the next {{!!duration}}.
9998: While in this area, no one can speak of anything outside the area for the next {{!!duration}}.
9999: While in this area, no one can speak to anyone else in the area for the next {{!!duration}}.
10000: The caster casts [[darkness]].
10001: The caster casts [[stinking cloud]].
10002: A rhinoceros appears a few feet away from the target. It vanishes after {{!!duration}}.
10003: An elephant appears a few feet away from the target. It vanishes after {{!!duration}}.
10004: {{!!2d4}} rats appear a few feet away from the target. They vanish after {{!!duration}}.
10005: A cloud of {{!!d7}}00 oversized butterflies fills a 30-foot radius centered on the target. The butterflies vanish after {{!!duration}}.
1: Sealed burial mound or pyramid
2: Plundered burial mound or pyramid
3: Faces carved into a mountainside or cliff
4: Giant statues carved out of a mountainside or cliff
5: Intact obelisk etched with a warning, historical lore, dedication, or religious iconography
6: Ruined or toppled obelisk
7: Intact statue of a person or deity
8: Ruined or toppled statue of a person or deity
9: Great stone wall, intact, with tower fortifications spaced at one-mile intervals
10: Great stone wall in ruins
11: Great stone arch
12: Fountain
13: Intact circle of standing stones
14: Ruined or toppled circle of standing stones
15: Pillar carved with elemental or fey symbols
1: no precipitation
2: no precipitation
3: no precipitation
4: no precipitation
5: no precipitation
6: no precipitation
7: light precipitation
8: light precipitation
9: light precipitation
10: heavy precipitation
11: heavy precipitation
1: 1 second
2: 2 seconds
3: 3 seconds
4: 4 seconds
5: 5 seconds
6: 6 seconds
7: 7 seconds
8: 8 seconds
9: 9 seconds
10: 10 seconds
11: 12 seconds
12: 15 seconds
13: 20 seconds
14: 25 seconds
15: 30 seconds
1: Normal temperature for the clime
2: Normal temperature for the clime
3: Normal temperature for the clime
4: Normal temperature for the clime
5: Normal temperature for the clime
6: Normal temperature for the clime
7: Normal temperature for the clime
8: Normal temperature for the clime
9: Normal temperature for the clime
10: Normal temperature for the clime
11: 10°F hotter than normal
12: 20°F hotter than normal
13: 30°F hotter than normal
14: 40°F hotter than normal
15: 10°F colder than normal
16: 20°F colder than normal
17: 30°F colder than normal
18: 40°F colder than normal
1: no wind
2: no wind
3: no wind
4: no wind
5: no wind
6: no wind
7: light wind
8: light wind
9: light wind
10: strong wind
11: strong wind
Pasha Raqashtar of Gold Ash is the most cosmopolitan
of the [[efreet|efreeti]]. He has many friends in the [[Immeasurable Market]] of [[Syrania]], and enjoys betting on the outcome of
battles in [[Shavarath]]. His appetite for gambling could draw
the adventurers into his orbit in the [[City of Brass]], as he might make a wager
with another [[immortal]] about the outcome of a particular
adventure—then seek to put a burning finger on the scales.
Each [[magic item]] (and some "mundane" items) has a rarity: common, uncommon, rare, very rare, or legendary. Common magic items, such as a [[potion of healing]], are the most plentiful. Some legendary items, such as the [[breastplate of Kamvuul Norek]], are unique. The secrets of creating the most powerful items arose in past [[era]]s and then were gradually lost as a result of wars, cataclysms, and mishaps.
Rarity provides a rough measure of an item's power relative to other items. Use the below guide to estimate the cost of a magic item of a given rarity.
!! Rarity Values
* ''Common'': worth 1-10c
* ''Uncommon'': worth 11-50c
* ''Rare'': worth 51-500c
* ''Very Rare'': worth 501-5000c
* ''Legendary'': worth 5001+c
1: common
2: uncommon
3: rare
4: very rare
5: legendary
6: —
''[[Rarity|rarity]]: ''''<$transclude tiddler="RarityNames" index={{!!rarity}}/>''
This tavern caters primarily to
the shifters of [[Lower Northedge]], and serves food and
drink in the style of the [[Eldeen Reaches]]. The customers of the Rat's Nest are more inclined to gossip than to
violence; the [[shifter]]s of [[Northedge]] are as industrious
and honest as any other citizen of the ward. However,
the presence of [[Fathen's Shrine|Shrine of Fathen the Martyr]] hangs over the tavern
like a shadow, and the regulars have an unfriendly
attitude toward any follower of the [[Silver Flame]].
Shifters gain an advantage when gathering information in the Rat's Nest.
''District Type:'' Apartment townhomes<br/>
''Buildings:'' Average residences (40), poor
residences (220)<br/>
''First Impression:'' The housing towers in this district are packed with people. The district shows its
age. Cobblestones are cracked or missing, and the
worn stone walls have been marred by time and vandalism. However, the people seem cheerful enough
despite the squalid conditions.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Stormhold]] (north); [[Kenton]] (southeast); [[Warden Towers]] (bridge, northeast); [[Cassan Bridge]] (bridge, east); [[Fallen]] (below); [[Highhold]] (above)
The inhabitants of Rattlestone are poor, but most
have jobs of one sort or another in the [[Bazaar]]. Many
of the [[Watch|Sharn Watch]] patrols that protect this district are
made up of native Rattlestoners. In comparison to
most members of the [[Dura]] Watch, the Rattlestone
guards are more likely to risk life and limb to protect
the people of the district. But this doesn't apply to
strangers, outsiders, or adventurers, and members of the Watch may actually help the local pickpockets
and charlatans carry out their scams.
Rav Dolorr is a city-state of [[dragonborn]] in the [[Vast]] of [[Argonnessen]], located near [[Bronze Bay]].
Rav Magar is a city-state of [[dragonborn]] in the [[Vast]] of [[Argonnessen]]. It is ruled by the Dragon-King Malathar. It is a militant city that frequently attacks its neighbor, [[Rav Dolorr]]. The [[dragonborn]] Lissann Orak is the first captain of the Magar scouts.
Ravar Orioth, or "the Jungle of Scimitars", is a large forest located in the southern tip of [[Valenar]].
The Ravers of [[Sharn]] hide in the secret places, scavenging among the ruins where the [[Glass Tower]] and [[Fallen]] mingle in a jumble of glass and stone.
Few ever see the ravers, but the evidence of their
passing can be discerned amid the wreckage of old.
Whether they were once citizens of the district or
some strange breed released from the [[Depths|Old Sharn]] by the
shattering disaster, the ravers have been connected
with the Day of [[Crystalfall]] and the troubled spirits
said to haunt the mournful ruins. Most people never
encounter the ravers, but those that do rarely survive
to tell the tale.
A frigid beam of blue-white light streaks toward a creature within 60 feet. If it hits, the target experiences biting cold that slows their movement speed for 5-10 seconds.
Ask anyone on [[Sarlona]] about the vast open spaces of the
[[Tashana Tundra]], and you're likely to hear the same refrain—it is a land
of strange weathers. The native [[shifter]] tribes can tell you more
specifically: The Tundra is home to //aukaraks// or reality storms.
//Aukaraks// are actually free-floating planar breaches, remnants of a long-ago era in which terrible magics rent the very fabric of the planes. They move about the Tundra, blowing in just as a rainstorm might, and blowing over again just as quickly. Reality storms usually function as small, temporary [[manifest zone]]s to one of the twelve [[plane]]s that have coterminous phases with Eberron. They tend to be more intense and powerful than typical manifest zones, but they are unpredictable and impermanent. Reality storms also have a chance of "porting in" natives of a particular [[plane]], as if summoned—these creatures are effectively unsummoned at the end of the storm's duration, and return to their native plane. Finally, some aukaraks simply produce bizarre, random effects that have no apparent connection to any individual plane. Consult the table below for descriptions and effects.
A reality storm takes a few minutes to fully manifest, sometimes simply materializing overhead, sometimes rolling over the horizon and toward the characters. The duration of an aukarak is between 1 and 7 hours, with exceptions for burst storms. Encountered aukaraks can be chosen from the table or randomly rolled.
| !<<dr d50>> |!Aukarak Type |!Description |!Possible Encounters |
| 1-3 |[[Daanvi]], the Perfect Order |Translucent geometrical shapes float in the air; items intermittently shift to "ideal form"; a field of wildflowers could appear as a cultivated garden |[[modron]]s, [[formian]]s |
| 4-6 |[[Dolurrh]], the Realm of the Dead |Muted colors and sounds; feelings of despair; heavy gravity |[[shadow]]s, [[meld]]s, [[lemure]]s, [[sorrowsworn]], [[nalfeshnee]] (rarely) |
| 7-9 |[[Fernia]], the Sea of Fire |Embers and ash swirl through the air; uncomfortable heat; fire magic enhanced |fire or earth [[elemental]]s, magma [[mephit]]s |
| 10-12 |[[Irian]], the Eternal Dawn |Intense sunlight; illusory landscapes of fields of crystal and sand |benign [[ember]]s |
| 13-15 |[[Kythri]], the Churning Chaos |Random, intense environmental effects—noise, snow, steam, lightning |[[slaad]], never-before-seen [[monstrosities|monstrosity]] |
| 16-18 |[[Lamannia]], the Twilight Forest |Illusory overgrowth of plant life and verdant terrains; pockets of the [[First Storm]] |[[dire beast]]s, [[elemental]]s |
| 19-21 |[[Mabar]], the Endless Night |Near-total darkness |[[shadow]]s, [[wraith]]s, [[mezzoloth]]s |
| 22-24 |[[Risia]], the Plain of Ice |pieces of the [[Boundless Blizzard]]; enhanced ice magic |Usually none. Rarely: [[remorhaz]]es, [[ice devil]]s |
| 25-27 |[[Shavarath]], the Eternal Battleground |Illusory scenes of ghostly combatants eternally at war; cacophonous noise; whirling blades |[[devil]]s, [[demon]]s, [[angel]]s, or the [[manifestation]] of literally any kind of warrior |
| 28-30 |[[Syrania]], the Azure Sky |Bright, vibrant colors; cloudless blue sky; feelings of calm; light gravity |Syranian [[angel]]s, no combat |
| 31-33 |[[Thelanis]], the Faerie Court |Dancing lights and phosphorescence; landscapes with exaggerated features; the smell of perfume|[[dryad]]s, [[satyr]]s, [[sprite]]s, any [[fey]] |
| 34-36 |[[Xoriat]], the Realm of Madness |Illusions of utterly alien phenomena, [[random magical effect]]s |[[beholder]]kin, native [[aberration]]s (not necessarily hostile) |
| 37 | Binary storm: [[Daanvi]]/[[Kythri]] |Storm toggles between opposing planes once every 20-60 seconds ||
| 38 | Binary storm: [[Irian]]/[[Mabar]] |Storm toggles between opposing planes once every 20-60 seconds ||
| 39 | Binary storm: [[Fernia]]/[[Risia]] |Storm toggles between opposing planes once every 20-60 seconds ||
| 40-42 | Antimagic storm |An eerie dead stillness and dimming of light; [[antimagic field]] effect ||
| 43 | Temporal storm |A light sleet descends, causing time to speed up or slow down in the area ||
| 44-45 | Temporal burst |A light sleet descends, causing time to speed up or slow down in the area only for 30-90 seconds ||
| 46-47 | Gravity burst |A shimmering air mass descends, causing heavy or light gravity for 30-90 seconds ||
| 48-50 | Teleportation burst |A cloud of sparkling snow descends, teleporting creatures in a 100-foot radius to another randomly determined location in the Tashana region ||
No one knows the extent or depth of the ancient [[dwarven|dwarf]] empire deep beneath the [[Ironroot Mountains]]. Great wealth and arcane secrets remain hidden in these halls,
along with endless hordes of [[aberration]]s.
!
Each [[clan|Mror clan]] holds dominion over a spire, with the ruling clans
laying claim to all remaining land within a hold. Critically,
a clan holds domain both over its territory and all that lies
below it. Early in the tenth century, miners in multiple holds
broke through to the Realm Below. Wide tunnels shaped by
elemental magic led to grand halls and subterranean cities
crafted with techniques far beyond those of the modern
[[Mror|Mror Holds]] earthmovers. Avenues were lit by [[continual flame]],
and environmental enchantments ensured purity of air and
comfortable climate. One might think the dwarves would
have been more curious about the fate of the builders, but the
ancient halls were entirely empty, with no signs of blood or
bone. To those who discovered them, these empty halls were
not foreboding, but a gift from the [[Sovereigns|Sovereign Host]]—a wondrous
realm waiting for residents.
Clan leaders proceeded with caution, but were lured in as
greater wonders were discovered. Ancient forges held the
promise of forgotten techniques that could yet be reclaimed.
Explorers returned with ornaments of gold and silver, found
simply lying around the avenues for the taking. And there
were mines—mines far safer and grander than those above,
yet still containing riches. In time, explorers would realize
that some of the richest mines were not entirely natural—that
some shafts connect to [[demiplane]]s where the rules of reality don't always apply, like mines where emeralds grow like moss. This, too, could have been a warning, but the clan rulers were dazzled by wonder and opportunity. Expeditions moved into these upper levels, establishing colonies in the Realm Below. Miners began working the ancient veins, and smiths brought some of the forgotten foundries back online.
!! The War Below
For a time, it seemed like a golden age. No one knows exactly
what brought it to an end. It may be the fault of adventurers
and explorers who pressed too deep, ever searching for
greater treasures. Or it could be that [[Dyrrn]] and its minions
were watching the [[Mror|Mror Holds]] expansion all along, waiting for
the civilian population in the subterranean colonies to
reach a critical level. At first, scouts brought back reports of
newly exposed tunnels and chambers, of passages coated
with unnatural fluids and strange things growing among
mushroom gardens. Then the scouts stopped returning and
the first wave of attacks began. Squads of [[dolgrim]]s. [[Chokers|choker]]
lurking in the shadows. [[Soldorak]]hold faced howling mobs
of [[derro]]—possibly the twisted survivors of [[Noldrunhold]], the
Lost Clan. Strange plagues and implacable [[ooze]]s spread through the sunken colonies
of [[Londurak|Lanarak and Londurak]]. It was a time of terror, but also determination:
whatever this unknown threat was, it must be held in the
depths at any cost.
Armies were rallied, clans sending their finest soldiers into
the depths, while every citizen trained with axe and hammer
in preparation for [[dolgrim]] raids or a more dramatic surface
assault. While some [[clans|Mror clan]] considered withdrawal, pride and
a hunger for the wealth and wonders still hidden kept the
[[dwarves|dwarf]] fighting. They believed if they didn't hold them below,
the [[aberration]]s would merely follow them to the surface.
The years that followed were a time of endless terror and
uncertainty. As the horrors were driven back in one hold, they
would strike with redoubled force in another. New threats
appeared with alarming regularity; [[dolgrim]]s and [[derro]] were
common foes, but there was no telling when a previously
unknown danger would rise.
Two major discoveries shaped the second decade of the
war. The first was the revelation of the enemy the [[Mror|Mror Holds]] faced:
the [[daelkyr]] known as [[Dyrrn]] the Corruptor. In 943 YK, the
[[illithid|mind flayer]] Dyrrashar seized the colony below Loran's Gate in
[[Soldorak]]hold, and broadcast a psychic message known as
''Dyrrn's Promise''. This telepathic message didn't take the
form of words, and attempts to transcribe it have produced
widely varied translations. But the thrust was this:
<<<
“You have drawn the gaze of the Overmind.<br/>
You walk the Foul Labyrinth.<br/>
Everything will change.”
<<<
Clan [[Soldorak]] eventually retook
Loran's Gate and forced Dyrrashar to retreat, but the illithid
general has risen elsewhere and remains at large today. None
who experienced Dyrrn's Promise can ever forget it.
Even as Dyrrn's Promise spread fear, a second discovery
brought hope. Following grave losses, Clan [[Londurak|Lanarak and Londurak]]
withdrew its forces to the surface. The Londurak prepared
their defenses for a surface attack... but it never came. This
pattern was repeated in other spires and holds; though the
reasons are unclear, Dyrrn's forces won't pursue their enemies
beyond Sol Udar.
!! Stalemate in the Depths
Nobody's sure why the [[aberration]]s avoid attacking the surface
in force. Sages theorize it's tied to the wards that bind [[Dyrrn]]
within its [[demiplane]], and the aberrations only venture so far from the realm of their master. Or perhaps it's just a tactical
choice. Regardless of the reason, the war has been in a
stalemate over the last few years. But many sages believe that
complacency is foolish, and until they know with absolute
certainty what keeps [[Dyrrn]]'s forces from rising to the surface,
they can't know their protection will last. And even if the
[[dolgrim]] hordes won't leave the tunnels and there's no threat
of a large-scale assault, the Slithering Lord could be unfolding
more subtle schemes.
[[Londurak|Lanarak and Londurak]]hold and [[Tordannon|Toldorath and Tordannon]]hold have both pulled back
from the war, fortifying all passages to the Realm Below and
forbidding any traffic with the depths; they ignore the Realm
Below, believing that if they don't poke the hornet's nest, the
[[aberration]]s won't threaten them. Most of the other major clans
maintain lines in the depths, defending claimed mines and
colonies with steel and blood. These territories are secured
by heavy fortifications, strong enough to repel attack, though
serving on the line is a dangerous job. But the [[dwarves|dwarf]] aren't
trying to press beyond their current lines, for if they venture
across it, their fate is unknown.
The future of the war remains unclear. Many of the [[clan|Mror clan]]
lords yearn to press deeper. But there have been all too
many casualties over the past few decades, and there is still
considerable fear that the current lull is a trick—that [[Dyrrn]]
is building forces for a renewed assault. And no one knows if
there is a way to win the war once and for all, or if it's just a
matter of advancing the line another hundred feet. Ultimately,
it's up to the DM to decide whether the war remains as a
lurking threat, or if it heats up and dominates the story.
!! Ripples on the Surface
While the [[aberration]]s have yet to come to the surface in force,
the war is ongoing, and it can be felt on the surface. Individual
aberrations occasionally come to the surface; a lone [[choker]]
might carry out a spree of killings, or an [[illithid|mind flayer]] could rise to
work with a [[dwarf]] cult. Psychic attacks, unnatural diseases,
and other threats can emanate from the depths.
In the past three decades, the touch of [[Dyrrn]] has become
seen even in the children born to the [[Mror|Mror Holds]] dwarves. Very
rarely, an infant born to ordinary parents is different. Known
as [[ruinbound]] dwarves, these unusual infants are born with a
personal [[symbiont]] bound to them, along with other unnerving
mutations—and unexpected powers.
The Influence of Dyrrn table below gives examples of threats that
could arise either in a subterranean colony or on the surface
itself. These things aren't common, and clan soldiers are ever
wary to repel threats, but these ideas could drive a story set in
a Mror community.
!!! The Influence of Dyrrn
| !<<dr d8>> |!Event |
| 1 |''Haunting Whispers.'' The people of a community are tormented by telepathic whispers. These whispers may be the fears or cruelest thoughts of neighbors, or they may reveal and reinforce the fears of the listener. While there's no physical effect, a plague of whispers can trigger discord and violence. The whispers could be blocked by an effect that prevents telepathic communication (such as a [[ring of mind shielding]]) or that prevents a creature from being charmed by an [[aberration]]. |
| 2 |''Gray Water.'' An infected well or a point within a sewer system begins to spawn [[gray ooze]]s. |
| 3 |''The Frenzy.'' A psychic curse takes root in a victim, driving them to irrational violence. A victim of the Frenzy immediately pursues a course of action that leads to violence. Some retain enough self-control to seek out an existing enemy; others simply turn on the closest creature that annoys them. If someone cursed by the Frenzy strikes another creature with a melee attack, the target must resist the psychic curse or contract the Frenzy. If someone kills a victim of the Frenzy, they are also at risk of infection themselves. The Frenzy can be blocked by any effect that prevents a victim from being charmed by an [[aberration]], or removed instantly by the [[greater restoration|restoration]] spell. Otherwise, if a victim is restrained and prevented from acting on their violent impulses, they may overcome the Frenzy after a few hours. |
| 4 |''Alien Persona.'' This victim of this psychic curse believes that they are an [[aberration]], such as a [[mind flayer]]. They attempt to follow their unnatural instincts, such as killing people and consuming their brains. This curse isn't contagious, but victims can be cunning and may be able to hide the affliction. [[Greater restoration|restoration]] can remove the curse. |
| 5 |''Cultists.'' A [[cult of the Dragon Below|Cults of the Dragon Below]] takes root in the local community. [[Transcendent Flesh]] and revenant cults are common options. A cult may be led by an [[intellect devourer]] or [[mind flayer]], or spring up on its own. |
| 6 |''Freshly Formed.'' An [[aberration]] is spontaneously created by the [[transmutation]] of local creatures. [[Dolgrim|dolgrim]]s could be formed by fusing two [[dwarves|dwarf]] together; a [[gibbering mouther]] could be the result of victims being liquefied and blended together. These creatures need not look like the traditional aberrations, but can use the standard stat blocks. |
| 7 |''Lone Hunter.'' A single intelligent [[aberration]]—an [[intellect devourer]], a [[dolgaunt]], or even a [[mind flayer]]—moves through a community. It may kill seemingly at random, or it could have a mission it seeks to fulfill. |
| 8 |''Mindstorm.'' A wave of psychic force drifts through a community in the same way a hurricane might. Those caught in the area of effect must resist the storm or suffer the effects of the [[phantasmal force]] spell. The area of effect, duration, and strength depend on the intensity. A minor storm could affect a 20-foot radius, and only last twenty seconds; a powerful storm might cover hundreds of feet and last for up to an hour. Likewise, the visions vary. Sometimes a mindstorm is bizarre, but not harmful; inanimate objects might melt or move, and time could run backward or slow down. Another mindstorm could take the form of an attacking horde of [[dolgrim]]s—and due to the effects of [[phantasmal force]], these attacks can be deadly. |
It's important to recognize the scope of the conflict in the
depths. No one knows the full size of the Realm Below, though
it appears to stretch across the [[Ironroot Mountains]], and
connects to multiple [[demiplane]]s in [[Khyber]]. There's a good
chance it exists below every major [[Mror|Mror Holds]] city, but not every
spire has broken through and made a connection to Sol Udar.
When creating adventures in a Mror city, decide if there is an
established passage to the Realm Below; if so, is it a simple
passage, or is there a subterranean fortress or colony? In
a spire with no known connection, a cult could be secretly
digging to try to reach their aberrant masters. Or a clan could
have opened a passage beneath its keep but lacked the courage
to explore it—a job for adventurers.
!! Venturing Below
To an outsider, the idea of pressing into the Realms Below
may seem like madness, but several factors drive the ongoing
[[Mror|Mror Holds]] presence in the depths. The first is a hunger for the
wonders that lie below. The ancient dwarves possessed
the ability to craft legendary objects and artifacts. They
understood [[Khyber]]'s systems of [[demiplane]]s in a way even
the [[Dhakaan]]i haven't mastered; many clan lords dream
of bottomless mines or resources that can't be found in
the natural world. Beyond the innate desire for these
things, for the Mror, it's a matter of pride. Sol Udar is
the work of their ancestors. The knowledge that it
holds, the untold wealth, this is their birthright. It's
a burning reminder that they could be more than
they are now—they could be greater than the [[Five Nations]] or the [[Aereni|Aerenal]]. Additionally, many dwarves are driven by their desire to know the story—to understand who their ancestors were and what became of them.
If a player character is a Mror noble, the Realm Below can be a tempting opportunity for advancement. The [[clans|Mror clan]] hold all lands below their territory. If a noble with a stalwart band of allies can secure an outpost in Sol Udar and fortify against the
forces of [[Dyrrn]], they can claim it as their personal
estate. This could be a remarkable keep for a party of
adventurers—if they are powerful enough to maintain
it! The table below contains some
more story hooks for why adventurers might delve into the Realm
Below.
!!! Realm Below Story Hooks
| !<<dr d6>> |!Event |
| 1 |An explorer possesses a wondrous relic from the Realm Below. But terrible things keep happening around them. Is the relic cursed, or has another threat followed the traveler? |
| 2 |A relative who's settled in a subterranean colony sends a disturbing letter; when the adventurers investigate, soldiers have sealed off all contact with the colony. What are the [[dwarves|dwarf]] afraid of? |
| 3 |A [[clan|Mror clan]] champion was lost in Sol Udar a decade ago, along with the legendary weapon they carried. Does the clan want it back, or do the adventurers discover it on their own—and learn what became of the fallen hero? |
| 4 |An infectious curse is spreading in a community; the only cure lies in the tunnels below. |
| 5 |A character is troubled by vivid visions of a sacrifice occurring in Sol Udar. Are these visions of the past, or the future? |
| 6 |The ruling clan is preparing for a major offensive, pushing the defensive line of a colony down multiple levels, but the commander is worried that there are cultist spies among her staff. Can the adventurers expose the traitors? Or is it the commander herself who's fallen under [[Dyrrn]]'s influence? |
The lines between regions secured by the [[Mror|Mror Holds]] and those
held by [[Dyrrn]]'s forces are clearly marked. As the [[aberration]]s
generally don't come to the surface, there are places where
the uppermost passage has simply been sealed with magic
and steel. In other places where the dwarves have established
colonies, the edge of the colony is heavily fortified and patrolled
by soldiers, ever alert for some new attack. In most cases,
soldiers won't prevent someone from proceeding into the
depths—but anyone returning goes through careful scrutiny to
ensure they haven't been infected by unnatural influences. And
if an explorer has returned with treasures, it's considered polite
to offer a gift to the guardians.
!! Into the Silent Halls
The Realm Below blends the civilization of Sol Udar with
the alien touch of the [[daelkyr]]. The dwarves of Sol Udar were
an advanced civilization employing arcane science beyond
that currently possessed by the [[Five Nations]]. The halls were
shaped by elemental magic—an improved form of the [[move earth]] spell—and reinforced to be stronger than any natural
stone. Barring any alien influence, the air is renewed by
magic and remarkably fresh; a permanent [[prestidigitation]]
effect keeps these halls clean after thousands of years and
untold conflicts. Ultimately, venturing into this environment
can be somewhat eerie: though there may have been a brutal
battle there just months ago, the halls are silent and pristine.
Widespread magic was a part of daily life in Sol Udar.
Explorers might find a chamber where illusory music begins
to play as soon as someone enters, or discover a theater still
performing ancient entertainment. Many doors are sealed by
[[arcane lock]]s, and high-security areas may have self-restoring
[[glyphs of warding|glyph of warding]] or more sophisticated security. The people
of Sol Udar weren't warlike by nature. Their halls contain great
forges and foundries, but many of their wonders are utilitarian.
An Udar kitchen has tools that replicate the heating, chilling,
and flavoring effects of [[prestidigitation]], and might have a built-in [[alchemy jug|Ghallan jug]] to dispense whatever liquids are needed. Of
course, not all enchantments are automatically noticeable, and
many effects require some form of command word or gesture
to activate; modern colonists who have settled in the upper levels of Sol Udar are still struggling to understand the full
capabilities of their new home.
The dwarves of Sol Udar also took advantage of the many [[demiplane]]s that lie within [[Khyber]], identifying passages to them and building around them, just as the people of the surface build around [[manifest zone]]s. A typical demiplane portal is clearly marked and heavily secured, of great potential value—and danger—as they can break the laws of the natural world. Demiplanes are entirely unpredictable in size, some no larger
than a town, with others the size of [[Khorvaire]] itself. Within
a demiplane, time might run differently. Gemstones could
grow on trees. A demiplane can have its own sun, and provide
vegetation and other resources that couldn't be found in any
natural cave. But a demiplane could also hold strange curses,
unnatural diseases, or deadly creatures—or in the case of
[[Dyrrn]]'s [[prison-realm|Palace of Sinew]], all three.
The Realm Below isn't one single contiguous community.
It was an entire nation, one that stretched at least the length
of the [[Ironroot Mountains]]. There are major cities, small
outposts, and long passages connecting them. The Realm
Below likely had some form of rapid transit: Teleportation
circles? Something similar to the [[lightning rail]]? A system tied
to demiplanes? Whatever this was, it has yet to be discovered,
and may lie on the lower levels held by Dyrrn's minions. In
creating a section of the Realm Below for an adventure, the DM
should think about the purpose of this particular area. Was it
an industrial center? A residential community? A hospital? A
prison? If it contains a passage to a demiplane, the nature of
the demiplane should relate to the function of the community; if
it's a hospital, perhaps the local demiplane has alien vegetation
that has remarkable medicinal properties. But what unknown
threats could dwell in the demiplane—threats the ancient
dwarves knew to avoid?
!! Denizens of the Deep
[[Dyrrn]]'s minions have spread throughout the lower reaches
of Sol Udar. Areas inhabited by [[aberration]]s are generally
easy to spot. Often, organic matter covers the surfaces of
the buildings. Explorers have encountered fleshlike coating,
with tendrils of muscle spread out like spiderwebs; organic
fluids that move along the walls, a harmless form of living
ooze; floating, bioluminescent globes that could be neurons
in a vast brain; and other, stranger things. There are strange
smells and sounds. People often experience telepathic static,
hearing thoughts of people around them or having flashes of
alien imagery. Areas infested by the [[daelkyr]] may encounter living traps and hazards. A web-like membranes secreted by the ceiling fall on adventurers. Chitinous
stingers grown by the walls fire at random intervals. These traps can still be evaded by
the standard methods, though at the DM's discretion, unusual
skills could also apply; perhaps an organic poison needle trap
could be disarmed with surgical tools instead
of using [[thieves' tools]].
Dyrrn's specialty is corruption, both mental and physical.
Thus it has created creatures like the [[dolgrim]]s and [[dolgaunt]]s—[[goblinoid]]s physically transformed into monsters, the most
prolific denizens of the dark—as well as the [[derro]], who still
bear some resemblance to the dwarves they once were, but
whose minds have been altered.
Dolgaunts often command units of dolgrims, but dolgaunts
can also be found acting alone or maintaining strange shrines.
Unique dols can have greater abilities. Dols are capable of acting with surprising discipline and precision, but their strategies are often
unorthodox and enigmatic.
[[Derro|derro]] are believed to be dwarves twisted by [[Dyrrn]]'s power. There may be derro whose roots go back to the ancient dwarves who built Sol Udar; however, the common assumption is that the derro are the descendants of the lost dwarves of [[Noldrunhold]]. Other derro could be more recent victims, created from Mror settlers captured in the War Below. The derro are nomadic scavengers who remain
in constant motion, roaming the deep tunnels of the Realm
Below. They completely ignore Dyrrn's aberrations, and seem
to be ignored in turn; one scout reported seeing a derro band
walk through a dolgrim camp, without acknowledgment from
either side. Some scholars believe that the derro can't perceive
the aberrations, and that some believe themselves to be in a
reality in which Sol Udar is still in its time of glory, and the
derro are its lords. They don't appear to serve Dyrrn directly,
but they definitely see all outsiders from above as enemies.
A derro warlord calling himself Lord Mror has repeatedly
attacked Mror colonies; however, it's unclear if this is a single
powerful derro with followers across the realm, or if several
derro savants use this title.
The [[daelkyr]] often hold the most important areas of an Udar
site; as such, these dungeons contain both treasures created
by the dwarves and the organic tools of the daelkyr. However,
the purpose of areas claimed by [[Dyrrn]]'s forces varies widely.
In some cases, there's a clear logic to what these creatures
are doing: [[dolgrim]]s could have seized an ancient foundry and
begun forging weapons. Explorers could find some sort of
spawning pit where new [[aberration]]s are being produced. But
the behavior of aberrations is often alien and inexplicable; a
chamber could contain a giant, beating heart that serves no
apparent purpose, or a pool of liquid that reflects another
location. The inhabitants of the depths are unpredictable,
and aberrations may not have the same biological needs as
natural [[humanoid]]s; for example, [[dolgrim]]s don't need to work
subterranean farms for food.
Some [[aberration]]s are permanently settled in a region, but
others may spill out of portals to [[Dyrrn]]'s domain, and others
may be grown on the spot by the organic matter spread
throughout infested regions, or created from the corpses of
foolish explorers. A [[gibbering mouther]] may whisper with the
voices of the [[dwarves|dwarf]] who ventured into the depths last week.
While [[mind flayer]]s can be found serving any [[daelkyr]], [[Dyrrn]]
the Corruptor is their creator. Sol Udar is thus a logical
place to encounter mind flayers or any creatures associated
with them: [[intellect devourer]]s, [[ulitharid]]s, [[neothelid]]s, and
the like. A neothelid may be an intentional creation,
as opposed to an accidental abomination. Elder brains are
tools used as telepathic anchors, linking local mind flayers,
while the elder brains are linked to Dyrrn itself. In general,
mind flayers serve as Dyrrn's emissaries and lieutenants—directing lesser aberrations or humanoid cults, or engaged in inscrutable research. The most infamous mind flayer is
Dyrrashar, the ulitharid who delivered Dyrrn's Promise. It
has appeared multiple times since then, often leading subtle
attacks against Udar colonies.
Most other threats are encountered in isolation, and almost
any sort of [[aberration]] could be found in the darkness; you can
also use unusual variations of aberrations or [[monstrosities|monstrosity]],
shifting the creature to fit your story. For example, [[beholder]]s
primarily serve [[Belashyrra]], the Lord of Eyes, but Dyrrn could
have beholder servitors with beaks surrounded with tentacles,
as opposed to toothy maws.
! Sol Udar Trinkets
In addition to more valuable treasures that can be found, the following table presents some interesting items, both magical and mundane, that might be found adventuring in the Realm Below.
| !<<dr d12>> |!Trinket |
| 1 |An ancient compass-like tool points unerringly toward a location in Sol Udar. |
| 2 |A scarab-like creature, the size of a small gold coin. If you attach it to your neck, it telepathically projects eerie music into your mind. |
| 3 |A hexagonal playing card of unfamiliar design, bearing the number 5 and the image of a dwarven woman in heavy armor. |
| 4 |A set of living thieves' tools, with flexible tentacles instead of steel picks. |
| 5 |An [[adamantine]] key of ancient design. |
| 6 |An eel-like [[symbiont]] that wraps around your wrist like a bracelet, reducing the effects of motion sickness and hangovers. |
| 7 |A battered locket that contains an animated image of a dwarf. It's possible it's sentient and understands what you say—but probably not. |
| 8 |A leather choker with leech-like mouths on the inside. While attached to your throat, it amplifies your voice to three times its normal volume. |
| 9 |A battered brass mug that chills any liquid placed inside, but with a hole punched through the bottom. |
| 10 |A preserved eye of an unknown creature; the iris still expands and contracts. |
| 11 |A hexagonal metal disk engraved with a Dwarven word that means “play.” When you hold it and speak that word, it loudly plays an ancient marching tune that can be heard up to 60 feet away. |
| 12 |An organic pen made of a leathery substance, with a talon as the nib. It generates ink as you write—which seems to be made of blood. |
The reath vine is a parasite that grows on trees in the [[Eldeen Reaches]]. It is sometimes used as an [[alchemical|alchemist]] or [[spell]] component for any effect that targets plants or [[plant creature]]s.
Red dragons have a reputation for arrogance, even among dragons. These creatures see themselves as kings and emperors, and often view the rest of dragonkind as inferior.
The odor of sulfur and pumice surrounds a red dragon, whose swept-back horns and spinal frill define its silhouette. Its beaked snout vents smoke at all times, and its eyes dance with flame when it is angry. Its wings are the longest of any chromatic dragon, and have a blue-black tint along the trailing edge that resembles metal burned blue by fire.
The scales of a red dragon wyrmling are a bright glossy scarlet, turning a dull, deeper red and becoming as thick and strong as metal as the dragon ages. Its pupils also fade as it ages, and the oldest red dragons have eyes that resemble molten lava orbs.
!! Magic and Breath Weapon
The red dragon can exhale the mightiest fire breath of any dragon. As innate spellcasters, adult red dragons can cast spells such as [[immolation]], [[invisibility]], [[wall of fire]], [[elemental bane]], and [[control winds]].
{{DragonAgeCategories}}
This unusual business is an inn—for [[warforged]]. Warforged do not need to eat,
drink, or sleep, but they can still hunger for camaraderie. The Red Hammer is a place for warforged to gather, make new friends, and exchange stories. The Hammer is owned by two warforged, Blue and Crucible. The official story is that Blue bought the Hammer with a cache of gold she found during the [[Last War]], but in truth it
was paid for by [[Merrix d'Cannith]]. Crucible is one of Merrix's experimental warforged produced in [[Sharn]], and Merrix also wants to provide the warforged with an outlet for social development. Blue and Crucible are on good terms with [[Smith|Pool of Onatar's Tears]], and both support his views as opposed to those of the [[Lord of Blades]].
In addition to companionship, the Hammer is a source for repairs and cosmetic improvement for [[warforged]]; costs are equivalent to those of a house of healing.
The {{!!title}} is a [[Sharn]] street gang of
primarily [[shifter]]s and [[half-orc]]s who live
in the [[sewers|Sewers of Sharn]] below [[Menthis|Menthis Plateau]] and clash
with anyone who invades their territory.
The Red Ring is a massive gladiatorial arena in [[Locksmith Square]], [[Stormreach]]. It is unrivaled in its brutality. To satisfy the desperate and demanding masses of Stormreach, a population living on the fringe of a savage [[continent|Xen'drik]], the Ring offers sport gruesome enough to satisfy even the most bloodthirsty tastes. [[Khorvaire]]’s champions come across the [[Thunder Sea]] to prove themselves during the [[Annual Games]] and instead often get sent home in pieces.
The greatest gladiators of the Red Ring are the [[Bloodbound]], who pledge their very souls to the Red Ring and serve a stablemaster until the day of their death.
Once [[Stormreach]]’s leading entertainment venue and
source of gambling revenue, the Red Ring has fallen in prominence in recent years. Rancorous internal politics at the arena and expanding egos on the [[Blood Council]]
have put the ring at increasing odds with certain powerful interests in Stormreach, but it remains a popular and profitable enterprise and continues to receive the support of the [[Storm Lords]]. If that support were to wane any further, however, the Red Ring could find itself in jeopardy.
!! Specialty Matches
Standard one-on-one and team battles are popular,
but to keep the crowds coming week after week, the
[[Blood Council]] creates all manner of exotic specialty matches.
!!! Beast Match
A real crowd pleaser. One [[Bloodbound]] enters the ring
to face some huge and horrible [[monstrosity]]. Experienced gladiators are expected to do so unarmored, and on occasion,
unarmed. In a new, popular variant, two Bloodbound
battle each other while various monsters are released
into the ring to savage them.
!!! Last Man Standing Match
These meatgrinders always sell out, even though
the admission fees are tripled to cover the massive
losses the stables take. Most stables contribute several
[[Bloodbound]] to these free-for-all melees in which over
twenty gladiators enter the ring, one walks out, and the
rest get carried out.
!!! Death Vat Battle
[[Bloodbound]] battle over tremendous vats of alchemical acid or brackish polluted brine with tentacled monsters lurking within. They must navigate a matrix of metal
poles, shaky gangplanks, and hanging chains as they fight.
!!! Chain Match
In this one-on-one match, both [[Bloodbound]] wear
spiked rusty gauntlets on their left hands tied together
by a 10-foot length of chain. The ring floor is scattered
with pits of poison-coated spikes, walls of fire, and other
hazards. The gladiators can jerk each other about using the chain, but no rules prevent a Bloodbound from sundering the chain.
!!! Hail of Death Match
Hail of death was the first new format developed by [[Malketh Zolark]] since ascending to his father’s position. It is currently wildly popular. Spectators in the front rows of the arena can purchase overpriced crossbows and ammunition from the ring vendors. (No one can bring his own weapons to these bouts.) Spectators use these purchased crossbows to fire upon the [[Bloodbound]] combatants as they fight. These matches are huge moneymakers, both because of the crossbow
fees and the sellout crowds, who love being involved
in the matches.
!!! Razor Chariot Match
In this match, pairs of [[dire tiger|dire beast]]s pull huge chariots about the arena. The chariots are covered in blades, and huge razored saws extend from each wheel’s hub.
[[Deneith]] mercenaries who are armed to the teeth ride the chariots, attacking all [[Bloodbound]] in the arena. The tigers occasionally savage spectators who get too
close, as well.
!! Gladiators of the Ring
Almost any monstrous creature in [[Eberron]] could be faced in the arena. Here are a few sample [[Bloodbound]] for an arena match.
* [[Steel Maw]]
* [[Drenga Sandspur]]
* [[Old Varkaar]]
This tavern caters to members of the
[[Deathsgate]] [[adventurers' guild|Deathsgate Guild]], though anyone can
buy ale here. The tavern has a few special services to
offer that make it particularly popular with its usual
clients. “Redblade” Rraac ([[half-orc]]) owns the tavern. He retired from fighting after his age began to slow him down, and now he
leads the Deathsgate Guild services to the [[Mockery]].
Rraac's wife Myssian ([[human]]) is
a skilled [[alchemist]] who maintains a workshop in the
back of the tavern, and Rraac sells [[wrath]], [[silverhaste|potion of speed]],
and a range of [[poison]]s to his favored clients.
The Redcliff Bay lies the coast of [[Zilargo]] and [[Breland]], near the [[King's Forest]].
The soldiers of the Redcloak Battalion are among the
deadliest warriors in [[Sharn]]. When a situation calls for
extreme military force, both the [[Sharn Watch]] and the
[[King's Citadel]] turn to the Redcloak Battalion. This elite
unit fought in the forefront of the [[Last War]], and the
bards in [[Menthis|Menthis Plateau]] today sing of the exploits of Khandan the Hammer and Meira the Huntress. At the end of the war, the battalion was split up, and one unit was assigned to Sharn. Its [[headquarters|Talain Garrison]] is located in the [[Daggerwatch]] district of [[Upper Dura]], and is led by Captain [[Khandan Dol]].
Many of the members of the Redcloak Battalion resent
being relegated to mere law enforcement, and there is a strong rivalry between the Redcloaks and the [[King's Swords]] of the [[Citadel|King's Citadel]], who generally have less military experience even though they enjoy far greater authority and prestige.
As veterans and heroes of the Last War, many of the
Redcloaks are unfriendly toward travelers from other
nations. As far as the Redcloaks are concerned, the
[[Treaty of Thronehold]] is merely an intermission, and
soon King [[Boranel|Boranel ir'Wynarn]] will come to his senses and finish
the job that [[Wroann ir'Wynarn]] began.
The Redcloaks are absolutely faithful to [[Breland]]: they are willing to lay
down their lives in the service of their nation. Trying
to bribe a Redcloak is a good way to lose a hand.
''District Type: ''Shops<br/>
''Buildings:'' Temple ([[Kol Korran]]), Shrines ([[Olladra]],
[[Onatar]]), average lodging (25), average food (60),
exotic trades (24), upscale trades (120), average
trades (190), poor trades (30), upscale services (30),
average services (60)<br/>
''First Impression:'' Handsome towers of red marble
and granite packed with various shops and crafters
offer a seemingly endless array of goods. The brick
hanging streets are filled with milling customers and the occasional unfortunate begging for copper
and silver.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Overlook]] (west); [[Hope's Peak]] (northeast); [[Daggerwatch]] (south); the [[Bazaar]] (below)
One of the newer districts, Redstone is less than
two hundred years old and many of the respectable crafters from the [[Bazaar]] of [[Middle Dura]] have
moved here in recent years. The architects sought
to overcome the negative perceptions of [[Dura]], and
the stonework is beautiful. Much of it was crafted
using red marble from Rose Quarry, once a thriving [[Cyran|Cyre]] supplier which now lies in ruins in [[Darguun]]. The rest of the towers consist of red granite
and brick. With a host of subtle variations in shade,
the towers present a striking sight, especially in the
light of the setting sun.
Redstone has grown into one of the largest centers for commerce in the city, nearly twice the size of [[Granite Halls]]. Almost any sort of honest trade
can be found in Redstone, from bakers to wigmakers. There are two banks in Redstone, including a [[Kundarak]] [[enclave]] and the smaller Lorrean Bank, a
family business belonging to one of the [[sixty great families|Sixty]] of [[Sharn]]. The district also contains workhouses that draw on the population of [[Overlook]],
including a glassworks and a textile factory.
Redwatch is an island in the [[Lhazaar Principalities]].
The Redwater is a large river in [[Valenar]] that flows past [[Taer Valaestas]] into the [[Bay of Swords]].
The Refuge of [[Irian]] is a vast fortress-monastery, though it has aspects
of a spa as well. It's filled with tranquil groves, soothing baths,
and places to rest and reflect. The fortress walls don't represent
potential conflict, but rather speak to the absolute security of
the place—within its walls, you are safe from all threats. The
Refuge holds healers who can treat your injuries, mediators
who can talk through problems, and sages who may not know
the answers you need, but can point you in the right direction.
This isn't a place where adventures occur; it's where you
recover from your injuries and plan your next move, knowing
that you're safe and that there are answers to every problem. [[Araam]] is the [[Architect]] of the Refuge and embodies the concept of hope.
While not all layers of Araam's realm provide the security
and succor of the Refuge itself, they all can provide comfort
and hope. They don't have the absolute peace of [[Syrania]],
but they make people feel there's hope. Irian has no match
for the [[Immeasurable Market]] of Syrania, so if you're looking
for commerce, the Azure Sky has more options. But for
adventurers who seek a relaxing vacation in the planes, the
Refuge is unparalleled.
The seat of the High Prince [[Ryger|Ryger ir'Wynarn]] and the [[Seadragon|Seadragons]] Principality, Regalport is the grandest city in the principalities. The [[patriarch|Elar d'Thuranni]] of House [[Thuranni]] resides in the [[Regalport Enclave]], and House [[Ghallanda]] has a significant outpost here.
The Pirate Exchange is the largest market east of the [[Ironroot Mountains]]. Despite its name, the authorities crack down on market goods actually obtained through outright piracy; Regalport is the most regulated port in the region. The market features goods from the other islands and the [[Mror Holds]], as well as goods from [[Seren]] and [[Sarlona]]. Recently, tribal art from the [[Tashana Tundra]] [[shifter nations|Culture of the Tashana shifters]] has become a popular mainstay in the market.
The oldest and largest House
[[Thuranni]] [[enclave]] is in [[Regalport]], the capital city of
the [[Lhazaar Principalities]]. This is the home of Baron
[[Elar d'Thuranni]], who divides his time between this
city and a smaller outpost in the [[Dancing Shadows]]
district of [[Sharn]].
<$list filter="[list{!!title}sort[title]]">
<$macrocall $name="tag" text={{!!title}}/>
</$list>
The westernmost city in Karrnath is Rekkenmark,
a community known for its [[military academy|Rekkenmark Academy]]. Once
called the door to Karrnath, thanks to the great
White Arch Bridge spanning [[Scions Sound]], Rekkenmark’s importance fell in the last century, when the bridge tumbled into the sound. Given that the bridge
served as a major artery to the heart of Karrnath,
many soldiers marveled that it stayed intact as long
as it did. Cut off from the west by the river and
surrounded or behind enemy lines for significant
portions of the [[Last War]], this border city suffered greatly
during the conflict.
Rekkenmark’s survival and continued viability is
a testament to Karrnathi stubbornness. Its citizens
still work to bring the city back to its prewar magnificence. The people emphasize the city’s prewar charm, with buildings, temples, and structures surviving from when Karrnath was part of [[Galifar]]. Their
efforts have not seen much success because the loss of
the bridge also destroyed the [[lightning rail]] spanning
it and greatly curtailed commerce and access to visitors. The city’s waterfront cannot replace the bridge’s
access because Rekkenmark sits atop steep cliffs
overlooking the sound. In addition, few elemental
[[airship]]s forgo the relatively near and more important
berths in [[Korth]] to stop at the border city. Despite all
these hindrances, the people refuse to give up; plans
to rebuild the great bridge fill them with hope that
better days lie ahead.
Until the [[Last War]], the
Rekkenmark Academy was the premier military school for well-born sons and daughters all over [[Galifar]]. It offered a full education but focused on
leadership principles, strategy, and warfare, based largely on the lessons of the [[Analects of War]]. Graduating from this school was a mark of pride for a student
and their family.
The [[Last War]] and [[Rekkenmark]]’s isolation all but
destroyed the institute. No parents outside [[Karrnath]]
wanted to send their children to an active
war zone, and few of Karrnath’s noble families were
willing to enroll their children in an academy that
was behind enemy lines for years at a time. The academy was shut down during the war, and enrollment remains low to this day.
!! Arcane Studies at Rekkenmark
While its focus has always been military strategy and martial excellence, since the collapse of [[Galifar]], it has aggressively expanded its mystical studies to augment its strategic efficiency. While still limited in scope, Rekkenmark has top-notch facilities for learning [[evocation]] and [[transmutation]], as well as techniques for weaving [[arcane magic]] with physical combat.
The Rekkenwood is a small forest in [[Karrnath]], near [[Rekkenmark]].
Religion plays an important role in [[Eberron]]. The gods
don't manifest physically, but people of faith believe that
divine forces shape everyday life. Shared beliefs unite
communities and can provide hope in difficult times.
Most Khorvairians acknowledge the pantheon of
the [[Sovereign Host]] and its malign shadow, the [[Dark Six]]. The Sovereign Host was the dominant faith of the
Kingdom of [[Galifar]] and holds sway over most of [[Khorvaire]]—except for [[Thrane]], which favors the Church of the
[[Silver Flame]]. Other religions connect specific cultures
or communities; the [[kalashtar]] observe the [[Path of Light]],
and the [[Undying Court]] guides the [[elves|Aereni]] of [[Aerenal]].
Religion is especially important for a [[paladin]], [[cleric]],
or [[druid]], yet any character can have faith in a higher
power. Following a religion is a way to give your character a deeper connection to the world and a bond to other
members of the community. The Foundation of Faith
table can provide ideas for the source of your beliefs.
| !<<dr d6>> |!Foundation of Faith |
| 1 |You were raised in the faith. Your religion is an important part of your family and community. |
| 2 |Someone you care about—a mentor, a friend, or a lover—introduced you to the faith. |
| 3 |You were raised in a different religion but became drawn to the ideals and beliefs of your current faith. |
| 4 |You never took your faith seriously. Then you made a vow during the [[Last War]], pledging your devotion if a disaster was averted... and it was. |
| 5 |You're devoted to your religion, but you've never been formally educated in its ways. You follow your own personal interpretation. |
| 6 |You had a transcendental experience and believe you have a divine purpose to fulfill. |
Conversely, a lack of faith can also be a meaningful
part of your story. If you don't believe in any divine
power, what caused such doubt? The Rejection of Faith
table offers ideas that can help shape your story.
| !<<dr d6>> |!Rejection of Faith |
| 1 |You believe that the magic of [[cleric]]s and [[paladin]]s doesn't come from deities, but from the caster's inner power or belief. |
| 2 |You come from an agnostic community and give little thought to spiritual matters. |
| 3 |You were once deeply devout, but a tragedy during the [[Last War]] caused you to question your faith. |
| 4 |A personal loss or betrayal shook your faith. |
| 5 |You were spiritually scarred by an encounter with a [[fiend]] or [[aberration]]. |
| 6 |You've created your own personal religion and believe that all the established faiths are flawed. |
!! Religions in Eberron
<ul>
<$list filter="[tag[religion]] -[tag[religion]tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[religion]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[religion]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
From beneath the snow and ice bursts a remorhaz in a cloud of steam, its body pulsing with internal fire. Wing like fins flare from the back of the creature's head, and its wide mouth brims with jagged teeth.
Remorhazes live in arctic climes, preying on elk, polar bears, and other creatures sharing their territory. They can even be found in the icy [[plane]] of [[Risia]], lying in wait in caverns within the [[Boundless Blizzard]]. They can't tolerate warm weather, having adapted to the cold by generating a furnace-like heat within their bodies. When hunting, a remorhaz burrows deep below the snow and ice and lies in wait for the faint vibrations created by a creature moving above it. While hidden under the ice and snow, it can lower its body temperature so that it doesn't melt its cover.
At your touch, all curses affecting one creature or object end. If the object is a cursed [[magic item]], its curse remains, but the spell breaks its owner's attunement to the object so it can be removed or discarded.
The [[Aundair]]ian war-[[wizard]] Reng Nagel is one
of the few arcane casters among the [[Swords of Karrn]] in [[Stormreach]]. The [[Ninth Wands]] despise Reng and have tried to kill him on multiple occasions.
Renosar-Kali, a [[silver|silver dragon]] [[rogue dragon]] in [[Xen'drik]], once witnessed [[Ketheptis]] lay waste to a tribe of [[drow]]. He fell instantly in love with the terrifying [[silver dragon]], hoping to mate with her and raise her children. When he approached the wrathful female, she nearly tore him to pieces. Now Renosar-Kali nurses his wounds and pride. [[Ketheptis]]’s violent rejection fills him with ferocious hate for her, but even so he cannot quell his attraction.
A reparation apparatus enhances the [[mending]] ability of a person with the [[Mark of Making]].
This item fits over the hand like a fingerless gauntlet, and numerous implements sprout from it. A golden Siberys [[dragonshard]] is mounted at the wrist, and engravings on the metal of the gauntlet resemble the pattern within the shard. When the item is activated, the implements spring to life, helping to repair any object the mark wielder is working on.
The [[mending]] takes half the time or less, and can be used to repair breaks or tears up to 5 feet in any dimension. The wearer can reassemble any number of broken fragments of an object which can fit inside a 1-foot cube. The apparatus can also be used to remove scratches and rust from metal objects, and restore burned cloth and leather as long as 80% of it is intact.
An uncommon-rarity version of the reparation apparatus exists that can assist a Making mark wielder to repair breaks or tears up to 10 feet in any dimension, or reassemble any number of broken fragments of an object that can fit inside a 5-foot cube.
''Population:'' Mostly [[human]]s and [[halfling]]s.<br/>
''Character:'' Unhurried and beautiful.<br/>
''Businesses:'' Healing, funerary services, various shops.<br/>
''Key Personalities:'' [[Alhaura d'Jorasco]] and [[Iriakan d'Jorasco]].<br/>
''Overseer:'' Lord [[Yorrick Amanatu]].
//As you pass beneath the great arch, covered in flowering creepers, and enter
Respite, you are surrounded by the sweet scent of blooming flowers.//
//Here the ruins, plant life, and new buildings seem harmonious, one
flowing into the next. Even the floating rubble—fragments of long-forgotten
majesties—play their part, covered in blooming plants and small trees.//
Because of its many majestic ruins and large amount of floating rubble, sages believe Respite was the wealthiest part of ancient [[Stormreach]]. They know it was later the seat of power for [[giant]] chieftains and pirate lords. These past glories now exist only as monuments and graveyards: the tombs of pirate captains, the mausoleums of [[giant]]s, the wreckage of old thrones. Today the district is devoted to healing and funerary rites.
For adventurers and explorers, Respite is a place where they can recover their strength and equip themselves, and the ancient tombs beckon, elaborately warded but rich with treasure. Sometimes subsidence destroys one tomb but reveals another, and old dangers emerge into the realm of the living.
!! Wards and Noteworthy Locations
* [[Stormhaven]]
** the [[Aurum Lodge]]
** [[Coldwake Pond]]
* [[Delera's Watch]]
* the [[Drowning Sorrows Tavern]]
* [[Empty Handed]]
* [[Feather's Fall Apothecary]]
* the [[Garden of Respite]]
* [[House Jorasco Enclave|Jorasco Enclave (Stormreach)]]
* the [[House of Wizardry]]
* the [[Open Palm Inn]]
!! Adventure Hooks
* Respite’s [[undead]] problem seems endless; when one undead creature is destroyed, another rises within days. In newer tombs, traps and wards are as much to keep the undead within as they are to keep tomb robbers out. House [[Jorasco]] believes that something within [[Delera Omaren]]’s tomb is preventing the dead from resting in peace. Only recently have the means been found to open the tomb’s great door. Someone needs to venture within and put an end to this plague of undeath.
* Someone is meeting sun-hating representatives from the [[Undercity]] in the [[Garden of Respite]]. The Storm Lords want this investigated to the fullest extent; it could represent a threat to the city and to their dominion.
* The herbalists of Respite regularly bring back plants from the continent’s interior for examination. This time they have brought back something dangerous, something that is growing rapidly and corrupting the [[Garden of Respite]]’s other plants, making them poisonous or carnivorous. Brave volunteers are needed to venture within before the entire district is overgrown.
!! Overheard in Respite
//“All I’m saying is the [[Karrn|Karrnath]]s are living around that
temple of [[Vol|Blood of Vol]] day in and day out, and I’ve yet to see them
come to any harm. I mean, sure, they’re a scowling
bunch, but they haven’t all been devoured by demons
or raised as the walking dead either, have they?”//
//“Five copper will get you most places, and much faster
than you can walk through those streets at this time of
day. That’s five copper for all of you. What do you say?
Hop aboard.”//
//“It’s too clean here—everything gleaming like it was
new. This is a city of ruins, and they’ve completely
spoiled the atmosphere by scrubbing the grime off the
stones. How are you supposed to appreciate how ancient
this place is if moss and lichen isn’t on everything?”//
This shining golden circlet glows with holy light. When worn, it hovers above the wearer's head like a halo.
While worn, this halo gives the wearer an intense holy aura. If the wearer is capable of casting [[divine magic]], they can cast [[divine favor]] and [[radiant wave]].
Priests of the Restful Watch specialize in embalming, funerals,
and cemetery maintenance. They can be found in every major
city in the [[Five Nations]], and even smaller towns may have a
devotee of the Watch tending the boneyard. The Restful Watch
maintains that the souls of the dead pass through [[Dolurrh]] into
the realm of the [[Sovereigns|Sovereign Host]]—unless they are snatched by the
[[Keeper]]'s greedy talons. One of a priest's most important duties
is helping bereaved choose appropriate grave goods or sacrifices
sufficient to distract the Keeper and ensure the deceased's soul
reaches Dolurrh. For a simple person with few achievements,
a single coin might suffice. But the more remarkable the
deceased, the greater interest the Keeper will have in their
soul—requiring a more significant sacrifice to distract him.
Faithful of the Watch rarely discuss another aspect of their
faith with outsiders—that once a soul rises to the realm of the
Sovereigns, it can never return. The Restful Watch believes that
if [[Aureon]] knows that a dead hero will be needed in the future,
he has the [[Keeper]] snatch the soul before it reaches [[Dolurrh]], so
it can be restored when the time is right. Thus, while the Restful
Watch primarily reveres Aureon, they also understand and
respect the Keeper, and believe that he serves a vital purpose.
!! Player Character Options
Members of the Watch often serve as mediums and exorcists,
considering it a sacred duty to lay restless spirits to rest.
The Restful Watch believes that Aureon is preserving the souls of heroes in preparation for an apocalyptic conflict that lies ahead. It's said that this will involve
the collapse of the [[Silver Flame]] and the subsequent unleashing
of the dreadful [[overlord]]s. You may have been sent out in the
world to watch for signs that this conflict is coming to pass;
this could require you to investigate the [[Mournland]] or clash
with the [[Lords of Dust]].
The Restful Watch also occasionally identifies people they
believe [[Aureon]] has marked as a hero whose soul will be
preserved. This could be one of your fellow adventurers—and
as an acolyte or sage of the Restful Watch, you've been assigned
to follow this person around, chronicling their life and making
sure to perform the appropriate rituals when they die. //“Don't mind me, I'm just going to follow you around until your heroic death. Trust me, you're going to accomplish amazing things!”//
With a touch, you restore a creature's health by removing a temporary or mild affliction. These include temporary blindness or deafness, mild poisoning, or common diseases.
If you can cast rare-tier spells, you can cast this as such to remove more serious afflictions, including petrification, curses, extreme exhaustion, or magical diseases. Performing a greater restoration requires the expenditure of material components worth about 10c.
This spell requires a one-hour ritual and 100c worth of ritual components, which are expended.
You touch a dead creature that has been dead for no more than a century, that didn't die of old age, and that isn't [[undead]]. If its soul is free and willing, the target returns to life.
This spell neutralizes any poisons and cures nonmagical diseases afflicting the creature when it died. It doesn't, however, remove magical diseases, curses, and the like; if such effects aren't removed prior to casting the spell, they afflict the target on its return to life.
This spell closes all mortal wounds and restores any missing body parts.
Coming back from the dead is an ordeal. The target must spend at least a week recovering before returning to their former strength. In addition, casting this spell to restore life to a creature that has been dead for one year or longer taxes the spellcaster greatly. For up to 24 hours, you can't cast spells again, and are at a disadvantage for all actions.
Performing this spell is risky; drawing a spirit back from [[Dolurrh]] might catch the attention of a Dolurrhi [[marut]], or even bring back the wrong spirit, causing a ghost to manifest or ending up with a hostile personality in your friend's body. This is why [[Jorasco]] healers capable of resurrection typically cast [[augury]] first, and will refuse service if the result is "woe". For more information, see the "Concerning Resurrection" section of [[Dolurrh]].
While holding this tuning fork, you can tap
it against an instrument and cause it to be instantly tuned.
''Color:'' Pale blue<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Scribing|Mark of Scribing]]<br/>
''Associated Plane:'' [[Thelanis]]
The smallest of [[Eberron]]'s [[moon]]s, Rhaan looks more like a bright star. When viewed with a spyglass, one may see a series of ridges that vaguely resemble scribblings on a page. The [[druid]]s say that Rhaan empowers creative thought, and they believe that dancers, musicians, poets, and artists of all stripes draw inspiration from the Book.
Rhashaak is an ancient [[black dragon]] and guardian of the wards that bind the [[overlord]] [[Masvirik]], in its prison in [[Haka'torvhak]]. Although he remains bound to that duty, he has been corrupted by his task, and serves as the voice of the archfiend. Today, dragon magic keeps the presence beneath the volcano quiet, but
Haka'torvhak is home to lesser [[fiend]]s that are subject
to Rhashaak’s will.
The [[Poison Dusk]] has worshipped Rhashaak for generations.
Rhesh Turakbar is [[minotaur]] [[warlord]] of [[Droaam]] who commands a clan of [[demon]]-worshipping barbarians from the fortress of [[Turakbar's Fist]]. He is a massive creature covered in dark fur and scars, as well as fiendish body modifications.
Rhesh follows the demon lord known as the Horned Prince, thought to be an aspect of the [[Rage of War|Rak Tulkhesh]]. Many of
the victims of Turakbar raids are brutally sacrificed
to slake the blood thirst of the [[overlord]] of [[minotaur]]s.
Rhesh and his followers are said to wield [[demon]]ic
power bestowed by their dark lord. They believe the Horned Prince's favored servants are the [[goristro]]s, and file their teeth to jagged points to better resemble them.
Though the [[Daughters of Sora Kell]] tolerate Rhesh Turakbar, they and the minotaur
are not strong allies. However, the warlord’s bloody
sorties into western [[Breland]] are useful to the hags,
since they provide critical information on the state of
Breland’s defenses—and stoke the fear of a full-scale
[[Droaam]] invasion that grips that land.
The Rhiakelne River in [[Sarlona]] flows from [[Kelneluun]] into [[Rhialuun]], connecting the continent's two massive inland lakes.
Rhialuun is a large inland sea in central [[Sarlona]], located between the [[Riedra]]n provinces of [[Rhiavhaar]] and [[Nulakesh]].
The coastal nation of Rhiavhaar was the homeland of
[[Lhazaar]], the "explorer" who paved the way for the human
settlement of [[Khorvaire]]. The sailors of Rhiavhaar often
took to slaving and piracy, and Rhiavhaarian ships were
feared throughout the [[Sea of Rage]]. Today this region is the
westernmost outpost of [[Riedra]], and authorized trade with
[[Q'barra]] and the [[Lhazaar Principalities]] passes through
the old Rhiavhaar port of [[Dar Ulatesh]]. Rhiavhaar is an
important hub for the Riedran navy—known as the [[Harmonious Sail]]—and a gateway to Khorvaire, so significant military forces are deployed here. The [[Thousand Eyes]] are
especially active in this region.
The province of Rhiavhaar includes the [[Aventus Islands]], which serve as a staging area for the Harmonious Sail. These islands hold ruins of the lost [[aventi]] nation,
but the [[Riedrans]] shun these areas.
Although the province seems to be under the thumb
of the [[Inspired]], having a high concentration of spies and
secret police, the Rhiavhaarians aren't as devoted as the
[[Corvagura]]ns. A variety of dissidents hide here.
The Rhiavhaar River in the [[Riedra]]n province of [[Rhiavhaar]] flows from [[Rhialuun]] into [[Rhlash Bay]].
Rhlash Bay is part of the [[Sea of Rage]] off the west coast of [[Sarlona]]. It is fed by the [[Rhiavhaar River]]. The [[Thousand Eyes]] of [[Riedra]] observe all ship activity in the bay via their fortress at [[Kintam Rhlash]].
The Rhlia Forest is locaed in central [[Corvagura]], [[Riedra]], near the city of [[Dar Myan]].
The largest city in [[Darguun]] serves as the seat of Lhesh
[[Haruuc Shaarat'kor]]. As the hub for trade, travel, and
diplomacy, it also a provides a haven for fugitives and
smugglers.
The heart of Rhukaan Draal was once a frontier [[Cyran|Cyre]] town; over the
last two decades it has grown into a sprawling [[goblinoid]]
metropolis. Rough yet functional [[Ghaal'dar]] architecture
creates a city of patchwork styles and materials. The most
impressive structure is the royal palace; dissatisfied with
the work of his kindred, the Lhesh [[Haruuc|Haruuc Shaarat'kor]] hired the stonemasons of House [[Cannith]] to build his home and fortress, called //Khaar Mbar’ost//, or Red House (literally, “blood-colored fortified dwelling”). This ten-story tower of red granite dominates the skyline of Rhukaan Draal. Virtually all the [[hobgoblin]] clans have representatives at Haruuc’s court, though the [[Dhakaani clans|Heirs of Dhakaan]] maintain a particularly low profile; their agents monitor events for their lords but try not to attract attention to the activities of their clans.
House [[Deneith]] occupies
a large [[enclave]] in Rhukaan Draal, as well as maintaining the nearby [[Gathering Stone]]—a fortress that serves as a staging area for goblins interested in selling their
services to the house. House [[Tharashk]] has also established an outpost here, but their racial heritage works against them; throughout the history
of [[Dhakaan]], [[orc]]s and [[goblin]]s were mortal enemies,
and the [[Darguuls|Darguun]] still harbor strong prejudices
against orcs and their kin.
This magically gifted member of the [[Broken Throne]] in [[Dar Jin]] might be a street sweeper, a dock worker, a clerk in the
[[Mercantile Center]], or in any number of other guises. If
the PCs come to his attention, Rhuun might seek them out,
perhaps asking their help in exploring a ruin of the [[Twelve Kingdoms|Sarlonan province]]. Of course, while Rhuun claims to be a Broken Throne devotee seeking to restore lost knowledge, he could in fact be one of the [[Heirs of Ohr Kaluun]]—in which case he
could be considerably more powerful and dangerous.
''Capital:'' [[Durat Tal]]<br/>
''Hallmarks:'' [[Inspired]], [[psionics]], agriculture, peace, [[monoliths|hanbalani alta]], [[crysteel]]
Monolithic Riedra, also called the “Land of Unity”
and the “Land of the Inspired,” now stands where
once many human nations squabbled for power.
Riedra is ruled by the [[quori]]—spirits of nightmare who
reached out from [[Dal Quor]], the Region of Dreams, to
dominate [[Sarlona]] through psionic obfuscation and
control. Although Riedra appears to be peaceful and
orderly, this image is a lie perpetrated by the [[quori]],
who possess the [[Inspired]] leaders of Riedra.
!! History of Riedra
Three thousand years ago there were a [[dozen kingdoms|Sarlonan province]] in
[[Sarlona]]. Today there is only one: the empire of Riedra.
The change began some fifteen hundred years ago, when
the [[quori]] first came to Sarlona. Initially, the quori spirits
could not completely dominate their hosts. Instead, they
could only whisper into susceptible minds, fanning ambitions and aggravating existing feuds. Within two centuries, Sarlona had collapsed into [[chaos and war|Sundering]]. By this point,
the quori had full control over a handful of hosts, enabling
them to produce the first of the [[Inspired]]. These [[psions|psionics]]
and psychic warriors stepped into the political void, using
their mental powers to systematically seize control from
the weakened warlords.
They proclaimed themselves to be souls inspired
by divine forces, sent to guide [[Sarlona]] to a new age of prosperity and glory. All they required was absolute loyalty. It took another two centuries of mental manipulation, military conflict, and pure guile, but when the
battles finally ended, the [[Inspired]] held sway over all
of lowland [[Sarlona]]. They named this empire Riedra.
For the next thousand years, the Inspired consolidated
their power, strengthening their hold on the people
of Riedra. They purged the land of any traditions that
could be a threat to their power—notably any form of
magic, which could provide the people with a counter to
the natural [[psionic|psionics]] powers of the Inspired—and hunting down the [[kalashtar]], who had unwittingly shown the
[[quori]] the path to [[Eberron]]. Some of their enemies took
refuge in the mountains of [[Adar]]; others fled to [[Khorvaire]], settling in the kingdoms of the [[Five Nations]] or
establishing new colonies in the [[Shadow Marches]] or the
[[Demon Wastes]].
For the past thousand years, the borders of Riedra have
been closed to foreigners. Even today, the [[Inspired]] have
no interest in allowing the people of other nations to spoil
their terrestrial paradise. But after centuries of scheming
and planning, the Inspired are finally beginning to turn
their attention to [[Khorvaire]], and Riedran ambassadors
can be found in courts across the continent.
!! Riedra Today
The Inspired hide their secrets well. Those who have
managed to breach the borders of Riedra speak of titanic
monoliths that lie within. The sages of the [[Twelve]] believe
that these monoliths enhance the psionic powers of the
Inspired, drawing on the mental energy of the populace
in order to supply their masters with vitality.
The [[people of Riedra|Riedrans]] follow the [[Path of Inspiration]] and believe that the [[Inspired]] are divine avatars, sent to guide and protect their nation. Most are willing to die for their Inspired lords. Most communities are agricultural villages, designed to be as self-sufficient as possible. Inspired overseers manage the work force. A
vast fortress-metropolis at the center of each web of villages
is home to the bulk of the armed forces of the region and
the high-ranking Inspired nobles.
!! Interesting Things about Riedra
* The members of the sinister network of the [[Dreaming Dark]] serves as the eyes of [[Dal Quor]]. They are spies, saboteurs, and psychic assassins. These agents receive their orders directly from the [[quori]] on Dal Quor and have considerable authority among the [[Inspired]].
* Where the Dreaming Dark works to undermine other civilizations, the members of the [[Thousand Eyes]] protect Riedra itself. They observe the people of Riedra, seeking any sign of internal dissension or outside infiltration. Any time a threat is identified, the Eyes strike without warning or mercy.
!! Everyday Psionics
In [[Khorvaire]], [[arcane magic]] is part of everyday life; [[magewright]]s are found in most villages. In Riedra, both magic and [[psionic|psionics]] power are tightly controlled
and largely confined to the [[Inspired]] and the [[Chosen]].
However, a few psionic effects have an impact on daily
life. For the people of Riedra, such wonders are proof of the miraculous power
of their benevolent overlords.
All of these functions draw power from the [[hanbalani alta]]s, the massive monoliths spread across the nation. If a
monolith is shut down or destroyed, any community tied
to it loses access to these functions.
These are the most common effects, but the
[[Inspired]] can develop new techniques, and you should
feel free to invent effects unique to a specific bastion or
village. A bastion might have an inner sanctum shielded
by an impenetrable wall of ectoplasm; the only way to get
past this field is to shut down the local monolith.
* [[Riedran climate control]]
* [[crystal illumination]]
* [[dreamshaping]]
* [[psionic scry shielding]]
* teleportation between bastion cities and fortresses
* the [[Soothing Voice]]
!! Provinces, Spheres, and Bastions
The eight [[provinces|Sarlonan province]] of Riedra are divided into territories known as "spheres". A sphere is a circular region centered on a fortress-city called a bastion, which is ruled by a particular [[Inspired]] lord. The territory takes its name from its master—the city of [[Durat Tal]] is in the Sphere of [[Surasek]],
in the province of [[Corvagura]]. All Inspired hold the title
of Lord or Lady; the ultimate leader of a bastion carries
the title of Eidolon.
The typical bastion is a metropolis, and many of them
rival [[Sharn]] in population. They are centers of industrial
production, supporting the bulk of a sphere's troops.
Surrounding a bastion is a network of villages,
spread out in as orderly a manner as possible, taking
environmental factors and resources into account. A
sphere contains dozens of villages. Most villages focus
on agriculture and simple industry. Although some
variance in styles and customs exists from province to
province, villages within a sphere are virtually identical. No thorps, hamlets, or towns can be found—when a
populations rises to a sufficient level, the Inspired draw
off the excess to create a new village.
Riedran villages are functional and ascetic in
design. The [[community|Riedrans]] is centered around a building
that serves as a dining hall and a public assembly, where
people gather to listen to the sermons of the local priest
or to hear stories of the glorious deeds of the [[Inspired]].
Villagers live in communal dormitories, with separate
houses for children.
While [[Riedra]] has no [[lightning rail]], villages and
spheres are linked by a comprehensive network of maintained roads. The [[Inspired]] also have a secret system of psionic [[teleportation circle]]s at their disposal, passing through the central hub of [[Durat Tal]]. The number of gates is
limited. The [[Inspired]] can teleport cargo directly from
[[Dar Jin]] to Durat Tal, but getting those goods to the village of Keloor requires a caravan.
!!! Notable Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]:filter[get[text]length[]compare:integer:gt[300]]">>
!!! Notable Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[300]]">>
!! Who Rules Riedra
The rulers of Riedra are the [[quori]]. All important decisions concerning the fate of the nation are made in [[Dal Quor]]. The bastion lords don't gather in Riedra to debate
policy, because such councils are held in Dal Quor. To
a foreigner, it seems that the bastion lords and generals
of the [[Harmonious Shield]] operate unilaterally; however,
they all act in perfect accord with the plans formulated
in the Region of Dreams.
While the destiny of Riedra is set in dreams, a complex
bureaucracy manages its daily affairs. The [[Inspired]] hold
the top tier. A powerful Inspired noble rules each bastion
city, and Inspired serve as generals, ambassadors, inquisitors, and high ministers. Although mighty Inspired are
rare, lesser Inspired serve throughout society, in positions
where trust or psionic power are required.
Beholden to the Inspired, the [[Chosen]] dedicate themselves to being worthy of inhabitation by an [[il-altas|Path of Inspiration]]. They manage the bulk of the administration of Riedra, also serving as officers in the military. Chosen overseers govern most villages. The most important positions are granted to
Chosen who served as Inspired before their quori spirits
moved on to other hosts; after decades of possession, the
minds of these individuals have been molded by the quori,
and they are fully trusted by the overlords.
Whether [[Inspired]], [[Chosen]], or commoner, [[Riedrans]]
serve in one of four groups: the [[Unity]], the [[Thousand Eyes]],
the [[Harmonious Shield]], or the [[Dreaming Dark]].
See also [[Laws of Riedra]].
!! Riedra and Khorvaire
The first contact between the [[Five Nations]] of [[Khorvaire]] and Riedra occurred
on the neutral ground of [[Xen'drik]], and much trade has
passed through this gateway. During the [[Last War]], Riedra
provided nonmilitary assistance to many of the warring nations. [[Inspired]] ambassadors came to the courts of the Five Nations, occasionally serving as mediators
between opposing forces. Seen as impartial outsiders,
they're respected for their apparent wisdom and empathy.
During this time, the [[Dreaming Dark]] gained a foothold
in Khorvaire. For the last century its agents have been
spreading across the continent, sowing dissension and
subverting agents for future use.
Today, [[Inspired]] ambassadors can be found in every
major metropolis and many of the lesser large cities of Khorvaire.
Most ports have small Riedran communities. Riedran
goods are becoming more common. On the sordid side of trade, the sale of [[dreamlily]] has become a major industry in the underworld of Khorvaire.
While the Inspired have been providing material
aid to many nations, their strongest foothold in Khorvaire is in [[Q'barra]]. King [[Sebastes|Sebastes ir'Kesslan]] is currently receiving military support from Riedra; the [[Harmonious Shield]] has established garrisons in the region around
[[Newthrone]] to help defend the settlers from [[lizardfolk]]
attacks. In the process, they are working to spread Riedran values. Rumors say that construction has begun on
a [[hanbalan|hanbalani alta]].
Given their extensive presence, the Inspired have
much to offer. If war looms anew, [[Aundair]] could seek
Riedran aid to defend itself from the larger armies of
[[Thrane]] or [[Karrnath]]. A desperate move, certainly, but
perhaps Queen [[Aurala|Aurala ir'Wynarn]] will be swayed by vivid dreams of
the power such an alliance might bring.
Kings and queens are not the only people who deal
with the [[Inspired]]. Even though Riedran commoners
rarely mingle with foreigners, Inspired ambassadors
and their staff are active in their communities. Exotic
and clever, these beautiful strangers fascinate the upper
crust of [[Khorvaire]]. In [[Sharn]], Ambassador [[Jorasesh]] often
gives impromptu lectures at [[Morgrave University]]. Both
Jorasesh and his aide [[Helkashtai]] can be found at all of
the major galas and social events of the city.
Although the Inspired have extended their hand
to Khorvaire, they have been reluctant to let foreigners visit Riedra. It is only recently that any outsider has been granted permission to venture beyond the foreign
quarter of [[Dar Jin]] and [[Dar Ulatesh]].
!! Getting There
The borders of Riedra have been closed for a thousand
years. However, the [[Inspired]] have recently softened
this policy of isolation. The foreign quarters of [[Dar Jin]]
and [[Dar Ulatesh]] were established to serve as centers for
international commerce. A few scholarly expeditions
have been allowed to venture into the heart of the land.
With this precedent, it is possible for outsiders to travel
into Riedra legally, but it's not easy.
In order to explore Riedra, a traveler must acquire
a transit visa from the [[Iron Gate]], the foreign relations
office, in [[Dar Jin]] or [[Dar Ulatesh]]. This scroll provides
a description of the travelers, states the nature of their
business, and delineates any restrictions on travel. A
bearer might be limited to traveling in specific provinces
or spheres, and the visa usually has a set expiration date. The document is notarized with a [[sentira]] seal, a [[psionic|psionics]] sigil that carries the thought-signature of the [[Inspired]]. Every patrol challenges foreigners abroad in Riedra, and every
village overseer asks to see their visas.
The [[Iron Gate]] does not charge for transit visas, but
it rarely grants them. Riedra isn't for tourists. Travelers
must provide a valid reason for entry and show that they
have no criminal tendencies or intent, as well as enough
knowledge to avoid accidentally breaking [[Riedran laws|Laws of Riedra]]. Finally, [[mind probe|detect thoughts]] is often brought into play to ensure that the travelers have no
hidden motives. If the request is especially intriguing or
risky, the [[Iron Gate]] might allow travel but send a member
of the [[Thousand Eyes]] along as a chaperone and observer.
Unless the party is deemed a serious risk, this observer
is a [[Chosen]]; the controlling spirit only takes possession
of the vessel every few hours to check on the situation.
Travelers who have shady connections and talents can acquire a notarized parchment from the [[Dream Merchants]] for 20 c. Once they have the sentira seal, travelers can either forge the visa or pay another 5 c to have one forged by the merchants. In this latter case, someone examining the document must closely examine it to discern the falsity of the visa.
Once out into wider Riedra, foreigners face other
problems. Most of the [[people|Riedrans]] speak only Riedran and are
illiterate. They possess the skills the [[Inspired]] deem necessary. Military officers, overseers, priests, and members of the [[Iron Gate]] are all literate, and some speak Common or Quori. Riedrans avoid all contact with foreigners, and
they are typically unfriendly.
Supplies pose another challenge. No inns exist in Riedra. Every village has a dormitory reserved for Riedran travelers and troops, and a transit visa might specify
that the bearers should be given access to such shelter.
Otherwise, travelers must contend with the unfriendly attitude of a local overseer. Food is provided along with shelter, but travelers can't buy goods, since money is an alien concept to Riedran villagers. The wilderness survival skills are the simplest way to get along in Riedra, allowing travelers
to live off the land.
Travel is safe along the main roads of Riedra. Soldiers
patrol regularly, and most monsters were wiped out long
ago. Danger rises when one strays too far from the roads.
After a thousand years of silence and secrecy, the
[[Inspired]] have emerged from the shadows of
[[Sarlona]]. [[Riedra]] itself remains a mystery; visitors are not welcome in the land of the Inspired. But the ambassadors of Riedra can be found in all of the
courts of [[Khorvaire]]. They are charming and urbane,
generous with gifts and eager to help the nations of
Khorvaire recover from the physical and psychological damage of the [[Last War]]. Most are happy to receive the assistance of the Riedrans. But there are some who wonder about the true motives of the Inspired—some who suspect that the lords of the silent empire
are preparing to expand their dominion.
Ambassador [[Jorasesh]] is the [[Inspired]] diplomat who manages the embassy. Most of the other members of the embassy staff are
[[human]]s from Riedra. Chosen for their complete
loyalty to the Inspired, these people rarely speak
to outsiders; many do not even understand the
Common tongue. In addition to scribes, servants,
and soldiers, the embassy staff includes the following
special operatives:
* [[Maleshari]]
* [[Helkashtai]]
* [[Minharkhad]]
The [[hanbalani|hanbalani alta]] network in [[Riedra]] provides [[psionic|psionics]] power for many functions that promote order and provide comfort to the [[populace|Riedrans]]. One of these functions is climate control. [[Inspired]] architects have developed crystal plating that, through kinetic manipulation,
can be heated or cooled and can even draw moisture out
of the air. This effect uses considerable power, and it's
rarely seen outside the palaces of the [[Inspired]] or the
[[Chosen]]. Nonetheless, in the tropical climate of [[Corvagura]], entering a cool, dry palace can have a considerable impact on a traveler.
A short walk from the [[Wavecrest Tavern]], the [[Riedra]]n consulate is home to the [[Inspired]] consul, Lord [[Katanavash]], his assistant [[Hope|Hope (changeling)]], and the rest of his staff. Most [[Riedran|Riedrans]] sailors see [[Stormreach]] as proof of all the horrible stories about humans beyond Riedra and prefer to remain on their ships when in port. Merchants stay at the consulate for the minimum time required to transfer their goods; they leave the business of trading to the consul and his staff.
Over centuries, the [[Inspired]] have built a network of monoliths
in [[Riedra]], psychic anchors called [[hanbalani alta]]s. These allow
them to control everyone's dreams over a vast radius. Dreams
are typically tailored to the region, including local news and
instructions. However, if they choose, the Inspired can broadcast
a single dream to all of [[Sarlona]]. Within [[Dal Quor]], this manifests as a distinctive region of the [[Ocean of Dreams]]—an array of
hundreds of thousands of islands, dream-bubbles arranged in
perfect symmetrical rows, with identical images in each bubble.
The hallmark of all people of [[Riedra]] is devotion, unswerving dedication to country, companions, and work. Each Riedran's
path has been laid out by those wiser than she is, and it
is a road that leads to eternal salvation. Her challenge is
to resist the temptations the cunning //altavars// place in her
way—temptations such as the words of foreigners, who
could attempt to turn her against the glorious [[Inspired]].
At its heart, [[Riedra]] is a cult. Its people have been
brainwashed from birth; the [[hanbalani|hanbalani alta]] shape the dreams of
children before they can even speak. Anyone who would
challenge the [[Inspired]] swiftly vanishes, so most people
never hear opposing views. Even if they did, they would
fear such words as deadly blasphemy.
The people of [[Riedra]] truly love the [[Inspired]], and
they love their lives. Most Riedrans don't want to be rescued from the Inspired; they consider the "freedom" so treasured by foreigners to be a weakness that threatens
the evolution of the soul. A Riedran farmer has a roof over his head, food on the table, and clothes on his back. He might not be able to live wherever he wants, choose
his food, or even pick the color of his clothes, but in his
eyes, he has a good life, secure and stable. He doesn't need
luxuries in this world. Such things are certainly tempting, but it is by resisting that temptation that he ensures his advancement in the next life.
Riedrans place high value on honesty and community; the [[Path of Inspiration]] says, "A liar sells his soul with every word." A follower of the Path strives to be honest and
to be a good neighbor, contributing to both their village
and their nation. A Riedran always helps out a fellow citizen
unless that person advocates a course of action that goes
against the Path of Inspiration.
Work means everything to Riedrans. Each vocation
and task is a lesson to be mastered for forward movement
on the Path. Riedrans work long hours without complaint,
and they often regret having to leave work to participate
in community activities. This devotion often means that
Riedrans are surprisingly skilled at their professions, but
they lack versatility.
Time away from work is usually spent with other
members of the community. Riedrans dine together in
central halls, participate in group athletic exercises,
and gather in the evenings for storytelling and religious
instruction. They are allowed a brief amount of unstructured time each day, ostensibly for meditation on the day's events; however, many prefer to remain among friends
even during this private time. Privacy is not something
the Riedrans treasure—solitude can be a painful and
disturbing experience for a Riedran.
Young Riedrans are raised communally. They are
often transported to new villages as soon as they are old
enough to travel, to prevent birth parents from forming an
unhealthy bond with the child. Youths live in segregated
dormitories, tended by dedicated caregivers (part of the [[Guiding Path]]). As they grow, children serve as apprentices to other members of the community, allowing
the caregivers and priest to determine their aptitudes. A
youth is usually set on his path in his thirteenth year and
moves into an adult dormitory at this time.
At eighteen, a Riedran is "paired" with another. This
is the Riedran equivalent of marriage, and the pair occupies the same dormitory. Those in control of this process, the pathfinders, prefer for people to be pleased with their
bonding, and thus they accept mutual requests. Still, pairing is done for the sake of producing children, and if two people are genetically incompatible, their pairing isn't
allowed. Riedrans are expected to be monogamous, and
sex outside of a pairing relationship is punished.
Riedrans control strong emotions and focus their
energy in positive ways. Religious ceremonies provide an
outlet for emotion under the guidance of the local priest.
In these rituals, people are instructed to unleash a particular emotion in response to a recent event. For example, if another villager has succumbed to spiritual corruption
and been taken by the [[Thousand Eyes]], the people gather
to feel pity, sorrow, and hope for their lost companion. If
news comes of [[kalashtar]] treachery, people gather to unleash
anger and hate. Between these periods of release, people
are expected to keep their emotions under control or to
speak with a priest if they cannot.
Xenophobia is common in Riedra. Violent and chaotic,
foreigners practice dark magic, eat the flesh of beasts, and
destroy their nations in the name of "freedom." Foreigners should be pitied. Lacking the direction of the [[Inspired]], they have no protection against the //altavars//. It is only natural that they fall prey to lust, greed, and other lower emotions.
Nonetheless, they are like wild animals and cannot be
trusted. A Riedran must always be wary when dealing with
foreigners, never allowing them to sway her from her path.
!! Riedran Names and Speech
Family is downplayed in Riedra: loyalty to the nation is
more important than any bond of blood. As such, Riedrans do not use surnames. If additional identification
is required, a Riedran gives the name of his village or, if
he lives in a bastion city, the ward he resides in.
//''Masculine Names:''// Aan, Aleel, Bhiman, Bhalaan,
Dalaan, Danan, Fuulgan, Gurhaak, Gusan, Helac,
Heruun, Jharee, Jukyan, Julaan, Ilaan, Heel, Khern,
Kyamun, Kyaruun, Lanan, Leel, Olaan, Oleel, Rhaak,
Rhuun, Sulaan, Suyamun, Taan, Tulac, Vusgaar.<br/>
//''Feminine Names:''// Aali, Aag, Bhuji, Biir, Duaali, Dujiira, Dujyag, Gilaali, Jhaasha, Jhalaar, Jhazala, Khelaar,
Khuliira, Lhazaar, Manaar, Miir, Quaali, Quush, Palaar,
Praagya, Shiazala, Shiaali, Tyag, Tyalaar, Vyed, Vyuji.
The [[Inspired]] often choose to keep an aspect of their
[[Chosen]] host's name; when Julaan is inspired by Gatesh,
he might take the name Julgatesh. However, this practice
varies from spirit to spirit, and is always the choice of the
[[quori]]. Inspired attached to the [[Dreaming Dark]] sometimes
adopt [[kalashtar]] names as a way of mocking their prey.
The use of double vowels is traditional in many
parts of Riedra. In the Riedran language, it is typical
for both vowels to be given a distinct sound; a Riedran
pronounces "Lhazaar" as a three-syllable word. However,
most of the people of [[Khorvaire]] are unfamiliar with this
custom and simply extend the vowel sound.
!!! Phrases
Riedrans are raised not to fidget, to stand
perfectly still when talking. It is considered a token of
respect to meet the gaze of someone you are speaking
to. Riedrans never verbally interrupt a speaker, but they
indicate intent with their gaze, looking down if they have a
comment to make, looking to the side if they disagree with
the speaker or are not interested in what he has to say. The
degree of motion is as expressive as tone of voice. Thus,
Riedrans often maintain an outward appearance of calm,
but a sharp turn of the head can be the same as a yell.
The following turns of phrase are uniquely Riedran.
* "//Follow the Path.//" The most basic maxim of the [[Path of Inspiration]]; also used as a polite form of farewell.
* "//The fish does not seek to fly.//" A proverb encouraging the listener to accept the life he has been given and learn the lessons set before him; often said when someone suggests change.
* "//Gold is the tongue of the altavar.//" A maxim against greed or any other form of temptation; a warning that anything that could pull a Riedran from the Path is likely to be the work of evil spirits.
* "//No one is alone.//" As reassurance, a reminder that a Riedran always has his community, the [[Voice|Soothing Voice]], and the Inspired behind him; as warning, a reminder that the [[Thousand Eyes]] is always watching.
* "//Lesson of (pain/grief/anger/joy).//" A reserved way to express emotion about a situation, whether frustration or pleasure. Whether good or bad, everything is a lesson.
* "//Darkspirits!//" or "//Altavar!//" An aggressive statement of frustration—one that is discouraged in daily use.
!! Riedran Religion
Only one religion is tolerated in [[Riedra]]—the [[Path of Inspiration]]. Its practice is mandatory. Omnipresent yet subtle, the Path is easily overlooked. For a Riedran, work
is worship, and life itself is an act of devotion. According
to the Path of Inspiration, dedicated and hard-working
souls ascend a ladder of spiritual evolution over the course
of many lifetimes, traveling from beast, to nonhuman,
to [[human]], to [[changeling]], to [[Chosen]], to the //il-altas//—the
"great spirits" that cannot be perceived in this world, but
that continue to guide lesser beings by acting through
the [[Inspired]]. A follower of the Path should embrace the
life he is given and learn the lessons he is meant to learn from it, resisting the temptation to rise above his station or change his lot in life.
For the [[Inspired]], this system accomplishes many ends. It encourages citizens not to question their roles in life—spiritual advancement is the goal, and only by following the path set forth by the //il-altas// (as announced by the Inspired) can such advancement be attained. It also allows the Inspired to fail without shattering their status in the eyes
of the people. The Inspired are mortal vessels of godlike
beings, not actual gods, and any defeats or setbacks are the
fault of the vessel. Finally, it contains just enough truth to
weaken any attempts to expose the true nature of the [[quori]].
The Riedrans know that their rulers are possessed by outsiders, and using banishment to drive out the possessing spirit proves nothing aside from the fact that the exorcist is a foul being to challenge the noble //il-altas//. Since most Riedrans
fear or at least distrust magic, they are unlikely to accept
the evidence provided by [[spell]]s that reveal the true nature of the quori.
Riedrans are warned to beware of the //altavars//, spirits
that have fallen off the [[Path of Inspiration]]. These beings
suffer eternal torment and assuage their pain by corrupting and torturing others. The precepts of the Path teach that the "gods" worshiped by other cultures are in fact
altavars, and that these dark spirits are also the source of [[arcane magic]]. As a result, Riedrans are taught to fear and despise arcanists and priests of other religions.
No temples have been erected to the Path of Inspiration; the holiest sites are the palaces of the [[Inspired]] and
the [[hanbalani|hanbalani alta]]. On days of celebration, people often gather
around the nearest monolith to join their thoughts (in the
process, unwittingly channeling more of their spiritual
energy to [[Dal Quor]]). Priests of the Path of Inspiration
are charged with maintaining discipline and morale among the people of their communities. Only the most loyal priests are entrusted with [[divine magic]]. [[Inspired]] can't actually grant spells, but they can certainly eliminate [[cleric]]s whose devotion to the state is in question. As a result, true Riedran clerics and adepts are usually trusted envoys of the Inspired, often working with the
[[military|Harmonious Shield]] or the [[Thousand Eyes]].
!! Riedran Style
The common folk of Riedra live ascetic lives. A Riedran
must focus every moment on mastering his assigned profession, giving no thought to luxury, vanity, or comfort.
On the other hand, the [[Chosen]] and the [[Inspired]] live in
a different world, a world touched by the alien aesthetics
of [[Dal Quor]].
The Inspired have sought to create a unified culture,
but faint echoes of the old kingdoms remain. Accent and
manner often provide hints to national origin. Furthermore, the varying climates of the provinces call for different clothing and have led to differences in style.
!!! Art
The most wondrous works of art produced in [[Riedra]] are [[sentira]] sculptures. Sentira is a product of [[psionics]]—in essence, emotion given form. Shapers create mosaics of sentira shards; the patterns are often dizzying and strange, but each
piece carries a powerful emotional charge. Sentira works are
solely produced by the [[Inspired]] and the [[Chosen]]. All bastions
have emotional parks, where people meditate around the
sentira patterns to purge their own emotions.
Creativity is discouraged among the commoners,
and crafts emphasize function over form. One exception
is a practice known as altsen (spirit writing). This takes
the form of embroidery or engraving, featuring complex
patterns of lines similar to a maze or labyrinth. Altsen
designs are often used as a focus for meditation or placed
on the hem of clothing; common belief holds that evil
spirits can be trapped in the patterns, protecting the
wearer from temptation. Altsen carpets and tapestries
are breathtaking, and merchants in [[Stormreach]] have
been trading in [[Sarlona]]n textiles for centuries.
Another common artistic effort in Riedra is crystal
and glassware. Although such creations are primarily
functional, the smooth contours of Riedran glasswork
are noteworthy. Many people appreciate the novelty of a
[[crysteel]] glass that won't shatter when it is dropped.
Storytelling and song are an important part of the
daily life of most Riedrans. However, both arts are formulaic and mired in tradition, and always revolve around tales of the Unification, the glory of the [[Inspired]], or the
[[Path of Inspiration]]. Foreigners usually find them tedious
and repetitive.
!!! Architecture
Riedran villages are simple and functional. Buildings
are formed from wood or stone, whichever is most convenient in the region. Structures are typically smooth
and rounded. Crystal shards are embedded into walls to
provide light; these are tied to the local [[hanbalan|hanbalani alta]] and fade
if pried loose from their housings. Doors in Riedran
villages rarely have locks or bars. Given the high level of
illiteracy, iconic imagery is used to identify the function
of buildings instead of printed signs.
Compared to the villages, Riedran bastion cities are
dazzling and strange. They are built from stone, [[crysteel]],
and [[sentira]]. The surfaces of buildings are curved and bent, and structures are magnificently illuminated from within. The sentira walls resonate with thoughts; inhabitants are often struck by traces of trapped and reflected ideas or dreams. Usually these echoes are faint and incoherent, but occasionally a clear image comes through.
!!! Cuisine
The people of [[Rhiavhaar]], [[Pyrine]], and [[Ohr Kaluun]] eat
fish. Those of [[Dor Maleer]] are hunters by tradition.
Few other Riedrans eat meat, and many consider the
practice barbaric.
The mainstay of the Riedran diet is the [[pomow]] plant.
Riedrans use a wide range of spices to add flavor
and variety to their common meal of pomow gruel. They
abstain from any sort of intoxicants.
!!! Fashion
The average Riedran dresses in black, white, or brown
clothing. While simple and functional, these garments are often adorned with intricate altsen patterns. Colors
carry social implications. Green cloth is reserved for
agents of the [[Thousand Eyes]]. Orange and yellow are set
aside for elite soldiers of the [[Harmonious Shield]]. Purple
is reserved for the [[Chosen]] (or the [[Inspired]]). Blue and red
are the colors of the [[Inspired]].
Riedran commoners do not wear jewelry or use
cosmetics; people are encouraged not to stand out from
the crowd. Commoners often wear veils and head cloths,
both to provide protection from the sun during long
days in the fields and to deemphasize the importance of
personal appearance.
The Chosen and the Inspired are expected to dress in
a manner that honors their elevation from the masses; they
wear elaborate gowns and robes covered with colorful altsen
patterns traced in shining thread. The Inspired often wear
[[sentira]] accessories, especially armor and headdresses.
These curved coverings and horned crowns of glass often
add to the strange, alien beauty of the Inspired.
!! Rebellion in Paradise
The [[Inspired]] aren't omniscient. The Riedrans might
believe that the //il-altas// are all-seeing, but the [[quori]] are
not. In a nation of nearly fourteen million people, the
[[Thousand Eyes]] can't watch everyone all the time. This
is especially true in the outer villages. Indoctrination
keeps most people from turning against the Inspired,
and villagers report any strange behavior to the overseer
or priest (for the "victim's" own good, of course). But a
cautious dissident who takes care in his choice of confidants can certainly survive in a border village.
Dissidence arises from many sources. The first path
is simple human nature. The [[Path of Inspiration]] restricts
emotion, choice, even the ability to dream. Perhaps a
villager hates the job he has been assigned. Maybe he has
been paired with someone he doesn't like. Regardless of
his devotion to the Path, frustration can grow and fester,
until it finally explodes.
Another possibility is that a child develops forbidden
powers. A youth discovers a gift for [[sorcery|sorcerer]] or talent as a
[[wilder]]. He knows it only as the touch of an //altavar//. Does
he reveal his curse to the priest—likely disappearing
forever—or explore this birthright in secret, knowing
that he places his soul in jeopardy?
Some come to doubt the Path due to life experiences. A
friend is hauled away by the [[Thousand Eyes]], a child is taken
to another village, a request for pairing is turned down.
Perhaps a villager sees something she can't explain—an
inexplicable act of cruelty from an [[Inspired]] lord. Maybe she
discovers a magnificent ancient relic, and she can't understand why these kingdoms needed to be destroyed. Such experiences can be exacerbated by peaceful contact with
foreigners—jolly [[Syrk|Syrkarn]] traders, strange sailors from the [[Five Nations]], [[Adarans]] or [[dromite]]s who swear that the Riedran
is being led astray. These seeds of doubt take years to grow,
but slowly, a Riedran could realize just how oppressive her
homeland is. At that point, the prison walls become visible.
If she speaks to anyone about her true feelings, she's likely
to be reported. Even if she doesn't, the Thousand Eyes
might pluck the truth from her dreams.
Some manage to hide their heresies and remain in
their homeland, possibly even spreading their beliefs to
others. A few collapse under the strain, suffering violent
emotional breakdowns that priests are quick to blame on demonic influence. Others flee, seeking the [[Summit Road]] to [[Adar]], braving the [[Andnemun Desert]] in hopes of
reaching [[Syrkarn]], or stowing away on a vessel bound for
[[Khorvaire]]. The life of such a fugitive is a hard one, even
after the journey to freedom is over. Foreign customs are
strange, people are cruel, food and shelter are no longer
free. The night is full of chaotic thoughts—terrible after
years of soothing dreams. Many feel lost and alone,
yearning for the innocence that has been torn away. Some
channel that angst into fury, becoming bitter mercenaries or criminals. Others fill the void with fanatical devotion to a new cause. Either way, the loss is always there,
and PCs who are Riedran rebels should consider what
drove them away and what price they've paid.
The Ring makes up the bulk of the city of [[Zarash'ak]]. It surrounds the [[Heart]] and is constantly expanding. New levels are added to existing buildings, and new platforms are attached to the old.
This work is done by different architects with wildly
varying levels of skill, and the result is a ramshackle
patchwork of a city. Some platforms have wide paths
that could almost be considered roads; on and around
other platforms, rope ladders are the only way to
move from place to place. Most of the respected heirs
of the house live in the [[Heart]], leaving the Ring to
traders, laborers, and travelers who can afford to stay
out of the [[Webs]]. However, as the city’s population
continues to grow, some members of the [[Tharashk]]
clans are forced to settle in the Ring.
In general, the Ring is a bustling place. Merchants abound, offering everything from broiled slugs and handmade knives to healing salves and
[[Gatekeeper|Gatekeepers]] charms. Beggars and thieves watch for
unwary foreigners, and cultists of the [[Dragon Below|Cults of the Dragon Below]]
take to the streets in search of new recruits. It’s a
wild and chaotic environment, with opportunities
for those seeking to make contact with Gatekeeper
druids, followers of the Dragon Below, or guides to
the deeper [[Marches|Shadow Marches]].
The wearer of this copper wire ring can cast the spell [[alarm]] on a point centered on the ring once per day. In addition to the listed conditions that can trigger the alarm, the wearer of this ring can also have the ring trigger at a certain time of day.
This ring is molded in the shape of two clasped hands.
The wearer of this ring instantly falls into a magical sleep. Their heartbeat slows, their skin grows cold, and for all intents and purposes, the wearer appears dead. While in this state, the wearer does not need to breathe, eat, or drink. The user can exist in this state for thirty days before they begin to die.
The wearer is not capable of removing the ring themselves.
This ring is in the shape of a tiny blade, bent back on itself to form a band. The ring allows the user to easily and painlessly remove and reattach the hand that wears the ring. The user retains complete control of the hand up to 60 feet away.
If the ring is removed from a detached hand, the hand acts as if it has been severed, and is unable to be reattached.
See also [[helm of head removal]].
This ring is a band of solid iron, wrought with a simple scale pattern. When worn, the ring stains the wearer's skin a deep green.
Once per day, the wearer of this ring can summon a circle of large, magical kite shields that rotate slowly around the user, creating a solid barrier and protecting them from attacks for up to 10 minutes.
When you fall while wearing this ring, you descend at a rate of 10 feet per second and take no damage from falling.
This golden ring is wrought in the shape of a delicate quill.
The ring of forgery allows the wearer to perfectly emulate another's handwriting. The user must first see an example of the handwriting they wish to copy, but the end result is nearly infallible.
While you wear this ring, magic can neither reduce your movement speed nor cause you to be paralyzed or restrained, and difficult terrain does not slow you down.
This silver ring has a large white stone set in the middle. When activated, the gem emits a bright beam of white light in a 60-foot cone.
While wearing this ring, you are immune to magic that allows other creatures to read your thoughts or determine whether you are lying. Creatures can telepathically communicate with you only if you allow it.
You can cause the ring to become invisible until you choose to make it visible, until you remove the ring, or until you die.
This band of iron resembles a skull and is cold to the touch. Once per day, while you are wearing the ring, you can speak its command word to create a 20-foot-radius sphere of fog centered on you; the area becomes heavily obscured for up to an hour.
This ring is a heavy iron band, wrought in the shape of a wilting rose.
The wearer of this ring is incapable of feeling physical pain.
While wearing this ring, you recover from injury extremely rapidly. If you lose a body part, the ring causes the missing part to regrow and return to full functionality after only a few days.
This solid black band has a humanoid molar set in the center. The ring allows the user to absorb health from a creature within 10 feet, siphoning their living essence to heal the wearer's wounds. This effect can be used once per day, or more times if in a [[Mabar]] [[manifest zone]].
The Ring of Storms of [[Xen'drik]] is considered to be an idle myth, and its
location has never been conclusively identified. According
to legend, it was the mountain refuge of a sect of magically
powerful [[drow]] during the [[Age of Giants]], but this sect was
destroyed by the fall of an enormous [[dragonshard]] from the
Ring of [[Siberys]].
But the Ring of Storms is no myth. Once the location of the massive city-state of the [[Qabalrin]] in the mountains today known as the [[Tempest's Spine]], a massive dragonshard did indeed plummet from the sky over forty thousand years ago, smashing into the city. The impact and the resulting
devastation (both magical and natural) destroyed the
elves. Remarkably, though, the damage did not extend
beyond the mountain ring. The [[giant]]s called it a miracle,
citing the harsh justice of [[Ouralon|Aureon]] and a divine warning
to those who would traffic with the [[Shadow]].
Following the disaster, a shield of storm clouds rose over the ring, creating a fierce tempest that continues to this day. Faced with [[quori]] invasions and [[elf]]
rebellions, the giants turned their eyes from the cursed
land of the [[Qabalrin]], and the Ring of Storms was lost
from history.
Today, the [[drow]] tribe known as the [[Umbragen]] dwells in the depths of [[Khyber]] deep beneath the Ring of Storms.
A creature wearing this ring can activate it right before they suffer blunt force damage. The wearer becomes immune to bludgeoning damage for 6 seconds. Once this feature has been used, it cannot be used again for 7 days.
While wearing this ring, you can conjure a translucent, purple
shortbow into your hand for 1 minute. The bow conjures a
nocked arrow when you draw the bowstring. The arrows
disappear when they strike something, or when the bow
disappears.
If you drop the bow, or fire more than 3 arrows, it disappears early. Once you have used the ring, it can't be used again until the next dawn.
This delicate golden ring has a clear diamond set in the center. Inside the gem is a rolling cloud of mist that swirls and presses against the barriers of the diamond.
A living soul is sealed within the gem. Whenever the wearer is dealt a mortal wound, the spirit inside of the ring dies in the user's place, passing on to [[Dolurrh]]. The spirit in the gem can be replaced, but only by a willing soul.
While wearing the ring, you can expend some of its magic and punch in the direction of a target within 60 feet of you. The ring produces a spectral ram's head that flies towards the target; if it hits, the target is struck with magical force and pushed 5 feet away from you. You can also break objects in this way.
The ring can be used three times per day before needing to recharge.
While wearing this ring, you can conjure metal claws from your fist for 1 minute. Your
unarmed strikes gain a slashing aspect for the duration,
and your attacks are considered magical if they aren't already.
You can choose to end this effect early.
A slightly discolored and dirty ring made of intertwining silver threads, this band feels as if it could fall apart at any moment.
This ring allows the user to turn back time five minutes. Only the user is aware of this magic, and only they retain memories of the time that was overwritten.
The ring disintegrates after one use.
This silver ring allows the wearer to magically and instantaneously know the name of any [[humanoid]] in sight.
While wearing this ring, you can stand on and move across any liquid surface as if it were solid ground.
This ring is a simple band of black metal. A small "X" has been carved on the inside of the band.
When slipped onto one finger, the ring grows into a knife, short sword, or longsword, depending on the user's preference. The sword is the same black metal as the ring, and a low hum seems to emanate from the blade. Unless the ring is taken from their finger, the user cannot be disarmed.
These rings come in linked pairs. If you possess the [[Mark of Sentinel]], you can form a link to the creature attuned to the other ring; from then on, whenever that creature suffers damage, they only suffer half of that damage and you take the rest. This effect continues until you end it or until you or the other creature removes their ring. This effect isn't limited by range. A creature cannot be attuned to more than one //ring of shared suffering//.
Risia is known as the Plain of Ice, for that's the vast majority of what's found within it. Risia is defined by endless arctic wastes, and what appear to be mountains are just peaks of solid ice. But like [[Fernia]], Risia's appearance can be deceiving. Because it's filled with glaciers and snow, many sages assume that this is its defining principle. But in [[Lamannia]], there are also endless blizzards and majestic glaciers—ice in its natural state. By comparison, the core ideas that define Risia are isolation, stagnation, and preservation. The endless frozen plane isn't about snow, it's about the utter stillness, the empty and unchanging landscape. Risia
is sparsely populated, because that's one of its core concepts; it's bleak
and lonely, a realm in which you could walk for days and never
see another creature. Where a desert of sand can at least shift
in the breeze, the frozen landscape of Risia is unchanging.
Yet, unlike a stone plateau, it reflects a substance that could
change at one point—but is now caught, frozen, stagnant.
Though this isolated and unchanging plane might not
seem appealing to adventurers, it's important to remember
that the plane represents preservation—and ancient secrets
forgotten for ages could be frozen within the ice. And while
the realm itself is barren, it's not completely deserted; over
millennia, hardy creatures have come to Risia and settled in
this desolate realm.
!! Universal Properties
Risia is bitterly cold, and unprotected creatures quickly
succumb to the deadly temperatures. Here are a few of the
consistent properties of the plane.
* //''Lethal Cold.''// All regions of Risia are subject to extreme cold. In addition, all creatures gain resistance to fire damage, and a creature that is usually resistant to fire damage becomes immune to it.
* //''Empowered Ice.''// Spells and other magical effects involving cold are enhanced.
* ''//Preservation.//'' Creatures that are incapacitated are stabilized and enter a state of suspended animation. If an unconscious creature remains in contact with the ground for more than one minute, it's drawn below the surface and encased in an ice-encrusted stasis. While encased in this way, time ceases to flow for the creature and it doesn't grow older.
* //''Stagnation.''// Creatures recover stress at a much slower pace.
* //''Stillness of Flesh.''// Time passes at the same pace as on the Material Plane, and is consistent across its layers. However, the passage of time has no effect on a mortal creature's body, and creatures don't age or grow while in Risia. Exhaustion, starvation, and disease merely incapacitate a creature, and don't immediately kill it. [[Dwarves|dwarf]] are immune to this property's effects, and in Risia they can grow, age, and die, just as they would on the Material Plane.
!! Denizens
Risia's few natives are rarely seen. The concept of the [[plane]]
is bleak isolation, and an active population would defeat this
purpose. A few layers hold creatures that have crossed into
Risia from [[Eberron]], ones that can thrive in arctic conditions;
there are [[remorhaz]]es hunting in the [[Frozen Sea]] and [[yeti]]s
in the [[Frostmantle]]. But these things come and go. The two
primary forces in Risia are the native spirits of the plane and
the [[frost giant]]s that have carved out a home in the ice.
!!! Spirits of Ice
At first glance, Risia appears to be barren and empty. But
some travelers have described a presence, a sense of being
watched, and most feel this presence is malign. On the surface,
the concept of Risia seems entirely neutral; there's nothing
inherently evil about ice. But there's a hunger to Risia—an
innate desire to consume warmth and to bury living things in
ice. In the //Planar Codex//, [[Dorius Alyre ir'Korran]] calls this force
the //Killing Cold//. This greatest power of the plane of isolation
is uninterested in being known, and has never interacted
directly with outsiders, but its presence can be felt through its
[[manifestation]]s. These include [[fiend]]s such as [[ice devil]]s and [[chain devil]]s, but also icy [[hag]]-like creatures or [[salamander]]s who wield frost rather than flame. The
appearance and nature of manifestations reflect the themes of
Risia—a chain devil might be shrouded by frost-mist and can
bind its enemies with chains of ice. Regardless of their form,
these spirits don't speak with outsiders. Their intelligence
reflects the cunning with which they stalk their prey, but they
are spirits of the Killing Cold, of bitter isolation, and of the ice
that entombs and preserves.
When these manifestations aren't active, they're absorbed
into their layer; they manifest when they're needed, in the form
that's needed. And in the meantime, as spirits of stagnation and
isolation, they're perfectly content to sit in silence for centuries
before something compels them back into physical form.
!!! Frost Giants and Dwarves
The archarcanist Il'Ara of the [[Group of Eleven]] was devoted to the study of Risia, and she [[magebred|magebreeding]] her own lineage of [[frost giant]]s over millennia. When the forces of [[Argonnessen]] began to lay waste to [[Xen'drik]], Il'Ara gathered
her faithful children and passed through to Risia, certain that
they could find sanctuary in the isolation of the Plain of Ice.
Il'Ara's children have since established themselves across
the layers of Risia. There are a few citadels where multiple
[[giant]]s live together, while others have established their own
solitary outposts. Each has found a different path to surviving
the endless tedium of immortality in the icy wastes. Some have
become artists, writing poetry or sculpting massive works of
art that take centuries to complete. Others pursue physical
diversions such as wrestling, hunting [[fiend]]s, or crafting ornate
games. These denizens always take great interest in outsiders
as a source of diversion. The crueler giants take joy in hunting
newcomers, but others can be excellent hosts. Many artists
yearn for an audience—though a genteel giant artist can be
deadly if guests don't show proper appreciation for their
work. As these Risian frost giants are remnants of the grand civilization of [[Xen'drik]], the DM may wish to increase their
intelligence and abilities as suits the story.
Il'Ara continues her arcane studies in her fortress, Winter.
She may have found ways to wield vast power over Risia and
to protect her children from the [[fiend]]s... or she could be bored
of her immortal existence, considering entering the ice and
embracing stasis.
The frost giants of Risia have [[dwarf]] servants. Their origin
is a mystery: the giants know that Il'Ara produced these first
dwarves, but they don't know—or at least remember—if she
created them herself or pulled them through from [[Eberron]].
These dwarves know no other existence than their servitude to
their giant masters, and Risia holds few other options for them.
Mysteriously, these dwarves—and //all// dwarves—are immune to
the //Stillness of Flesh// property of Risia. They age just as they
would on Eberron, and unlike other mortals on this plane, they
can give birth to children who grow and mature. So every giant
in Risia came from [[Xen'drik]], and as they die, no new giants
replace them; but the dwarves that dwell in Risia were born
there, and know nothing of the ancient past.
!! Layers
The [[layer]]s of Risia are few in number but vast in size,
connected by great archways of ice. Sometimes, travelers
find pools of ice that show images from other layers; breaking
through this ice sometimes allows passage, while other times,
the images are simply lost. While depictions of Risia often
show it with terrifying storms, these are only found in the
[[Boundless Blizzard]]; most of Risia is utterly still, silent, and deadly. Risia's spirit [[manifestation]]s can be found in all of these
layers. The [[giant]]s are concentrated in [[Frostmantle]], but outliers
can be found in other layers.
The most noteworthy layers are discussed below, but others
exist as well. One is a vast, featureless glacier, which may be
the inspiration for the title “The Plain of Ice.” A small layer
holds immense ice sculptures of unknown [[humanoid]]s; this
could be a reflection of primal beings, or perhaps the work
of a [[frost giant]] artisan who's been sculpting for thousands of
years. Another plane contains a series of rivers flowing over an
icy plain, but they aren't natural water; the liquid is so cold it
shatters any mundane material placed within it.
<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>
!! Planar Manifestations
Here are a few of the ways Risia can affect the Material Plane.
!!! Manifest Zones
[[Manifest zone|manifest zone]]s to Risia are often found in cold or arctic
regions, where their impact isn't immediately obvious. In
warmer climes, most manifest zones tied to Risia create
regions of unnatural cold, often taking on the plane's
//Lethal Cold// and //Empowered Ice// properties of the plane,
regardless of the regional climate.
In a few Risian zones, the effects of //Stillness of Flesh// can
be felt, slowing or completely stopping the aging, growth, and
reproduction of all creatures—except for [[dwarves|dwarf]], that is.
While a manifest zone that prevents aging could be otherwise
considered quite a boon, these zones can be quite small, and
often tied to deadly cold that makes it difficult to live there.
It's unusual for a Risian zone to transport people to Risia,
but it can happen when the planes are coterminous.
!!! Coterminous and Remote
While Risia is coterminous, temperatures drop sharply,
and areas that would normally be chilly but otherwise safe
can take on the //Lethal Cold//, //Empowered Ice//, and //Stillness of Flesh// universal properties. During these times, on rare occasions, creatures caught in an area of exceptionally intense cold can be unexpectedly transported to Risia. However, this effect is unpredictable; while it can happen if it serves the story, it's not something most people are afraid of.
When Risia is remote, intense cold loses some of its bite. Creatures have advantage against the effects of extreme cold.
Traditionally, Risia becomes coterminous once every five
years for the full month of [[Zarantyr|Khorvaire calendar]]. Once every five years,
exactly two and a half years after it is coterminous, it's remote
during the month of [[Lharvion|Khorvaire calendar]]. However, this isn't always the
case. Historians have recorded times when the cycle has
extended far longer; in 657 YK, Risia entered a coterminous
phase that lasted for three years.
!!! Risian Artifacts
An object carved from [[Risian ice]] can be used as an implement for casting spells or creating magical effects related to cold or
stasis. While it can develop in both [[manifest zone]]s and
on the plane itself, Risian ice is relatively rare even within
Risia; you can't just find giant sheets of it spread across
[[Frostmantle]].
The [[frost giant]]s possess [[magic item]]s and artifacts that
they brought with them from [[Xen'drik]], and Il'Ara has surely
created new wonders over the years. Adventurers could
also find treasures from any civilization there, either buried
in the [[Frozen Sea]] or still clutched in the hands of people
entombed within the ice.
!! Risian Stories
Risia is barren, isolated, and unwelcoming; it's not a place
that wants adventurers. Nonetheless, there are many ways it
could affect a story.
//''Frozen History.''// Il'Ara and her [[giant]]s possess wondrous
relics whose like haven't been seen in [[Eberron]] since the [[Age of Giants]]. They're a living link to the [[elven|elf]] uprising; a giant
might have personally fought a [[Tairnadal]] elf's ancestor, and
it could possess a trophy taken from them. If the adventurers
need information or an object from the Age of Giants, they
might find it here. The adventurers could seek a ritual found
only in Il'Ara's colossal spellbook, or perhaps the titan has kept a collection of prisoners from the Age of Giants preserved in [[Risian ice]]; this could be a way to meet a
[[Qabalrin]] elf or one of the first [[drow]]!
//''Buried Treasures.''// In searching for a vital artifact, the
adventurers might learn it's on a ship trapped in the [[Frozen Sea]]. The trail of a lost explorer could lead to the [[Boundless Blizzard]]. While adventurers could recover valuable treasures from the ice, it's also possible to recover people from it. A
legendary hero—or infamous villain—could have been trapped
in Risia for centuries. What would happen if adventurers
discovered the pirate queen [[Lhazaar]] in an icy stasis on her
ship in the Frozen Sea?
//''Dwarves.''// What's the origin of the [[dwarves|dwarf]] of Risia? Did
the titan Il'Ara truly create the dwarves, or did she steal
them from the [[Frostfell]]? Could dwarf adventurers free their
distant cousins from the domination of the giants?
//''The Killing Cold.''// What is the sinister presence that drives
the spirits of ice? No mortal has ever interacted directly with
the Killing Cold. When the adventurers are caught in the
[[Boundless Blizzard]], they are stalked by deadly [[manifestation]]s
of the Cold. Can they find some way to communicate with
these spirits—or the power that drives them?
[[Risia]]n ice is vivid blue and charged with the essence of the [[plane]]. This ice maintains its temperature under any conditions and never melts, even on the Material Plane.
The Riverwood is a forest in the eastern [[Eldeen Reaches]], near the [[Wynarn River]].
A robe of serpents is a stylish silk garment that is popular among wealthy nobles and retired assassins. The robe is emblazoned with <<dr "1d4 + 3">> stylized serpents, all brightly colored.
You can transform one of the robe's serpents into a giant poisonous snake. The snake instantly falls from the robe, slithers into an unoccupied space next to you, and obeys your commands. The snake can tell friendly creatures from hostile ones and attacks the latter. The snake disappears in a harmless puff of smoke after 1 hour, when it is incapacitated, or when you dismiss it. Once detached, a snake can't return to the robe. When all of the robe's snakes have detached, the robe becomes a nonmagical garment.
At first sight, a roc's silhouette looks much like any other bird of prey. As it descends, however, its unearthly size becomes terrifyingly clear. In flight, a roc's wingspan spreads two hundred feet or more. At rest, perched upon the mountain peaks that are its home, this monstrous bird rivals the oldest [[dragon]]s in size. Native to [[Lamannia]], rocs are a type of megafauna of the [[plane]] of primal energy.
Rocs treat even [[giant]]s as potential prey. They fly great distances in search of food, soaring high above the clouds to reach their favored hunting grounds. A roc seldom hunts swift or small creatures, and it ignores towns and forests where prey can easily take cover. When it locates a large and slow-moving target such as a giant, a whale, or an elephant, a roc dives down to snatch its prey in its massive talons.
Rocs are solitary creatures that can live for centuries. They lair in nests made from trees, tents, broken ships, and the remains of caravans they carry off, placing these massive tangles in mountain clefts out of the reach of lesser creatures.
This [[adamantine]] rod is tipped with a glowing crystalline eye. The rod has 3 charges and regains all its expended charges daily at dawn.
When a creature you can see within 60 feet of you damages you while you are holding this rod, you can instantly expend 1 of the rod's charges to zap that creature with lightning.
This rod of varnished oak is capped at both ends with a Siberys
[[dragonshard]]. To use it, the wielder must have the [[Mark of Handling]].
While holding the rod, you can comprehend and verbally communicate with beasts, and have advantage on Persuade rolls against beasts.
If persuasion fails, you can use the rod to attempt to magically dominate a beast. If successful, you form a telepathic link with the beast as long as the two of you are on the same plane of existence. For as long as the link lasts (up to 1 hour), you have total and precise control of the beast. After the rod is used to cast this spell, it can't be used to do so again until the next dawn.
[[Dragons|dragon]] possess a wide range of personalities and motivations. Though they display more racial solidarity than many other creatures, rebels do exist. Not every dragon cares for the [[Chamber]] or the [[Prophecy|Draconic Prophecy]]—or even for other dragons. These rogue dragons operate independently.
!! Rogue Dragons of Khorvaire
Rogue dragons favor [[Khorvaire]] over all other continents. Whether they disagree with the [[Chamber]]’s purpose or methodology, or fled [[Argonnessen]] in fear of their lives, or are selfish, loners, or greedy, rogue dragons find Khorvaire a hospitable land. The rise and fall of cities and the glut of races provides a shifting backdrop against which to camouflage themselves. Minions and servitors are easy to find, and the [[Chamber]] has more pressing concerns on Khorvaire than tracking down
rogues. Usually.
Rogue dragons don’t share motivations or desires;
their behavior is as varied and complex as the [[dragon]]s
themselves. However, several common themes crop up
among the rogues who lair on [[Khorvaire]]: money, power,
solitude, and independence.
Khorvaire’s wealth is a great draw to rogue dragons.
The [[Chamber]] monitors and guards its artifacts and
relics carefully, but rogues take what they wish and
share with no one. Powerful [[magic item]]s and hidden
treasure troves left over from the [[Last War]] dot the land,
many hidden so deeply and so well that ordinary beings
stand no chance of discovering them. Only creatures as
powerful as [[dragon]]s can find and claim these treasures
for themselves.
Many rogues also enjoy feeling powerful and
in control. On [[Argonnessen]], greater dragons often
dominate smaller, weaker dragons. When surrounded
by lesser beings, though, even the lowliest dragon
feels impressive. The pursuit of wealth is often combined with the lust for power. A rogue dragon might take on minions, then use them to search for greater treasures; the more wealth she possesses, the more she can expend on acquiring even greater wealth and
more servitors.
Achieving a position of authority within the [[Chamber]] or the [[Conclave]] can take centuries or more. On [[Khorvaire]], a clever [[dragon]] can set up a power
structure with himself at the head in under a decade, all without risking the incredible dangers of the [[Vast]]. Dragons in the Vast, wild as they are, still play by the rules of the Conclave. Rogue dragons are true rebels who flout the “sandbox” of the Vast and the draconic authorities.
!!! Ten Khorvairian Rogue Dragons
Rogue dragons, with their varied agendas and personalities, make excellent villains and contacts. Presented here are ten rogues suitable for use in [[Khorvaire]]. DMs should tailor their strength to suit the campaign.
* [[Q'anhyrde]]
* [[Kauverra]]
* [[Moar'donn]]
* [[Meretsega]]
* the [[Thunder Wyrm]]
* [[Ystravnil]]
* [[Ortak Seven-Claw]]
* [[Shadewing]]
* [[Frigidus the Horrible]]
* [[Fantaz the Merry]]
See also [[Haze-of-Death]] and [[Vyssilthar]].
!! Rogue Dragons in Xen'drik
Few dragons entertain the idea of visiting [[Xen'drik]]’s
savage shores. Tales of the Great Fall are burned into
the minds of young dragons, leaving many with the mistaken impression that the forsaken continent is a desolate wasteland of bleached giant bones and blasted earth. The thought of visiting this reminder of their race’s greatest disgrace remains repugnant.
Only two paths lead [[dragon]]s to [[Xen'drik]] today—duty
and dishonor. Since the rise of the [[Inspired]] threat in
[[Sarlona]], the [[Eyes of Chronepsis]] are no longer willing
to exile criminal dragons into the waiting arms of the
[[quori]]. Xen’drik is now the nesting ground for castoffs,
malcontents, and criminals; most dragons found there
are rogues. The majority are delinquents who were banished to the forsaken continent by mandate of the Eyes.
There is one reason beyond exile and guardianship for [[dragon]]s to end up in [[Xen'drik]]. Although the [[Vast]] serves as a proving ground for young dragons and
offers them the freedom to exercise power over lesser creatures, some dragons’ fantasies of domination are too grotesque to enact among their own kind. Such
depraved dragons choose self-exile to Xen’drik in
exchange for the right to play god among [[giant]] rabble
and other groveling tribes of natives. Chafing at the
closeness of other dragons in the Vast, these wyrms head
to the wide expanses of the forsaken continent, where
they might spend a thousand years never crossing paths
with another of their kind.
!!! Ten Xen'drik Rogue Dragons
* [[Tyrosian-Baed]]
* [[Shendroa]]
* [[Kiznak the Exterminator]]
* [[Vrakor Cinderheart]]
* [[Draj]]
* [[Yulgrin]]
* [[Brightshield]]
* [[Jotara]]
* [[Bane-Reth]]
* [[Renosar-Kali]]
See also [[Ketheptis]] and [[Zartarxis]].
!! Rogue Dragons of Sarlona
Rogue dragons have long inhabited [[Sarlona]]. However, the desert drakes and mountain guardians of this land are very different from the hoard-wyrms and [[Chamber]] exiles of [[Xen'drik]] and [[Khorvaire]]. A number of Sarlonan rogues fled recently from [[Argonnessen]], for personal or political reasons, choosing the relative peace of Sarlona to the chaos that is Xen’drik. Though exceptions exist, most such first-generation exiles hail from the lands of the [[Tapestry]], just as a majority of [[Xen'drik]] exiles arrive there from the unfettered expanses of the [[Vast]].
Unlike those of [[Xen'drik]], many rogues of [[Sarlona]] are native to that land—descendants of [[dragon]]s who were here long before the rise of the [[sorcerer]]-kings.
What part those ancestor dragons might have played
in the rule of Sarlona prior to the [[Sundering]] remains
an open question. That period of great and terrible
wars shattered the old kingdoms and paved the way for
[[Inspired]] rule, and much of the history of old Sarlona
was purged when the Inspired remade the continent in
their own image.
Fragmentary accounts of the reign of the sorcerer-kings can be found in the legends of [[Aventus|Aventus Islands]], [[Corvagura]] (now part of [[Riedra]]), and [[Khunan]] (the land on whose ruins the [[yuan-ti]] built [[Syrkarn]]). Modern sages theorize that some of those ancient rulers could have actually been rogue dragons in [[human]] form, building empires in a land their [[Prophecy|Draconic Prophecy]]-obsessed kin ignored. If this idea is true, it might explain the origins of the devastating conflicts between the sorcerer-kings of [[Corvagura]] and the secret [[shulassakar]] leaders of [[Khalesh]]. If means also that the oft-ridiculed tales of draconic blood flowing in the veins of [[Khorvaire]]’s [[human]] [[sorcerer]]s might be more than mere fancy.
See also [[Qataakhast]] and [[Gornath the Madwyrm]].
The commander of the small military contingent in [[Mokush]]
and a militia captain, Roorprek is a dour and pragmatic
man who takes the [[Path of Inspiration]], and his position,
seriously. Roorprek has compassion for the [[ogre]]s and
wants to help them on their journey along the Path. His
patience with [[Galshani]] has been strained, but he's happy
now that the [[Chosen]] lady seems to be more involved in
Mokush's running.
This 60-foot length of silk rope weighs 3 pounds and can hold up to 3,000 pounds. If you hold one end of the rope and speak the command word, the rope animates. You can command the other end to move toward a destination you choose. You can also tell the rope to fasten itself securely to an object or to unfasten itself, to knot or unknot itself, or to coil itself for carrying.
If you tell the rope to knot, large knots appear at 1-foot intervals along the rope. While knotted, the rope shortens to a 50-foot length and grants advantage on attempts made to climb it.
The rope slowly mends itself over time, repairing minor damage. If it is completely severed, it is destroyed.
This rope is 30 feet long and weighs 3 pounds. If you hold one end of the rope and speak its command word, the other end darts forward to entangle a creature you can see within 20 feet of you. You can release the creature by speaking a second command word.
You can cut this 50-foot coil of hempen rope into any number of smaller pieces, and then speak a command word and cause the pieces to knit back together. The pieces must be in contact with each other and not otherwise in use. A //rope of mending// is forever shortened if a section of it is lost or destroyed.
This thin rapier can be used as the bow for a stringed
instrument, such as a fiddle or a viol. When you play the first few notes of a song on your instrument with this sword, your instrument will continue to play your intended song for up to one minute on its own.
Decay is part of nature, and this is reflected in the swamp-like
Rot, a relatively small [[layer]] of [[Lamannia]] filled with fallen, rotting trees.
Corpses of megafauna beasts lie scattered around the layer,
and giant insects and other massive scavengers prey on their
remains. There's a community of [[wererats|lycanthrope]] thriving in the Rot,
and there could be a small outpost of the [[Children of Winter]]
who found their way here. While the Rot is a symbol of death and decay, it's entirely natural, and [[undead]] have no place here. It's possible a [[necromancer|necromancy]] could arrive here, hoping to animate the massive corpses; however, this would violate the
theme of the [[plane]], and if there's any higher power at work
in Lamannia, it would certainly direct forces to counter this.
While most layers of Lamannia are free from disease, disease
itself is part of nature; a [[manifest zone]] tied to the Rot could
spread plagues into the surrounding region.
Rotting Bal derives his name from the sores that cover his skin, an apparent side effect of his powerful [[aberrant dragonmark]]. Bal was born in the [[Shadow Marches]], in a hidden monastery dedicated to the [[Dragon Below|Cults of the Dragon Below]]; he learned martial arts at the feet of a [[dolgaunt]] master. But he always felt a certain distance from the other monks. The promises of [[Xoriat]] felt empty: Bal was driven by different visions. When [[Thora Tavin]] came to his monastery, he knew she held the key to his destiny.
Bal is utterly devoted to Thora and would give his life to protect her. With his lethal touch, he is one of the deadliest people in [[Sharn]], and he serves House [[Tarkanan]] as assassin and enforcer. While he is fanatically devoted to the Tarkanan cause and has no compunctions about killing, he is no fool; he can be reasoned with and would rather avoid unnecessary conflict if possible.
Though a majority of the [[Demon Wastes]]’ denizens
are devoted to [[demon]]s or [[rakshasa]]s, some serve other creatures of
evil. Rotting Blade is a tiny settlement set in the permanent gloom of the [[Shadowcrags]], where a powerful [[night hag]] named ''Vraria'' rules over a community of [[kobold]]s, [[human]]s, and [[orc]]s captured from
the [[Eldeen Reaches]] and the [[Shadow Marches]]. Subjected to
unspeakable cruelty and driven mad by the taint of
the Wastes, these thralls have come to regard the hag
as their queen and mistress. She uses them for labor, sport, and (when their bodies give out) food for their fellows. To maintain Rotting Blade’s population, her
servants range beyond the Wastes, rounding up new
batches of slaves to subject to their mistress’s spite.
Rotting Blade is little more than a collection of
hovels in a barren landscape. Vraria lurks out of sight
when visitors arrive, emerging with her servants in
the hope of overwhelming intruders and adding them
to her stable of thralls.
[[Aundair]] is renowned for its [[wizard]]s, and the Royal Eyes of Aundair excel at spellcraft and [[divination]]—almost every agent of the Royal Eyes has an
arcane advantage. Agents spy on other nations, pursue
notorious criminals, and engage in a host of other
wand-and-dagger missions for the crown.
The Royal Eyes lack the sheer number of sources and boots on the ground that the [[Dark Lanterns|King's Dark Lanterns]] cultivated prior to the outbreak of the [[Last War]]. Stil, they are one of the premier intelligence agencies in [[Khorvaire]].
While the Royal Eyes ultimately report to Queen [[Aurala|Aurala ir'Wynarn]], the day-to-day operations are handled by her spymaster [[Thuel Racannoch]]. The headquarters of the Royal Eyes is the [[Tower of the Eyes]] in [[Fairhaven]].
The tremendous ruins and floating rubble of [[Stormreach]] provide obstacle courses for occasional rubble races, spectacles of acrobatic skill. Racers charge
through the city vaulting fruit stands, ascending broken
pillars, racing along giant walls, and traversing floating rubble to reach the finish line. The danger of the
races, and the tricks the racers play on each other, draws
spectators who are less interested in the races’ outcomes
than in seeing death-defying leaps and deadly falls.
Stone is rarely quarried in [[Stormreach]], instead being
recovered from the ruins. Stone blocks are broken up
and reused in some places. The Rubble Warren, on
[[Saltire]]’s northern edge, is one. Many street children
play in the site, making their own tunnels in the rubble.
A few of them are dedicated to becoming explorers and
adventurers and are trying to hone their skills. One
of these, twelve-year-old Cadroc, is quite capable for his age and leads a small
band of like-minded children. He might fixate on a PC as an idol; though this behavior could be annoying, Cadroc could be a useful and loyal hireling.
<<list-links-article "[tag{!!title}sort[title]]">>
The [[Doldarun]] [[dwarves|dwarf]] say that any contact with the [[Realm Below]] corrupts the [[Mror|Mror Holds]]. One recent development supports their argument: the occasional birth of ruinbound dwarves among the [[Mror clan]]s. The ruinbound dwarf is born with a personal [[symbiont]]—an unnatural entity bound to the child. Unlike most symbionts, this entity cannot be separated from its host, and the two are permanently fused. Many ruinbound dwarves have additional disturbing mutations; you can roll on the Ruinbound Mutations table below for ideas, or create your own. These secondary mutations are disturbing, but they don't change the rules of how that character is played or grant mechanical benefits. For example, even if a ruinbound dwarf seems to have no eyes, their vision uncannily works as well as any other [[dwarf]], though it defies logic.
| !<<dr d8>> |!Ruinbound Mutation |
| 1 |''Unnatural Hair.'' Is your hair an unusual color? Ectoplasmic in nature? Does it move of its own accord? |
| 2 |''Unusual Skin.'' Is your skin transparent? Slick? An unnatural color? |
| 3 |''Aberrant Eyes.'' Are your eyes luminous? Invisible? Do they resemble the eyes of an animal? |
| 4 |''Strange Appetites.'' Do you prefer your food charred? Do you eat flowers, or can you only eat living things? |
| 5 |''Living Tattoos.'' You appear to have exotic tattoos across your body. They slowly and constantly change, and you have no control over the design. Do they show images or words, or are they incomprehensible? |
| 6 |''Ageless.'' The passage of time affects your appearance differently than others. Do you appear old beyond your years, or look surprisingly young no matter your age? As you grow older, do you look younger? |
| 7 |''Inexplicable Hearing.'' You have no visible ears, yet you can hear clearly. Does sound feel different to you? How do you experience it? |
| 8 |''Extra Joints.'' You have one or more extra joints. Is it just an unusual joint in your fingers, or can you bend your entire leg backward? |
To date, no one knows the origin or purpose (if any) of the ruinbound dwarves. [[Doldarun]] asserts that they are children corrupted by [[Dyrrn]] in the womb, tools of the [[daelkyr]] waiting to be activated. The sages of Clan [[Narathun]] say that they may indeed be the result of strange forces emanating from the [[Realm Below]], but there's no evidence that the children have any direct tie to the [[daelkyr]] or that they're drawn to malefic actions. Regardless of the truth, ruinbound dwarves are a recent development. The first ruinbound children were born thirty years ago, and traditionally, dwarves aren't even considered to be adults until their fiftieth year; however, ruinbound children mature surprisingly (some say unnaturally) quickly.
Ruinbound dwarves are quite rare and can be born to dwarves of any bloodline. The Mror still don't know what to make of them, though their attitude generally mirrors their attitude toward the use of [[symbiont]]s.
Lord Ruken ir’Clarn is the speaker of the upper chamber and one of the most influential democracy activists. Lord ir'Clarn is a plump man with straight dark hair and fair skin, his figure showing years of privileged living. Willing to pursue any means to ensure that the parliament triumphs over the monarchy, he’s enlisted a number of sympathetic nobles to carry out his dirty work, including [[Hass ir'Tain]] of [[Sharn]]. Once he secures control over the military from [[Boranel|Boranel ir'Wynarn]] he wishes to start a campaign to reclaim [[Droaam]]. For him, the [[Five Nations]] were made by [[human]]s, for humans, and the idea of giving monsters or [[construct|warforged]]s rights is an aberration. His support for the [[Cyran refugees|Mourning]] is an extension of this, Ruken seeing the importance of caring for the people of [[Cyre]] even if they no longer have a home.
The [[giant]]s of [[Xen'drik]] worship of Rushemé, the all-encompassing spirit of the land. However, they believe in gods that stand above Rushemé, mighty beings who laid the foundations of the world using the bones of bound [[fiend]]s. The [[Guardians of Rushemé]] focus on the spirits of the earth, but a few priests
among the giants still seek to placate the gods above.
Many lesser spirits feature in the giant pantheons, but
four stand out.
* ''Ouralon Lawbringer'', who gave up his shadow in exchange for knowledge of magic and who shared that knowledge with the titans of [[Xen'drik]]. In the present day, the [[Guardians of Rushemé]] claim that Ouralon was in fact consumed by his shadow and that those who work arcane magic are equally doomed.
* ''Rowa of the Jungle Leaves'', the goddess of life and nature. Rowa is much beloved, but she is given to fits of passion that can drive her into a rage. As a result, storms, wildfires, and other natural disasters are attributed to “Rowa’s wrath.”
* ''Banor the Bloody Spear'', the god of the hunt and of the role of the [[giant]] within the natural world. Ouralon is the lord of law and magic. Rowa is the goddess of the wild. Banor is the bridge between the two, the guide who shows civilized people how to live in harmony with nature. When giant fights giant, Banor takes on the aspect of war, but it is a role he plays with great sorrow.
* ''[[Karrak]] the Final Guardian'', the Keeper of the Dead. The [[giant]]s say that Karrak measures each life at the moment of death, considering past deeds and the unfulfilled destiny of the soul. He saves the worthy souls from disappearing into the greater whole of Rushemé, preserving them in his realm until they are needed on [[Eberron]] once again.
The missionaries of the [[Sovereign Host]] claim that
these are just different names for [[Aureon]], [[Arawai]],
[[Balinor]], and the [[Keeper]], with aspects of [[Dol Dorn]],
the [[Shadow]], and the [[Devourer]] woven in. Regardless of this, the
[[giant]]s of Rushemé point out that their traditions are
older than [[human]] civilization, and that if anyone is
confused about the nature of the divinity, it’s more
likely to be humanity than giantkind.
The true nature of this force is a mystery.
Clearly some force empowers the [[Guardians of Rushemé]] and can
even engage in divine channeling. Perhaps it is the
continental soul the [[giant]]s believe it to be. Or perhaps
Rushemé is the spiritual host of the titans, ancient and
mighty beings who bound their souls to Eberron in
their quest to escape death. Perhaps it is a force from
[[Lamannia]], or a lord of [[Thelanis]] toying with mortals.
The true nature and motive of Rushemé can have a
tremendous impact on the role of the Guardians in
a game.
Lady Rusila ir’Clarn holds the position of [[Brelish|Breland]] consul to [[Stormreach]], serving from the [[Consulate|Brelish Consulate (Stormreach)]] in the [[Sloths]]. She has no real authority
in the city, but Lady Rusila has many friends among the [[Stormreach]] elite. She goes out of her way to support political dissidents exiled from other nations and to show sympathy for [[Cyran|Cyre]] refugees. Along each step of the way, she has sown doubts about the efficiency of the [[Wynarn family]]—the kings and queens whose flawed rule paved the way for the [[Last War]]. Lady Rusila is a supporter of the Brelish movement that hopes to abolish the monarchy after King [[Boranel|Boranel ir'Wynarn]]’s death, and as this turn of events comes closer to reality, the movement might use [[Stormreach]] as a base of operations.
Rusila ir’Clarn is a Brelish woman in her early thirties. She has long, dark hair; pale skin; and large violet eyes, which suggest [[elf]] or [[half-elf]] blood. Her voice is deep and smoky; she’s an accomplished singer with music from goblin dirges to Brelish ballads. Lady Rusila has a warm demeanor, but behind this mask she
is ruthless and cunning, willing to use poison, assassination, or any other means to accomplish her goals.
Lady Rusila has a keen eye for opportunity, and if she sees any gain for herself or her cause, she might help her fellow Brelander. She can provide emergency medical treatment using an enchanted wand and her limited medicine kit, but her connections are far more useful. If the PCs accept aid from Rusila, they’ll owe her a favor.
!! Adventure Hooks
* Lady Rusila ir’Clarn likes to move among the common people, and the party might encounter her singing in a tavern or discussing the [[Last War]] with former soldiers. Members of [[Dannel's Wrath]] attempt to kidnap her; if the adventurers intercede, they earn her favor.
* Members of the [[Swords of Liberty]] have come to [[Stormreach]]. Lady Rusila wants to eliminate this cell before it can cast a bad light on the anti-monarchy movement, but she can’t risk publicly opposing the Swords. If possible, she urges the player characters to eliminate this threat; otherwise, the party might be caught in the middle of a struggle between the Brelish factions.
The Rusty Nail’s claim to fame is its provision for the
tastes of [[warforged]], providing blended oils and [[alchemical|alchemist]] fluids that can be felt as pleasurable sensations by them
(some [[warforged]] are concerned about the long-term
effects of consuming these dubious concoctions). The
Nail therefore serves a steady stream of warforged and
their friends, often adventurers who have spare coin.
Ruukosi, one of eight monastery-fortresses of [[Adar]], guards the mouth of the [[Ruukosi River]] where that waterway spills under a natural arch and into
the wide [[Jathara Sound]] below. The stronghold occupies
the cliffs on both sides of the river, and the wondrous
arch that bridges the river has been hollowed by muscle
and mind to serve as a towering overlook. Monks here can
see into [[Syrkarn]] when weather permits. Farther upriver,
the Ruukosi river widens and slows. There, the small Adaran
town of [[Khada]] thrives not only on the abundant fish, but
also on the farm goods grown on the narrow flood plain
and hills near the river. Khada supplies the monks, and
the monks in turn guard the town against the dangers of
the mountains. Many Khadan youths are educated at the
monastery, and some join the monks for good. Since it
is the fortress closest to [[Xephanan]], Ruukosi also enjoys
a sizable population of [[xeph]]s.
The Ruukosi River in [[Adar]] flows into the [[Jathara Sound]] near [[Ruukosi]].
This [[oni]] is an imposing sight, ten feet of
muscle sheathed in chainmail. Her skin is icy blue, and
her horns are glistening black ivory. Ruukra is especially
devoted to the [[Path of Inspiration]] and the belief that
through good works, she can purify the [[demon]] within.
She is dedicated to honor and grace, and when she is off the battlefield
she goes out of her way to show compassion to others. In
battle, she acts with honor—she shows no mercy to those
she believes to be tools of evil, but she will not condone
unnecessary cruelty among her companions. Although
brave, she is a wise warrior and knows when to retreat to
fight another day. If she is seriously injured, she typically
turns invisible and takes to the air, staying out of her
enemy's reach while she regenerates. As with all members
of the [[Horned Guard]], she has been forbidden from using
her //change shape// power. The priests say that the body of the
[[oni]] is designed to hold the //altavar//, and changing
shape weakens those bonds and lets the spirit influence
the individual.
Ruukra can be encountered on the borders of [[Adar]],
or as a guardian of the peace in a bastion city. She initially opposes the PCs, but if they act with honor, she
might come to respect them. Ruukra is violently opposed
to the [[Horned Shadow]], and a joint battle against the
Shadow could easily cement a bond between her and the
PCs. Eventually, she might come to realize that the PCs
are more honorable than her [[Inspired]] masters. Although
she will never abandon the [[Path of Inspiration]], she could
turn against the Inspired.
Despite her fearsome appearance, Ruukra is calm and
compassionate. She never lets anger show, even in battle.
She pities her opponents rather than hating them.
High Prince Ryger ir’Wynarn is lord of the [[Seadragon Principality|Seadragons]] and nominally the leader of all the [[Lhazaar Principalities]]. He has held his position of High Prince of the [[Lhazaar Sea]] for over a decade, since wresting the crown from the head of [[Horget Black]]. However, Ryger and his allies (and enemies) know that he could be overthrown by one of the region’s other princes at any time.
Ryger claims descent from the kings of [[Galifar]] and dreams of
rebuilding a united kingdom. So far, though, he has been unable to unite
the squabbling princes to do anything more than present a unified face
(Ryger’s own) to the [[deliberations|Treaty of Thronehold]] at [[Thronehold]] that ended the [[Last War]] and established the [[Lhazaar Principalities]] as a sovereign nation.
Ryger is remarkably clever and charismatic, with skills in diplomacy as well as the blade. He has earned a reputation as a man of his word, though he will not give his word carelessly. However, he is a [[Lhazaarite|Lhazaar Principalities]], and he respects the traditions of his people—including piracy. Merchants who sail the [[Bitter Sea]] can pay for the protection of the [[Seadragons]], and Ryger will strike at any ship that dares to raid near [[Regalport]]. But he feels no obligation to hunt down Lhazaarites who engage in piracy.
One of Ryger's earliest acts as prince was to grant House [[Thuranni]] land on [[Greentarn]]. This alliance between House Thuranni and the [[Seadragons]] is one more weapon in the high prince's arsenal. Some say that Ryger wanted to bring House Thuranni to the Principalities to guard against of the [[Gray Tide]] principality; if anyone can counter [[changeling]] schemes, it's the house of shadow.
The Saartuk [[shifter]] tribes occupy the entire western coastline of the [[Tashana Tundra]] in [[Sarlona]], from the [[Eska Mountains]] to the [[Riedra]]n border. The Saartuk harvest virtually all of their resources
from the sea, and individual tribes move up and down
the coastline and among various inland waterways.
The Saartuk maintain the permanent coastal village of
[[Whitetooth]] and coexist peacefully with [[maenad]] colonists
in the settlement of [[Winterstead]].
See also [[Culture of the Tashana shifters]].
Flame-like radiance descends on a creature that the spellcaster (e.g. a [[cleric]] or [[Thrane]] [[wandslinger]]) can see within 60 feet. If the creature is unable to dodge, it is seared by the fiery light.
While in this saddle on a mount, you can't be dismounted against your will if you're conscious, and the mount is harder to hit with attacks.
Saeria is an [[elven|elf]] [[lich]] of the [[Grim Lords]] from the island of [[Farlnen]]. In 545 YK, she formed the //Talons of Ice//, a cabal of necromancers who spread fear and death across the Five Nations. Initial success made her overconfident, and she was defeated by an alliance of templars of the [[Silver Flame]] and soldiers of [[Karrnath]]. While her followers were destroyed, no one knew where to find the lich’s phylactery—so killing her would simply allow her to return elsewhere.
Saeria has been chained to the wall of a deep cell in [[Dreadhold]] for over four hundred years. She does not require food or water, and as a result she has had no contact with living beings since she was imprisoned.
Sahemi "the Emissary" was one of House [[Jorasco]]’s brightest young healers when he was called to tend to the flood of refugees and wounded fleeing
what was once [[Cyre]] on the Day of [[Mourning]]. Dealing
with that crisis changed him somehow, and one night
he started walking northwest, disappearing into the
wilds of southern [[Thrane]].
After a two-year absence, Sahemi returned to
tell House [[Jorasco]] that the [[Mark of Healing]] should
be used not just to heal people, but to heal the land
as well. Using [[druid]]ic knowledge he learned in the
[[Eldeen Reaches]], Sahemi has started training young
members of House Jorasco in the ways of the [[Wardens of the Wood]]. Eventually, Sahemi wants to find a way to ritually cleanse the [[Mournland]] and make
it habitable again. He has not yet learned the entire
ritual, but every night he gains another piece of the
information while he dreams. A charismatic speaker,
Sahemi is something of a polarizing figure within
House Jorasco. Many of the elders distrust him, but
Sahemi’s expansive view of what the [[Mark of Healing]]
is capable of appeals to younger Jorascos.
Sahuagin are a predatory, piscine race that ventures from the ocean's black depths to hunt the creatures of the shallows and shore. Though they dwell in the deepest trenches of the ocean, sahuagin view the entire aquatic realm as their kingdom and the creatures in it as blood sport for their hunting parties.
The self-styled rulers of sahuagin ocean domains are massive mutant males that grow second sets of arms. They are terrible foes in battle, and all sahuagin bow down before these powerful barons.
The sahuagin inhabit the ocean depths surrounding
[[Shargon's Teeth]], an island chain between [[Xen'drik]] and
[[Khorvaire]], as well as the larger [[Thunder Sea]], under a kingdom they call the [[Eternal Dominion]]. Most have turned to the worship of the dark god known as the [[Devourer]]; a popular belief among the followers of this god is that a sahuagin
gains power and knowledge by eating other intelligent creatures, which can make a trip to their empire a dangerous experience.
Some sahuagin tribes can't be reasoned with; they attack any who attempt to pass through Shargon's Teeth to reach the jungles of [[Xen'drik]]. Other tribes, however, make a living by selling their services as guides and leading ships through the hard-to-navigate waterway. These friendlier sahuagin regularly trade with and assist explorers and merchants from [[Khorvaire]], and many people in [[Sharn]] have standing deals with these tribes.
!! Sahuagin Biology
The sahuagin dwell on the floor of the [[Thunder Sea]]. They
possess an uncanny ability to rapidly adapt to changing
pressure, and can ascend from the depths to the surface with
no ill effects. Darkvision allows them to see even in the blackest
depths of the ocean, though they require at least a little light to
function at full efficiency. Their tough skin is as tough as leather
armor, and their claws and teeth are deadly weapons.
Human scholars are aware of the existence of sahuagin
“mutants,” but few realize these aren’t random mutations;
they’re the most visible products of a system that touches every
sahuagin in the [[Eternal Dominion]]. From the moment they emerge from
the spawning pools, young sahuagin undergo a regimen of diet,
mystic rituals, and training that shapes them for their intended
purpose. Sahuagin aren’t clones, but a sahuagin warrior is
imbued with strength and fury, and a sahuagin assassin is
swift and deadly—each by design. The sahuagin //create// their
[[sorcerer]]s. All Dominion sahuagin go through this initial process
of shaping, and those who prove themselves worthy can go
farther still, undergoing the rituals that produce champions
such as the four-armed barons and the [[malenti]]. But these are
just two examples of what the sahuagin [[magebreeders|magebreeding]] can
achieve. The [[Claws of Sha'argon|Claw of Sha'argon]] are another example of these magebred champions.
What do sahuagin eat? Whatever they want, and often,
whoever they want. Sahuagin are voracious omnivores who
demonstrate their mastery over things by consuming them.
Food brings great pleasure to the sahuagin, and they take pride
both in the preparation of food and in the diversity of their diet;
they farm both fish and flora, and hunt creatures that can’t
be farmed. Eating a [[locathah]] servant can either be an act of
punishment or a great honor, depending on how the meal is
prepared and consumed. Like the [[gnoll]]s of the [[Znir Pact]], it’s
common for a sahuagin to eat at least part of a fallen enemy, though this is more to seal the victory than to honor the spirit; you haven’t truly defeated someone until you’ve consumed them. With this concept in mind, a DM may wish to give sahuagin
NPCs resistance to ingested poisons.
!! Non-Dominion Sahuagin
The sahuagin of the [[Eternal Dominion]] are an advanced and
ancient culture that has little interest in the surface world. Its
people generally wouldn’t randomly attack a fishing village.
But what if you want an adventure where the sahuagin attack?
The Eternal Dominion is a culture, but the sahuagin
species extends beyond it. In [[Khorvaire]], you have [[human]]s of
the [[Five Nations]], but you also have humans of the [[Shadow Marches]] and humans of the [[Demon Wastes]]. Similarly, the Eternal Dominion hasn’t extended beyond the [[Thunder Sea]], and sahuagin in other waters may be very different; perhaps
the sahuagin off the shores of the [[Demon Wastes]] have been
twisted by their devotion to [[fiend]]s. Even in the Thunder
Sea, the border sahuagin are wilder than those of the inner
Dominion, and you could find sahuagin in the fringes that
have never accepted the traditions of the Dominion. The
Eternal Dominion is a sahuagin culture, but it’s not the only
option.
With that said, the secondary mutations—the barons,
the [[malenti]], the [[Claws of Sha'argon|Claw of Sha'argon]]—are created using
Dominion rituals and the blood of the [[kar'lassa]], and these
should be tied to the [[Eternal Dominion]].
!! Sahuagin and Malenti Adventurers
The sahuagin of the [[Eternal Dominion]] aren’t driven by
the desire for gold that draws many [[human]]s to the path of
adventure. Most are fiercely devoted to the Dominion—but
what if your duty to the Dominion requires you to venture onto
dry land? Perhaps you need to negotiate with the dryskins.
Maybe you’re seeking information on a force that’s meddling
with the Dominion—is it House [[Cannith]] or the [[Lords of Dust]]?
Perhaps you’re pursuing your peoples’ goal of consuming an
[[overlord]] or conquering the [[plane]]s. Maybe you’ve been sent to
study the dryskins themselves, to decide whether they’re worth
conquering. Or you might just be an exile or a rebel, a rare
outlier who opposes the ambitions and actions of your people.
However, there are two significant challenges to adventuring
as a sahuagin. The first is that you’re an alien, a creature with
a face few recognize, and that those who do typically view with
fear. The second is the limited amphibiousness trait possessed by sahuagin—a need for regular immersion in water can be a crippling requirement when an adventure
leads to the [[Blade Desert]]. However, the sahuagin have
developed a solution that solves both of these problems. While
most people of the [[Five Nations]] have never //seen// a sahuagin,
that doesn’t mean they’ve never //met// one. Unbeknownst to the [[Five Nations]], there are [[malenti]] in [[Sharn]], [[Stormreach]], and other ports of the [[Thunder Sea]] passing as many other [[humanoid]] races and traveling the surface wherever the Dominion needs eyes and hands.
By playing a [[malenti]], you can secretly play a sahuagin who’s assumed the identity of the person they appear to be. While the [[Dominion|Eternal Dominion]] has carried out a few targeted replacements to get malenti into influential positions,
often malenti are just replacing people who happened to be
in the wrong place at the wrong time: smugglers, fisherfolk,
or pirates who strayed into Dominion territory. The purpose
of this replacement isn’t to take advantage of the character’s
previous life, but rather to place agents who can breathe
on land and move freely without drawing attention. So as a
malenti you might have been a sailor or a pirate—but now
you’re an adventurer traveling the world!
Saidan Boromar is the current patriarch of the [[Boromar Clan]]. Saidan learned his trade on the streets of [[Lower Dura]], and he has a quick tongue, silent feet, and a swift hand with a knife. Saidan and his wife [[Mala|Mala Boromar d'Jorasco]] can usually be found at the [[Tain Gala]]. He is a member of the Gold Concord of the [[Aurum]].
Saidan is in his late seventies, and has fierce dark eyes and white hair. He is intelligent and charming, but impatient at times.
One of the greatest secrets of [[Stormreach]] is also among its very oldest. Over [[one hundred thousand years ago|Age of Demons]], [[Xen'drik]] was home to an entity of incredible power and hate, one of a group of godlike beings called the
Na-Vakhti—creatures known to the mortal world as the
[[overlord]]s. Territorial even by demonic standards, this overlord
laid claim to Xen’drik, demanding obeisance even
from others of its kind. The entity’s name was Sakinnirot, and like its sibling overlords, its rule ended when the pure force of the newly kindled [[Silver Flame]]
bound it.
A new, dark age for Xen’drik followed the end
of the [[Age of Demons]]. The [[giant]]s who rose to prominence eventually made their way to the northern reaches of their island home. There they founded
a new [[city|Stormreach]] built along the equator—Sakinnirot’s former domain—on top of the desolate ancient city and quickly claimed the ruins for their own. They
scoured the ruins, and in the dust among the stones,
they unearthed crude records drawn on crumbling
walls and etched into broken tablets. From this lore,
the giants learned of their new home as it used to
be: a city of slaves who toiled at the whim of powerful [[overlord]]s, who made them prosper, and found inspiration in it. The giant civilization began to
grow, in part with the aid of what they uncovered
in the ruins, and as it did, the demon lord beneath
their feet stirred.
The giants accomplished much in the [[age|Age of Giants]] to
follow, and Sakinnirot was the long shadow cast
beneath their ever-rising star. Over the passage of
millennia, some of the more erudite and spiritually
sensitive among the city’s giants began to suspect
something was wrong with their adopted home,
but there was no achievement colossal enough to
make the feeling go away, no incantation mighty
enough to provide the answers they sought. When
at last their seekings brought the destruction of
their civilization down upon them, Sakinnirot was
pleased—and strengthened—and it patiently awaited
the arrival of the next civilization foolish enough to
call its former charnel palace home. In a very real
sense, Sakinnirot //is// [[Stormreach]] and vice versa, and
the fate of the two has always been and shall remain
inexorably intertwined.
In contrast to some of the other [[overlord]]s whose
names are known to select mortal scholars, the name of Sakinnirot is unknown outside the [[Lords of Dust]], and even among [[fiend]]s few will speak its name. This
reticence is not due to any lack of power or influence on the part of the [[overlord]]s. In fact, the opposite is true, since Sakinnirot is so powerful that even its
own cultists hesitate to speak its name aloud, let alone
write it down for others to find. They say that every
time a mortal speaks, reads, or writes the name of
Sakinnirot, the dark force to which the name belongs
grows restive.
Sakinnirot is bound, but its anger can reach
beyond the walls of its prison, bringing misfortune
to any who draw its attention. Cult doctrine holds
that Sakinnirot will allow no mention of its name
upon mortal lips until and unless it stands before
them as the conquering god it knows itself to be.
Only then, when the races of the [[Dragon Between|Eberron]] lie
bloody and cowed before it, will Sakinnirot abide the
sound of its own name. Until then, it will be known
only by the sobriquet used by its followers: “the Scar
that Abides.”
!! Patron of Patient Vengeance
The Scar that Abides is believed to be the
literal embodiment of the spite and the patient rage
of the [[Dragon Below|Khyber]], birthed by the Dragon’s own
meticulous hand. Those who worship the Scar that
Abides say that Sakinnirot was the first overlord
conceived by [[Khyber]] but the last to actually be born,
and that its protracted gestation partly accounts for
its substantial power. It is patron to all those who
plot bloody revenge, reveling in the gratification of a
grudge satisfied. Its following is the cult of an injury
savored, and wounds of both a physical and spiritual
nature are left to fester in its name. Sakinnirot
finds sudden or unfocused rage weak, and exhorts
its supplicants to be patient in bringing a vengeful
hate to a slow boil. In this regard, its primary rival
is another of its own kind—the [[overlord]] known as [[Rak Tulkhesh]], “the Rage of War,” whom it considers a savage fool.
Within the mortal realm, Sakinnirot bears a special loathing for the [[dragonmarked house]]s, and it grows stronger with each interhouse dispute that
ends in violence. Any cultist responsible for singlehandedly driving two groups of [[dragonmark]]ed mortals into mutual ruin is said to earn no small measure of
favor from the Scar that Abides.
The [[rakshasa]] [[Lorishto]] is a follower of Sakinnirot and seeks to bring about the [[overlord]]'s rebirth.
Salamanders sail across the Sea of Fire in [[Fernia]] in ships forged from blackened steel, their sinuous coils and jagged spines smoldering. Intense heat washes off their bodies, while their yellow eyes glow like candles in the deep-set hollows of their hawkish faces.
The primary servants of the [[efreet|efreeti]],
salamanders can be found serving as soldiers or performing
domestic tasks. For every salamander officer carrying an
ornate spear, there's a salamander butler carrying a brass
tray. Salamanders are extremely proud, and within their
ranks there is great competition over rank and position.
Most are dismissive of mortals, but they can be jealous of
adventurers who receive too much attention or favor.
[[Stormreach]]'s Saltire neighborhood has grown into a residential ward for people who do not identify themselves with a nationality or [[dragonmarked house]]. They own most of the street stalls in [[Cross]] and maintain an unusually quiet neighborhood for such a bustling district. They have nothing to prove, but they are sometimes provoked to protect their own when they fall afoul of gangs and [[militia]]s from other parts of the city.
The [[Rubble Warren]] is located in Saltire.
Known for its extensive
wine collection, Sannid's is one of [[Sharn]]'s finest
restaurants. The cuisine is mostly spicy [[Brelish|Breland]] fare,
with selected entrées representing the best of [[Khorvaire]]'s other cuisines, including [[Karrnath]]i sausage,
[[Aundair]]ian veal with tomato gravy, and [[Mror|Mror Holds]]ian
stroganoff. Its wines come from all over the world,
and Sannid's proudly offers [[Aerenal]] spirits to its most
selective customers. Jaetha Sannid is the third-generation owner and head
chef of the restaurant, a sophisticated and charming
middle-aged woman with silvered auburn hair.
Sar Saeran creates tools of war, from personal armor and
weapons to grand siege engines. The [[efreeti]] [[Azhalar]] is his
best client, but all of the efreet value his peerless work.
He has spent eons trying to create the perfect sword, and
often seeks out legendary blades on the Material Plane—sometimes to keep, sometimes to study for a few minutes,
and sometimes to destroy.
Sar Saeran occasionally visits the [[Immeasurable Market]] of [[Syrania]] to sell his wares and discuss commissions.
In {{!!title}}, you could...
* Infiltrate an empire ruled by psychic overlords.
* Defend an ancient mountain monastery.
* Disable a monolith used to control the dreams of a city.
Tens of thousands of years ago, the vast continent of
Sarlona was the cradle of [[human]] civilization. Three
thousand years ago, the first human colonists left, setting in motion events shaping modern-day [[Khorvaire]].
Sarlona was once home to over a [[dozen distinct kingdoms|Sarlonan province]], but wars devastated the continent. From this
chaos, a band of saviors rose up to forge a new world.
Guided by [[celestial spirits|quori]] and endowed with vast
[[psionic|psionics]] powers, these champions became known as the
[[Inspired]]. Today, the Inspired have united the broken nations into a single realm: the Empire of [[Riedra]]. Outsiders aren't welcome in Riedra, and little is known of the
nation. Merchants tell stories of massive monoliths that
control the dreams of the [[people|Riedrans]], and of secret police
who use [[psionics]] to root out dissidents.
A single nation stands against the might of Riedra:
the mountain refuge of [[Adar]], homeland of the [[kalashtar]]. The Adarans lack the numbers to challenge Riedra, yet they hold their fortress monasteries
against endless waves of Riedran assaults. The Adarans
possess remarkable psychic and martial disciplines.
!! Notable Locations
Like [[Khorvaire]], Sarlona primarily occupies the northern hemisphere of [[Eberron]], and it has all the climatic
and topographic variety one would expect given its immensity. A few places in Sarlona known to Khorvairians
are described below.
* [[Dar Jin]]
* [[Kasshta Keep]]
* [[Ohr Kaluun]]
Other than [[Riedra]], the main regions of [[Sarlona]] are:
* [[Adar]]
* [[Syrkarn]]
* the [[Tashana Tundra]]
!! {{!!title}}'s Influence in Khorvaire
In [[Khorvaire]], you might...
* Struggle to expose the schemes of an order of psychic assassins.
* Steal a memory crystal from an Inspired ambassador.
* Help an [[Adar]]an envoy deliver a vital message to a [[kalashtar]] elder.
Although outsiders aren't welcome in [[Riedra]], the empire is a powerful nation and a valuable trading partner. Riedra offered assistance to multiple nations during
the [[Last War]]. [[Karrnath]] relied on Riedran aid to survive
a wave of terrible famines, and [[Aundair]] also received
support from Riedra. King [[Sebastes|Sebastes ir'Kesslan]] of [[Q'barra]] has used
Riedran troops to maintain order in [[Newthrone]].
[[Riedrans]] rarely appear on the streets of [[Khorvaire]],
but [[Inspired]] ambassadors attend every court. Although
the Inspired present themselves as generous and kind, a
darker force followed them across the sea. The [[Dreaming Dark]] is an enigmatic order of monks, assassins,
[[warlock]]s, and mystics. Their ultimate agenda remains
unknown, but they hunt the [[kalashtar]] and some believe
they can control people by manipulating their dreams.
While most people dismiss the [[Dreaming Dark]] as a foolish story, you might uncover the truth behind the tales.
Both the [[Inspired]] of [[Riedra]] and the [[kalashtar]] of [[Adar]]
possess psychic powers, and treasures from Sarlona
reflect this. A set of Sarlonan sending stones might take
the form of crystals that allow telepathic communication. The rod of rulership, ring of mind shielding, ring of
telekinesis, potion of mind reading, and the medallion of
thoughts could represent psychic items from Sarlona.
In addition to psychic treasures, Sarlona is a source of
a number of exotic plants and medicines. [[Dreamlily|dreamlily]] is a useful Sarlonan narcotic, but over the course of the past few decades it has become a
common recreational drug.
!!! Trinkets from {{!!title}}
| !<<dr d8>> |!Trinket |
| 1 |A polished crystal sphere; when you clutch it in your fist, a telepathic voice recites a story in your mind |
| 2 |A teardrop pendant made from polished shell; when you hold it, you see the image of a young Riedran man |
| 3 |A six-sided crystal die; when you roll it, you feel a surge of emotion for six seconds |
| 4 |A sealed vial filled with faintly luminescent blue mist |
| 5 |A crystal disk engraved with a labyrinthine pattern |
| 6 |A leather-bound collection of [[kalashtar]] poetry called Shards of the Light |
| 7 |A sphere of polished crystal; when you hold it in your palm, you feel that it knows you and understands you |
| 8 |A cup and ball toy; when you successfully catch the ball in the cup, you feel a momentary surge of joy |
The [[Sarlona]]n nation of [[Riedra]] and region of [[Syrkarn]] are composed of provinces, each of which shares a name with the ancient Sarlonan kingdom that once stood in its place.
!! Before Riedra: The Twelve Kingdoms
By the time [[Sarlona]]'s history was finally codified, the continent's dozens of city-states had become a land of twelve kingdoms, remaining so through long years of conflict.
[[Riedra]]n provinces now bear the names of eight of those
kingdoms—[[Dor Maleer]], [[Rhiavhaar]], [[Khalesh]], [[Nulakesh]],
[[Borunan]], [[Ohr Kaluun]], [[Pyrine]], and [[Corvagura]]. Where
the steppes of [[Syrkarn]] spread, the four kingdoms that
once stood there exist now only as names—[[Mae-Kree]],
[[Sunyagir]], [[Khunan]], and [[Lamecha]].
In northern and eastern [[Sarlona]], the largest powers
were [[Nulakesh]] and [[Corvagura]], each the conqueror of a
dozen smaller states and city-states whose names are lost
to history. For much of the twelve kingdoms' early history, Nulakesh was the dominant military force in central Sarlona, building its rule on a fanatical and disciplined
military caste. Though the [[sorcerer]]-kings of [[Corvagura]]
were renowned, it was secretive [[Ohr Kaluun]] and majestic
[[Khunan]] where Sarlona's sorcerous might truly rose and
ultimately fell. [[Rhiavhaar]] on the west coast cemented its
rule using a different kind of power, controlling the [[Sea of Rage]] largely by means of piracy and slaving.
Having stitched itself together from smaller territories, the inland state of [[Khalesh]] continued to practice conquest of a different sort. As a nation dedicated to the
worship of the [[couatl]], Khalesh had a long history of crusades and attempts at conversion (some benevolent, others less so) among its neighbor states. Likewise, [[Pyrine]] sought to spread its faith—a pantheon of nine deities known as
the [[Sovereign Host]]—throughout Sarlona.
In the steppes and savannah of what is now [[Syrkarn]],
[[Mae-Kree]], [[Sunyagir]], and [[Lamecha]] effectively orbited
the more powerful [[Khunan]], carving out specific niches
for themselves (agriculture for Lamecha, horses for Mae-Kree, mining for Sunyagir). At the same time, each
nation made a point of maintaining armies and magical
might just powerful enough to keep Khunan and the
northern nations from getting any ideas.
The most unusual kingdom of Sarlona's past remains
the oddest of modern [[Riedra]]. [[Borunan]] was and remains
the homeland of "civilized" [[ogre]]s and [[oni]].
!! The Provinces
!!! Riedra
<<list-links-article "[tag[province]tag[Riedra]sort[title]]">>
!!! Syrkarn
<<list-links-article "[tag[province]tag[Syrkarn]sort[title]]">>
In 22 YK, the [[rogue dragon]] Sarmondelaryx, the "Bane of Thrane", began a rampage in the provinces of [[Thrane]] and northern [[Cyre]]. Prince [[Thrane|Thrane ir'Wynarn]] raised an army to face her, but she slayed him and scattered the army. The area devastated in the battle became known as the [[Burnt Wood]]. Sarmondelaryx's reign of terror came to an abrupt end when she suddenly vanished several weeks after Prince Thrane's ill-fated offensive.
While wearing this sarong, your clothes remain dry even
while underwater.
Sasik d'Vadalis is the royal consort (husband) of Queen [[Aurala ir'Wynarn]] of [[Aundair]] and brother of House [[Vadalis]] patriarch [[Dalin d'Vadalis]]. While he has renounced all formal ties to House Vadalis, Sasik's critics point out that he has kept his Vadalis name—an act forbidden by the [[Korth Edicts]]. Some take this as a sign that Aurala intends to abandon the Korth Edicts.
While Sasik has truly renounced all formal power within the house, his relationship with Aurala is integral to her long-term plans for the [[Eldeen Reaches]]. The heirs of the House of Handling seek to usurp the [[Wardens of the Wood]], who currently hold the formal reins of power in the Reaches. Aurala intends to capitalize on this, stabilizing the [[Eldeen Reaches]] as an ally, ensuring a reliable supply of food and other resources if and when war breaks out again.
Satyrs are raucous [[fey]] that frolic in wild forests, driven by curiosity and hedonism in equal measure.
Satyrs resemble stout male [[human]]s with the furry lower bodies and cloven hooves of goats. Horns sprout from their heads, ranging in shape from a pair of small nubs to large, curling rams' horns. They typically sport facial hair.
//''Hedonistic Revelers.''// Satyrs crave the strongest drink, the most fragrant spices, and the most dizzying dances. A satyr feels starved when it can't indulge itself, and it goes to great lengths to sate its desires. It might kidnap a fine minstrel to hear lovely songs, sneak through a well-defended garden to gaze upon a beautiful lad or lass, or infiltrate a palace to taste the finest food in the land. Satyrs allow no festivity to pass them by. They partake in any holiday they've heard of. Civilizations of the world have enough festivals and holy days among them to justify nonstop celebration.
Inebriated on drink and pleasure, satyrs give no thought to the consequences of the hedonism they incite in others. They leave such creatures mystified at their own behavior. Such revelers might have to scrounge for excuses to explain their disordered state to parents, employers, family, or friends.
Sava Kharisa ([[human]] councilor for [[Lower Central]]), one of the most outspoken members of the council, espouses a wide range of radical philosophies and political views. She honestly does the best she can to help all of the people of [[Sharn]],
instead of trying to advance her political career or protect her personal supporters. This has earned her many enemies on the Council, and if she's not careful the [[Boromar Clan]] could try to have her removed from office—permanently. Due to her radical views, connections, and desire to fight corruption, Sava makes an excellent choice as a patron for adventurers.
Savia Potellas ([[human]] councilor for [[Lower Menthis]]) owns a [[brothel|Savia's]] in [[Firelight]], and the conservative members of the Council were outraged by her appointment. She is extremely sharp at business, but she is currently caught in a bind. She has grown tired of paying tribute to the [[Boromar Clan]] and the
[[Tyrants]] in order to run her business, but she is afraid
to openly move against the powerful crime lords.
She could become a valuable
ally for adventurers that oppose the Boromars.
The most elegant bordello in [[Firelight]] claims that its clientele comes from [[Upper Central]] and [[Skyway]] as well as closer districts. Its
real claim to fame, however, is that its owner, [[Savia Potellas]], is
[[Lower Menthis]]'s representative on [[Sharn]]'s [[city council|Sharn Council]]. Her election outraged many of her fellow
council members, but she claims to fairly represent
the interests of the businesses in her ward, and the
merchants of Lower Menthis have never complained
about her leadership.
This scabbard magically forms to fit any blade, as small as a dagger or as large as a greatsword. A blade placed into this scabbard is cleaned of any grime, blood, or rust, and gains the "magical" property (for the purpose of overcoming resistance and immunity to "nonmagical" attacks). This effect lasts until another blade is placed in the scabbard.
[[Dragonborn|dragonborn]]. [[Lizardfolk|lizardfolk]]. [[Kobold|kobold]]s. [[Troglodyte|troglodyte]]s. To the typical [[human]] of [[Q'barra]], they are all the same... derisively referred to as //scales//. Even those who know that dragonborn and
lizardfolk are different species rarely care; at the end of the
day, they are still scales.
Superstitions about the scales are as wild as they are
unfounded. In some of the tales, the scales hunger for
human flesh. In others they consume [[dragonshard]]s to
survive, and this is why they attack [[Tharashk]] miners.
It’s common knowledge that the scales sacrifice their
prisoners; the only question is whether their altars are
dedicated to [[dragon]]s or to [[demon]]s. Everyone knows
that the scales are savages, and that those with metal
tools have traded for them or more likely stolen them
from humans.
In the wake of the [[Mourning]], the scales are growing restless. Every miner knows a story of a caravan raided or a village razed. Children frighten one another with tales of the obsidian palace in the deep jungle and the army massing there.
For decades, the relationship between settler and
scale has been uneasy but stable. The [[Poison Dusk]]
has remained a constant threat, but a balance was
struck with the [[Cold Sun Federation]], and an elder
of the [[Ka'rhashan]] [[dragonborn]] accompanied King
[[Sebastes|Sebastes ir'Kesslan]] to [[Thronehold]] in [[996 YK|Treaty of Thronehold]]. Now that fragile peace is beginning to snap. Cold Sun [[lizardfolk]] are
raiding [[Tharashk]] mines. The attacks of the Poison Dusk are worse than ever. And there are rumors of scaled armies massing in the jungle—a force that could
wipe the settlers from the land.
What has changed in recent years? Lord [[Khalar|Khalar Velderan]] of
House [[Tharashk]] blames the [[Mourning]], claiming that
the scales have heard of the cataclysm and believe
that the settlers are weak. This is a theme that resonates with the settlers, who are as troubled as any by the devastation of [[Cyre]]. However, Tharashk’s recent
actions have had a greater impact on [[Q'barra]] than
the Mourning has. Over the last decade, Tharashk
has exponentially increased its [[dragonshard]] mining
operations. Khalar believes that the [[lizardfolk]] are savages who have no idea what treasures they possess, and he would like nothing better than to assemble a
force of [[ogre]]s, [[troll]]s, and [[orc]]s to drive the [[Cold Sun|Cold Sun Federation]]
tribes from their lands.
This ignorance is dangerous. The [[lizardfolk]] of the [[Cold Sun Federation]] aren’t superstitious fools; they are battling to protect [[Q'barra]] from an evil older than humanity. Three cultures have played in the history of Q’barra. Three forces threaten the settlers in different ways. Adventurers must understand each if they are to protect the nation from the darkness that lies ahead.
* The [[Cold Sun Federation]]
* The [[Poison Dusk]]
* The [[dragonborn]] clans of [[Ka'rhashan]]
The Scar River in [[Droaam]] flows past [[Znir]] and [[Vralkek]] into the [[Manta Bay]].
High-priced and extremely efficient, Scaramar is [[Stormreach]]’s premier hired blade and poisoner. The assassin is never seen with the same identity twice, and his elderly [[gnome]] servant is his only confidant and companion. The few people who even know he exists assume that Scaramar is a [[changeling]]. In truth, Scaramar is the elderly servant, and the other “assassins” are cat’s-paws the gnome uses, murders, and discards like garbage. Scaramar recruits up-and-coming killers with the same line every time: “I’m getting old, and I want to pass on my skills to a suitable protégé. Let me teach you all there is to know about assassination.”
Scaramar trains his minions for a short time
before sending them on their first mission. The
gnome accompanies his protégé on the job to ensure
that all goes smoothly. When the target is eliminated,
the gnome murders his unwitting accomplice and
searches for another. Scaramar has carefully plied
his trade for years since his forced exile from [[Zilargo]].
Still, one of his protégés might escape him and seek
the party’s help. Scaramar has a thousand enemies
who want him dead. If the PCs can expose him or,
better yet, kill the old gnome themselves, they can earn
rewards from the many in [[Stormreach]] who have lost
relatives and partners to the assassin.
On command, this red woolen scarf will fly from the user's neck and attempt to strangle a creature within fifteen feet.
Schemas are form of recorded runic magic. Dating back to the [[Age of Giants]], schemas have been used to pass magical knowledge through the generations. An individual schema might be a few sigils carved into a stone tablet, or an elaborate scripted presentation on the torso of a long-dead [[quorcraft]].
In most cases, an individual schema represents a specific magical building block. These blocks can be combined into magical patterns, storing power ranging from simple [[cantrips|spell tier]] to world-shaking destruction.
A minor schema holding a single [[spell]] is usually a flat strip of some durable material (commonly metal or wood) approximately two inches wide and a foot or more long, with carved or etched runes covering its face. Schemas that store [[low-tier|spell tier]] spells might appear fairly simple, whereas a schema recording a legendary-tier spell might have hundreds of components incorporated within its mystical diagram.
While wielding this enchanted sword, you can attack twice as fast as normal.
The Scimitar Spires are a mountain range in western [[Xen'drik]], forming the southern border of the [[Menechtarun Desert]]. Many [[crystal waste]]s can be found scattered throughout these peaks.
Scions Sound is a body of water in north-central [[Khorvaire]] which forms parts of the borders between [[Aundair]], [[Thrane]], [[Karrnath]], and the [[Mournland]]. It resembles a five-pronged star, and is fed by the [[Aundair|Aundair River]], [[Brey|Brey River]], [[Cyre|Cyre River]], [[Karrn|Karrn River]], and [[Thrane River]]s. The fifth prong forms a narrow channel with cliffs on both sides that leads northward to the [[Bitter Sea]]. At the mouth of this channel is the windswept island of [[Stormhome]], which has been magically altered to be an island paradise by House [[Lyrandar]].
At the center of Scions Sound lies a large island holding the city of [[Throneport]] and the castle of [[Thronehold]], the traditional capital of the Kings of [[Galifar]].
You create three rays of fire and hurl them at targets within 120 feet. You can hurl them at one target or several.
A scorpion chain is a weapon developed and used by the [[Vulkoor]]i [[drow]] of [[Xen'drik]]. It is a spiked chain with a daggerlike blade at each end. The drow have perfected the use of the weapon to harass larger enemies such as [[giant]]s, or as a poison-delivery weapon against less hardy foes.
Eight segmented legs support the long body of a black scorpion. Where its
head should be, the smooth torso of a dark-skinned elf rises up, its arms
wielding silvered blades. The eyes of a hunter scan the area, while a long
tail ending in a deadly stinger dances overhead.
Scorrow (a portmanteau of "scorpion" and "[[drow]]") are possibly the deadliest hunters in [[Xen'drik]]. They are found in nearly any environment, lurking in the
shadows as they search for prey worthy of their venom. They typically travel alone
or in pairs, but they sometimes establish small colonies.
Although their true origins are lost to time and the
depths of the jungle, the scorrow claim that they were
once the most skilled tribe of [[drow]] hunters in all
Xen'drik. Their god [[Vulkoor]] admired their skill and
sent to them a great gift. A colossal scorpion came to the village and stung every member of the tribe. Although
the poison brought great pain, it also brought about a
transformation, changing these drow into the first scorrow. The scorrow speak of the great scorpion with reverence and say that it lurks in the jungle still, appearing
only to those worthy of its gifts.
The scorrow’s predatory and migratory nature
means that they have no central leadership or culture.
Each individual or small clan lives according to its
own whims, though scorrow’s mutual disdain for other
races mean that they rarely come into conflict with
each other.
The [[Vulkoor]]i [[drow]] of [[Xen'drik]] respect the scorrow and treat
them as divinely favored, but no great alliance exists
between the two races. They sometimes work together,
but only if the scorrow view the drow as being deserving
of their company.
A creature with the [[Mark of Scribing]] can use this pen to write on any surface. They can decide whether the writing is visible or invisible, but the writing is always visible to a person with the Mark of Scribing. Any creature with the mark can touch the invisible writing, making it visible to all.
Up to three times a day, you can activate this carved bone comb and become invisible to [[undead]] creatures. The invisibility lasts for up to one hour, or until you attack an [[undead]] or cast a spell.
This alliance of [[cloud giant]]s and [[storm giant]]s seeks the lost lore of the
[[giant]] empire on [[Xen'drik]]. Unlike the [[Dominion of Purity]], these
giants do not wish to reclaim their history but only to preserve it. Scriveners of the Sky explore ancient ruins in search of old documents and relics to add to their archives.
Each scroll of protection works against a specific type of creature chosen by the DM or determined randomly. Options include: [[aberration]]s, [[celestial]]s, planar [[construct]]s (such as [[modron]]s), [[elemental]]s, [[fey]], [[fiend]]s, or [[undead]].
Reading the scroll encloses you in an invisible barrier that extends from you to form a 5-foot-radius, 10-foot-high cylinder. For 5 minutes, this barrier prevents creatures of the specified type from entering or affecting anything within the cylinder, unless they are powerful enough to overcome the magic.
The cylinder moves with you and remains centered on you. However, if you move in such a way that a creature of the specified type would be inside the cylinder, the effect ends.
You can see and hear a particular creature you choose that is on the same [[plane]] of existence as you. Your attempt is modified by how well you know the target and the sort of physical connection you have to it. For example, if you have only heard of the target but never met them, the attempt will be more challenging; if the target is very familiar to you, the attempt will be easier. The attempt also becomes easier if you possess an item belonging to the target, or even better, a lock of hair or bit of nail. If a target knows you're casting this spell, it can allow you to scry on them without having to roll dice if it wants to be observed.
If successful, the spell creates an invisible sensor within 10 feet of the target. You can see and hear through the sensor as if you were there. The sensor moves with the target, remaining within 10 feet of it for the duration. The sensor lasts for 5-10 minutes, or until you willingly end the spell or your concentration is broken. A creature that can see invisible objects sees the sensor as a luminous orb about the size of your fist.
Instead of targeting a creature, you can choose a location you have seen before as the target of this spell. When you do, the sensor appears at that location and doesn't move.
If unsuccessful, the scrying fails, and you can't use this spell against that target again for 24 hours.
The vast world ocean that covers [[Eberron]] is divided into ten distinct
bodies of water, defined by the boundaries of the landmasses they encompass. The lines between seas are often difficult to draw, and a matter of
particular dispute involves determining where the [[Lhazaar Sea]] ends and
the [[Sea of Rage]] begins. (Common wisdom holds that when storms erupt
and unexplainable events start happening, a ship has left the Lhazaar and
entered the Sea of Rage.)
!! The Ten Seas and their Bays
<ul>
<$list filter="[tag{!!title}!is[system]category[location]] -[tag{!!title}tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag[sea]tag<currentTiddler>]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
Sea elves, also known as "aquatic elves" or //alutelquessir//, are members of the [[Aereni noble line]] of [[Valraea]] who rule the domain of the [[Valraean Protectorate]] on the western coast of [[Aerenal]], in the [[Thunder Sea]]. They are [[Aereni]] elves who have been magically transformed to perform their duty in protecting the coastline of Aerenal; their skin is iridescent blue with white stripes, and their fingers and toes are long and webbed. They have gills in their necks and over their ribs, which enable them to breathe underwater, but they still possess lungs and can breathe air as well.
!! Sea Elves and the Undying Court
The sea elves of the [[Valraean Protectorate]] are still elves of [[Aerenal]]. They still have cousins on the surface, take vacations on Aerenal, and travel to [[Shae Mordai]] to consult with the [[Deathless|deathless]] Councilors. So while there’s some cultural divergence, they’re still loyal to the fundamental principles of Aerenal and think of themselves as Aereni. And most of all, it is possible for sea elves of the line of [[Valraea]] to become [[deathless]]. There are deathless sea elves in the Valrean Protectorate—soldiers and councilors who protect and guide the people—and a few ancient sea elves sit on the councils of [[Shae Mordai]].
!! Sea Elves Beyond the Protectorate
The line of [[Valraea]] are the sea elves of the [[Thunder Sea]], but
they aren’t the only sea elves in [[Eberron]]. If you want to play
a sea elf but don’t want ties to the oppressive Protectorate,
there are two additional options you can explore.
//''The Line of Maraen.''// The [[Valraean Protectorate]] guards
the Thunder Sea and holds the line between [[Aerenal]] and
the [[Eternal Dominion]]. But that’s not the only aquatic border of
Aerenal. Along the eastern coastline, the elves of the line of
Maraen are the sentinels of the [[Dragonreach]]. This isn’t a
colony, but rather, a military operation. In the wake of the last
[[draconic|dragon]] incursion, Valraeans were conscripted to serve the
Maraen line, but in the Dragonreach, they’re not subjects,
but soldiers and equals. Here, Maraen sea elves scout and
fight alongside [[sahuagin]] and [[locathah]]. They hold firmly to
the meritocratic principles that underlie [[Aerenal]], and have
formally adopted some of their non-elf soldiers into the line.
They have yet to nominate a non-elf for admission into the
[[Undying Court]], but it’s certainly a path they may pursue.
//''The Lhazaar Exiles.''// The conflict between the [[Undying Court]] and the line of [[Vol]] shook [[Aerenal]]. While most of the line of [[Valraea]] were staunch supporters of the Undying Court, there were some among both Valraea and Maraen
who saw the persecution of Vol as unjust and fought against
their kin. After Vol was defeated, they went into exile with other supporters of the line, traveling north to the [[Lhazaar Principalities]]. A few dwell off the coast of [[Farlnen]], where they have adopted the [[necromantic|necromancy]] traditions of the [[Bloodsails]]. The rest followed their [[elf]] kin to [[Orthoss]], where they are a proud part of the [[Wind Whisperer|Wind Whisperers]] principality.
Sea [[hag]]s live in dismal and polluted underwater lairs, surrounded by vicious aquatic monsters.
Sea hags are by far the ugliest of all [[hag]]s, with slimy scales covering their pallid skin. A sea hag's hair resembles seaweed and covers her emaciated body, and her glassy eyes seem as lifeless as a doll's. Although a sea hag can attempt to hide her true form under a veil of [[illusion]], the hag is cursed to forever appear ugly. Her illusory form appears haggard at best.
Beauty drives a sea hag to fits of anger. When confronted with something beautiful, the hag might simply attack it or deface it. If something beautiful gives hope, a sea hag wants it to cause despair. If it inspires courage, the sea hag wants it to cause fear.
Space has little meaning in [[Kythri]]'s Sea of Chaos. Matter, distance,
and gravity are in constant flux. Lands and creatures appear
and dissolve within moments. There are waves of lightning,
streams of lava, and hurricane winds constantly shifting
direction. While the elements may be mundane—unlike the
surreal vistas of [[Xoriat]]—size has little meaning. A thousand-foot-long [[dragon turtle]] might appear, try to swallow travelers,
then become an island.
Travel through the Sea of Chaos is driven by pure will.
Travelers must impose the concept of motion and distance
on the environment using great mental focus, while also
protecting their vessel from both the destructive forces
and from being transformed. The DM could reflect this
journey with a series of ability checks, or simply require the
adventurers to have a captain and vessel capable of making
the trip before they try to cross the sea. Regardless, to
successfully travel, the adventurers must know where they
want to go; without a destination to serve as a conceptual
anchor, they'll quickly crash on a random [[Shifting Island|Shifting Islands]].
This is a seemingly endless ocean of magma, larger than any
single sea in [[Eberron]]. Ultimately, the Sea of Fire wraps around
on itself; head north from High Hearth and you'll eventually find
it again, but it may take a month of travel. There are islands
in the sea, spires and mesas of basalt and obsidian—some are
inhabited, but many are barren and empty.
[[Salamander|salamander]]s sail the blazing sea in ships forged from
blackened steel, and [[azer]]s fly over it in balloons woven from
brass. Many of the islands hold [[teleportation circle]]s traced in
continual flame, with a word inscribed in Ignan indicating the
destination. Any spellcaster with proficiency in arcana can
expend energy equivalent to casting a rare-tier or higher spell to activate a portal—though unless they speak Ignan, they won't know where it
leads. Here are a few noteworthy destinations.
* //''The [[City of Brass]].''// The sole metropolis in [[Fernia]]. A place of marvels.
* ''//Efreeti Estates.//'' Each of the noble [[efreet|efreeti]] have a sprawling palace or mansion on an island in the Sea of Fire. While not so grand as the City of Brass, these estates are studies in opulence, filled with [[dao]]-crafted wonders and sculptures of metal and flame.
* //''Foundries.''// Foundry islands are models of industry. Some are focused primarily on physical engineering, with vast gears and wheels slowly turning, and chains rising and falling. Others reflect arcane industry, with blazing glyphs and fields of shimmering energy. Here the [[azer]]s work at all hours, producing both mundane, martial, and magical goods for the efreet and their servants.
* ''//[[Deep Halls]].//'' Under the foundries, tunnels extend down below the Sea of Fire into the earth below. These are the domains of the [[dao]].
The Sea of Lost Souls extends from the southwest part of [[Xen'drik]] to the southeast part of [[Sarlona]] and the east coast of [[Argonnessen]]. It connects to the [[Barren Sea]] to the north and the [[Sea of Rage]] to the west. It is known as a perilous sea for sailing, and its reputation for being haunted by numerous ghost ships gives it its name. The Sea of Lost Souls is also said to be the deepest of [[Eberron]]’s oceans—some legends speak
of a trench extending miles beneath the surface, a region
so dark that the darkness itself is alive.
The Sea of Rage is bounded by [[Sarlona]] to the north
and east and [[Argonnessen]] to the south. To the west it
meets the [[Lhazaar Sea]]. It is known for freak storms and
bizarre happenings, from giant waterspouts to supernatural maelstroms and stormfire.
The Seadragon Principality, led by High Prince [[Ryger ir'Wynarn]], is largest of the [[Lhazaar Principalities]]—which is to say, Ryger’s personal followers and the twenty ships under their command form the largest fleet in the [[Lhazaar Sea]], allowing them to control the largest swath of territory. Most of these ships, including Prince Ryger’s flagship, //Dragoneye//, make their home port at [[Regalport]], [[Greentarn]], but the principality also claims the islands of [[Orgalos]], [[Crown Island]], [[Speartip]], [[Ninebay Island]], [[Redwatch]], and [[Thrug]].
The Seadragons have been staunch allies of [[Q'barra]], helping this fledging nation while gaining access to Q'barran [[dragonshard]]s. The Seadragons also have cultivated a business partnership with House [[Orien]], acting as a merchant and courier fleet throughout the [[Lhazaar Principalities]].
Sear is a member of the [[Fleas]] gang of children in [[Stormreach]]. She has developed significant [[sorcerous|sorcerer]] talents that make her a formidable adversary despite her age.
A coastal town in southern [[Cyre]], Seaside was a popular vacation spot even during the [[war|Last War]]. While not as celebrated a destination as [[Stormhome]] in [[Aundair]],
the memory of the City of Sails has become an iconic image of
peace and tranquility for the people of Cyre.
The Seawall Mountains form the border between the nations of [[Zilargo]] (west) and [[Darguun]] (east). It extends from [[Sterngate]], [[Breland]] south to [[Korranberg]], [[Zilargo]]. These mountains are home to a community of Zil [[gnome]]s and [[dwarves|dwarf]] in the mine city of [[Zolanberg]], as well as many tribes of [[kobold]]s and [[goblinoid]]s that have lived here for centuries.
King Sebastes ir'Kesslan rules [[New Galifar]] in [[Q'barra]] as a feudal realm. He is the
grandson of Duke [[Ven ir'Kesslan]], the founder of the settlement. During the deliberations over the [[Treaty of Thronehold]] in 996 YK, Sebastes (accompanied by High Elder [[Bhisma Na'kala Flamebrow]] of [[Ka'rhashan]]) was the representative that contended for the nationhood of Q'barra.
Sebastes is seen as a just monarch who truly cares for his people, and the law
in New Galifar is modeled on that of old [[Galifar]] and
(by extension) the [[Five Nations]]. Though Sebastes has
no real influence in [[Hope]], some of the folk of that
territory look to him for aid and protection.
King Sebastes has worked hard to earn the
trust of [[dragonborn]] and [[lizardfolk]] leaders, and he
has forbidden any [[dragonshard]] mining in scale territory.
Unfortunately, Sebastes’s reach is woefully limited,
and what forces he has have been strained trying
to protect his people from the increasingly aggressive actions of the [[Poison Dusk]]. On the surface, House [[Tharashk]] respects Sebastes’s edict, though Lord [[Khalar Velderan]] continues to lobby for a free hand in the region.
!! Sebastes and the Inspired
Eberron [[dragonshard]]s are as useful to the [[psion]]s of
[[Riedra]] as they are to the [[artificer]]s of [[Khorvaire]], and
such shards are extremely rare in [[Sarlona]]. As a result,
the Riedrans are extremely interested in [[Q'barra]]. The [[Inspired]] ambassador [[Jhakanath]] has provided King
Sebastes with a garrison of troops to help defend his young nation, and a [[Riedra]]n quarter has sprung up in the city of [[Newthrone]]. Jhakanath is purchasing
large quantities of shards from House [[Tharashk]], but
the [[Inspired]] have also secured permission to start
their own mining operations. Nonetheless, the richest shard deposits lie in the lands of the [[scales]], and Sebastes won’t let the Riedrans threaten his relationship with the [[lizardfolk]] or [[dragonborn]]... yet.
The [[Inspired]] have ways of influencing people, and Sebastes might have dreams of the threat posed by the [[scales]]—dreams that encourage him to accept further aid from [[Riedra]], and to build up an army strong enough to seize land from the [[dragonborn]] and claim the kingdom his people deserve. Sebastes isn’t the only target for such influence; the Inspired can also further this goal by planting dreams in the minds of the dragonborn. Conflict in [[Q'barra]] serves the Inspired well, since it increases Sebastes’s need for Riedran troops.
The Second Son is [[archfey]] representing the jealous heir who stands just
beyond the claim to a title. He is always scheming to
usurp power or steal the things that belong to others. In
most tales, his gambits ultimately end in failure, further
driving his bitterness. His formal title in the [[Moon Court]]
is the Count of the Barren Marches, as his lands are
always inferior to those of his siblings.
This small dart is decorated with designs like windy spirals that span the length of its shaft.
When you whisper the word "seek" and hurl this dart, it seeks out a target of your choice within 120 feet of you. You must have seen the target before, but you don't need to see it now. If the target isn't within range or if there is no clear path to it, the dart falls to the ground, its magic spent and wasted. Otherwise, elemental winds guide the dart instantly through the air to the target. The dart can pass though openings as narrow as 1 inch wide and can change direction to fly around corners.
When the dart reaches its target, if the target can't dodge it, they are pierced by the dart and suffer additional lightning damage. The dart's magic is then spent, and it becomes an ordinary dart.
''Founder:'' [[Kolis Sel Shadra]].<br/>
''Current Leader:'' [[Kirris Sel Shadra]].<br/>
''Primary Spheres of Influence:'' [[Crime and punishment|Crime in Stormreach]].<br/>
''Family Businesses:'' Magistrates, the [[Quickfoot Gang]].<br/>
''Districts:'' [[Oldgate]], [[Southwatch]].<br/>
''Allies:'' House [[Thuranni]], the [[Hollow Shards]].<br/>
''Enemies:'' Independent criminals, the [[Swords of Karrn]].
The Sel Shadras of [[Zilargo]] were known to be smugglers,
but there were always rumors that they were behind
some of the unsolved mysteries of the [[Thunder Sea]].
Some said that the sea’s ghost ships and [[demon]] pirates
were [[gnome]] [[illusion]]s, cleverly woven by Sel Shadra
[[bard]]s. True or not, the Sel Shadras encouraged the
rumors and benefited from the reputation. Although
their smuggling operation wasn’t as large as that of
the [[Lassites|Lassite family]], the gnomes possessed a great treasure:
a handful of sails with air [[elemental]]s woven into the
cloth, granting them favorable winds and the ability to
match the speed of [[Lyrandar]] [[galleon|elemental galleon]]s. The family still
owns these //windsail//s, and many believe that the Sel Shadras
never stopped their smuggling—they simply reduced
the scale to avoid detection by [[Galifar]].
The Sel Shadras were never as beloved as the [[Lassites|Lassite family]], but the [[gnome]]s had connections across many
pirate crews and were masters of finance and criminal
strategy. According to the [[Stormreach Compact|History of Stormreach]], the
Sel Shadras are responsible for the administration
of justice; however, it’s an open secret that they also
oversee crime. The original [[Storm Lords]] knew what
sort of city they were building, and they knew that
they needed someone to watch the underworld. A
typical thug might never realize that his boss is tithing a percentage of profits to Lady [[Kirris|Kirris Sel Shadra]], “the Spider of [[Stormreach]],” and that’s how she likes it.
The Sel Shadras monitor crime, and they also
determine punishment. The Sel Shadras are the [[magistrates|Crime in Stormreach]] of the city, capable of administering summary
judgment on anyone brought in by the [[Stormreach Guard]]. Over the years, Lady [[Kirris|Kirris Sel Shadra]] has formed an
alliance with the [[Blood Council]] of the [[Red Ring]], and
violent criminals are sent to the ring in exchange for
a share of the profits from their fights. Lady Kirris
has also established a working relationship with
House [[Thuranni]]. Lady [[Miravella Uruvai d'Thuranni]] has
her own interests in [[Stormreach]] and largely wants
to be left alone. Lady Kirris keeps both criminals
and the [[Stormreach Guard]] out of Lady Miravella’s
way; if anyone is foolish enough to cause trouble for
Thuranni, the Sel Shadras help hide the bodies. In
exchange, the Sel Shadras gain access to the special
services of House Thuranni.
House [[Lyrandar]] maintains its own
priesthood, venerating [[Arawai]], [[Kol Korran]], and the
house’s founders Lyran and Selavash. Those who
follow Sela’s Path believe that Arawai and Kol Korran
sent Lyran and Selavash their [[dragonmark]]s to bring
unity and prosperity to the [[half-elf]] people.
Senadal Orioth is a small forest in [[North Aerenal]], between the rivers [[Vel Silaes]] and [[Vel Maelia]].
You send a short message of twenty-five words or less to a creature with which you are familiar. The creature hears the message in its mind, recognizes you as the sender if it knows you, and can answer in a like manner immediately.
You can send the message across any distance and even to other planes of existence, but if the target is on a different plane than you, there is a small chance that the message doesn't arrive, or becomes garbled.
This olive-green cloak with silver shield clasp is sentient, preferring to go by the name Oscar. He is a noble soul, and if he is fond of the wearer, will keep an eye on them and pull them out of harm's way when he can.
Oscar was once a knight in a king's army, but his life as a human was a very long time ago, and his memory of it all is vague.
These delicate, red silk shoes are sentient, and prefer to go by the name Bianca. Her nature is very noble and lady-like. She is capable of leading the user through every dance imaginable, however she is a very stubborn pair of shoes. She will throw a fit and refuse to move if the user's feet smell, or if the ground is muddy.
House [[Deneith]] oversees the activities of the Sentinel
Marshals who, by ancient decree, provide law and order
across national boundaries. Operating out of [[Sentinel Tower]] in [[Karrnath]], marshals work alone or in small
groups to apprehend [[Khorvaire]]’s greatest criminals.
And Khorvaire is replete with war criminals, many
of which have protection or influence in their home
countries... until a Sentinel Marshal appears.
As bounty hunters, the Sentinels are without peer. In the early years of the
kingdom of [[Galifar]], the Sentinel Marshals were granted the
right to enforce laws and bring fugitives to justice throughout
the land. When the kingdom shattered with the eruption of the [[Last War]], the
organization recast itself as a neutral force policing
war crimes, the treatment of prisoners, war profiteering, and the impartiality of the [[dragonmarked house]]s. These activities caused conflict with nearly
every power base on the continent at one point or
another during the war. The Sentinels’ perseverance during the war years left the group as the only viable entity to police the [[Thronehold]] peace once
hostilities ceased.
Today, all the nations that signed the [[Treaty of Thronehold]] have agreed to
allow [[Deneith]] to continue in this role as international police
officers as they have for centuries. Each marshal periodically returns to the [[Sentinel Tower]] in [[Karrlakton]] as
time and circumstance permits to report on their activities
and receive updated instructions.
[[Karrlakton]] is home to the Sentinel Tower, a mighty fortress at the city’s center. A stern edifice of angular stone, Sentinel Tower radiates martial authority and is one of the most
heavily defended fortresses in [[Khorvaire]].
Older than [[Karrnath]] itself, the
ancient keep known as Sentinel Tower is the main
enclave of House [[Deneith]], the headquarters of the
[[Sentinel Marshals]], and a fortress charged with
repulsing periodic monster attacks from the [[Mournland]], just across the river. Its history is rich; [[Karrn the Conqueror]] commissioned the first of his generals
atop Sentinel Tower. The keep is a confusing maze of
fortifications, since its defenses have been renovated
and augmented numerous times.
Sentira is a form of solidified emotion, created by the [[Inspired]] of [[Sarlona]]. It has an opalescent, organic texture similar to polished horn; the color depends
on the emotion used in its creation, and the wearer can feel
that emotion as a constant background presence in their
mind. As a material, sentira is light and extremely strong,
similar to [[mithral]]; an agent of the [[Dreaming Dark]] might wear
armor that's functionally mithral armor but actually made
from sentira.
This gnarled root is native to the [[Syrkarn]] region of [[Sarlona]], and is prized for its high nutritional value. The only other place it is known to grow is in a few of the islands of the [[Lhazaar Principalities]], where it is a cuisine staple in some communities.
A traveler passing through [[Q'barra]] or the [[Lhazaar Principalities]] is sure to hear tales of the tribes of the Seren Islands. These fierce barbarians guard the coast of [[Argonnessen]], and it is said that the waters of [[Totem Beach]] run red from the blood of their victims. In song and story, the Serens are typically cast as horrible monsters—firebreathing warriors who consume the flesh of their still-living foes and sacrifice children to their [[draconic|dragon]] gods.
These stories are much exaggerated. The Serens are fierce warriors who will give their lives to defend the shores of [[Argonnessen]] from outsiders, but they are not cannibals, and their reverence for [[dragon]]s is more complex than simple awe of the mighty beasts.
Approximately thirty Seren tribes (mostly [[human]] and [[dragonborn]]) are scattered across the islands and the coastline of [[Argonnessen]]. Every tribe has a legend of a draconic covenant: a tale of how their ancestors were brought from a distant land by a mighty [[dragon]] and charged to honor the dragon and defend the land from the weak and unworthy. The dragonspeaker priests say that the dragons are the embodiment of all that is best in the human spirit. When a Seren dies, his soul is judged, and if he has upheld the covenant, he is placed in the shell of a [[dragon]]'s egg. When enough worthy souls are brought together in the egg, it hatches and a new dragon is born, distilled from the essence of all the noble souls that went before.
The Seren islands are harsh and unforgiving, and the tribes exist in continuous conflict. The first recorded contact with the Serens comes from a [[Sarlona]]n account from -3,120. The civilization has changed very little over the millennia; the Serens are devoted to their traditions. Until the [[dragon]]s themselves order a change, the Serens will continue to uphold the covenants. Any traveler who wishes to explore the land of the dragons will have to deal with these barbarians.
!! National Character
Each Seren tribe is defined by its draconic covenant. When creating a Seren tribe, a DM needs to answer the following questions:
* What color was the draconic founder? Look to appearance, breath weapon, and elemental ties for things that the Seren tribe will use for inspiration. Traditionally tribes of the same color frequently act as allies despite different alignments and beliefs.
* The Serens are charged to protect [[Argonnessen]] from the unworthy and to honor the founder. This is a vague directive. What were the specific words of the founder? What does this tribe consider unworthy and how do they honor the founder? Because the Serens consider upholding the covenant to be their key to the afterlife, this is a major point. A violent, chaotic tribe could believe that they honor their founder by spilling the blood of anyone weaker than themselves. A more peaceful tribe could believe that they honor the founder by amassing knowledge or treasures.
* In addition to the general vow to protect Argonnessen, some of the tribes have specific, additional charges—protecting a specific shrine or guarding a particular piece of treasure, for example.
Seren culture is very warlike, and the Serens repel any invaders. Because of this, the people of [[Khorvaire]] and [[Sarlona]] have learned to avoid [[Argonnessen]], leaving the Serens to spend most of their time fighting each other. Through these battles the Serens hone their skills and prove their worth as guardians. Only the strongest have a place on the shores of Argonnessen. Children and caregivers are generally spared during raids, allowing tribes to eventually recover from defeat.
Most of the Seren tribes have a similar social structure. The warlord is the mightiest warrior. This position is based purely on skill, and any member of the tribe can challenge a warlord. The warlord oversees all military action: patrolling the land, organizing raids, training young soldiers. A council of dragonspeakers, mystics who use wisdom and magic to guide the tribe, oversees spiritual and domestic matters. Dragonspeaker is a lifelong post with authority within the council based on age. Despite the warlike nature of the Serens, dragonspeakers hold final authority and can overrule a warlord's decisions or even force a warlord to step down from his position.
!! Appearance
The Serens claim that the [[dragon]]s brought them from many lands, and their appearance supports this. All manner of skin and hair color can be found among the [[human]] Serens, though there is a tendency toward dark complexions and heavy builds. Tattooing is a common practice on the islands; as Seren warriors win victories in battle, they earn the right to have draconic features tattooed across their bodies.
Seren warriors typically wear hide or leather armor. Some rely on dragonscale tattoos infused with magical [[abjuration]] in place of physical armor. Weapons are made from wood, bone, or shell. Each tribe, however, possesses heirloom arms and armor handed down from the draconic founders. These can be both traditional items from the dragons' hoards and dragonscale armor or weapons made from dragon bones or claws.
Away from the battlefield, most Serens wear simple, gray clothing. As Serens rise in influence and reputation, they are allowed to wear clothing and accessories matching the color of the draconic founder. Dragon scale and dragon bone ornaments are reserved for the greatest heroes of the tribe. Such treasures are not passed to descendents upon the owner's death but rather returned to the tribe to be awarded to the next hero who proves worthy.
!! Seren Names and Speech
The Serens speak Draconic with perhaps some fragments of other languages.
Seren names are also based on the Draconic language. They do not use family names, instead earning titles and honorifics tied to the draconic founder, such as Delhasha'alhasc ("Delhasha the Cold").
''Masculine Names:'' Durshast, Kharizhak, Lhasharak, Nolashar, Solashan, Xaxhan<br/>
''Female Names:'' Aralithyr, Delhasha, Eshka, Freilashka, Hakalasha, Shaesthyr
!! Seren Tribes
Approximately thirty tribes are spread among the Seren Islands and the coast of [[Argonnessen]]. A few representative tribes are listed below.
<<list-links-article "[tag{!!title}tag[tribe]sort[title]]">>
The [[Totem Guardians]] are not a tribe, but rather an alliance of elite soldiers drawn from many tribes and tasked with defending [[Totem Beach]] and the [[Great Barrier|Great Barrier Mountains]] of [[Argonnessen]].
!! Seren Spellcasters
Serens are raised to be as fierce in battle as the [[dragon]]s that they revere. The harsh life of the islands lends strength to those who survive it. Most adult Serens are able to channel raw [[primal magic]] to enter into a berserker rage, at least for a short while.
The dragons taught the [[druid]]ic secrets to humanity, and most dragonspeakers are druids following the traditions similar to the [[Gatekeepers]]. A few tribes have a [[bard]]ic tradition, and [[sorcerer]]s can also be found among the [[dragonborn]] Serens. Sorcerers typically develop powers related to the tribal founder (fire [[spell]]s for a [[red dragon]], for example). While sorcerers are usually considered blessed, a sorcerer who develops spells that seem out of line with the tribal founder—e.g., fire spells for the tribe of a [[white dragon]]—might be driven from the tribe.
The mightiest barbarians and spellcasters among the Serens are often called to serve [[dragon]]s themselves and disappear into the mainland of [[Argonnessen]].
!! Seren Adventurers
It is unusual for a Seren to leave the islands and shores of [[Argonnessen]]. When creating a traveling Seren PC or NPC, you should decide why they left their homeland. Consider the following ideas.
* A dragonspeaker—possibly a member of the Chamber in disguise—claims that the character must wander the world to fulfill a fragment of the [[Draconic Prophecy]] and find their destiny.
* The [[Gatekeepers]] have charged the character to travel to the Land of Demons ([[Khorvaire]]) to fight the plans of the [[Lords of Dust]] and the [[Cults of the Dragon Below]].
* The character was banished for stealing relics from a sacred shrine. She is innocent but the only way to prove this is to locate the artifacts, wherever they might be!
* A treacherous feud within the tribe resulted in the death of all other members of the character's family. He swore to find powerful allies and return to destroy his enemies and claim leadership of the tribe.
Serpent cults are the [[Silver Flame]]'s oldest tradition, though
they're virtually unknown in the present day. Rather than
venerating the Flame itself, serpent cults honor the countless
[[couatl]] whose sacrifice brought it into being. A common myth
says that the couatl were formed by the last breath of [[Siberys]],
unleashed to contain [[Khyber|Progenitor Dragons]]'s evil. These cults maintain that
the Silver Flame was formed when the couatl sacrificed their
individual existence and bound their celestial energy together to
bind the [[overlord]]s; research suggests that this is true, though it's
not in the common doctrine of the church. Rather than revering
a [[Voice|Tira Miron]] or [[Keeper of the Flame]], the serpent cults listen for the
guidance of couatl themselves. A few couatl did remain separate
from the Flame in order to serve as guardians or carry out
specific missions, and it's also possible for couatl to temporarily
serve as spiritual guides; this was the case with [[Tira Miron]], and
could also be the case with an [[aasimar]] tied to the [[Silver Flame]].
As a member of a serpent cult, you possess secret knowledge
about the Silver Flame that the modern church knows nothing
about. If you're tied to a serpent cult, work with your DM to
determine its size, origin, and influence. Is your sect a band
of six people living in the [[Blade Desert]], or are you tied to the
[[shulassakar]]—a race of rainbow-feathered [[yuan-ti]] who have
been watching from the shadows for millennia? Do your roots go back to the ancient theocracy of [[Khalesh]], now a province of [[Riedra]]? Do you have
a specific mission? Or do you have a less-spiritual reason for
adventuring, despite your unusual faith?
In order to attune to this magic item, you must possess the [[Mark of Shadow]].
This ornate mirror is typically about 6 inches in diameter. While touching it, you can cast the [[scrying]] spell with it.
<<<
!! Scrying
{{scrying}}
<<<
The Serpentine Table is the espionage arm of House [[Phiarlan]]. Few people outside the house even know of its existence. Even lower-echelon agents of the Serpentine Table know little of its structure and membership. Its deep agents have spent centuries establishing their covers.
Every [[Phiarlan]] [[enclave]] has a liaison that acts as
the go-between with the Serpentine Table, but this
agent knows little of the operations in the city; the
true spymaster will always be hidden. The services of
the Table are available by invitation only. Those in a
position to benefit from the Table’s services might be
visited by the Hydra, who negotiates terms.
!! The Hydra
A potential customer cannot contact
the Serpentine Table directly. Instead, the Table
contacts the client. Using [[disguise self]], the
Table’s spokesperson can appear in any number of
guises, but always refers to themself as the Hydra. It’s possible that there is only one Hydra, but in all likelihood many agents assume this role. A cunning PC could falsely represent themself as the Hydra—but those few known to have done so were
all assassinated shortly thereafter.
<$list filter="[list{!!title}sort[title]]">
<$macrocall $name="tag" text={{!!title}}/>
</$list>
One of the highest peaks of the
northern [[Seawall Mountains]], Pargon’s Peak contains a
network of remarkable caves said to be closely tied to the [[Draconic Prophecy]]. The Seven Caves, as the [[Dhakaani|Heirs of Dhakaan]] and [[Marguul]] clans call them, consist of seven huge vaults
that seem to be magically dug from the living stone of the
mountain. From the First Chamber that can be reached
from a cave opening high in the mountain, to the Seventh
Chamber that plunges toward the very bowels of the world,
the Seven Caves are wondrous and awe-inspiring. Inside
each strangely shaped cavern, amazing patterns resembling [[dragonmark]]s glow and swirl across the walls, floors, and ceilings. Each cave, in theory, reveals a different series of omens and portents, but few among the [[goblinoid]]s have the courage to
brave these sacred vaults to study them. Anyone who does
attempt to enter the Seven Caves must contend with the
[[wyvern]] colonies that regularly use them to nest and raise
their young.
Seventh is a small island in the [[Lhazaar Principalities]], located just south of [[Ninebay Island]]. A small town tended by Prince [[Lorrister]] of the [[Heavenly Fleet]] serves as a bastion for the [[Sovereign Host]] and Church of the [[Silver Flame]] in the midst of the otherwise faithless principalities.
''District Type:'' Fine shops<br/>
''Buildings:'' Upscale lodging (15), upscale food (25),
exotic trades (40), upscale trades (120), upscale
residences (80)<br/>
''First Impression:'' Stores, restaurants, hotels, and
a few townhomes in this prosperous neighborhood
appear high-priced and lavish.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Ivy Towers]] (north); [[University District]] (northeast); [[Highhold]] (bridge, west); [[Sunrise]] (bridge, south); [[Cassan Bridge]] (below)
Named for its most prominent architectural feature, Seventh Tower holds the distinction of being the finest shopping district in [[Menthis Plateau]].
A number of rare book dealers and antiquities shops
set it apart from similar districts, such as [[Platinum Heights]] in [[Upper Central]].
!! Noteworthy Locations
* [[Galdin's Garden]]. One of the finest restaurants in Sharn.
* [[Little Xen'drik]]. This area of small shops deals in antiquities and relics recovered from [[Xen'drik]] and the ruins below Sharn. ''Cloud Antiquities'' specializes in [[giant]] artifacts, while the ''Mekdall Gallery'' deals in ancient [[elven|elf]] and [[drow]] goods. ''Windows on Yesterday'' looks for items with historical significance, and ''Echoes of the Past'' deals in [[magic item]]s with practical uses.
The [[upper ward]]s of [[Sharn]] use a network of chutes to
funnel garbage down into the sewers. Refuse and filth is
channeled into cavernous midden chambers, where it is
left to rot or be devoured by the vermin and [[ooze]]s that
inhabit the sewers. Smaller tunnels channel wastewater
into purification centers, where [[magewright]]s use magic
to cleanse the water. A special unit of the [[Sharn Watch]]
protects the purification chambers. Beyond these small,
vital areas, the sewers are lawless.
Though the sewers were never intended to support a
population, over the centuries a subculture has evolved
in this region. A few tribes of people—mostly [[goblin]]s,
along with a few [[shifter]]s, [[dwarves|dwarf]], and feral [[halfling]]s—live in the sewers, rummaging through the midden
heaps and selling their goods in the lower city. These
sewer clans constantly battle over territory, as control
of one or more midden chamber can be critical to survival. The sewer clans can pose a threat to adventurers,
but they can also be valuable allies; there are no better
guides to the sewers and what lies beneath them than
one of the folk who live there.
This longsword was forged in //khaar'draguus//, the lava pits below
[[Sharn]], and wielded by an ancient [[Dhakaan]]i hero who fell in
battle against the [[daelkyr]] [[Belashyrra]]. A sentience lies within the Blade of Truth; it doesn't communicate with words, but while attuned, you can feel its emotions and desires. Shaarat'doovol was forged to protect the innocent from the machinations of the daelkyr, and if it feels you are serving that purpose, it can grant great power.
This magic weapon is immensely powerful under normal circumstances, but when you strike an [[aberration]], it is scorched by a searing light.
//''Unyielding Duty.''// If you have the favor of the sword, it guides
you and shields you from unnatural influences. While wielding
this sword, it can choose to grant you the following benefits:
you gain [[truesight]] with a range of 90 feet, you can't be charmed
or frightened, and you have resistance to psychic damage.
''Date: '' [[1 Aryth|Khorvaire calendar]]
The [[Storm Lords]] of [[Stormreach]] are descended from pirates, and the
city was once a lawless haven for the scum of the seas. In
memory of its roots, Stormreach reverts to those days of
bedlam once a year on Aryth 1. On that day, no crimes
short of murder and arson are punished, and most of the
[[Stormreach Guard]] take the day off. Chaos reigns in the
streets, and it is heightened when the Storm Lords grant
amnesty to a large number of criminals, who are released
from their cells at the [[Red Ring]]. Droves of revelers vandalize storefronts, pick fights, dance in the streets around bonfires, and more. Most citizens wear masks to conceal
their identities. Opponents of this festival believe it is a minor manifestation of the [[Du'rashka Tul]] curse and that it could eventually destroy the city.
Shadar-kai are servants of the [[Queen of the Dead]], [[shade]]s
granted new life. Though their new forms appear [[elf]]-like, they
might've been any sort of humanoid in their previous life; when
they caught the Queen's attention, she preserved their soul from
entrapment. The shadar-kai serve in the [[Vault of Memories]], and
occasionally as her hands on [[Eberron]]. They might clash with
[[necromancers|necromancy]] (especially the agents of [[Lady Illmarrow]]), collect
trinkets, or target mortals with no rhyme or reason. Many sages
attempt to explain these enigmatic actions, often speculating that
they're collecting especially tragic memories for the Vault.
Shades are mortal souls that are freshly arrived in [[Dolurrh]].
They maintain a portion of their memory and original
appearance, though they're insubstantial and can't interact
with material objects. Shades are susceptible to the ennui of Dolurrh, and as the effect accumulates, their appearance blurs and their memories
slowly fade. Shades can speak, and they may cry or beg
adventurers to help them; however, most are incapable of
taking any actions on their own. They're often found lost in
thought, trying to remember something they've forgotten, or
fixating on a past mistake.
Shadewing is a [[bronze|bronze dragon]] [[rogue dragon]] in [[Khorvaire]]. [[Necromancy|necromancy]], [[undeath|undead]], and the secrets of [[Khyber]] fascinate her. She lairs in secret, lest her more noble kin slay her for her despicable experiments
and twisted morality.
The war between the Shadow and [[Aureon]] rages in all of us.
Aureon's voice tells us that we are stronger together, that
it's worth it to suffer for the sake of the common good. The
Shadow whispers that there is no common good—all that
matters is what you need and what you can do. Why should
you make sacrifices for others instead of doing what's best for
yourself? Why should you give when you can take?
The Shadow is the Sovereign of ambition. Those who revere
it view this as a positive trait; the Shadow will show you how
to be the best you can be. But how far will you go in pursuit of
your ambition? What—or who—will you sacrifice? Priests who
embrace this aspect of the Shadow call themselves Mentors,
emphasizing that they can show you how to achieve your full
potential; others call them Tempters, as they will always drive
you down the darkest path. The [[Pyrinean Creed]] says that
the Shadow consumes the souls of those who fall prey to its
temptation; a Mentor will tell you that this is exactly the sort of
lie the Sovereigns use to trick you into following their rules.
The Shadow is also the keeper of forbidden knowledge, of
secrets you know you shouldn't pursue. This includes [[arcane magic]]—granting powers virtuous people should shun. Any spellcasting
character could attribute their powers to the Shadow; a [[wizard]]
might have been struggling with their studies, but after a
sacrifice to the Shadow, they awoke with new insights. The
Shadow can also serve as a [[warlock]]'s patron. While the Shadow won't interact
directly with a warlock, they could receive visions like a priest;
they could interact with a [[fiend]] who claims to speak for the
Shadow; or they could be mistaken about the nature of their
patron, and actually be bound to the [[overlord]] [[Sul Khatesh]].
In addition to mystical knowledge, priests of the Shadow
often know things they simply shouldn't know—secrets that can
harm people if revealed. Priests of the Shadow can sometimes
be found working as fixers in the criminal underworld; how
much are you willing to pay for the knowledge you seek?
Beyond all this, the Shadow is seen as a corrupting force that
creates monsters, both figuratively through temptation, and
literally—it is said to have created many of the [[monstrosities|monstrosity]]
that prey on innocents. In turn, many monstrous creatures see
the Shadow as their patron.
The Shadow's symbol is an obsidian tower.
<<<
''Forbidden Magic''<br/>
The Shadow tempts you to perform evil actions and can teach
spells no one should know. A DM could choose to grant a character one or more
additional spells that have dangerous or unpleasant side
effects every time they're cast. Or the Shadow could grant a
spellcaster the ability to increase the power of any spell they
know—as if it was cast at a higher [[tier|spell tier]]—once
per day, but in doing this, it triggers a negative effect.
Regardless of what effects you establish, they should
illustrate a clear and concrete reason why this magic is
forbidden. Someone or something will pay a price every time
this magic is used. Consider the following ideas:
* When you cast the spell, you or one of your allies suffers necrotic damage or a disadvantage on their next action.
* When you cast the spell, an innocent creature dies. You have no control over who will suffer and may never know who it is.
* When you cast the spell, plants wither and all living creatures within 15 feet of you take necrotic damage.
* When you cast the spell, choose an ally within sight. That player can reveal a disturbing secret about their character to you. This must be worse than any previous secret they've revealed; if they can't or if they choose not to, the spell fails.
* When you cast the spell, the effect of the spell itself is particularly horrifying.
<<<
Shadows are [[manifestation]]s of [[Mabar]], resembling dark exaggerations of [[humanoid]] shadows. They are classified as [[undead]] despite being pure manifestations of the Endless Night.
From the darkness, the shadow reaches out to feed on living creatures' vitality. As a shadow drains its victim's strength and physical form, the victim's shadow darkens and begins to move of its own volition. In death, the creature's shadow breaks free, becoming a new undead shadow hungry for more life to consume.
Some scholars assert that every mortal has a shadow in Mabar, like the [[ember]]s of [[Irian]], and that each shadow is a dark sliver of each soul.
The Shadow is the [[barony]] of the [[Lady in Shadow]], with
branches reflecting the many tales of this sinister figure.
It includes a tiny kingdom, which serves as the set for the
Sleeping Prince and similar tales; the kingdom is often named
Whitestone, though this can change. The secret garden of the
Lady is walled and protected by dangerous plant creatures,
but holds imaginary flowers that an [[alchemist]] could use to do
amazing things. The Lady's tower is hidden within a maze of
thorns. Any story dealing with a sinister spellcaster dwelling
on the edge of civilization could be found here.
When thrown, this curved obsidian dagger vanishes in a
puff of dark smoke, becoming invisible. When it strikes a
surface, the dagger reappears in a puff of smoke.
In order to attune to this magic item, you must possess the [[Mark of Shadow]].
A pair of shadow eyes consists of 2 bundles of [[dragonshard]] slivers bound with copper bands. The holder of a shadow eye can cast [[clairvoyance]], targeting the other eye of the pair.
<<<
!! Clairvoyance
{{clairvoyance}}
<<<
''Capital:'' [[Zarash'ak]] (unofficial)<br/>
''Hallmarks:'' Eberron [[dragonshard]]s, herbs
When most people think of the Shadow Marches, they
imagine a fetid backwater where illiterate [[human]]s
mingle with [[orc]]s and other foul creatures, practicing
strange rites by the light of the moons. While flawed,
this vision isn't entirely inaccurate. The Shadow
Marches are a desolate land of swamps and moors. The
homeland of the orcs, the Marches were scarred in the
ancient conflict with the [[daelkyr]]. The fiends left twisted
creatures and [[aberration]]s in the swamps, and sowed
seeds of madness that linger to this day. There are indeed moonlit rituals in the Marches: some to honor the daelkyr, others to maintain the wards that keep them
trapped in [[Khyber]].
Humans came to the Marches long ago, refugees
fleeing a war in the distant land of [[Sarlona]]. Over time
the two cultures merged, forming the Marches as they
exist today.
The Marches had little contact with the Kingdom of
[[Galifar]] or the east until a few hundred years ago, when
a House [[Sivis]] expedition made two discoveries: the region contained valuable [[dragonshard]]s, and a number of
clans had manifested the [[dragonmark]] of [[Finding|Mark of Finding]]. This
led to the foundation of House [[Tharashk]], as these clans
joined together to master the economic potential of their
mark and leverage their mineral wealth.
The Shadow Marches aren't a nation. No one voice
speaks for the clans and tribes, and most of the tribes
have no interest in dealing with outsiders. House [[Tharashk]] is the largest faction in the region, and their city of
[[Zarash'ak]] is the center for commerce.
House Tharashk is the main point of contact between
the Shadow Marches and the outside world. Tharashk
aside, the region remains a collection of tribes and cultists following their ancient traditions in the shadows of
the swamps.
!! Interesting Things About {{!!article}}{{!!title}}
* The untamed Shadow Marches are filled with mysteries. Relics of the [[daelkyr]] rest undisturbed in the depths of the swamps, along with foul monsters and [[druid]]ic shrines.
* The Marches are the birthplace of the [[druid]]ic tradition of the [[Gatekeepers]]. Long ago, this sect defeated the vile [[daelkyr]]; today, its last champions continue to protect [[Eberron]] from [[aberration]]s and other extraplanar threats.
* Even in defeat, the daelkyr sowed seeds of madness in the Marches. Followers of the [[Cults of the Dragon Below]] remain scattered across the region. Some of these cults work with [[mind flayer]]s and other [[aberration]]s. Others have no evil intent but are driven by dangerous delusions.
!! Marcher Characters
As you develop a Marcher character or NPC, consider
the following:
* ''The Mark of Finding.'' An alliance of Marcher clans formed House [[Tharashk]], but not all those who carried the mark chose to join this house. As a [[half-orc]] with the [[Mark of Finding]], you could be a child of the Marches with a strong tie to the house, or you could be a scion of a small tribe of hunters, proud of your independence and suspicious of the houses. Your ties to the Marches might be distant because you were born to a family that left years ago. Do you want to rediscover your ancestral roots?
* ''Madness and Mysticism.'' Most Marchers have a mystical view of the world, beliefs shaped by the traditions of the [[Gatekeepers]] and the madness of the [[daelkyr]]. Marchers typically feel that the people of the treaty nations are blinded by their civilized ways. You have heard the truth in the voices of croaking frogs and seen it in the shadows shifting on the water. Whether you're loyal to the [[Gatekeepers]], the [[Sovereign Host]], or the [[Dragon Below|Cults of the Dragon Below]], superstitions inform your path.
* ''Clan or Tribe?'' The people of the Shadow Marches are split into two distinct cultures. The clans blend the traditions of [[human]] and [[orc]], building towns and working with steel. If you were raised in one of the clans, the ways of civilization aren't that strange to you; you've seen the city of [[Zarash'ak]] and worked with House [[Tharashk]]. By contrast, the Marcher tribes maintain traditions that predate humanity. As nomadic hunter-gatherers, they don't work metals; they make their tools from stone, hide, wood, and bone. If your character is from one of the Marcher tribes, you might be the first of your people to leave the swamps. Why have you left your people, and how are you adapting to this new world?
!! Cities and Sites
The clans of the Shadow Marches primarily live in small
towns and villages, their huts raised above the swamps
on stilts. The Shadow Marches contain many [[manifest zone]]s tied to [[Xoriat]] and [[Kythri]], the planes of madness and chaos.
Time moves strangely in places in the deep swamps,
which twists mundane beasts and plants into strange
shapes. [[Daelkyr|daelkyr]] ruins linger in these areas, remnants of
the ancient war against the [[goblin]]s and [[orc]]s that once
dominated [[Khorvaire]].
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
The Shadow Marches aren't a nation, and the region
wasn't recognized by the [[Treaty of Thronehold]]. Most
Marchers have little interest in the outside world.
Marcher tribes don't know the names or number of the
nations beyond the swamps, let alone that they were
at war. However, as House [[Tharashk]] gains power and
influence in the world beyond the swamps, it has increased its presence in its homeland. The house has
expanded [[Zarash'ak]] dramatically over the last decade
and is working on transforming other towns into cities.
This has caused tension with a number of tribes. And
House Tharashk's mining operations and its urban
expansion always run the risk of disrupting [[Gatekeeper|Gatekeepers]]
seals and unleashing ancient evils bound beneath
the Marches.
Unlike House [[Phiarlan]], House [[Thuranni]] combines its espionage and artistic
activities in a single [[guild|trade guild]]. Although some heirs specialize in one path or the other, every Thuranni is to some degree involved in espionage. As with House Phiarlan, House Thuranni’s covert services are made
available only to clients chosen by the house; one
can’t simply hire a Thuranni spy.
House [[Thuranni]] excels both in the shaping arts
and in the field of assassination. Members
of House Thuranni are concerned
with the prosperity of their house,
not with abstract ideals of order or
balance.
House [[Phiarlan]] has always been fractious. The [[Mark of Shadow]] appeared not in one family line but in several, and relations among the Phiarlan
lines had been strained in the past. Five lines—the Tialaen, Shol, Elorrenthi, [[Thuranni]],
and [[Paelion]]—were the most prominent and influential
families in House Phiarlan before the schism. Each line
had its particular strengths within the broad field of the
house’s activities, and preferred clients among the factions
and organizations of the [[Five Nations]]. Rivalry among
those five lines, not to mention the numerous smaller lines
within the house hierarchy, often grew fierce. Ultimately,
the strains of the [[Last War]] proved to be greater than the
ties that bound the [[Phiarlan]] families together.
The final blow came in 972 YK. The Order of the
[[Emerald Claw]]—at the time, still a chivalric order of [[Karrnath]]—was a favored client of the [[Thuranni]] family, as well as the most important espionage-related organization in Karrnath’s government. Knight Superior Kadrath ir’Vardikk, a high-ranking Emerald Claw officer, came to Lord [[Elar Thuranni d’Phiarlan|Elar d'Thuranni]] with information that pointed to a [[Brelish|Breland]] plot to assassinate both [[Karrnath]]’s
[[regent|Moranna]] and its young king. The plot relied heavily on
the talents of the [[Paelion]] line, the most fearsome assassins in House [[Phiarlan]]. Sir Kadrath demanded that the
Thuranni line eliminate the Paelions before the assassins
could carry out their mission.
At first, Lord [[Elar|Elar d'Thuranni]] was hesitant to strike against his
own house. He first tried to verify the information Sir
Kadrath had brought him. What the [[Thuranni]] agents
uncovered, however, was a far greater threat than a simple
assassination plot against [[Karrnath]]. Lord Tolar Paelion
d’Phiarlan, it seemed, had concocted an elaborate
scheme to bring the [[Last War]] to an end and gather the
reins of power in [[Khorvaire]], not in [[Breland]]’s hands, but
in his own. Part of this plan, Lord Elar learned, involved
exterminating the other [[Phiarlan]] families as well as the
leadership of the other [[dragonmarked house]]s.
Some might have dismissed these plans as megalomaniacal ravings presenting little serious threat. Since they originated in the most fearsome line of assassins in
all [[Khorvaire]], however, Lord Elar took them utterly seriously, and he ordered an immediate strike to exterminate
the [[Paelion]]s before Lord Tolar could carry out his plan.
Lord [[Elar|Elar d'Thuranni]] himself killed Tolar and his immediate family, while the [[Thuranni]] agents at his command slaughtered every [[Paelion]] within the family holdings in [[Lhazaar|Lhazaar Principalities]], and every one they could find in [[Phiarlan]] holdings across [[Khorvaire]].
Outraged at this apparent betrayal, Baron [[Elvinor Elorrenthi d'Phiarlan]] declared the [[Thuranni]] line excoriate. Defiant, Lord [[Elar|Elar d'Thuranni]] refused this punishment, instead declaring the formation of a new [[dragonmarked house]].
The clients of the Thuranni family continued doing business with the excoriate house, and Elar—now taking the title of Baron—even managed to acquire some clients formerly
loyal to the [[Paelion]] line.
To this day, Baron [[Elar d'Thuranni]] maintains that
he acted out of loyalty to his own house and all the [[dragonmarked house]]s, quashing a plot that would have thrown
all of [[Khorvaire]] into even greater upheaval. There are
many sides to the story, however, and—as in all tales of
espionage—the truth is hard to discern.
Some would suggest that the Order of the [[Emerald Claw]] actually fabricated evidence against the [[Paelion]]s, bringing some of it to Lord Elar while planting the rest in the Paelion holdings for Elar’s spies to uncover. Some
further suggest a link between the Emerald Claw’s role
in the Shadow Schism and Regent [[Moranna]]’s decision to
outlaw the order just four years later.
Other theories suggest wilder conspiracies. Some
claim that [[human]] agents of the draconic [[Chamber]] helped
to bring the schism about in order to fulfill prophetic
claims about thirteen houses or the split of a single house.
(Many of these theorists further claim that the same
Chamber agents are working to prevent House [[Cannith]]
from splintering for the same reason.) Others whisper that
at least one prisoner in [[Dreadhold]] is imprisoned there for
his role in fomenting the schism. Still others claim that
Lord [[Elar|Elar d'Thuranni]] and Baron [[Elvinor|Elvinor Elorrenthi d'Phiarlan]] amicably agreed to a split in the house and used a mutual enemy, the [[Paelion]] line, as
a scapegoat to cloak their true intentions.
Whatever the truth, the Shadow Schism was the
most important consequence of the [[Last War]] as far as the
[[dragonmarked house]]s are concerned. Just as the empire
of [[Galifar]] was fractured into smaller nations, so too the
[[Last War]] left the dragonmarked houses broken, unsure
of their role in the new world and their ties to the new
political powers of [[Khorvaire]].
Crafted by [[Dyrrn]] the Corruptor, this black jewel-like object
fuses to the center of your forehead when you attune to it.
You can cause the shadow sibling to
exude or retract an ectoplasmic shadow that surrounds your
body and conceals you from prying eyes. While the shadow is active, you aren't quite invisible, but you have a large advantage to hiding and moving stealthily.
The Shadowcrags are a rugged mountain chain that link the western [[Stone Cage Mountains]] to the eastern [[Icehorn Mountains]] in [[Khorvaire]], forming part of the border between the [[Demon Wastes]] and the [[Eldeen Reaches]]. Large sections of the northern face of these mountains end suddenly in precipitous cliffs of volcanic glass.
These mountains include the volcanic [[Lake of Fire]].
The Shadowflow River in [[Khorvaire]] flows from the [[Shadowcrags]] into [[Crescent Bay]]. It forms part of the border between the [[Eldeen Reaches]] and the [[Demon Wastes]].
The Shadowmancers are a cabal of a dozen [[necromancer|necromancy]] [[dragon]]s who share lore and maintain secret libraries scattered across the [[Vast]]. Like most [[Argonnessen]] dragons, the Shadowmasters share a steadfast enmity for the [[Undying Court]] of [[Aerenal]]. Unlike their so-called elders in the [[Conclave]], however, these dragon necromancers believe that understanding the power of the [[Shadow]] is the only way to ultimately prevail against the [[Aereni]] and their [[deathless]] lords.
[[Arstyvrax]] is a prominent member of the Shadowmasters. Their nondragon contacts include [[Thinrukidis]] of [[Io'lokar]].
Shadowmount Forest is a small forest in [[Karrnath]], near [[Vedykar]].
[[Locksmith Square]] in [[Stormreach]] is home to the city’s most upscale,
discreet, and profitable brothel, Shadows. Only those who know a password can even find out where Shadows is located, and then they need a second password to get inside. If successful in their attempt, a PC can locate someone who knows the first password and who the brothel’s contact person is (how much this
information costs varies from contact to contact). This
contact will then ask, “What do shadows seek?” The correct reply: “Illumination.” If the correct answer is given, and the contact thinks the answerer would be a suitable
customer, the contact reveals the brothel’s location and
the second password, which changes regularly.
It is common knowledge among the wealthy elite
that Shadows is backed by House [[Thuranni]], and owned and operated by the [[Uruvai family]]. The house maintains no [[enclave]] in the city and takes great pains to
stay neutral in dealings between the [[Storm Lords]] and
the other [[dragonmarked house]]s. Shadows is a legitimate
and prosperous business, and the Thuranni [[elves|elf]] seem
content in their role as purveyors of pleasure in the city.
The disappearance of someone with powerful enemies
occasionally ends up being credited to the house, but most
residents know better than to discuss this for long.
!! House of Shadows
The strength of House [[Thuranni]] today is the strength of rewarded patience,
the power of a long and systematic accumulation of knowledge. From Shadows, Thuranni plays host to the wealthy and influential, visitors and locals alike.
If a complete list of the place’s clients were to become
public knowledge, its contents might come as a shock
even to the most hardened [[Stormreach]]ers. Through
the brothel’s nighttime liaisons, the Thuranni “overhear” (read: extract) some of the deepest and darkest secrets and desires of their clients. Drunk on the finest spirits and their own passions, the citizens of Stormreach let slip things of which they would normally never speak. Most of the time, they leave having forgotten ever doing so, but even when they recall their indiscretions, they rest easy in the knowledge that the elves of House [[Thuranni]] won’t misuse the information.
And they are right, for the most part. The head of [[Thuranni]] in [[Stormreach]], a powerful [[wizard]] named Lady [[Miravella|Miravella Uruvai d'Thuranni]], has more important matters on her mind.
Shadukar is a graveyard of blackened rubble and burned trees, its people restless spirits sifting through the ashes of the past. Its ruins are a grim reminder of the cost of the [[Last War]]. Once known as the Jewel of the [[Sound|Scions Sound]], this coastal
city was destroyed in a bitter siege against [[Karrnath]]i forces. The city has yet to be reclaimed, and it's said to be haunted both by [[Thrane]] [[ghost]]s and by [[undead]] forces left behind by the Karrns.
This city is the capital of [[Aerenal]], the seat of the [[Sibling Kings]], and the center for commerce and diplomacy between the [[elven|elf]] families, who otherwise remain isolated
in their own city-states. Foreigners are encouraged to conduct business in [[Pylas Talaear]].
Shae Cairdal is the largest city in [[Aerenal]] and the
royal seat of the [[Sibling Kings]]. The elves carved the
city from the jungle shortly after they arrived from
[[Xen'drik]]. It meshes with the surrounding vegetation beautifully; many of its structures are formed from the still-living wood of the jungle canopy. Trees
of immense size protect and hold aloft portions of
the city. The fortress and home of the Sibling Kings,
which is shaped from several enormous trees with
iron-hard trunks, sits at the center of the city. This fortress also houses the [[Hall of Blades]], headquarters of the [[Cairdal Blades]].
In addition to affairs of state, political dealings between influential [[Aerenal]] families take place in Shae Cairdal; it the center for commerce and diplomacy between the families and [[noble lines|Aereni noble line]], who otherwise remain isolated in their own city-states. Foreigners are encouraged to conduct business in [[Pylas Talaear]]. The city houses a large portion of Aerenal’s army, as well as numerous arcane universities and marketplaces where elves learn and trade. The pyramid temple headquarters of the [[Deathguard]] can also be found here.
Shae Cairdal is also home to the largest population of the [[deathless]] and [[spirit idol]]s outside [[Shae Mordai]]. The city’s temples to the [[Undying Court]] are second only to Shae Mordai’s religious edifices.
The city of Shae Deseir in [[Aerenal]] was once the ancestral seat of the [[line|Aereni noble line]] of [[Vol]]. It was reduced to ruin over two thousand years ago by the alliance of [[dragon]]s and [[elves|elf]] that annihilated that line. The site sits upon several overlapping [[manifest zone]]s to the [[plane]] of [[Mabar]]. Today, the ruins are haunted by strange varieties of [[undead]] seen no where else on the planet.
This otherworldly [[eladrin]] citadel stands as a vision of [[fey]] beauty in the harsh land of [[Darguun]]. Gleaming green orbs drift lazily around its high towers, giving it the name of the Spire of Emerald Lights. Its iridescent, whorled walls are reminiscent of a vast seashell.
The [[illusion]]ists of Shae Joridal are legendary. The [[feyspire]] is ruled by the [[eladrin]] Taranel Tanaer.
''District Type:'' [[Elf|elf]] neighborhood<br/>
''Buildings:'' Temples ([[Onatar]], the [[Undying Court]]),
shrines ([[Aureon]], the [[Undying Court]]), upscale lodging
(5), upscale food (15), exotic trades (15), upscale trades
(63), upscale services (20), upscale residences (120)<br/>
''First Impression:'' The district is filled with beautifully sculpted statues of long-dead elves. Densewood warriors stand guard at the gates of townhouses, while statues of priests and honored elders are spread throughout plazas and open-air orchards. The residents move quietly among these statues of the dead, carrying out their daily activities with silent grace.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Oak Towers]] (southeast); [[High Hope]] (below)
While naturalized [[elves|elf]] can be found throughout
[[Sharn]], Shae Lias is a bastion for the values and traditions of the elves of [[Aerenal]]. Orchard balconies ring
the neighborhood; the restaurants of the district own
some of these, while others are open to the public for
purposes of meditation and reflection. In addition to
serving as a residential district for Aerenal expatriates, it is a source for a wide range of elven craftwork,
woodwork, and furniture. The district also includes
a handful of more exotic establishments.
!! Noteworthy Locations
* [[Gates of Passage]]. Built from Aereni [[densewood]], this spire serves both as the embassy of [[Aerenal]] and a temple of the [[Undying Court]]. Aereni citizens who die in Sharn are interred in the temple crypts until their remains can be transported to Aerenal.
* The [[House of Repose]]. A collection of elf artisans specializing in embalming and crypt-building.
* [[Nightshade]]. An apothecary dealing in exotic herbs and salves, Nightshade is also a tavern specializing in lightly poisoned beverages.
* The [[Oaks]]. A legendary restaurant that serves Aereni and [[Brelish|Breland]] cuisine. The quality is unmatched, as are the aristocratic prices. Head chef [[Maza Thadian]] has maintained the Oaks for over three hundred years, but after her recent appointment as [[city councilor|Sharn Council]] for [[Upper Northedge]] she is often occupied with other matters.
* The [[Silver Bough]]. This establishment deals in arms crafted in the [[Aereni]] tradition. This merchandise includes [[magic item]]s, but woodshaper Tanar Mendyrian takes time to produce his wonders, and only a limited selection is available at any given time.
* The [[Winding Root]]. A marketplace and gallery that showcases the work of elven artisans, including sculptures, textiles, and fine clothing.
* The [[Veil of Flesh]]. This studio deals in Aereni body art and alteration, such as tattoos and [[cosmetic transmutation]].
Shae Loralyndar is the City of Rose and Thorn, an arboreal [[feyspire]] frequently found in the [[Twilight Demesne]] of the [[Eldeen Reaches]]. Its peak-roofed houses are connected by slender bridges, beautiful rose gardens spreading between them as the towers of the [[eladrin]] lords rise high above. Many [[Greensingers]] have close ties to this city.
Lord Eversun rules Shae Loralyndar as he has for centuries. For all that time, a rivalry has existed between the spire and [[Pylas Pyrial]].
Also known as the City of the Dead, Shae Mordai is the seat of the [[Undying Court]] and
the spiritual heart of [[Aerenal]]. Built on a flow of positive energy within a [[manifest zone]] of the [[plane]] of [[Irian]], Shae Mordai has more [[deathless]] than
living among its population. Undying soldiers guard
its walls and patrol its streets, which are named for
the most honored dead. Undying councilors and mystics walk among its monuments and
eternal flames, enjoy its gardens, and haunt its libraries, occasionally advising living visitors. Most of the locals live in fine stone homes in or below
the city.
The city is a center for study and devotion, open
only to the privileged. Its libraries house a copy of
every important record in [[Aerenal]]. Despite Shae
Mordai’s size, little commerce takes place here except
for basic goods and materials required for rituals.
A single gate on the northern wall is the only
entrance into the city. Only elves who have particular
authorization, such as a summons from a priest or
one of the undying or close ties to one of the city’s
dwellers, are admitted.
Shae Mordai is the most revered city in Aerenal
because it is the place where the Transition ritual,
which transforms a living [[elf]] into one of the [[deathless]] or transfers their soul to a [[spirit idol]], is performed. Numerous temples in the city have the
facilities to perform this ritual.
!! Notable Locations
<<list-links-article "[tag{!!title}category[location]sort[title]]">>
[[Tairnadal]] elves control this fortress in the [[northern region|North Aerenal]] of [[Aerenal]], which is also a secondary port for the island nation. Foreigners come here
to trade, to learn, and to gain a reputation among the
Tairnadal elves. The city has an arena for displaying
contests of arms, equestrian skills, and athletics.
Shae Thoridor can also be dangerous for outsiders away from the arena. Elf warriors are sometimes overeager to prove their strength in the shadow of
ancestral monuments, and elves who support the
[[Valenar]] warclans live here in large numbers. The
[[deathless]] don’t dwell in the city in significant numbers.
Shae Tirias Tolai is the City of Silver and Bone. Tied to
[[Xen'drik]], this [[feyspire]] was destroyed and pillaged by the giants of the [[Cul'sir Dominion|Cul'sir]] and never reclaimed; some believe the [[elves|elf]] of Eberron are
descended from the [[eladrin]] of Shae Tirias Tolai. Today, it's a
haunted ruin, shunned by the [[fey]].
Shaelas Tiraleth is the Court of the Silver Tree, largest of the
[[feyspire]]s. Its ruler, Shan Tira, is a master [[diviner|divination]] and gifted
oracle. All [[archfey]] respect her words, and she serves as a
mediator between the seasons of the [[Moon Court]]. The spire
is tied to [[Cyre]], and there are stories that suggest the first
Princess [[Cyre|Cyre ir'Wynarn]] herself may have been a student of Shan Tira.
It stood in splendor above the lush green hills and shining waters of [[Kraken Bay]] before it was engulfed in the [[dead-gray mists]] of the [[Mourning]]. None know what has become of Shaelas Tiraleth or its inhabitants; it has not been seen in the [[Moonlit Vale]] since that dreadful day, and no explorers of the [[Mournland]] have yet found their way to the spires and returned.
The [[Bloodsails]] are one of the most stable of the [[Lhazaar Principalities]], and Prince Shaen Tasil has ruled for over a century. Shaen is cool and calculating; she has no interest in holding the position of high prince, but she keeps a close eye on political struggles and has often served as a mediator. The previous leader was [[Prince Moren|Ship of Bones]]; according to legend, Moren was cursed for his dark practices and now sails the [[Bitter Sea]] in a ship of bones.
High King Shaeras Vadallia rules the martial nation of [[Valenar]] in [[Khorvaire]].
Vadallia came from the [[elves|elf]]’ homeland of [[Aerenal]] as the leader of a host of elf mercenaries. During the [[Last War]], the leaders of [[Cyre]] bought the allegiance of the [[Valaes Tairn]]—the largest faction of the [[Tairnadal]], the elven warclans of northern [[Aerenal]]. Establishing their war camps at the southern tip of Cyre, the elves quickly became the most devastating component of Cyre’s cavalry and commando forces.
Led by Vadallia, the elves targeted [[halfling]] war
bands, [[hobgoblin]] mercenaries, and the forces of
[[Breland]] and [[Karrnath]]. Though [[Cyre]]’s enemies tried
to buy the elves’ services, the [[Valaes Tairn]] stayed
unfailingly loyal to Cyre for over thirty years. It was
thus a shock when elves turned on their Cyran paymasters and seized the lands they had defended for decades. Shaeras Vadallia proclaimed himself high
king of the new nation of [[Valenar]], using an ancient
elven claim to the land to justify his actions.
When Vadallia led his warriors to [[Khorvaire]] to
fight under the flag of [[Cyre]], it was for the glory of
war. The [[Tairnadal]] elves devote their lives to martial
training, but war games are no match for a chance
to engage in true battle. War in Khorvaire promised
the elves a chance to win glory in their ancestors’
names, even as entering the fight on the side of
beleaguered Cyre provided a fine opportunity to
hone the skirmisher tactics they had perfected over
generations. But as the struggle
settled into a routine, the challenges faded. Some
say the Queen of Cyre insulted Vadallia, but most
believe that it was the desire for glory that drove the
war leader to turn on Cyre and annex the lands he
once defended.
Each of the forty-five warclans of the [[Valaes Tairn]] is obligated to take a
turn serving High King Vadallia as part of the
Host of [[Valenar]]. The host consists of twenty
warclans—ten tasked with maintaining order
throughout the realm, and ten engaged
in military operations as directed by the
crown. A warclan serves on the Host
of Valenar for ten years before being
released to conduct independent operations and raids, though warclans can
be recalled to assist and support the
Host of Valenar by the high king.
The warclans of [[Valenar]] have only one goal—glory
in combat. And while the [[Valaes Tairn]]’s border raids
are seen as little more than posturing by disaffected
troops, it has been suggested that High King Vadallia
has an ulterior motive. Valenar’s raids are carried out
by independent warclans, never by the Host of Valenar. However, Vadallia makes no real effort to stop the incursions, and many believe that with the [[Last War]] ended, the Valaes Tairn are attempting to goad Valenar’s neighbors (particularly [[Karrnath]]) into a
full-blown military response. If war does erupt again in southern Khorvaire, the elves are well prepared for a long and glorious campaign.
Only 22 miles from the nearest [[Riedra]]n settlement
in the foothills of the [[Ahnadiv Mountains]], Shalquar is
the sister citadel of [[Malshashar]] and also on the front
lines of the ongoing conflict with Riedra. It serves as a
base for [[Adar]]'s defenders and a gate to Adar's interior.
Shalquar is carved between and under two mountains,
and inhospitable peaks surround it.
A shambling mound, sometimes called a shambler, trudges ponderously through bleak swamps, dismal marshes, and rain forests, consuming any organic matter in its path. This rotting heap of animated vegetation looms up half again as tall as a human, tapering into a faceless "head" at its top. Some believe that the shambling mound was created by the [[daelkyr]] [[Avassh]], the Twister of Roots.
//''All-Consuming Devourers.''// A shambling mound feeds on any organic material, tirelessly consuming plants as it moves and devouring animals that can't escape it. Only the shambling mounds' rarity and plodding speed prevent them from overwhelming entire ecosystems. Even so, their presence leeches natural environments of plant and animal life, and an unsettling quiet pervades the swamps and woods haunted by these ever-hungry horrors.
//''Unseen Hunters.''// Composed of decaying leaves, vines, roots, and other natural swamp and forest compost, shamblers can blend into their environs. Because they move slowly, they rarely attempt to pursue and catch creatures. Rather, they remain in place, sustaining themselves by absorbing nutrients from their surroundings as they wait for prey to come to them. When a creature passes near or alights upon a shambling mound, the monster comes to life, seizing and absorbing the unwary prey.
//''The Weed that Walks.''// The instinct that drives a shambling mound is its central root-stem, buried somewhere inside its ponderous form. The rest of a shambler consists of the rotting heap that it simultaneously accumulates and feeds on, which protects the root-stem and animates to smash and smother the life from any creature. Lightning reinvigorates the root-stem, strengthening the shambling mound and bolstering its consumptive drive.
//''A Resurgent Menace.''// If a shambling mound faces defeat before an overwhelming foe, the root-stem can feign death, collapsing the remains of its mound. If not subsequently killed, the root-stem beds down in the shambler's remains to slowly regrow its full body, then once again sets out to consume all it can. In this way, shambling mound infestations long thought destroyed can recur time and again.
This is the largest and most successful tavern in the region, and it is the safest
place to deal with members of [[Daask]]. Shamukaar
is simultaneously a slaughterhouse, a butcher shop, a restaurant, and a tavern. It caters to [[Droaam]] immigrants, a category that includes many different
species; [[ogre]]s, [[gnoll]]s, [[harpies|harpy]], [[minotaur]]s, and even [[medusa]]s can be found at the bar. The [[goblin]] chefs
can prepare an astonishing assortment of meals, all
of which share one thing in common: they are disgusting to [[human]]s.
Despite the monstrous nature of its patrons, Shamukaar is one of the safest places in [[Khyber's Gate]]. Even the monsters of [[Daask]] recognize the need for
a neutral ground and a safe haven, and Shamukaar
serves that purpose. Unless provoked beyond measure,
a resident of Khyber's Gate will not start a fight in
Shamukaar. And if anyone does start a fight, all other
patrons unite together to subdue the aggressor.
Long ago, the [[quori]] meddled with the bloodlines
of all sorts of creatures in [[Sarlona]] in their efforts to
create perfect [[vessels|Chosen]]. They quickly discovered their
interference had created a backlash in nature—[[quorbred|quorbred creature]],
creatures antithetical to [[psionics]]. One such
place was the Shanjueed Jungle in western [[Corvagura]]
near [[Adar]], where the [[quori]] had manipulated the fauna
for centuries, testing their ideas on material hosts.
''Wyndurgha'', an [[Inspired]] lady who controlled western
[[Corvagura]], conceived a plan to destroy the beasts of the
Shanjueed. She had discovered a strange focused energy
near the forest's heart. Her people built a [[monolith|hanbalani alta]] in the
center of the jungle and a wall around the woodland to
contain its //altavars//, or so Wyndurgha told them. The workers cleared all the remaining vestiges of the jungle from
outside the wall, killing any creatures they found. Wyndurgha then went inside to destroy the evil spirits forever.
She never returned. Her people claim she sacrificed
herself to protect them. The truth is, Wyndurgha's plan
failed catastrophically. Her attempt to use the monolith
amplified the forest's connection to [[Mabar]], infecting the
Shanjueed with a creeping [[undeath|undead]] that has now reached
the walls built to contain it.
!! Notable Features
Shanjueed Jungle is one of the largest [[Mabar]] [[manifest zone]]s on Eberron. The center of the zone lies in the heart of the forest. It expands slowly each year and now covers a circle nearly as wide as the forest. Within the zone, it is
as if Mabar were coterminous with Eberron. In addition, anyone slain in the forest rises as a random type of [[undead]] the next night (usually a [[zombie]]). Several [[terrible cyst]]s also exist within the corrupt jungle.
At the forest's very heart, where Wyndurgha's [[monolith|hanbalani alta]]
once stood, the traits of [[Mabar]] hold complete sway in a
300-foot sphere that is also expanding.
The wall that holds the jungle back is manned by
[[Edgewalker|Edgewalkers]] troops who see it as their honor to keep the
evil within. No gate bridges the outside world and the
jungle. Nobody is allowed to enter or leave the Shanjueed,
under penalty of death.
Still, the forest does have uncorrupted inhabitants.
A nameless [[druid]] with wild red hair and a young face lives in the southern jungle.
Animals and plants are her only friends, and she speaks
only with her mind. Following are the details of her
living area in the Shanjueed.
!!! Hut and Surrounds
A plain wooden hut sits in the
midst of many trees and under one particularly massive
one. Its roof is made of bark and grass. The doorway faces
north, covered only by a tangled curtain of vines. No
windows are set into the walls.
Near the hut, the ground is clear, but elsewhere it
is choked with light and heavy undergrowth. Freshwater
bogs, shallow and deep, make the area treacherous. A [[dire ape|dire beast]] watches the
hut from nearby if the [[druid]] is home.
!!! Secret Chamber
Although the hut appears
simple and has a grass pallet for sleeping, underneath
a grass rug in the center is a hidden trap door. Beyond the door is the nameless druid's true living space carved out of living rock. The place is
cool and dry, except for a small pool of pure water
that wells up from deep underground. A comfortable
bed of furs occupies a small place on the floor, which is
otherwise empty. The whole cave is painted with scenes
of life and death in the Shanjueed, images layered one
over another.
A small side cave contains paints, brushes, and the
tools for making them. It also holds the blackened and
polished skulls of three [[human]]s and two [[shifter]]s (one of
these is all that remains of Bruus—see Development below).
A woven vine curtain hangs over a portion of the
eastern wall, barely hiding a passage there.
!!! Hideaway
A natural rock seals this hidden area. The druid hides here when she needs to,
but the sealed wall would make it dangerous to sleep here
or stay here long.
!!! Hidden Stump
A passage from the secret chamber
runs nearly 300 feet to a stump. Actually a doorway into
the druid's abode, the entrance is nearly impossible to
detect from the surface.
!! Encounters
Getting into Shanjueed means passing the wall and
the [[Edgewalker|Edgewalkers]] guardians. Edgewalkers ([[creature tier]] ''2'') attack first and ask questions later. Still, they're the easy part. Navigating the nightmare that is the Shanjueed is far more difficult.
While characters travel through the [[Mabar]] part of the
jungle, they have a significant chance of encountering [[shadow]]s or other dark [[manifestation]]s or [[undead]] of that realm, or beasts touched by the Endless Night. Anywhere in the jungle, [[quorbred creature]]s can be found.
!! Development
The nameless [[druid]] attracted the attention of the
[[Edgewalkers]] one day when she approached the wall.
Thinking she was an //altavar// come to free the forest from
the bonds of the wall, the soldiers on the wall attacked
her. The bravest among them, a mighty [[shifter]] ranger
named Bruus, went into the Shanjueed with several
hand-picked warriors to find and slay the evil spirit.
They never returned. Since then, lightning storms,
unnatural hail, swarms of insects, and even fire have
assaulted the wall at unpredictable moments. A few of
the fallen have risen as [[zombie]]s and [[ghoul]]s. Clearly the
altavar still lives, and it must be put down for the good
of [[Corvagura]].
News of the //altavar// of Shanjueed has reached the
elders of [[Tashalatora]]. They suspect this spirit isn't a spirit
at all, but the creature that was once Wyndurgha. If she
could be secured as an ally for [[Adar]]...
!! Treasure
Legend speaks of a [[Corvagura]]n [[necromancer|necromancy]] who lived
in the center of the Shanjueed Jungle in [[Sarlona]]'s ancient
past. He is said to have had great power. Some who know
the tale, such as the [[Keepers of the Word]] in [[Tashalatora]],
say it indicates he found a relic left by [[giant]] explorers in
ancient times. Who knows what other magic lies hidden
within the Shanjueed.
Lady Sharadhuna, high minister of the [[Thousand Eyes]], is the [[Devourer of Dreams]]' greatest rival. Although Sharadhuna believes control of
humanity should anchor [[Dal Quor]] and prevent the turn of the age, she thinks that [[Sarlona]] is sufficient to accomplish
this goal. Sharadhuna believes that the Devourer is pressing for continued expansion not on the orders of [[il-Lashtavar]],
but because he draws power from the pacified populace.
If Sharadhuna is correct, the Devourer actually seeks to
replace il-Lashtavar, assuming its place as the driving force
of Dal Quor. Sharadhuna believes that the [[quori]] need be
concerned only with fully securing Sarlona, including
[[Adar]], [[Syrkarn]], and the [[Tashana Tundra]]. She resents the unquestioned authority held by the agents of the [[Dreaming Dark]] and believes that the [[Thousand Eyes]] is performing the most crucial work of the age. Sharadhuna is gaining
supporters, and she hopes to find a way to supplant the
[[Devourer|Devourer of Dreams]] as the voice of [[il-Lashtavar]]. Still, she has no idea
what such a transformation could require.
''Getting the PCs Involved:'' Lady Sharadhuna can
be an unlikely ally for the PCs. When the characters are
captured by the [[Thousand Eyes]], to their surprise, they
are not executed. Instead, Sharadhuna provides them
with information they need to upset some of the plans
of the [[Dreaming Dark]]. Using the PCs as her catspaws,
Sharadhuna can embarrass the Devourer and increase
her support, possibly even supplanting the Devourer.
If Sharadhuna assumes power, she focuses her efforts
on [[Sarlona]], and [[Khorvaire]] becomes a safer place for it.
[[Adar]], on the other hand, becomes less so. Although she
might help PCs fight the Dreaming Dark, Sharadhuna
does nothing that could endanger [[Riedra]].
[[Stormreach]]'s temple to the [[Devourer]], Shargon’s Talon is a stone tower jutting from the harbor. Its shape is more reminiscent of a stalagmite than a worked building, but the [[continual flame]]s illuminating its narrow windows
suggest otherwise.
Followers of the [[Sovereign Host]] occasionally make sacrifices to
the [[Devourer]] when natural disasters threaten, but the
congregation of the Talon places the Devourer above all other gods. The doctrine of this sect holds that it was the Devourer alone who defeated the [[fiend]]s of the
first age, and that the force of this battle raised the
lands above the sea. The faithful are taught to embrace
the fury of nature, preparing for the time when the
Devourer will scour the earth and draw all back beneath
the waves. The holy texts also speak of devouring the
strength of fallen foes; though it’s possible to read these
literally, most of the faithful would never go so far as to
practice cannibalism.
One of the more unusual aspects of the cult of the Devourer is the fact that emissaries from the [[sahuagin]] of the [[Eternal Dominion]] often participate in the sacred rituals. These priests consider [[human]]s to be flawed cousins, stripped
of scale and weak of lung, but they pity these humans
and consider it an act of charity to help them find the
right path.
Members of this sect are expected to be skilled
swimmers, and although some take rowboats out to the
Talon, swimming the distance is considered an act
of devotion.
Although the [[Devourer]] is the primary deity of this
sect, the faithful are also taught to respect the [[Fury]].
The two high priests of the sect are the [[sahuagin]]
Khalaash and the [[elf]] Seryssa. The extent of their mystical abilities—if
any—remains a mystery.
Throughout the [[Thunder Sea]], vast spires of stone and coral rise up from
the bottom of the ocean—in some cases, over a mile in height. Some reach the surface, while other clusters lie hundreds of feet below it. While these spires formed naturally, they’re often interspersed with a more dangerous—and unnatural—substance. [[Demonglass|demonglass]] is similar to obsidian, but virtually
indestructible. These demonglass spires—commonly called
“needle teeth”—can pierce the hull of a swiftly moving ship
despite being just a few inches in width. The spires in this
region were created by the [[Lurker in Shadow]] during the [[First War|Age of Demons]] (though it wasn’t responsible for the demonglass found
elsewhere in Eberron, such as [[Ashtakala]] in the [[Demon Wastes]]).
The region known as Shargon’s Teeth— a Common
adaptation of the [[sahuagin]] name for the [[Devourer]]—lies directly
between [[Sharn]] and [[Stormreach]], and is the most infamous
manifestation of these hazardous needle teeth. Stone spires
and [[demonglass]] spikes of all sizes are scattered between this
chain of islands. Only the most seasoned navigators can plot a
course through the Teeth without the help of a [[sahuagin]] guide;
as a result, the islands have long been a haven for smugglers
and pirates, preying on ships that founder on the Teeth.
In Shargon's Teeth and throughout the [[Thunder Sea]], needle teeth are a dangerous hazard for those who stray from the established trade routes—but they also provide an opportunity to interact with creatures of the sea. Any number of aquatic [[monstrosities|monstrosity]] may make a lair in the upper reaches of a spire. The [[sahuagin]] also often colonize the larger teeth, carving tunnels throughout a spire. High teeth thus serve as outposts projecting up to the upper waters where light can reach, allowing travelers to visit a sahuagin outpost without having to descend to the absolute depths.
//I've been here a week, and it's still hard
not to feel overwhelmed by the city. The towers
rise up until they disappear into the clouds. Lights
gleam in a thousand windows. [[Skycoaches|skycoach]] work
their way through the maze of bridges connecting the towers, and up above I can see the burning ring of an elemental [[airship]].//
//Distracted by the sights in the sky, I nearly walk into a
[[warforged]] as it brushes past me. It's my first time seeing
one, but then there are so many things I've never seen in
this place. Over there, a tattooed elf haggles with a masked
halfling, arguing about the price of lizard meat. Beyond
them, a [[gargoyle]] watches from a high perch. I gather my
senses and keep moving.//
//It's not until I reach the lift that I realize the [[warforged]]
stole my purse.//
<div align="right">—A newcomer to the big city</div>
''Country:'' [[Breland]]<br/>
''Government:'' The [[Council of Sharn|Sharn Council]]<br/>
''Local Ruler:'' The [[Lord Mayor Cathan ir'Demell|Lord Mayor of Sharn]]<br/>
''Population:'' 1,059,250
All the major themes of Eberron are manifest in the
great city of Sharn. It's a place of magic, with [[skycoach]]es circling mile-high towers and mystic forges toiling endlessly in the bowels. It's a place of adventure and
intrigue. A [[fallen angel|radiant idol]] is gathering minions in the ruins
below the city. A gang war is gaining strength in [[Callestan]]. The corpse of a murdered aristocrat has just been
discovered in a floating mansion. A [[Cannith]] [[artificer]] is
experimenting with a planar gateway—and something is
about to go terribly wrong. All of these adventures and a
hundred more are waiting in the City of Towers.
! The Shape of Sharn
Sharn is the largest city in [[Khorvaire]], with a population
of over a million people. [[Humans|human]] make up about a third
of that number, and [[dwarves|dwarf]] are a sixth of it; the rest is
a blend of every race found across Khorvaire. [[Halflings|halfling]],
[[elves|elf]], and [[gnome]]s all have a significant presence in the
city, but even [[kalashtar]] and [[changeling]]s have communities in Sharn. Beyond the permanent population, tens of
thousands of people pass through Sharn every day. Refugees from the [[war|Last War]] still find their way to the city, along
with tourists, spies, merchants, and folk hoping to find
their fortune in the grandest city in Eberron.
Sharn stands above the [[Dagger River]] and its eastern
tributary, the Hilt. It's an important port for anyone dealing with [[Aerenal]], [[Xen'drik]], or [[Sarlona]]. Mountains line the shores of the Dagger, and Sharn can't spread out. So
instead it has grown ever upward.
Sharn sits within a [[manifest zone]] linked to [[Syrania]], the Azure Sky. This manifest zone enhances magic related to flying and levitation, which makes many of Sharn's magical wonders possible. The vast majority of the [[magic item]]s used within the city to facilitate flight only function because of the manifest zone, and work less well or not at all beyond its boundaries.
The city is primarily made up of these quarters:
* [[Central Plateau]]
* [[Dura]]
* [[Menthis Plateau]]
* [[Northedge]]
* [[Tavick's Landing]]
At the hub of each of these quarters is a cluster of
enormous core towers. A web of bridges and platforms
connects many of these vast spires, and smaller turrets
sprout from the edges of the core towers. The district of
[[Skyway]] floats above the highest towers, while the tunnels of the [[Cogs]] stretch out below the lower city.
In between those extremes, each of the quarters is
divided into an [[upper ward]], a [[middle ward]], and a [[lower ward]]. Each ward is made up of a number of districts, so
that the location of a place in Sharn can be expressed
with a combination of a ward name and a district name.
See [[Wards of Sharn]] for a deep dive into each section of the city.
!! Aftermath of War
Far from the front lines, Sharn never fell under siege
during the [[Last War]]. Regardless, the war's impacts affected the city's citizens and continue to even today.
!!! Physical Damage
Although Sharn was never subjected to a sustained
assault, it didn't avoid damage. On many occasions,
commandos and saboteurs launched significant attacks
inside Sharn. The most infamous of these was the
[[Aundair]]ian attack that brought down the floating [[Glass Tower]], devastating the district now known as [[Fallen]]. In
any of the lower or middle wards, you might encounter
evidence of the conflict in the form of a shattered bridge,
a building collapsed by an arcane explosion, or an area
some say is haunted because of the large number of people killed there during the war.
!!! Psychological Scars
There are places in the city that house people who suffered because of the actions of other nations. For example, many of the residents of [[Dura]] hold all Aundairians
responsible for the destruction of Fallen. In another
district, folk could hate the [[Karrn|Karrnath]]s for an [[undead|Karrnathi undead]] attack
that occurred during the war, and a different group could blame [[Thrane]] for the siege of [[Vathirond]]. These kinds of sentiments can shape the feelings of an entire
district, but in the city as a whole there are far more
people who have personal burdens to carry than those
who feel resentment toward particular nations. For
instance, on an individual level, most members of the
[[Sharn Watch]] might not care about a [[gnoll]] being seen in
a neighborhood, but a guard who fought on the [[Droaam]]
front during the war might be out for revenge. [[Warforged|warforged]] are sometimes also the targets of this sort of prejudice; a person whose friends were killed by warforged
soldiers might resent all such creatures.
!!! Shortages
Because the ink is barely dry on the [[Treaty of Thronehold]] and relationships between the signatories are still being normalized, Sharn doesn't currently benefit from a lot of commerce with other nations. Problems could arise from a short supply of any imported goods, whether this manifests as inflated prices, the need for
rationing, or certain items being simply unavailable. The
factors of supply and demand also play into smuggling
and the black market; some desirable goods might be
available only through the [[Boromar Clan]].
!! Refugees and Victims
[[Cyran|Cyre]] refugees have filled the district of [[High Walls]] in [[Lower Tavick's Landing]] beyond capacity, and Sharn is
also home to a significant number of refugees from elsewhere in [[Breland]]—people whose homes and villages
were destroyed during the war, and who have come to
Sharn in search of new lives. The city also has its share
of other people harmed during the war, soldiers and civilians with severe physical or psychological injuries. All
these folk are most likely to be found in the lower wards.
They aren't just poor; they're suffering—and they might
seek vengeance against those they blame for their pain.
! Guide to the City
//When you live on the inside low, you never see
the sun. People hear "towers," they think of graceful little
spires, the sort of thing you see poking up in the corner of
your lord's keep. We've got those, and lots of 'em. But the
foundation of the city is the core towers. The walls of these
towers are so thick you could fit your lord's castle in one.//
//You've got your outside districts where you get the open
air, built on the bridges and platforms that connect the
core towers together. You've got the little turrets, built
on the core tower walls and the bridges between. You've
got the folk in the middle, who live and work in the walls
themselves. And then you've got those of us on the inside, our districts entirely contained in the hollow well of a great tower. When you look up in [[Callestan]], you see
twinkling lights, to be sure. But those aren't stars, and that
isn't the sky. You're looking up through a mile of bridges
and platforms crossing the well, looking up at the districts
above you. //
// You live up high, you can touch the sky. In the middle you
can still see the sun. Down on the inside low, all we have is
gloom and the constant drip, water and worse descending
from the city above us.//
—A street urchin describing Sharn
Sharn is the most cosmopolitan city on the continent.
Describing all the activities and offerings in the city
could fill an entire book. Here's a summary of what you
need to know to appreciate the city to the fullest.
!! Watch your Step!
As befits the City of Towers, Sharn is also a city of
bridges and balconies. These thoroughfares and outcroppings can be extremely narrow or comfortably wide. Although most of them are bounded by walls or railings,
there's always a chance that during your time in Sharn,
you or someone you know will go over the edge. So, how
do residents cope with this risk?
Those who can afford it usually carry a [[feather token]] as insurance. No token? Don't panic! Because of
the maze of bridges and spans connecting the towers,
there's an excellent chance that you won't fall more
than a hundred feet before impacting on a lower bridge.
Though this alone might seem like small comfort, it's
also true that the major bridges in the upper and middle
wards are enchanted with [[feather fall]] effects that trigger
automatically, keeping you from crushing an innocent
passerby in your descent.
Many different outcomes could follow a lengthy fall.
The table below presents a few possibilities.
| !<<dr d8>> |!Result |
| 1 |You fall hundreds of feet before striking the ground at the base of the towers. |
| 2 |You fall <<dr "3d6">> x 10 feet before striking a bridge. A major bridge in an upper or a middle ward will have a [[feather fall]] enchantment; otherwise, it's going to be a hard landing. |
| 3 |You fall <<dr "2d4">> x 10 feet and land in a passing [[skycoach]], possibly injuring a passenger. |
| 4 |You fall <<dr "4d4">> x 5 feet and strike an outcropping, flagpole, or projecting statue. If you survive, you're still precariously perched on the edge of a tower or bridge. |
| 5 |You fall past a [[hippogriff]]—try to catch its leg! |
| 6 |A [[gargoyle]] or [[giant owl]] catches you—then threatens to drop you if it doesn't get a reward. |
| 7 |You can fly! Actually, a nearby [[wizard]] or [[artificer]] casts [[feather fall]] to save you, but for a moment it felt like you can fly. And now the spellcaster wants payment. |
| 8 |You strike a small air [[elemental]] that was drawn to the city. Doing this cushions your fall, but now you're on top of an air elemental. |
!! Communication Services
Need to get a message to someone? If you're not in a
hurry, the [[Orien]] post has boxes throughout the city;
you can mail a letter for a negligible fee. Hiring a courier generally
costs up to 1 crown, depending on the size of
the package and where you need it delivered. You can
find [[Sivis]] [[message stations|speaking stone]] in almost every upper and
middle ward, and if you absolutely have to contact someone instantly, the [[Sivis enclave|Sivis Enclave (Dragon Towers)]] in the [[Dragon Towers]] district ([[Middle Central]]) can perform a [[sending]] spell for 20c.
House [[Tharashk]] has brought an innovation to message delivery in Sharn: the use of [[gargoyle]]s. Tharashk has several of these creatures in its employ, and these
flying couriers are a quick way to get a message across
the city. If you spot a gargoyle without a burden, you
can flag it down, and it costs up to 1c to deliver a letter or a
small package.
!! Spellcasting Services
[[Magewrights|magewright]] and adepts can be found in every district
of Sharn, selling their services. Standard prices are
summarized on the table.
| !Spell Tier | !Price|
| cantrip | 1 c|
| common | 2-5 c|
| rare | 10-20 c|
These costs can vary depending on the spell and the
spellcaster, and they don't include the price of expensive
components. People who can cast higher-tier spells are
rare, typically found only in the [[dragonmarked house]]s
or [[arcane order]]s; the cost and availability of such
services varies based on the caster.
!! Education and Research
[[Morgrave University]], though not the most respectable
institution of higher learning in Khorvaire, has an extensive library that boasts definitive collections of lore in certain fields, particularly arcana, dungeoneering,
geography, and history. Characters seeking knowledge
in any of these fields or others ought to be able to find resources in the library to aid their search. The university
is an excellent source of sages who hire their services
out on a short- or long-term basis. Even those who profess to be sages but have no connection to the university
tend to cluster around Morgrave, with their homes and
businesses almost all located in the [[University|University District]], [[Den'iyas]],
and [[Ivy Towers]] districts of [[Upper Menthis]].
Another important site for certain kinds of research is
the [[City Archive]], in the [[Highest Towers]] district of [[Upper Central]]. The archive contains exhaustive historical documents of Sharn; birth, death, and marriage records;
and copies of legal documents such as identification
papers and letters of marque issued in the city. Access
to these records, however, is more restricted than to the
contents of the Morgrave library.
Those who want to further their research through
some hands-on experience might find undiscovered lore
in the lowest regions of Sharn, where [[sewers|Sewers of Sharn]] and tunnels snake through ancient ruins. Similarly, the crypts
of the [[City of the Dead]] might hold some relevant historical information.
!! Shopping Centers
Sharn contains a number of major shopping districts.
The [[Tradefair]] district in [[Middle Central]] focuses on
top-quality goods—everything you'll need to maintain a
wealthy or aristocratic lifestyle. [[North Market]] in [[Lower Northedge]] has a fine selection of common goods. Almost anything can be found in the [[Bazaar]] of [[Middle Dura]], as long as you're not concerned about the origin of
secondhand goods. [[Tavick's Market]] in [[Middle Tavick's Landing]] is a center for produce and other goods brought in from the farms and artisan workshops outside Sharn.
!! Dining
In Sharn, as the saying goes, even the poor eat like
kings, and good food is readily available. Among
the multitude of restaurants that appear throughout
all the towers of the city, Sharn offers a few unique
dining experiences.
A striking view enhances a meal, and for that
reason no restaurant can compete with the dozen
or so establishments in [[Skyway]]. Of those, the best
known is the [[Celestial Vista]] Restaurant, a tourist attraction.
For variety of cuisine, no other region of the city can match the [[Menthis Plateau]], with its diverse population. Most people agree that the [[University]] district in [[Upper Menthis]] is the best place to sample the wide variety of dishes Sharn has to offer. University students and faculty are fond of dining at the [[Commons]], a large open-air
plaza near the top of one of [[Morgrave University]]’s
towers, where food vendors bring carts and wagons
daily to serve up a wide array of ethnic offerings.
Of course, sometimes the need for quality overshadows the appeal of spectacular views or culinary variety. A few of the generally acknowledged best
restaurants in Sharn include [[Sannid's]] in the [[Platinum Heights]] district of [[Upper Central]], known for its extensive wine collection; [[Galdin's Garden]] in the [[Seventh Tower]] district of [[Upper Menthis]], surrounded by a towertop garden featuring roses and orchids; the [[Oaks]]
in the [[Shae Lias]] district of [[Upper Northedge]], serving
[[Aereni|Aerenal]] and [[Brelish|Breland]] cuisine in an elaborate open-air
pavilion surrounded by oak trees; and [[Olladra's Arms]]
in the [[Hope's Peak]] district of [[Upper Dura]], notable for
its banquet-style seating and generous portions.
!! Entertainment
Whether a character seeks nothing more than a
fun evening on the town or wants to witness a great
performance by a renowned artist, Sharn offers abundant entertainment on a nightly basis. The hub of the entertainment industry in Sharn is the [[Menthis Plateau]]—from the towertops down to the [[Cogs]], this quarter is a bustle of activity from sundown to sunup.
!!! Theater and Music
The [[Torchfire]] district in [[Lower Menthis]] occupies
the bottom of the entertainment ladder in Menthis,
but is nonetheless a fine place to enjoy inexpensive
entertainment. Offerings in [[Middle Menthis]]
are a step above those in the lower levels, figuratively
as well as literally. Performers who get their first big
break at [[Gailan's]] stage move on to any of several similar
venues in Middle Menthis’s theater district, called
[[Smoky Towers]]. The entertainment offerings in [[Upper Menthis]] are
concentrated in the [[University]] District, and are in a
class by themselves.
!!! Sports and Games
As befits a metropolis that boasts people of all cultures,
Sharn hosts a wide variety of sports and athletic events.
The [[Race of Eight Winds]] occurs once a year. Other
events take place on a daily, weekly, or monthly schedule. For instance, shifters hold informal [[hrazhak]] competitions every night in [[Lower Northedge]]. The [[ogre]]s of the [[Cogs]] are fond of tugs-of-war, arm wrestling, and similarly simple tests of strength. People who want to bet
on sports can usually find a gambler willing to set odds
in the [[Firelight]] district in [[Lower Menthis]], [[Callestan]] in
[[Lower Dura]], [[Cornerstone]] in [[Middle Tavick's Landing]],
or [[Hareth's Folly]] in [[Middle Dura]]. Three exotic sports
practiced in the city are described below.
* [[Hrazhak|hrazhak]]
* [[Skyblade|skyblade]]
* [[Six Stones|six stones]]
!! Healing
House [[Jorasco]] operates houses of healing throughout
the city, largely in the middle and upper wards. The
[[Panaceum]] in [[Dragon Towers]] ([[Middle Central]]) is the
primary Jorasco enclave.
The Panaceum has an [[altar|altar of resurrection]] that can be used to [[raise the dead|raise dead]], but this service isn't without its risks.
Sometimes the wrong spirit returns to a body, or malevolent [[ghost]]s or [[wraith]]s might escape from the netherworld along with the person being raised. Before the
healers take gold to perform a resurrection, a Jorasco
adept will first perform an [[augury]]. If this [[divination]] indicates
looming disaster, the adept will reject the request.
A few divine spellcasters in Sharn can raise the dead,
notably the high priest of the [[Undying Court]] in [[Shae Lias]]. These devout [[cleric]]s rarely sell their services, however, and the high priest would need a compelling
reason to help someone who has different beliefs.
!! Temples and Shrines
Every major religion has outposts in Sharn. A number
of sacred sites draw pilgrims to the city from across
[[Breland]] and [[Khorvaire]]. Priests don't usually sell their
services; temples are places for worship and spiritual guidance.
The [[Sovereign Host]] is the dominant religion of Breland, represented by shrines and small temples throughout the city. The [[Pavilion of the Host]] in [[Middle Central]]
is the heart of the faith, and most priests of the Host live in one of the Pavilion's nine towers. Pilgrims often come
to visit one of three particular sites. The [[Korranath]] in
[[Upper Central]] features Khorvaire's largest temple of
[[Kol Korran]]. The [[Great Hall of Aureon]] in [[Upper Menthis]] draws scholars and worshipers alike. The [[Pool of Onatar's Tears]] in the [[Blackbones]] district of the [[Cogs]] is said to impart a blessing to any smith who bathes their
hands in its waters.
The [[Cathedral of the Cleansing Flame]], Sharn's
largest temple to the [[Silver Flame]], is located in [[Upper Central]]. Archierophant [[Ythana Morr]] is frequently accused of corruption and nepotism, but there are smaller
places of worship around the city devoted to the true
principles of the faith. The hermit [[Gaia]] watches over the
[[City of the Dead]] from [[Warden Tower]]. [[Coldflame Keep]] in
[[Middle Northedge]] was once a mighty garrison; its glory
has faded, but Flamebearer [[Mazin Tana]] still strives to
protect his community. The priestess [[Faela]] maintains
a small shrine in the shadows of [[Fallen]], doing what she
can to help the wretched people of that forsaken district.
Finally, the [[Shrine of Fathen the Martyr]] is a sacred
site in [[North Market]], often visited by templars passing
through the city.
Even some lesser known religions are represented
in Sharn. The [[Grawand]] district in [[Middle Tavick's Landing]] is a haven for followers of the [[Blood of Vol]]. The [[Gates of Passage]] in [[Upper Northedge]] is a temple
of the [[Undying Court]]. The [[Overlook]] district of [[Upper Dura]] holds the [[Shrine of il-Yannah]], dedicated to the [[Path of Light]].
!! Holidays
There's always a celebration happening or about to happen in Sharn, whether it's a parade in a single district or
a festival that ranges across the entire city. Here are a
few special occasions to put on your calendar.
* The [[Tain Gala]]
* [[Crystalfall]]
* The [[Day of Mourning]]
* [[Sun's Blessing]]
* [[Aureon's Crown]]
* [[Brightblade]]
* The [[Race of Eight Winds]]
* The [[Hunt]]
* [[Fathen's Fall]]
* [[Boldrei's Feast]]
* The [[Ascension]]
* [[Wildnight]]
* [[Thronehold Day]]
* [[Long Shadows]]
!! Guilds and Groups
Guilds and similar associations abound in Sharn. Their
headquarters are places where people can find the company of fellow professionals, or perhaps enlist the assistance of an organization.
All the [[trade guild]]s associated with the [[dragonmarked house]]s are well represented in Sharn; most have guildhalls in the [[Dragon Towers]] district of [[Middle Central]]. Aside from those groups, the city features a number of less populous associations, such as those described below.
!!! Adventurers' Guilds
Sharn is a magnet for those who seek adventure and
opportunity. Forgotten treasures are hidden in the ruins
below the towers, and expeditions leave for [[Xen'drik]]
every day. At any moment, dozens of sages, spies, and
nobles around the city are searching for capable agents
to help with their schemes and investigations. If you and
your friends are searching for adventure, you've come to
the right place, and you don't have to do it alone. Sharn
is home to two organizations that provide adventurers with opportunities for work and camaraderie: the [[Clifftop Adventurers' Guild]] and the [[Deathsgate Guild]].
A strong rivalry exists between the two guilds. You might have
trouble with members of the opposing guild, whether in
the form of drunken boasting in a tavern or a rival stirring up trouble in the midst of a mission.
!!! The Circle of Song
A [[bard]] is a versatile individual, equally skilled at entertainment and espionage. These talents are perfectly
matched to the city of Sharn, which is both the cultural
heart of [[Breland]] and a nexus for intrigue and diplomacy.
Bards have much to gain from the company of other
bards, as they exchange news, stories, and songs. For
this purpose, long ago a group of the finest bards in
Sharn founded the [[Circle of Song]], an alliance of entertainers and adventurers.
!!! Arcane Orders
Its mighty towers and floating spires mark Sharn as a
symbol of mystic power and achievement. Soon after
the founding of the city, the greatest [[wizard]]s of [[Breland]]
chose it to be the seat of their arcane order. Its goal
was to celebrate excellence in the mystic arts, bringing
together the greatest practitioners of magic in a society
that rivals [[Arcanix]] and the institutions of [[Aundair]].
A schism split the original society, but today both
of the branches of the original organization, the [[Esoteric Order of Aureon]] and the [[Guild of Starlight and Shadows]], are recognized and respected throughout
Breland. Each one has lesser halls in every major city in
the nation.
Orders found in Sharn:
* [[Esoteric Order of Aureon]]
* [[Guild of Starlight and Shadows]]
* The [[Closed Circle]] (disbanded)
!! City Government
Sharn has many people in positions of power: beadles,
ministers, bailiffs, and all manner of minor functionaries and officials. But ultimate power rests in the hands of the [[City Council|Sharn Council]]. That body has seventeen members:
one for each ward in the city, plus representatives from
[[Skyway]] and the [[Cogs]]. Each ward has its own process
for selecting a councilor, and there are no legal restrictions on who can govern; if you build up a strong base of
support in a ward, you could hold the position yourself!
The members of the City Council are quite diverse.
Some are crooked, others are idealists, and [[one of them appears to be an owl|Hruitt]]. All of them are well known in their
home wards, and any of them could have use for a team
of adventurers.
!! Criminal Services
See [[Crime in Sharn]].
! Streets of Sharn
The Street Events buttons below are
filled with random events the characters can witness
while they wander around Sharn. You can expand on an
entry to make it the start of an encounter or adventure,
though not every event needs to draw the characters into
a longer story. You can choose results from the
tables, or randomly determine what happens, and you
can modify results as you please, tailoring the details
of an event to be a better fit for a particular district. The
events on the tables are phrased so they can be read
aloud or summarized to players.
!!! What Happens Next?
After the adventurers witness an event on the streets
of Sharn, what happens next depends largely on what
they do. Maybe they avert their eyes and keep walking,
as many residents of Sharn have trained themselves to
do. Maybe they rush to get involved, or poke around delicately to learn more. An event like one of these doesn't
have to be the start of an adventure, but it can be—particularly if it really catches your players' imagination.
When the players decide to learn more, it's up to you
to figure out what they can discover. Ask yourself these
questions:
* How did the people involved in this event get to this place? What were they doing earlier today? Where were they going when this event happened?
* Why isn't anyone else getting involved? What is complicating this situation?
* What do the people involved hope is going to happen next? What are they afraid might happen next? How are the circumstances changed because the characters have witnessed the event?
<$button>
<$action-chooserandom $dataTiddler="LowerSharnStreetEvents" $field="var"/>
Lower Sharn Street Event
</$button>
<$button>
<$action-chooserandom $dataTiddler="UpperSharnStreetEvents" $field="var"/>
Upper Sharn Street Event
</$button>
<$button>
<$action-chooserandom $dataTiddler="SkywayStreetEvents" $field="var"/>
Skyway Street Event
</$button>
<<<
''Street Event: ''{{!!var}}
<<<
Many make the mistake of assuming that the [[Lord Mayor of Sharn]] holds the greatest power within the city. In fact, the City Council appoints the Lord Mayor, and the commanders of the [[Sharn Watch]] report to the Council.
The Council of [[Sharn]] is comprised of 17 councilors: one from each [[ward|Wards of Sharn]] of the city, with [[Cliffside]] merged into [[Dura]] and a single councilor representing both [[Ashblack]] and [[Blackbones]]. The
precise method by which a councilor is appointed
varies from ward to ward. In theory, it is a diplomatic selection made by the leaders of the ward, but what it takes to be a “leader” varies considerably. In
some wards, anyone with a certain amount of income
or property can participate in ward councils and
elections. In others, ward elections are entirely in
the hands of [[trade guild]]s, noble families, or other
power groups. While in theory each councilor has an
equal voice, in practice the influence of a councilor
is derived from his backers. The local merchants of
[[Lower Menthis]] support [[Savia Potellas]], and she knows
better than to openly oppose [[Caskar Halavik]], who has
the backing of the [[Boromar Clan]]. If she stirs up too
much trouble, she might wind up at the bottom of the
[[Dagger River]]. However, she finds other ways to deal
with Caskar and pursue her own goals—including
hiring adventurers to upset his plans. Likewise, while
each councilor is supposed to represent the interests
of his or her ward, a councilor usually puts his backers
first, his personal district second, and his ward third.
Thus, the three councilors with ties to the [[Boromar Clan]] usually vote as a unit.
The City Council meets in [[Council Hall]] in [[Upper Central]], and commands a variety of powers. The Council establishes the laws of the city, although
if they wish to pass a law that completely contradicts
the [[Code of Galifar]] or the traditions of [[Brelish|Breland]] Law,
the crown or parliament might have something to say
about it. Laws may vary per ward, allowing a councilor
to shift the traditions of the city to benefit his backers.
The Council also determines how to use the resources
of [[Sharn]], from taxes to the power of the [[Sharn Watch]].
Finally, the Council appoints the high officers of the
city, including the [[Lord Mayor|Lord Mayor of Sharn]]. The councilors do
not appoint the city's representatives to the [[Breland Parliament]]; following the democratic traditions of the nation, the three legislators are elected by popular
vote, with every legitimate resident of Sharn having
the right to participate. However, the Council manages and administers the election, and councilors can usually exercise a considerable amount of influence
over the voters in their districts, whether through
charisma or graft.
All major political appointments in Sharn occur
on [[9 Rhaan|Khorvaire calendar]], [[Boldrei's Feast]]. Members of the [[Breland Parliament]] serve two-year terms, city councilors
serve for three years, and the Lord Mayor's performance is usually reviewed every four years. There
are no term limits, and quite often an election passes
with no changes whatsoever.
!! Members of the Council
The members of the City Council are quite diverse.
Some are crooked, others are idealists, and [[one of them appears to be an owl|Hruitt]]. All of them are well known in their home wards, and any of them could have use for a team of adventurers. The table below describes
a few of the city leaders you might bump into in [[Upper Central]] or at the [[Tain Gala]]. If your character has the noble background, you might already know one of them.
| !<<dr d17>> |!Councilor |
| 1 |[[Sorik Sensos]] ([[half-elf]]) represents [[Middle Central]]. An elder statesman and a brilliant orator, he is rumored to be involved in a web of bribery and graft. |
| 2 |[[Sava Kharisa]] ([[human]]) is the outspoken councilor from [[Lower Central]]. Since taking her seat, she has fought to improve conditions for the lower classes of Sharn, and she has made many enemies on the council and beyond. |
| 3 |[[Thurik Davandi]] ([[gnome]]) represents [[Upper Menthis]]. He is known to have ties to [[Zilargo]] and the [[Boromar Clan]], and reportedly loves intrigues and blackmail. |
| 4 |[[Savia Potellas]] ([[human]]) has her hand in the entertainment industry of [[Lower Menthis]]. She hopes to reduce the influence of organized crime in her district, but it's a dangerous game. |
| 5 |[[Maza Thadian]] ([[elf]]) represents [[Upper Northedge]]. A venerable elf and owner of one of the finest restaurants in Sharn, she fights to maintain tradition but definitely puts the needs of the wealthy ahead of the poor. |
| 6 |[[Shassa Tarr]] ([[shifter]]), from [[Lower Northedge]], represents the interests of the merchants and shifters of her ward. She is a cunning diplomat and devoted to her constituents. |
| 7 |[[Bestan ir'Tonn]] ([[human]]) has represented [[Upper Tavick's Landing]] for thirty years, and largely views his ward as a separate city within the city. He has a reputation for stirring up conflict and setting the other councilors against one another. |
| 8 |[[Kilk]] ([[changeling]]) represents the merchants of [[Lower Tavick's Landing]]. Whispered rumors suggest that the changeling has ties to the mysterious [[Tyrants]]. Some insist that Kilk is actually an identity shared by a group of changelings. |
| 9 |[[Hruitt]] (owl) is a [[giant owl]] who can assume human form. A former aerial racer, he's a clever negotiator who fights for the good of the [[Bazaar]] and [[Middle Dura]], often opposing the [[Boromar Clan]] and its allies. |
| 10 |[[Ilyra Boromar]] ([[halfling]]) is the councilor for [[Lower Dura]], but it's common knowledge that her true allegiance is to her family and its [[criminal empire|Boromar Clan]]. The current ongoing conflict with [[Daask]] has weakened her family and her position. |
| 11 |[[Evix ir'Marasha]] ([[human]]) represents [[Skyway]]. Lady Marasha owns the [[Celestial Vista]] restaurant, along with several other valuable businesses. She's an eloquent speaker who supports many radical positions, including abolishing the monarchy after the death of King [[Boranel|Boranel ir'Wynarn]] and recognizing Sharn as an independent province. |
| 12 |[[Nolan Toranak]] ([[dwarf]]), the councilor for the [[Cogs]], is largely seen as a tool of the industrialists who own the foundries there. Members of his family were killed by [[warforged]] during the [[Last War]], and Toranak harbors a bitter grudge against House [[Cannith]] and the warforged. He has tried to have warforged reclassified as property, and seeks to suppress warforged activists in the Cogs. |
| 13 |[[Javan Tomollan]] ([[human]]), a shrewd man and a tough bargainer, represents [[Upper Central]]. He earned his fortune representing House [[Lyrandar]], although he has since parted ways with the house. He is a fair man with respect for hard work. |
| 14 |[[Caskar Halavik]] ([[halfling]]) is the representative of [[Middle Menthis]]. An immigrant to Sharn from the [[Talenta Plains]], Caskar made a name for himself in the [[Little Plains]] district for his skill at [[clawfoot]] racing. Caskar often sides with [[Ilyra Boromar]] on council decisions. |
| 15 |[[Doran Cantar]] ([[human]]) represents [[Middle Northedge]] He is a devout follower of [[Boldrei]], and is by all accounts an honest, dedicated, and charismatic figure. |
| 16 |[[Borian Haldorak]] ([[dwarf]]) represents [[Upper Dura]]. His main supporters are the dwarven bankers and merchants of [[Highhold]]. He is a member of the Gold Concord of the [[Aurum]]. |
| 17 |[[Dalaina Ironhand]] ([[dwarf]]) is the representative of [[Middle Tavick's Landing]]. Dalaina primarily represents the merchants of her district, and is a no-nonsense negotiator. She is often in opposition to the "[[Boromar|Boromar Clan]] Block". |
The //Sharn Inquisitive//, the [[city|Sharn]]'s local chronicle, is the
best source of local news. A new edition of the Inquisitive appears every Sul (the first day of the week) and is distributed through the city mail. Its publisher,
[[Haftak ir'Clarn|Haftak's Books and Binding]], is a distant cousin of Lord [[Ruken ir'Clarn]], a member of Breland's [[parliament|Breland Parliament]] who often
expresses viewpoints and opinions in opposition to
King [[Boranel|Boranel ir'Wynarn]]. Haftak's position on his cousin's radical politics is the subject of much debate: You can
find critics who claim that the //Inquisitive// goes out of
its way to support the Brelish crown, and others who
maintain that the //Inquisitive// is a staunch opponent of
the crown.
Readers turn to the Inquisitive for local news (which
some say reads more like gossip), for the wisdom of [[Beggar Dane]], and for the opinion
pages, which feature heated debates on important city
issues. For news from beyond [[Sharn]], educated citizens
rely on the [[Korranberg Chronicle]].
[[Breland]] has a long heritage of operatic composition, and the Sharn Opera
House is committed to regular performances of classic Brelish works, as well as newer material from
across [[Khorvaire]]. The opera house consists of a
grand auditorium in Dalannan Tower, with comfortable seating for 3,000 people. As with the [[Kavarrah Concert Hall]], attending performances in the Sharn
Opera House usually become very formal affairs, but
the opera house also offers standing-room galleries
for those of less wealthy means.
The Sharn Watch is responsible for enforcing the laws
of the city. The sentinels of the watch patrol the streets
of [[Sharn]], to all outward appearances vigilant for signs
of unrest. In truth, the Sharn Watch is riddled with corruption, from the commanding officers down to the lowliest patrollers. Dedicated guards who truly want to protect the innocent do exist. But bribery nonetheless runs
rampant, and the watch has a way of failing to show up
somewhere at the same time that [[Daask]] or the [[Boromar Clan]] is perpetrating some misdeed.
!! Benefactors and Response Time
A common viewpoint among the citizens of Sharn is
that in the [[upper ward]]s, the Sharn Watch works for the
wealthy; in the [[middle ward]]s, it works for the [[Boromar Clan]]; and in the [[lower ward]]s, it doesn't work at all. This assessment is close enough to the truth. There's
an important undercurrent in the situation, however.
Although most officers of the Watch take bribes, that
doesn't mean all of them don't care about their city and
won't try to keep their communities safe; they do so because they see their benefactors as being an important part of the continued health of their community. For
instance, those officers who take gold from the [[Boromar Clan]] believe that the Boromars help keep the city running and give the people what they want. But if some
strangers in town break the law, they're just troublemakers who deserve to be run in.
As another example, the guards of the [[Dura]] [[Bazaar]]
have an understanding with the gang of pickpockets
known as the [[Little Fingers]]. As long as the thieves
target only tourists and foreigners, the Watch will dismiss any charges brought against them. Why should an officer of the Sharn Watch care if some [[Aundair]]ian
with more gold than sense gets robbed? But if the Little Fingers pick on a local, they're asking for trouble.
The relationship works both ways; the pickpockets are
privy to things the Watch officers aren't, and they often
warn the Watch about suspicious people or activities
they witness.
Watch officers do exist who are entirely crooked and
care nothing for the law. At the other extreme, some
officers are entirely honorable and place the law above all else, and most of those are willing to risk their lives to save an innocent bystander from a rampaging [[Daask]] [[troll]]. But most members of the Watch are pragmatists who put the needs of their clients uppermost, the needs of the citizenry second, and generally don't take action against locals.
The upshot of all this is that the Watch's response to
a crime can vary significantly depending on the nature
of the crime and where it's committed. As a rule, when
a crime is committed in [[Skyway]], any of the [[upper|upper ward]] or
[[middle ward]]s, [[Lower Central]], [[Lower Tavick's Landing]],
or [[Precarious]], members of the Watch arrive to intervene
and investigate as soon as possible. In [[Cliffside]], [[Lower Menthis]], and [[Lower Northedge]], the few Watch members
in these locations address crimes in order of priority. In
[[Lower Dura]] and the [[Cogs]], the Watch's response is typically very slow.
!! Sharn Watch Divisions
The discussion above primarily concerns the rank and
file of the Sharn Watch, the guards who walk the streets
day in and day out and the officers who supervise them.
The Watch also includes a few special divisions that
could cross the paths of the adventurers.
* The [[Blackened Book]]
* The [[Guardians of the Gate]]
* The [[Redcloak Battalion]]
* The [[Goldwings]]
!! Sharn Watch NPCs
The Sharn Watch includes people from all walks of life: veterans of the [[Last War]], retired adventurers, lifelong residents of the city, and immigrants who have become [[Brelish|Breland]] citizens. You can select from or roll on the Race and Personality
tables below to generate a Watch NPC. There is a <<drp 75% "Taking bribes." "Not taking bribes.">> chance the NPC is taking bribes from the [[Boromar Clan]]
or another wealthy patron. This doesn't necessarily
mean that the officer is willing to take a bribe from one
of the adventurers.
| !<<dr d20>> |!Race || !<<dr d10>> |!Personality |
| 1 |[[changeling]] || 1 |Disgruntled veteran of the [[Last War]] who has seen everything |
| 2-4 |[[dwarf]] || 2 |Lifelong [[Sharn]] resident who loves discussing rumors and debating the city's best haunts |
| 5-6 |[[elf]] || 3 |Layabout who tries to do as little work as possible |
| 7 |[[gnome]] || 4 |Eternal optimist who encourages victims of crime to have hope and look on the bright side |
| 8-9 |[[half-elf]] || 5 |Investigator who loves to get to the bottom of a mystery |
| 10-11 |[[half-orc]] || 6 |Rookie with no experience in facing danger who is a bundle of nerves |
| 12-13 |[[halfling]] || 7 |Brawny meathead who believes all problems can be solved with force |
| 14-16 |[[human]] || 8 |Greedy opportunist who's always angling for a bribe |
| 17 |[[kalashtar]] || 9 |Uptight perfectionist who appears to do everything by the book |
| 18 |[[shifter]] || 10 |Unfriendly interrogator who assumes everyone spills their secrets to the [[Tyrants]]. |
| 19-20 |[[warforged]] |||<|
Some of the Sharn Watch's most important people are
as follows:
* Lord Commander [[Iyan ir'Talan]] ([[human]])
* Commander [[Lian Halamar]] ([[halfling]])
* Commander [[Belew Yorgan]] ([[dwarf]])
* Commander [[Silaena Cazal]] ([[elf]])
* Commander [[Iyanna ir'Talan]] ([[human]])
* Lady Warden [[Maira ir'Talan]] ([[human]])
* Captain [[Daja Brel]] ([[human]])
* Captain [[Khandan Dol]] ([[dwarf]])
!! Watch Station
Sharn Watch stations are located throughout the city.
The largest are the garrison posts like [[Daggerwatch]] and
[[Sword Point]]; smaller stations in various places are used
to hold criminals, dispatch patrols, and take care of day-to-day business.
A typical Sharn Watch station has two well-guarded
entrances. One is connected to a main vestibule, where
an officer in a security room with a magically reinforced
window signs visitors in and confiscates their spell components, spellcasting focuses, and weapons. The other entrance is a large barred and warded door that leads to
the garage, which holds [[skycoach]]es and [[soarsled]]s. Both
of these areas are connected to the station's bullpen by
way of locked and warded doors.
The below table offers reasons
why the characters might need to visit (or break into)
such a location.
| !<<dr d6>> |!Adventure Goal |
| 1 |Destroy evidence of a crime that's being stored in a Watch station, or plant evidence in a Watch station to frame someone for a crime. |
| 2 |Learn which members of a station's crew are on the payroll of a criminal organization. |
| 3 |Ensure the station's Watch officers are indisposed during an upcoming crime spree. |
| 4 |Help defend a Watch station from a siege. |
| 5 |Free someone being held at a Watch station. |
| 6 |Steal uniforms from a Watch station. |
!! Sharn Watch Villains
Corrupt or extremist members of the Sharn Watch are villains of a special sort: legitimate authority figures who have access to the city's law-enforcement resources. The protections these villains enjoy often call for drastic measures to stop them, which the characters might be labeled as criminals themselves and might have to go underground to avoid arrest or harassment. Examples of Sharn Watch villains appear on the table below.
| !<<dr d6>> |!Villain |
| 1 |A [[dwarf]] arrests random [[halfling]]s on the streets in the [[lower ward]]s and allows [[Daask]] agents to interrogate and torture them. |
| 2 |A [[Brelish|Breland]] veteran of the [[Last War]] arrests and murders innocent [[Cyran|Cyre]] refugees, claiming each time that the victim tried to attack him. |
| 3 |A [[changeling]] investigator works for the [[Tyrants]] and pins unsolved crimes on other Sharn Watch members who interfere with the Tyrants' business. |
| 4 |A [[half-elf]] works her way through the ranks of the Sharn Watch by assassinating her superiors but making it look like they died in the line of duty. |
| 5 |An [[elf]] in the [[lower ward]]s comes to the aid of only those who pay a monthly protection fee. |
| 6 |A [[Blackened Book]] mage confiscates [[magic item]]s from others to auction off to criminals. |
!! Sharn Watch Campaign Themes
If you want to make the Sharn Watch a significant part
of the campaign, you can develop a story for a particular commander. [[Lian Halamar]] is the primary agent of
the [[Boromar Clan]], and if the adventurers are fighting
the Clan, any interaction with the Watch can ultimately
come to Lian's attention, with his corruption slowly becoming more and more evident. If the characters oppose
House [[Tarkanan]], it could be Commander [[Cazal|Silaena Cazal]] who
keeps interfering with their investigations and placing obstacles in their way. Can the adventurers find a way to
remove their rival from power?
Another option is to focus a story on Commander [[Iyanna|Iyanna ir'Talan]] and her efforts to purge corruption from the Watch. A chance encounter could bring the two together; perhaps the adventurers are on the scene when Iyanna is targeted by assassins. Iyanna could call on the adventurers to investigate corruption and to deal with officers who are breaking their oaths. How deep are they willing to go?
If the adventurers do form an alliance with a Watch
officer, you can use the table below to create adventure hooks for parties and side quests for individual characters—cases their ally doesn't trust the
Watch regulars to handle fairly.
| !<<dr d8>> |!Assignment |
| 1 |Solve a murder that occurred in [[Skyway]]. |
| 2 |Find a [[dreamlily]] den and arrest the place's owner and its supplier. |
| 3 |Protect an ambassador from [[Sarlona]] who is joining a [[Morgrave University]] expedition to the [[Cogs]]. |
| 4 |Monitor the [[Lyrandar Tower]] airship dock for a specific criminal reportedly trying to leave the city. |
| 5 |Apprehend a war criminal rumored to be arriving in [[Sharn]] by [[lightning rail]], and deliver the criminal to the nearest Watch station. |
| 6 |Take a visiting dignitary on a tour of the city and keep them happy. |
| 7 |Venture into the bowels of the city to find a wanted terrorist who has kidnapped a [[magewright]] and stolen the parts needed to build an explosive device. |
| 8 |Handle a prisoner exchange—one captured criminal for one captured Sharn Watch officer. |
!! Sharn Watch Adventure Hooks
The table below presents
ideas for additional adventures themed around the
Sharn Watch.
| !<<dr d4>> |!Adventure Hook |
| 1 |The Sharn Watch cracks down on [[Daask]], which leads to violent confrontations in the city's [[lower ward]]s. |
| 2 |The [[Sharn Inquisitive]] publishes an article claiming that [[changeling]]s of the [[Tyrants]] have stolen the identities of many Watch officers, leading to citywide distrust of the organization. |
| 3 |After a [[Thrane]] immigrant opens a sealed entrance to [[Old Sharn]]'s ruins, the [[Guardians of the Gate]] do not allow anyone in or out of [[Sharn]] until the immigrant is found and the entrance is resealed. |
| 4 |Agents of the [[Blackened Book]] find scrying sensors in Sharn Watch stations throughout the city. |
''District Type:'' Red light district<br/>
''Buildings:'' Poor lodging (80), average food (20), poor
food (80), poor trades (80), poor services—brothels,
pawnshops, etc. (140)<br/>
''First Impression:'' Raucous sailors stagger through
the streets in groups of threes and fives, careening
from tavern to bordello in search of a good time.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Grayflood]] (northwest); [[Ship's Towers]] (southwest); [[Mud Caves]] (southeast)
Catering to the carnal desires of the clientele in [[Cliffside]], Sharn's Welcome is rough, dirty, and a haven for crime. Bordellos abound, but customers are often robbed, sometimes beaten, and occasionally killed.
Pasha Shashraqa of Firefall stands just below [[Azhalar]] in the [[City of Brass]]'s
social order and is determined to unseat her rival. She is
cultivating the friendship of several [[dragon]]s. She considers
herself to be a connoisseur of art, and could take an interest
in the work of an artistic adventurer.
Born in [[North Market]],
Shassa Tarr ([[shifter]] councilor for [[Lower Northedge]]) is a political
animal. She comes from a long line of merchants,
and is an expert negotiator. While she is not as devious as [[Thurik Davandi]], she has been successfully able to juggle alliances with all of the major factions
within the council. Shassa herself owes her allegiance
both to the merchant lords of [[Lower Northedge]] and
to [[Sharn]]'s [[shifter]] community, and she does what she
can to help both of these groups.
Shava House, a small academic
community on the campus of [[Morgrave University]],
was originally a housing unit for professors with no
families. It has developed into more of an intentional community: the residents share meals heavily laden with academic discourse, and generally share
an interest in the history of [[Xen'drik]]. An unassuming member of this commune is [[Dala Arand]]—a friendly scholar active in planning expeditions
to Xen'drik, while also secretly serving as a spy for
the Order of the [[Emerald Claw]].
The center of Shavalant may be a single cobbled roadway and seven dusty cross-streets, but its wealth is scattered across the surrounding 150 miles of gently rolling grasslands. Springing up around Tenneth Ford, the only easy crossing point along Shavalant Creek as it flows from the [[Ranruunwood|Whitehorn Wood]] to
[[Silver Lake]], Shavalant was the logical stopping point
for ranchers bringing their stock to [[Orcbone]] or the
trade road from [[Xandrar]].
The stockyards of Shavalant are one of House
[[Vadalis]]’s key holdings. The [[dragonmarked house]] effectively rules the town, since its designated representative consistently wins election as village spokesperson.
In Shavarath, [[angel]]s and [[devil]]s are locked in endless conflict. Radiant blades spill burning blood, and bolts of force smash angels from the sky. In another layer, champions
of justice ride armored
[[dragon]]s, assaulting a titanic
[[airship]]. In yet another, steel
[[kraken]]s tear apart celestial
frigates. There's only one
constant in Shavarath: war.
The war in Shavarath began
at the moment of creation, and it
will continue to the end of time. Its
primary combatants are [[immortal]], and
fallen soldiers return within a day or
so. The forces are so evenly matched that a decisive victory is
impossible. To outsiders, this war seems pointless. Over the last
four hundred years of conflict in [[Nullius Terram]], the Legion of Justice has advanced its front line by perhaps 20 feet. Mortals
may look at this and ask, “Why continue to fight? Why not
just leave the struggle and do something—anything—else?” In
particular, it's common for mortals to see the vast resources the
[[celestial]]s devote to the war and protest, “Why don't you help
//us//? You claim to be the Legion of [[Justice]], but innocent people
are dying in [[Thaliost]] while you fight this meaningless war!”
The angel isn't fighting for a single nation, and this war
isn't driven by gold or politics. The immortals of Shavarath
believe that their war is reflected across every reality. [[Justice]].
[[Tyranny]]. [[Cruelty]]. The war in Shavarath is a visible symbol of
the balance of power between these forces, and when it shifts
in Shavarath, the immortals believe it shifts //everywhere//.
Fallen [[devil]]s will be reborn. New [[airship]]s will replace those
destroyed. But every tiny victory—every [[demon]] defeated,
every foot advanced in [[Nullius Terram]]—strengthens the
forces of justice //everywhere//. Each [[angel]] knows they will
never win a truly decisive victory, but as long as they fight,
they can at least hold the line.
So to an angel, the destruction of a human city—or an entire
nation—is trivial. Mortals will die; that's their most defining trait.
Even a sympathetic angel sees a mortal as a snowflake: unique,
beautiful, but gone in a moment (and sooner if you touch it).
The angels fought long before today's mortal civilizations
existed, and if they hadn't held this line for countless eons, the
Material Plane would be overrun by chaos and cruelty.
If you're a hero, you might look to the angel and say, “What
can I do to help? Can we fight at your side?” To which the angel
simply smiles and responds, “You already are.” Just as every
mortal dreams in [[Dal Quor]] and has a [[shadow]] in [[Mabar]], there's
a sliver of every mortal soul that fights in Shavarath. The skill
and power of these conscripts reflect your own courage and
will... and just like the angels, this sliver of yours can survive a
thousand deaths. So it's not your place to fight on the battlefields
of Shavarath. You do your part by living your life, by fighting for
the principles you believe in wherever you may be.
There is war in Shavarath, and there will always be war in
Shavarath. It can't be won, and it can't be abandoned. As a
mortal in Shavarath, your primary goal should always be to
survive—because in Shavarath, there are a million ways to die.
!! Universal Properties
There's a part of you that's always been in Shavarath, a sliver of
your soul that's always been at war. When you're in Shavarath,
those instincts guide you. It's easier to strike a deadly blow, or
to grit your teeth and fight on through pain or injury.
* //''War Magic.''// When a creature casts a spell that enhances martial ability, the duration is doubled.
* //''Unquenchable Fury.''// A creature has resistance against any spells or abilities that [[charm]], as well as against the [[calm emotions]] and [[sanctuary]] spells. In addition, the duration of these effects are halved. While a barbarian is raging, its rage can't be ended early unless it's knocked unconscious.
* //''Fight On.''// Once between each rest, a creature can instantly recover from a minor injury.
* //''Bloodletting.''// When a creature scores a critical hit (two or more 6's) with a physical attack, gain +1 additional effect.
* //''Flexible Time.''// Time's passage varies between Shavarath's [[layer]]s. In many, time passes at the same rate as on the Material Plane; if you spend an hour fighting in the [[Burning Sky]], an hour passes in Eberron. But other layers move at different speeds; you can spend a month in the trenches of [[Nullius Terram]] and find that less than three days have passed in Eberron.
!! Denizens
All creatures in Shavarath are part of the war, whether they're
soldiers, tools, or victims. Those that fight are tied to [[legion|legion of Shavarath]]s,
such as the Legion of [[Justice]] or the Legion of [[Tyranny]].
An offensive's primary goals often focus on destroying an
important opponent. The Legion of Justice knows it can't drive
Tyranny from [[Nullius Terram]], but defeating Lord Commander
Astaralax is an important victory for the light, even though he's
an immortal and will eventually return. Sometimes an especially
grand victory might cause an immortal to be “discharged”—when
this happens, a new being of equivalent power takes its place,
but it has a new personality, and the original spirit is eradicated.
Such victories are worth even more points in the grand system
that calculates the balance of power between the legions.
!!! Conscripts
In [[Nullius Terram]], the trenches are filled with miserable
soldiers waiting for the offensive. The [[City of Knives]] is filled with
innocents struggling to survive and looters taking advantage of
the chaos. There are [[dragon]]s in the [[Burning Sky]]—but none of
these are mortals. They're all [[manifestation]]s, ideas conscripted
to serve the purpose of the story. Conscripts appear to be
sentient, but have no depth of personality or memory, can't leave
their layers, and can't accomplish anything meaningful unless
accompanied by a [[celestial]] or [[fiend]]. It's only when the [[angel]]
leads a charge that the conscripts of Nullius Terram matter, and
though they inevitably die, they eventually reform. Conscripts
can use the statistics of the creatures they appear to be, but may
not have their full capabilities; the dragons of the Burning Sky
aren't as intelligent as true dragons. A conscript usually appears
indistinct; it's hard to focus on them, and it's often easy for a
viewer to imagine conscripts are members of their own species.
!!! Sword Wraiths
All mortal creatures have a spiritual connection to Shavarath,
and there's a sliver of their spirit in the plane. The strength of
this sliver is determined by the mortal's courage, willpower, and
martial drive. Conscripts are formed from this spiritual energy,
but have no awareness and may be formed from multiple slivers;
unlike [[Irian]]'s [[ember]]s, the conscript doesn't resemble the source.
Sometimes, on the death of a great mortal warrior, echoes of
their personality and martial spirit can coalesce into a sword wraith (though its abilities may vary based on the champion it echoes). Unlike standard conscripts, sword wraiths are capable of meaningful action even without the direction of an
[[immortal]] and can command conscripts of their own. A sword
wraith has the appearance of its mortal source and some of
the memories, but it's only an echo of the mortal, much like the
traces of memory that allow you to speak with dead. Sword wraiths reconcile their memories with the war within the layer. If there's a sword wraith of [[Karrn the Conqueror]] commanding troops in [[Nullius Terram]], he believes that he's fighting for
[[Karrnath]] and can't be convinced otherwise; after all, he's only a
memory, and there are limits to his ability to reason.
So adventurers might meet [[Lhazaar]] as she commands a
ship in the [[Bloody Sea]]. [[Dhakaan]]i champions, the [[Mror clan]]
founders, heroes of the [[Last War]]—any of these could be found
as sword wraiths, serving the legion that best matches their
values. There are sword wraiths of many patron ancestors
of the [[Tairnadal]] elves; however, these aren't the patrons
themselves, simply echoes left behind. While sword wraiths
generally form after a mortal's death, the slivers of especially
remarkable heroes can manifest sword wraiths even while
alive. King [[Boranel|Boranel ir'Wynarn]] of [[Breland]] surely has a sword wraith
serving in the Legion of Justice, and it's possible an adventurer
could meet their own sword wraith while exploring Shavarath.
!!! Whirling Blades
Shavarath's whirling blades are enigmatic and deadly. These
[[manifestation]]s are swarms of animated weapons—knives,
swords—that tear through the air, eviscerating anything
unfortunate enough to be in their path. Sometimes they follow
consistent paths like flocks of birds. Other times, they appear in
a flash, lashing at victims, then vanishing. The whirling blades
may be a defense mechanism designed to keep mortals from
interfering with Shavarath, and the longer mortals remain in
Shavarath, the more likely they are to be struck. These blade
storms can also leak out into the Material Plane in areas of
particularly brutal conflict, spilling blood on all sides.
!!! Angels
Most of Shavarath's [[celestial]]s serve the Legion of [[Justice]], which
embodies the concept of war fought for a just cause.
The angels of Shavarath have a martial aspect, most
appearing clad in armor, with their faces—and species—hidden
behind full helms. Any sort of angel can be found in Shavarath,
with its power reflecting its position. [[Planetar|planetar]]s command
centuries, while each cohort is commanded by a [[solar]] or a
[[celestial]] being of greater power. While
the angels serve Justice Command, there are a few units also
devoted to the [[Sovereigns|Sovereign Host]]. The Century of the Sun asserts that
[[Dol Arrah]] //is// Justice Command, and sword wraiths formed from
[[paladin]]s of Dol Arrah serve with this century.
While the Legion of [[Justice]] is the largest of the celestial
legions, there are others, such as the Legion of [[Freedom]], that operate on a smaller scale.
!!! Demons
Demons represent the chaotic savagery of war. Most serve the
Legion of [[Cruelty]], and are wild, brutal, and far less disciplined
than the [[devil]]ish forces of [[Tyranny]].
As with all [[immortal]]s of Shavarath, it's important to remember that these demons are first and foremost embodiments of war;
regardless of what role a demon might play on another [[plane]],
here, it's devoted purely to the eternal war. It could be that there
is a Cohort of Bones that uses [[undead]] conscripts in battle,
commanded by a [[fiend]] as powerful as an [[overlord]]—but this
commander wouldn't have the overlord's ambitions, instead focusing
on crushing the Cohort of the Sun in its layer.
As with [[angel]]s devoted to the [[Sovereigns|Sovereign Host]], some [[demon]]s
dedicate themselves and their unit to the [[Dark Six]].
!!! Devils
[[Devil|devil]]s can be just as cruel as [[demon]]s, but they represent the
disciplined practice of war in pursuit of oppression, and most
serve the Legion of [[Tyranny]].
!!! Weapons of War
The battlefields of Shavarath contain engines of war unlike
anything imagined on Eberron. Steel [[kraken]]s in the [[Bloody Sea]]. Massive cannons that could bring down [[Sharn]]'s towers with a single volley. Immense [[monstrosities|monstrosity]] that serve as living battering rams. However, even the grandest of these creations isn't a product of industry or arcane science—these
too are conscripts. The mighty cannon isn't forged in some
great foundry, but formed by the layer itself, because it's part
of the //idea// of this battle. [[Fernia]] is a [[plane]] of industry where
an [[artificer]] might learn amazing techniques from the [[dao]]; by
contrast, in Shavarath, an artificer might be inspired by what
they see, but most of the greatest weapons can't be replicated.
!! Layers
Shavarath has countless [[layer]]s, each one reflecting a different
struggle. There's a vicious guerilla war in the Forest of Shadows. The Monolith is a mighty fortress that's always under siege; occasionally, the attackers tear it away from the
defenders, at which point the former defenders begin the
siege anew. Layers are connected by a network of heavily
fortified portals, though the most powerful [[immortal]]s can
shift between layers under their own power. Every legion has
a command center or headquarters in the layers in which
they operate. The legion might only assign a few centuries to
smaller layers, but if a layer's large enough—such as [[Nullius Terram]]—it may host an entire cohort.
These are a few examples of layers of Shavarath, but almost any vision of war could spawn a layer.
<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>
!! Planar Manifestations
Here are a few ways Shavarath can affect the Material Plane.
!!! Manifest Zones
[[Manifest zone|manifest zone]]s tied to Shavarath often inspire people to
violence and aggression, and can convey any of the plane's
universal properties. These zones can be dangerous places to
dwell, but can also encourage martial discipline and enhance
training. While many of the greatest weapons in Shavarath
can't be removed from the plane, manifest zones tied to
Shavarath can often provide inspiration for [[artificer]]s and
smiths, and it may be possible to craft deadly enchantments in
a Shavaran manifest zone that simply aren't possible beyond it.
Manifest zones rarely act as gateways to Shavarath, but
anything is possible when Shavarath is coterminous.
!!! Coterminous and Remote
When Shavarath is coterminous, people are quick to anger and
must be careful to not fight over trivial things. Angry words are
more likely to produce brawls, and restless thought to lead to
riots or revolutions. The plane's //War Magic// and //Unquenchable Fury// properties spread worldwide while it's coterminous, encouraging violence. Meanwhile, in Shavaran [[manifest zone]]s, outbreaks of intense violence can draw whirling blades into the
zone, slaughtering people on all sides.
Shavarath is traditionally coterminous for 1 year every 36
years. Throughout history, some military leaders have plotted
campaigns around this, while peaceful communities plan ahead
to contain violence. In addition to its regular cycle, Shavarath
frequently grows coterminous for a single day; predicting these
periods was critical for battle strategy during the [[Last War]].
Shavarath is traditionally remote for a year every 36 years, which
prevents the occasional single-day coterminous spikes, but
otherwise has no apparent effect on the Material Plane.
!!! Shavaran Artifacts
Unlike [[Fernia]]n [[elemental]]s, the [[immortal]]s of Shavarath don't
create their weapons and tools of war; they're shaped by the
plane itself. Many of the grandest weapons—explosives that
can level cities, airships the size of small towns—either can't
be removed from Shavarath or wouldn't function elsewhere.
But Shavarath is a potential source for armor, weapons, and
tools of war, from common items to the artifacts wielded
by the commanders of cohorts. These may be some of the
most powerful weapons in the multiverse—but they're also
irreplaceable. You can steal the //Wand of Orra'Cys//, lord of the
Cohort of Bones—but he'll certainly want it back, and may
deploy [[demon]]s, [[warlock]]s, or other agents to reclaim it.
The legion an item is associated with affects its appearance.
Tools of the Legion of [[Justice]] are bright and inspiring, while
those tied to the Legion of [[Tyranny]] are grim and intimidating.
!! Shavaran Stories
The simplest story is one of survival, escaping from Shavarath
before being destroyed by the endless war. But Shavaran
adventures touch the Material Plane too; here are some ideas.
//''Blades of War.''// [[Cannith]] builds a forgehold for manufacturing
weapons on a [[manifest zone]] tied to Shavarath. All goes well—until a planar spike unleashes whirling blades and everything is thrown into chaos. Making things worse, some experimental [[construct]]s have gone berserk, an experimental Shavaran
explosive is detonating in five hours... and it's possible an agent
of the [[Lord of Blades]] has infiltrated the hold in the chaos. Can
the adventurers get things under control?
//''The Surge.''// In [[Fairhaven]], an [[artificer]] creates an [[eldritch machine]] to channel Shavarath's power—but it works too well. When Shavarath becomes coterminous, the eldritch machine amplifies everyone's aggression. Riots and looting break out
across the city, while the guards act brutally to contain it. Can the
adventurers find and deactivate the machine before the city tears
itself apart? Is this the work of a single reckless artificer, or tied
to the cult of [[Rak Tulkhesh]] or the Order of the [[Emerald Claw]]?
//''Deadly Weapon.''// The adventurers find a corpse clutching the blade of Misery, an [[erinyes]] of the Legion of [[Tyranny]]. An agent of the [[Argentum]] died while attempting to take the blade to a place it could be destroyed. Will the adventurers
try to complete the mission, or claim the powerful sword as a
trophy? If they choose to keep it, Misery will eventually come
looking for her sword... and this cruel immortal will want to take
some time to torment any mortals who have sullied her blade.
The duties of this branch of the [[Unity]] of [[Riedra]]
range from sanitation to disaster relief. Leaders of the
organization serve as liaisons with the other branches of
government; if a plague breaks out, the Hearth works
with the [[Healing Hand]] and the [[Thousand Eyes]] to isolate
and kill those infected before the disease can spread. The Hearth can request the aid of the Thousand Eyes but cannot demand it. Lord Dulateth ([[hashalaq]] [[Inspired]]) directs the Hearth from the bastion of [[Dul Uldane]].
Shendroa, a [[blue|blue dragon]] [[rogue dragon]] in [[Xen'drik]], was recently exiled to the shattered land after the discovery of her despicable practice of stealing other [[dragon]]s’ eggs, cooking them in all manner of ways, and devouring them.
She skulks the sandy plains of [[Menechtarun|Menechtarun Desert]], surveying
potential sites for a new lair and plotting ways to acquire
a suitable hoard (and perhaps a few more eggs to feed her
foul habit).
As a reaction to being attacked, the spellcaster creates an invisible barrier of magical force to block the attack. The shield lasts for 5-10 seconds before dissipating.
When you speak the command word while wearing this wide steel cuff, it transforms into full-sized kite shield and ceases to be magical.
//Geth's ancient heritage rose up from deep within him, spreading out from the core of his being. Some shifters manifested terrible claws, others massive fangs, still others astounding speed or heightened senses. Geth's gift from his lycanthrope ancestors was sheer toughness. Strength seeped into his bones and flooded his flesh. His skin hardened, and his hair became coarse like an animal's tough hide. A sense of invincibility spread through him. For the moment at least, he felt unstoppable!//
<div align="right">—Don Bassingthwaite, //The Binding Stone//</div>
Shifters are sometimes called the weretouched, as
many believe they are the descendants of [[human]]s and
[[lycanthrope]]s. Whatever their origins, shifters have
evolved into a unique race. They are humanoids with a
bestial aspect; while they can't fully change shape, they
can temporarily enhance their animalistic features—a
state they call shifting. Each shifter walks on the knife's
edge between the wilds and the world around them.
Do they embrace their primal instincts or the path of
civilization?
!! The Beast Within
Early in childhood, a shifter forms a bond with a beast
within, a totemic force that shapes their body and mind.
Some shifters believe that these spirits are independent entities, and they may speak of Bear or Wolf as ancestors or guides. Most just see the beast within as a
formidable expression of their inner nature, something
that emerges as the shifter's personality takes shape.
The beast within is a pool of powerful instincts, and its
influence is revealed by a shifter's personality: a feline
shifter may be cool and distant, driven by predatory
instincts, while a shifter with a lupine spirit might be
drawn to find and protect a pack. When a shifter fully
embraces this beast within they physically transform
for a short time.
A shifter's beast within is reflected by the shifter's subrace. Four subraces are especially common:
* [[Beasthide|beasthide]] often signifies the bear or boar: stoic, stubborn, and thick-skinned.
* [[Longtooth|longtooth]] shifters typically have lupine traits and prefer to run with a pack.
* [[Swiftstride|swiftstride]] are often predatory and feline, but a swiftstride could also be a cunning rat who darts through the shadows.
* [[Wildhunt|wildhunt]] shifters are born from any creature that tracks its prey.
While the beast within certainly has a physical impact on a shifter, it has a spiritual and psychological effect, as well. Two beasthide shifters share the same special ability, but if one has the aspect of the boar and the other is more like a bear, they'll be quite different in personality. With any shifter, identifying the beast within is a crucial part of understanding the character.
!! Similar and Diverse
Shifters are quick to mature both physically and emotionally, reaching young adulthood at age 10. They rarely live to be more than 70 years old.
Shifters are similar to [[human]]s in height and build but are typically more lithe and flexible. Their facial features have a bestial cast, often with large eyes, flat noses, and pointed ears; most shifters also have prominent canine teeth. They grow fur-like hair on nearly every part of their bodies.
The traits of the beast within affect a shifter's appearance as well. A [[swiftstride]] shifter may have catlike eyes and delicate build, while a [[beasthide]] shifter might be a massive brute built like a bear. While a shifter's appearance might remind an onlooker of an animal, they remain clearly identifiable as shifters even when at their most feral.
!! The Journey Yet to Come
Shifters have a strong presence in the [[Eldeen Reaches]] but can be found in rural areas across [[Khorvaire]], where they often live among humans. While they form powerful bonds to friends and kin, shifters place great value on self-reliance and freedom. It's a shifter proverb to "always be prepared for the journey yet to come," and most shifters strive to be ready for change or opportunity.
Shifters have a natural inclination toward classes with a primal connection. A shifter barbarian draws their rage from the beast within. A shifter ranger indulges their urge to wander and hunt. A shifter rogue harnesses their own predatory instincts. But shifters can pursue any path or faith.
!! Shifter Names
Shifters have no language of their own and often live
in blended communities. Their names typically overlap
with the names of other cultures in their region. Many
shifters prefer to keep their personal names for their
friends and use "wandering names" with strangers.
These are usually tied to a physical or personality trait.
//''Shifter Names:''// Badger, Bear, Cat, Fang, Grace, Grim,
Moon, Rain, Red, Scar, Stripe, Swift, Talon, Wolf
!! Shifters of Droaam
There are a significant number of shifters among the
[[humanoid]] population of [[Droaam]]. In the former Barrens, shifters
were largely mixed together with the Gaa'aram [[orc]]s, much
the same way that the [[goblin]]s and [[kobold]]s of Droaam have
formed a collective culture. These orcs call shifters //taarka'va//—wolf brothers. Pairings between shifter and orc can produce offspring, but the resulting half-orcs are almost always sterile.
Another group of shifters are found in the [[Watching Wood]].
They call themselves //Ur'haakar//—First Panthers. These shifters
shun civilization and take pride in their primal connection.
Experts at stealth, they possess both rangers and Living Weapon [[monk]]s. A few of the Ur'haakar have joined the [[Dark Pack]] and left the woods to serve the [[Daughters|Daughters of Sora Kell]] and [[Droaam]],
but most of the panthers prefer their isolation and consider the
[[lycanthrope]]s of the Dark Pack to be corrupted shifters.
!! Shifters of Sarlona
As the secrets of [[Sarlona]] have revealed themselves to
the [[Khorvarian|Khorvaire]] scholars over the last few years, one of
the most startling revelations was the discovery of a
vast shifter population in northern [[Tashana|Tashana Tundra]]. It has
become apparent that, like [[human]]s and [[ogre]]s, the
shifter race may have actually originated in Sarlona.
The [[three Tashana shifter groups|Culture of the Tashana shifters]], each consisting of hundreds if not thousands of individual, semi-nomadic tribes, are not nations in the typical sense. Rather, they are people bound together by common tradition and loose territorial
boundaries.
While the three nations have known great wars in the
past, they have maintained a relative peace for many generations. Tashanan shifters place much more importance
on the community than do their self-reliant brethren in
Khorvaire. The semi-nomadic tribes of the [[Qiku]] and [[Saartuk]], in particular, have evolved a kind of parallel civilization to the urbane nations of the world—one that values natural simplicity over technological sophistication, mobility over
entrenchment, and spirituality over materialism. The [[Chuniigi]] tribes roam the northern reaches of the tundra.
Previous to the rise of the [[Inspired]] in [[Riedra]],
a branch of the Qiku nation roamed far south into
the lands that are now the [[Dor Maleer]] region. As the
Inspired came to power, they enslaved these southern
tribes, who have since evolved into an elite warrior caste
serving in Riedra's "Savage" [[Taskaan Legion]].
Shifters of the [[Taskaan Legion]] are few but all are bred for
battle. The Taskaan adhere to a strict code of discipline
and loyalty to the [[Inspired]]. Although furious in battle,
they act with skill and wisdom.
Although the [[beasthide]] trait is the most common
among the Taskaan, shifters who have other traits are also
found in the legion. Some Inspired lords prefer to maintain a corps of shifters each of whom has the same trait, while others strive for diversity in their house guards.
Some individual shifters and small packs have also made homes in the wilds of [[Syrkarn]].
The resources of the [[Tyrants]]
are hidden throughout [[Dragoneyes]], but they maintain a small building on the Street of Eyes where prospective clients can come in search of services. This
building is completely unmarked and unremarkable.
To find it, a character must obtain directions or make an attempt to gather information. The [[Tyrants]] leadership is rarely found at the hall, and instead moves from base to base throughout the district.
There are countless islands on the edge of the [[Sea of Chaos]],
varying dramatically in size, each with its own environment.
These are constantly changing, but they change slowly; it can
take anywhere from a day to a week for an island to shift from
a barren desert to a verdant jungle. Weather is generally more
dynamic, and often at odds with the environment; a vast desert
can suddenly face a dramatic blizzard. Use the buttons below to generate random weather effects, monuments, or "weird locales" for ideas for what adventurers might find on one of these chaotic islands.
<$button>
<$action-chooserandom $dataTiddler="RandomTemp" $field="w1"/>
<$action-chooserandom $dataTiddler="RandomPrecip" $field="w2"/>
<$action-chooserandom $dataTiddler="RandomWind" $field="w3"/>
Weather
</$button>
<<<
{{!!w1}}, {{!!w2}}, {{!!w3}}
<<<
<$button>
<$action-chooserandom $dataTiddler="RandomMonument" $field="monument"/>
Monument
</$button>
<<<
{{!!monument}}
<<<
<$button>
<$action-chooserandom $dataTiddler="RandomLocale" $field="locale"/>
Weird Locale
</$button>
<<<
{{!!locale}}
<<<
Keep in mind that Kythri is home to [[mimic]]s of all
sizes; an unusual monument might be a colossal mimic!
The primary denizens of the Shifting Islands are
monstrosities and beasts that blend the features of multiple
creatures. Populations expand and contract, and don't have to
be sustainable, so adventurers could find a plateau filled with
[[griffon]]s, or a realm of [[chimera]]s where each one has a different
arrangement of heads. The intelligent inhabitants of the island
are almost entirely [[slaad]]i, but they aren't necessarily hostile. One might even stumble across a slaad village where adventurers are worshiped as gods!
This stone is made of bands of sediment that seem to shift and churn endlessly. You may throw this item or launch it with a sling. On contact with soil or rock, the shifting stone is absorbed into the ground causing all of the earth and stone within a 15-foot radius to begin to churn and shift, liquefying into a thick mud.
Creatures within the affected area must attempt to escape the shifting earth or else sink down into the earth up to their midsection, at which point the ground solidifies, restraining the creature(s).
[[Xen'drik]] is a vast land of harshly contrasting environments,
from the burning wastes of the [[Menechtarun Desert]] to the
deep jungles of the west. However, nature is not the only
force that has shaped the continent. The arcane forces used
to sever the ties between [[Eberron]] and [[Dal Quor]] during the [[Age of Giants]] created
mystical shockwaves that rippled out from [[manifest zone]]s
and [[quori]] beachheads, causing reality itself to buckle in
their wake. In many ways, Xen’drik is a land drawn from
dreams, and the laws of nature bend and break across the
continent. Adventurers might crest a desert dune to find a
vast expanse of arctic tundra stretching out before them. For
the most part these regions are fixed, but in areas where the
magical effects of the forty-thousand-year-old war between
[[giant]] and [[quori]] still linger, reality is never entirely stable. A tropical river passing through such an area might freeze
solid one day, then transform into molten lava or a sheet
of glass the next. Travelers in such areas are generally
unaffected, but flora and fauna native to a shifting zone
often become transformed with the environment. When a
jungle becomes an ice plain, a tiger might transform into
a smilodon without even noticing the change.
The existence of these shifting zones is one of the
main reasons explorers hire native [[Xen'drik]] guides. Of course, simply
knowing the location of a shifting zone might not allow a
party to avoid it; some zones are dozens or even hundreds
of miles across. Ultimately, Xen’drik’s shifting zones are
a tool for DMs seeking to challenge players with unusual
and deadly environments.
When a suit of shiftweave is created, up to five different outfits can be embedded into the cloth. While wearing the clothing, you can speak its command word to transform your outfit into your choice of one of the other designs contained within it. Regardless of its appearance, the outfit can't be anything but clothing. Although it can duplicate the look of other magical clothing, it doesn't gain their magical properties.
The Shimmerwood is a large forest that spans most of [[Zilargo]]'s southern shore.
Strongly connected to [[Irian]], Eternal Dawn, this valley hidden within the foothills of the [[Graywall Mountains]] is bathed in a light that fades to a luminous dusk for only a few hours each night, despite the high cliffs that should cast shade most of the day. A secret tunnel leads through a series of caverns to a small cave on the [[Droaam]] side of the mountain range.
When the Haunting Song, a flight of [[harpies|harpy]] living in Droaam, refused to bow to the [[Daughters of Sora Kell]], the Carrion Callers and Stormsingers harpies combined forces to make an example of them. Decimated, the survivors fled into the mountain caves and eventually discovered Shining Valley. Tending their wounded, they quickly discovered the curative properties of the [[Irian]] [[manifest zone]]. The flight has remained in the valley ever since. The flight bides its time, raising a new generation in the valley’s endless light and planning for the day when the Haunting Song will have revenge on the Daughters of Sora Kell and their treacherous kin.
The [[Lhazaar|Lhazaar Principalities]] legend of the Ship of Bones claims that the evil Prince Moren of the [[Bloodsails]] was cursed for his use of dark magics, and now he sails the [[Lhazaar Sea]] in his skeletal ship with a crew of [[undead]] pirates in search of living
sailors on which to feed. It is said that on nights when two
or more moons are full, the Ship of Bones slides silently
over the waves to attack hapless vessels unlucky enough to
cross its path.
Of all the inns in [[Stormreach]], one of the most popular among adventuring parties is the Ship’s Cat. A tangle of [[densewood]] twigs that have been thatched together, the Ship’s Cat is run by [[Harysh]], who has a reputation for honor, hospitality, fairness, and discretion. This makes her a valued intermediary for many. The inn
takes its name from Harysh’s dozen cats, which share
the place with guests. Familiars and animal companions receive excellent care at the inn, as long as they do not raise the resident cats’ hackles.
Few adventurers would patronize the place if they learned the truth about its proprietor, [[Harysh]].
''District Type:'' Waterfront district<br/>
''Buildings:'' Other (20), temples ([[Kol Korran]],
[[Arawai]], [[Boldrei]], the [[Traveler]]), poor lodging (20),
poor food (36), poor trades (100), poor services
(140), poor residences (80)<br/>
''First Impression:'' Most of the traffic here consists of sailors in search of entertainment. Bars, flophouses, and small shops—many of which don't bother to advertise the nature of their business—line the street, which winds precariously along the edge of a steep cliff overlooking the river.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Grayflood]] (north); [[Sharn's Welcome]] (northeast); [[Mud Caves]] (east)
Almost identical to [[Grayflood]] in mood and appearance, Ship's Towers is distinguished by its southern tip. Here, buildings float upon the water. This boat town, formed of rafts, houseboats, and other watercraft of every shape and size, bobs on the water and is connected by a web of piers, gangplanks, and rope bridges.
//My thoughts are crystal and light, and they do not fade with the passage of time. Nations have risen and fallen while I have lain in my coffin of steel. [[Dal Quor]] is forever lost, and what remains is a twisted abomination. Believe what you will, but the [[quori]] came to this world in search of salvation, not conquest. It was the denizens of this land—the [[Sulat League]], the [[Group of Eleven]], the Emperor [[Cul'sir]]—who brought war upon us, and who ultimately destroyed both our worlds. I am all that remains of the Dreaming Heart, the last spark of light in this new age of darkness. And you are not yet ready to hear the tale I have to tell. //
[[Docent|docent]]s are intelligent [[magic item]]s designed to advise and aid the [[warforged]] who utilize them. However, the docent that calls itself Shira claims that these items originally had a different purpose—designed to hold [[quori]] spirits, providing a refuge from the spiritual change that destroyed the quori of the last age and paved the way for the coming of the [[Dreaming Dark]]. Shira claims to be the sole success of the docent program and the last survivor of the previous age of [[Dal Quor]]. Is she telling the truth, or playing a game of her own? Whatever the answer, Shira has a host of valuable abilities that she can use on behalf of the [[warforged]] who bonds with her.
Shira is a mithral sphere, 2 inches in diameter and polished to a mirror finish. Bands of tiny red and gold [[dragonshard]]s are embedded in the surface of the docent, one scribing a vertical axis, the other horizontal.
When found and activated, Shira will struggle to
find meaning and purpose in the world. Her people
and civilization are destroyed, and the modern age is
meaningless to her. Helping a group of adventurers
loot some [[Xen'drik]] ruin is at the bottom of her list of
priorities. She wants to see more of the world, possibly
becoming sympathetic to the [[kalashtar]] cause if she
believes that the destruction of the [[Dreaming Dark]]
will create a [[Dal Quor]] more reminiscent of her old
realm. Or perhaps she will fixate on the [[warforged]],
wanting to start a warforged nation of her own to rival
the dreams of the [[Lord of Blades]]. At the same time,
the Dreaming Dark might want to locate and destroy
Shira, assimilating her spirit so it can serve the cause
of darkness.
Shira can allow her warforged host to dream, but only ''once''. The [[docent]] can open a spiritual portal to [[Dal Quor]], but in doing so, she will travel to the plane with her host. When she does, she will be caught up in the turn of the age she has avoided for so long. The warforged will get one night of dreams, but the docent will be a nonmagical object when they wake.
Lightning springs from the spellcaster's hand to deliver a shock to a creature they try to touch. If successful, the target is electrocuted, taking damage and becoming slightly dazed.
The spell is particularly effective if the target is wearing armor made of metal.
These grey shoes have strange runes inked into the wooden soles. Once per day, the wearer can walk across air as if there were a solid 30-foot walkway or staircase. The invisible walkway lasts until the wearer steps back onto solid ground, or 12 hours, whichever happens first.
In the [[upper ward]]s of [[Sharn]], maintenance crews who work on bridges or tower exteriors often have one or two pairs of these shoes.
This item is a recent development of the [[artificer]]s of the [[Twelve]] and is not yet widely available.
This is a small stone disk bearing a sliver of Siberys [[dragonshard]]; it can easily be concealed in the palm of one hand. While holding the Shol eye, a creature with the [[Mark of Shadow]] can choose to record an image in the eye. This can be the full vista of what the bearer can currently see, or it can be focused on a specific individual or object within line of sight. A Shol eye can only hold a single image at a time. If a creature with the Mark of Shadow works with the eye for a few minutes, they can transfer the stored image out of the eye and onto a sheet of parchment or similar material.
Higher-rarity versions of this item could store multiple images.
| !<<dr d10>> |!Effects (lasts <<dr 1d10>> minutes) |
| 1 |The character retreats into their mind and becomes paralyzed. The effect ends if the character takes any damage. |
| 2 |The character collapses on the floor and spends the duration screaming, laughing, or weeping. |
| 3 |The character becomes terrified, and is compelled to flee from the source of their fear. |
| 4 |The character begins babbling and is incapable of normal speech or spellcasting. |
| 5 |The character physically attacks the nearest creature for the duration. |
| 6 |The character experiences vivid hallucinations and has disadvantage on all actions. |
| 7 |The character does whatever anyone tells them to do that isn't obviously self-destructive. |
| 8 |The character experiences an overpowering urge to eat something strange such as dirt, slime, or offal. |
| 9 |The character is completely stunned, unable to move or act except to speak falteringly. |
| 10 |The character falls unconscious. |
A [[calm emotions]] spell can suppress the effects of madness, while a [[lesser restoration]] spell can rid a character of a short-term or [[long-term madness]]. Depending on the source of the madness, [[remove curse]] might also prove effective.
In the early days of Sharn, [[Lower Northedge]] contained a strong
network of [[wererat|lycanthrope]]s. When the [[Silver Flame]] sought to
exterminate the lycanthropes, the [[cleric]] Fathen was
instrumental in identifying the two-legged vermin
infesting the city. In the final days of the crusade,
Fathen uncovered a nest of wererats in [[North Market]].
Fathen was torn apart in the street, but somehow he
granted the common citizens the power to bypass the
[[lycanthrope]]s' resistance to injury and a mob of commoners defeated the creatures. The Church of the [[Silver Flame]] raised a shrine on the site of Fathen's
death, and to this day pilgrims come from across
[[Khorvaire]] to pray at the martyr's shrine. The [[shifter]]s
of [[Sharn]] are still bitter about the [[crusade|Silver Crusade]], and there
is often tension between shifters and followers of the
Flame, especially on the day of [[Fathen's Fall]].
Kaira Faine ([[half-elf]] [[cleric]]) maintains the shrine, as this former member of the church
templars has grown too old to fight on the front lines.
A follower of the [[Silver Flame]] who visits the shrine can
ask Kaira to bless their weapon. The priest asks for a donation commensurate
with the pilgrim's wealth, though [[paladin]]s of the
Flame are never required to pay the tithe. The blessed
weapon gains the properties of silver for
purposes of harming creatures with a weakness to silver. This effect
lasts for 24 hours, and a particular individual can only
receive the blessing once every week.
Any [[lycanthrope]] that enters the shrine experiences a powerful supernatural aura that forces them to revert to animal form. This applies to both afflicted and natural lycanthropes.
The [[kalashtar]]-constructed shrine of il-Yannah, the [[Path of Light]],
occupies a small parapet at the top of a tall tower.
From the breathtaking views to the [[Sarlona]]n incense
that scents the air, the shrine radiates a calm, otherworldly peace. Tapestries with intricate, labyrinthine
patterns cover the walls and floor, adding to the exotic
nature of the place. The enlightened [[Havakhad]], a powerful [[psion]]
whose frail body is beginning to fail, tends the shrine
and rarely wanders far from this location. Havakhad
gladly offers advice and spiritual guidance to any
follower of the Light who comes to meditate at the
shrine, and he sometimes uses his precognition on behalf
of those he considers to be champions.
While the [[Keeper]]
is associated with death, he is first and foremost the
god of greed—the hunger to possess all things, from
gold to souls. [[Gellis Candar]] ([[dwarf]]) runs a large pawnshop in the [[Bazaar]] in [[Sharn]], and he maintains a shrine to the Keeper in a hidden back
chamber. A few of the other merchants know of the
shrine and attend Candar's services, believing that the
Keeper can help them fulfill their greedy desires.
Hidden down a dark alley,
the shrine of The [[Shadow]] represents the dark side of
Everbright. Here, necromancers and other evil wizards gather in secret to revere the power of magic perverted to evil ends, led by a [[cleric]]/[[necromancer|necromancy]] named
Thalanna. This secretive cult has no grand evil schemes for
world domination; they exist purely to worship their
patron deity and hide only to escape persecution.
The first line of defense for the exiles of [[Adar]], the Shroud is
an energy field generated by a set of massive crystals, one in
each of the eight monastery-fortresses hidden throughout
the mountains. As long as all eight [[shroud resonator]]s are active, the Shroud provides two effects—a [[dimensional lock]] that prevents all forms of extradimensional movement
into, within, or out of Adar, and a [[psionic|psionics]] effect that
hampers all [[scrying]] attempts within Adar. The lock does not
prevent summoning spells, nor does it hamper spells that
send creatures back to their home [[plane]]s.
The resonators require constant [[psionic|psionics]] power. Should
a crystal fail to receive any psionic power for 1 hour, it shuts down and the Shroud is weakened. The dimensional lock and non-detection effects become less reliable. If one shroud resonator is inactive, any effect the Shroud normally blocks
has a <<drp 20% "Shroud penetrated." "Effect blocked.">> chance of penetrating it instead. If two shroud resonators are inactive, the chance rises to <<drp 50% "Shroud penetrated." "Effect blocked.">>. When three or more resonators are inactive, the Shroud shuts down.
Each of the eight main monastery-fortresses in
[[Adar]] has a chamber in which a shroud resonator is set. All
monasteries have a rotating group of [[psion]]s that maintains and powers the resonator. Most resonators are placed in areas that are difficult to get to even if the surrounding citadel is breached. All shroud resonator chambers
are built for defense.
!! Shroud Bubbles
Small areas of Adar remain unprotected by the Shroud—a
fact Adar's defenders are aware of and the [[Inspired]] could
exploit. One who knows exactly where two of these bubbles
are can travel between them using [[teleport]] or similar effects.
Since travel within the Shroud is only possible between
bubbles; teleportation into [[Adar]] is still not possible. It is feasible, however, that some device could be fashioned to function as a beacon to allow travel into a
Shroud bubble from outside Adar. [[Adarans]] haven't created
such devices, and fortunately for them, if the area where a
bubble exists is not "very familiar" to someone using teleport,
the effect functions as if the user had a false destination.
The arrival point in such a case is never within Adar.
Each monastery-fortress has a lesser resonator, which allows its inhabitants to rehearse teleportation powers or spells that require extradimensional travel or elements, or to conduct emergency transport. Lesser resonators
are kept in special areas of a monastery, heavily guarded.
Such areas are too small for any group larger than a
couple dozen humans to crowd into.
A character powering a [[shroud resonator]] can sense
shroud bubbles within a mile of the device and shut them
down at will.
The Shroud reaches less than a mile beneath [[Adar]] at
sea level. Farther underground is one big Shroud bubble.
This weakness is hard to exploit, however. Dangerous
creatures dwell in the deeps of [[Khyber]], and the [[dromite]]s
that live below Adar are hostile to [[Riedrans]] and suspicious of strangers.
Other Shroud bubbles occur in [[manifest zone]]s,
especially those tied to [[Kythri]]. Such bubbles are wildly
unreliable in their location and length of existence.
Those who power [[shroud resonator]]s can do little about these
bubbles, since the bubbles often reopen immediately after
being closed. Natural Shroud bubbles could prove to be
a weak spot in [[Adar]]'s defenses if [[Riedra]]n forces were to
discover one they could use consistently. They'd still have
to devise a means of crossing the Shroud to the bubble,
however, and most wild bubbles are deep within Adar.
Eight shroud resonators power the [[Shroud]] that keeps [[Adar]]
safe from the eyes and attacks of the [[Inspired]] and the
[[Dreaming Dark]].
The shroud resonator in each Adar monastery is a massive violet and red crystal, roughly 6 feet tall. When supplied with [[psionic|psionics]] power, the crystal glows
brightly and vibrates with a deep oscillating hum. When
a resonator is within 1 minute of losing power, its light
begins flashing erratically.
''Leader:'' [[Whisper]]<br/>
''Notable Members:'' Rashade (Whisper's brother)<br/>
''Turf:'' the [[Stormreach steam tunnels]]; can strike anywhere in [[Stormreach]]<br/>
''Portfolio:'' Assassination, assault, extortion, hired muscle, murder<br/>
''Tactics:'' Intimidation, violence
Gliding through the streets in the dying red of twilight, draped in tattered funeral shrouds like [[wraith]]s, these [[elves|elf]] strike terror into the hearts of their prey. They are one of the oldest gangs in [[Stormreach]], having first appeared over fifty years ago. They have seemingly been destroyed a number of times during this period, only to rise again after a few years in the shadows. Like the [[Skullborn]] of [[Aerenal]], members of the gang engage in ritualistic self-mutilation, using toxic alchemical substances to necrotize flesh and peeling away strips of their face with scalpels. The efforts they
put into their appearance do not go unrewarded. Business owners and merchants are occasionally willing to stand up to other gangs who try to squeeze “protection”
money out of them, but few are willing to stare down
a rotting corpse, especially one accompanied by a true
[[zombie]] or [[specter]].
Although extortion is their most common activity,
the Shrouds also sell their services as hired muscle and
killers for hire, using their [[wraith]]s or [[specter]]s as incorporeal killers. Their leader, [[Whisper]], is a loyal ally of the [[Quickfoot Gang]] and refuses any contract that would put her at odds with the Quickfoot Gang’s leader. The Shrouds have
also been known to murder people for no apparent
reason; when the [[inquisitive]] Shurya [[Velderan]] was
asked to investigate one of these deaths, she concluded
that it was a ritual sacrifice—one piece in a grand ritual
that might take a century to complete.
The Shrouds are familiar with a series of [[tunnels|Stormreach steam tunnels]] beneath the city and can move about unseen. Whereas many gangs confine themselves to a single quarter, the Shrouds can appear anywhere. As a result, they
have come into conflict with the [[Bilge Rats]], the [[Titans]],
and even the [[Knights of Thrane]]. Their affinity for
[[undead]] would seem to make the Shrouds potential allies
for the [[Blood of Vol]], but the elves have shown little
interest in working with the largely human Seekers
of [[Grindstone]]. [[Wraith|wraith]]s kill mortally
wounded Shrouds to turn them into [[specter]]s; if
this fails, the gang’s leader raises the dead Shroud as
a [[zombie]].
The Shrouds are a relatively small gang, but it’s
possible that the visible Shrouds are merely the tip of
an iceberg. Most assume that the Shrouds are an offshoot of the [[Aereni]] [[Skullborn]], but a far darker prospect is that the Shrouds are the descendants of the original
[[elf]] slaves who remained loyal to the [[Cul'sir]] Empire—which would mean that a dark court of [[wraith]]s and [[ghost]]s has remained hidden in tunnels below the city
for thirty thousand years. [[Whisper]] and her allies, so
the theory goes, are among the few living, corporeal
elves of this line, and their sacrifices empower spells
cast in the depths. In this case, the horrible disfigurements of the Shrouds might not be caused primarily by necrotizing chemicals, but rather by generations of
inbreeding and exposure to [[Mabar]]an energy.
As the [[couatl]] battled the [[fiend]]s at the end of the [[Age of Demons]], they established outposts across the length of [[Eberron]]. The greatest of these was the fortress-citadel of [[Krezent]], located in the heart of what is now the [[Talenta Plains]]. The city extends down into the depths of [[Khyber]], and by the end of the war, terrible forces had been bound in its foundations. A handful of [[couatl]] remained to watch over the world, but they were too few to guard every seal, so they sought out helpers among the younger races. According to legends, a small group of loyal [[human]]s from [[Sarlona]] dedicated their lives to the service of the couatl. Over the course of thousands of years, this devotion changed them in body and soul. By the time the Empire of [[Dhakaan]] rose to power, the guardians of Krezent were no longer human. They had become shulassakar—the feathered servants.
!! Children of the Silver Flame
The people of [[Krezent]] are a wondrous sight: [[human]]s blended with [[couatl]], with serpentine features and feathers that glow with an inner light. The shulassakar are dedicated servants of the [[Silver Flame]] and will give their lives without a moment's thought to combat the forces of darkness.
Most people have never heard of the shulassakar. If these serpent guardians are so noble and wise, why do the [[halfling]]s fear them? Why do the tribes of the [[Talenta Plains]] avoid the ruins of Krezent and whisper tales of the serpentfolk on moonless nights?
The Silver Flame is a force for good, but its followers are often blinded by its light, and the shulassakar are no exception. They fight against darkness with ruthless efficiency and will make any sacrifice necessary for the greater good, including the lives of innocents. No one can jeopardize the seals of Krezent. The shulassakar seek to repel outsiders peacefully before they venture too deeply into the ruins but those who persist are dealt with swiftly and harshly.
The feathered servants do not believe that any other creature can truly touch the light of the couatl. The Church of the [[Silver Flame]], the [[Keeper of the Flame]]—these are inherently flawed. While they may mean well, they are tampering with forces they do not understand. A shulassakar is more inclined to work with a follower of the Flame than with any other creature but she will still treat the character as an underling or a child. As far as she is concerned, the physical form of the shulassakar is proof of spiritual superiority.
The shulassakar consider their serpentine characteristics to be a blessing and a sign of their bond with the [[couatl]]. They believe that a shulassakar goes through cycles of reincarnation and that the three different forms of shulassakar represent this spiritual growth.
!! Fighting the Darkness
The shulassakar devote their energy to guarding Krezent and other [[couatl]] ruins scattered across [[Eberron]]. They are aware of the rising darkness—the [[Lords of Dust]] that have escaped from their bonds, the [[Cults of the Dragon Below]], the lurking threat of the [[Dreaming Dark]]. The shulassakar face these forces directly when possible. A handful of shulassakar bloodsworn have hidden themselves among humanity, watching for signs of the rising darkness. A shulassakar always prefers to solve a problem on its own or to call in a more powerful servant to handle the problem. At the same time, the shulassakar recognize that victory is more important than pride.
When dealing with the shulassakar, bear in mind that they are highly intelligent and devoted to the cause of good, but also proud, arrogant, and ruthless. They will give up their own lives for the flame and have no compunctions about sacrificing the lives of humans or other lesser creatures. Shulassakar seek to maintain an aura of serenity at all times; the only emotion they reveal is cold, focused fury against the forces of darkness.
A shulassakar may approach adventurers openly, especially if one or more members of the party follow the [[Silver Flame]]. Because shulassakar have little respect for the young races, however, it is more likely that one will attempt to manipulate or trick a party into serving its purposes, believing that humans cannot be trusted to do the right thing simply because it is right.
If a character earns the respect of the shulassakar, they can be valuable allies. Aside from the vast knowledge they possess, they have access to treasures from the [[Age of Demons]] and the wisdom of the [[couatl]]. It is possible that a shulassakar mystic could teach new spells to a [[cleric]] or [[paladin]] of the Silver Flame, showing ways to channel the flame that humanity has never discovered. The shulassakar also have a close bond with the remaining couatl, and may be able to channel one of these [[celestial]]s.
!! The Shulassakar and the Yuan-Ti
Physically, the shulassakar are similar to the [[yuan-ti]]. There is one major difference between the two races: where the shulassakar have serpentine characteristics, their scales are hidden beneath brilliantly colored feathers. The mightiest of the shulassakar, transcendents, also possess powerful wings. Bloodsworn shulassakar do not have feathers but often possess colorful markings on their skin. These are easily mistaken for tattoos but they are magical in nature and can shift color and shape in response to the mood of the bearer. The extent of these markings varies from one creature to another, and generally they will not prevent the creature from disguising itself as human.
Despite their physical similarities, shulassakar and [[yuan-ti]] cultures have little in common. The shulassakar claim that the ancestors of the yuan-ti were chosen of the couatl who broke their vows to the flame and who have since slipped into decadence. As a result, the shulassakar despise the yuan-ti. If the yuan-ti shared these legends, they abandoned them long ago, and they have no interest in the shulassakar.
For comparison:
* ''Bloodsworn'' shulassakar are similar in power to [[yuan-ti pureblood]]s.
* ''Flametouched'' shulassakar are similar in power to [[yuan-ti malison]]s.
* ''Transcendent'' shulassakar are similar in power to [[yuan-ti abomination]]s.
Shurya Velderan is the best of the [[dragonmarked|Mark of Finding]] [[inquisitive]]s of the [[Stormreach]] [[Tharashk enclave|House Tharashk Refinery]], and her prices reflect her skill; at a base rate of 10c plus 5c per hour, only viceroys of the [[dragonmarked house]]s, [[Storm Lords]], or others among the wealthiest of [[Stormreach]] can typically afford her services.
Siberyan theory is the dominant [[arcane tradition|arcane theory]] of the [[Five Nations]]. It asserts that [[arcane magic]] taps energies that flow from the Ring of [[Siberys]]. This power—sometimes called the "blood of Siberys"—is the same fundamental force the [[Progenitor Dragons]] used to shape reality; arcane magic essentially reshapes reality to produce the desired result. Certainly, the blood of Siberys can be used to create a [[fireball]]; once upon a time, that same power was used to create //the sun//.
Siberyan magic is in some ways the most scientific approach to magic, and can in a sense be seen as analogous to programming; the wizard is rewriting the code that defines reality. Its invocations are words of power that activate specific energies—fire, vast, distance—while its gestures shape and focus those energies. But ultimately, the forces flow through the spellcaster and it is a mental exertion—both intense calculations and an exertion of will—that generates the change. A [[wizard]] can look at a spellbook and understand the theory behind a higher level [[spell]]. They can gather the right materials, make the appropriate gestures, say the right words. But if they don’t have enough experience and talent, or if they are mentally or physically exhausted, they can’t perform the mental work required to produce the result.
Siberyan theory is the most widespread form of magic, used across the [[Five Nations]] and in [[Aerenal]]. However, it’s a broad field of magic and there are different techniques within it. The [[wizard]]s of [[Aerenal]] and those of [[Arcanix]] both use verbal components that invoke the same, fundamental words of power. However, the [[Aereni]] techniques are highly formalized and precise—it’s a highly effective technique, but it takes decades to master. Since most [[human]]s don’t have decades, Arcanix helps students develop idiosyncratic techniques—to figure out what resonates with them. This works, but the Aereni find it disturbingly sloppy and haphazard.
!! The Source of Arcane Magic
The commonly accepted theory is that arcane energy—”the blood of [[Siberys]]”—was part of the [[Progenitors|Progenitor Dragons]]. According to the primal myths, the Ring of Siberys //is// Siberys; this energy is simply the residual primordial power of a cosmic entity. This is supported by the fact that Siberys [[dragonshard]]s are highly effective at focusing arcane energies. Many [[magical implement]]s use Siberys shards in some way. However, there is an academic faction that asserts that there is no reason to believe that the Progenitors were cosmic [[dragon]]s or even [[immortal]]. These sages believe that the Ring of Siberys might have predated the Progenitors, and that they could have been a trio of mortal [[wizard]]s of exceptional skill—wizards who used the same basic principles a modern wizard uses to create a [[fireball]] to shape a sun. Those who follow this path generally assert that the [[Sovereigns|Sovereign Host]] were either remarkable mortals or that they were simply [[immortal]] entities—like the [[celestial]]s and [[fiend]]s—created by the mortal Progenitors as part of their vast work. These scholars believe that this shows the limitless potential of [[arcane magic]]—that wizards who unlock its greatest secrets could create new worlds or even shape planes of existence.
Siberyan verbal components are grounded in the Draconic language, though there is more to a verbal component than simply speaking in Draconic; ultimately it is about the invocation of //words of power// that aren’t used in everyday speech. A wizard doesn’t have to //understand// Draconic to perform magic, but it helps provided deeper insight into the workings of a particular [[spell]].
According to the myth of the [[Progenitor Dragons]], after the Progenitors created much of the universe, the deceitful [[Khyber]] tore her brother [[Siberys]] apart. The scales of Siberys were scattered across the void, becoming the stars in the sky.
Today, one only needs to look up to see the ring of golden crystal shards orbiting the planet of [[Eberron]]. This ''Ring of Siberys'' is said to be what remains of the Progenitor's body, but myth aside, the Ring of Siberys is the source of Siberys [[dragonshard]]s which fall to Eberron. [[Diviners|divination]] (such as members of the [[Gatekeeper|Gatekeepers]] [[druid]]ic tradition) also look to the movements of the Ring of Siberys to read omens of the future.
The Sibling Kings lead the nation of [[Aerenal]] from [[Shae Cairdal]], guiding the daily affairs of the nation. They are seen as the living embodiment of Aerenal and the conduit for the power of the [[Undying Court]].
By ancient tradition, the nation must be ruled by a bonded brother and sister. But the Sibling Kings are typically part of the same [[noble line|Aereni noble line]], but only symbolically blood siblings.
For most of the history of [[Aerenal]], the [[Mendyrian]] noble line has been the source and seat of the Sibling Kings.
Dim, greenish light spreads within a 30-foot-radius sphere centered on a point you choose within 120 feet. The light spreads around corners, and it lasts until the spell ends.
When a creature moves into the spell's area, it must resist the magic of the enervating light or suffer exhaustion and radiant damage. The creature also begins to glow with a dim, greenish light that prevents them from benefiting from invisibility.
Siege staffs, the primary form of [[arcane artillery]], are made of
wood—typically around fifteen feet long—engraved with mystic
sigils and inlaid with [[dragonshard]]s.
Activating a siege staff takes three actions: one to prime the
staff; one action to aim it; and one action to release the spell.
There are several basic models, each of which serves a
different purpose. When activated, it produces one of the
following effects, determined by its model:
//''Blast Staff.''// This model was typically used to bombard
massed troops or villages, unleashing a wide burst of energy. It
has a range of 300/1200 feet and targets all creatures within a
60-foot-radius sphere.
//''Force Staff.''// This model releases focused blasts of pure
energy. Developed late in the war, these were primarily used
to target fortifications, [[warforged titan]]s, and [[airship]]s. It has a
range of 600/2400 feet.
//''Focus Staff.''// This model acts as a [[magical implement]], amplifying the spells cast by an attuned spellcaster. Any offensive spell can be cast through this model of siege staff. The range is magnified by a factor of 5, with a long range of up to
10 times the spell's standard range—so a [[fire bolt]] cast through
a siege staff has a range of 600 feet and a long range of 1,200
feet. The spell's area of effect is doubled. If the spell normally
affects a single target, it instead affects a 20-foot-radius sphere.
Positioned along the [[Thrane River]] near its source,
Sigilstar marks the convergence of three caravan
routes and a [[lightning rail]] line. With all these trade
arteries, Sigilstar has emerged as a serious competitor to the commercial centers of [[Aruldusk]] and [[Flamekeep]].
Part of Sigilstar’s appeal stems from its cosmopolitan atmosphere. It is home to the largest population of [[wizard]]s in the entire nation, and its people hold
a broader view of religion’s place in society. Sigilstar takes its name from a fixed star in the heavens around which all other stars seem to wheel—much
the same way the residents of the city see themselves.
While commanding a brigade
of House [[Deneith]] [[blademarks|Blademarks Guild]] on a [[Cyran|Cyre]] contract
in 994 YK, Sigor led a small reconnaissance team
across the [[Cyre River]] into [[Karrnath]] shortly before
dawn on the Day of [[Mourning]]—and thus was spared
the fate of the rest of the brigade, which was instantly
obliterated.
Sigor has become obsessed with finding out what
caused the Day of Mourning. An influential heir to
House [[Deneith]], Sigor has the resources to indulge
this obsession, and he frequently leads forays into
the [[Mournland]] to search for clues. He is increasingly involved with House [[Thuranni]], hoping that the shadowmarked house might know something about
the Day of Mourning that it hasn’t revealed.
Commander Silaena Cazal runs
the [[Warden Towers]] garrison in [[Middle Menthis]]. Over
a century of service, she has woven a net of graft and extortion across [[Menthis Plateau]]; she looks after
those who pay their dues. Her mother was driven
from House [[Phiarlan]] when she developed an [[aberrant dragonmark]]. Because of that treatment, Silaena harbors deep resentment for the [[dragonmarked house]]s
and will occasionally take actions to inconvenience
them. [[Thora Tavin]] of House [[Tarkanan]] is working to
strengthen her relationship with Commander Cazal.
The Silaes Tairn are a sect of the [[Tairnadal]] elves who dwell in [[North Aerenal]] and are determined to mobilize and return to [[Xen'drik]] to reclaim the true ancestral home of the [[elves|elf]]. They are seen by the [[Valaes Tairn]] and the [[Aereni]] as extremists, since Xen'drik is now a cursed ruin, and the modern-day [[giant]]s and [[drow]] are a far cry from the ancient foes of the [[Age of Giants]].
Unmarked on any official map, Silent Keep is a name
whispered only by the most knowledgeable of [[Breland]]’s
nobles. Tucked back in the [[Howling Peaks]], hidden from
view until one is virtually at the gates, this small fortress
is one of the [[King's Citadel]]'s best-kept secrets. Silent
Keep is the main training ground for the [[Dark Lanterns|King's Dark Lanterns]],
the Citadel’s division of scouts and spies. It is standard practice to dump these capable spies into the adjacent portion of the [[King's Forest]] and see if they can find their
way back unaided. The fort also houses a private archive
for the [[King's Wands]], and a repository for cursed and
dangerous items the Wands have collected in the course
of their duties. Most important, the fort conceals the
entrance to a small but very rich gold mine, which has
provided the Citadel with a steady supply of funds.
[[Aerenal]] is known for its
exotic woods, including [[bronzewood]], [[darkwood]],
and [[livewood]]. The [[elves|elf]] who can turn leaf and tree
into arms and armor are known as woodshapers, and
Tanar Mendyrian is one of the finest in [[Khorvaire]]. While he is
best known for his darkwood bows, Tanar also produces leafweave, darkleaf, and bronzewood armor,
and he takes commissions to shape melee weapons
from the exotic woods. While most of his goods
are of masterwork quality, Tanar can also magically enhance his weapons and armor. However, he takes great pride in these
treasures and is careful about his clientele; anyone
that wants an enchanted item must win Tanar's
respect (elves have an advantage on the attempt) before the woodshaper accepts
the commission.
Before the ninth century, [[lycanthropy|lycanthrope]] was largely just a fearsome
legend. Lycanthropes were known in the wilds of [[Khorvaire]],
but few people had ever seen one; most commoners thought
lycanthropes and [[shifter]]s were the same thing. Early in the
ninth century, something changed—the curse of lycanthropy
became more virulent, and its victims were driven to ever more
extreme behavior. Werewolf attacks and wererat infestations
became an increasing problem in western [[Aundair]], and by
830 YK, some feared that an apocalyptic threat was brewing in
the [[Towering Wood]]—that any day a horde of lycanthropes could
sweep across the land and destroy all civilization.
In 832 YK, [[Keeper of the Flame]] Jolan Sol declared that
lycanthropy corrupted the soul itself and must be completely
eliminated. An army of templars was dispatched to Aundair,
and servants of the [[Flame|Silver Flame]] across Khorvaire were ordered to be
vigilant and root out lycanthropes in hiding. And so they did.
The Silver Crusade (also known as the "Lycanthropic Purge") lasted for nearly fifty years. The first two
decades were a brutal, bloody campaign. The lycanthropes
were massing in great numbers on the edge of the Towering
Wood (now part of the [[Eldeen Reaches]]), driven by some
unknown evil; most sages believe it was an [[overlord]] on the
verge of breaking its bonds. The templars were outmatched.
The lycanthropes were cunning and could quickly replenish
their numbers, and they intentionally stirred up conflict between
templars and [[shifter]]s. But after decades of bitter conflict, the
tide slowly turned in favor of the templars. And somehow, the
power of the curse was broken. Lycanthropy continued, but its
effects weren't as strong, its victims not so driven to darkness.
While the true threat was dealt with, the peasants of Aundair
had suffered through decades of terror and sought a greater
revenge. The next thirty years saw an ongoing inquisition as
zealous converts to the faith—later classified as an extremist
sect, the [[Pure Flame]]—sought to hunt down every remaining
lycanthrope. In the process, many innocents—including a great
many shifters—were tortured and slain. So the Silver Crusade
began as a selfless act that may well have saved [[Galifar]], but
ended up as an outlet for paranoia and hatred.
Silver dragons are reputed to be friendliest and most social of the [[dragon]]s.
A silver dragon shimmers as if sculpted from pure metal, its face given a noble cast by its high eyes and sweeping beard-like chin spikes. A spiny frill rises high over its head, tracing down its neck to the tip of its tail.
A silver wyrmling's scales are blue-gray with silver highlights. As the dragon approaches adulthood, its color gradually brightens until its individual scales are barely visible. As a silver dragon grows older, its pupils fade until its eyes resemble orbs of mercury.
!! Magic and Breath Weapon
The silver dragon can exhale an icy blast, or a cloud of paralyzing gas. As innate spellcasters, adult silver dragons can cast spells such as [[creation]], [[fog cloud]], [[ice storm]], [[empowerment]], and [[private sanctum]].
{{DragonAgeCategories}}
* The Silver Flame is force of light that holds [[fiend]]s at bay. Those who seek to defend the innocent from evil can draw on the power of the Flame.
* Every mortal soul can find the light. Inspire and guide others to virtuous behavior; force is a last resort.
* Listen to the Voice of the Flame; beware the deceiving whispers of the [[Shadow in the Flame|Bel Shalor]].
Every [[Thrane]] child knows the story of [[Tira Miron]].
Centuries ago, one of the ancient and powerful [[demon]]s
chained within the world broke free from its bonds, unleashing terrible suffering on the people of Thrane. The nation would have been destroyed if not for Tira Miron. This [[paladin]] was called by the Silver Flame and battled the mighty [[fiend]]. When it became clear that the [[overlord]] couldn't be destroyed, Tira gave her life, combining
her spirit with the light of the Silver Flame to bind the
demon once more. Now Tira serves as the Voice of the
Flame, helping others find the light. Anyone who seeks
to protect the innocent and battle evil can draw on the
power of the Silver Flame to aid them, but they must
beware of the [[Shadow in the Flame|Bel Shalor]], the demon that still
lingers and yearns to trick good people into evil.
A pillar of argent fire marks the point of Tira's sacrifice, the center of the modern church. This pillar, located in [[Flamekeep]], is a manifestation of the Silver Flame,
not the source of its power.
The church's templars stand ready to protect the innocent from supernatural threats, battling [[undead]], [[fiend]]s, and [[aberration]]s. Friars and ministers fight evil by doing good, performing acts of compassion and charity
across [[Khorvaire]]. In contrast to the [[Sovereign Host]], the
church maintains a defined structure and creed. Archbishops monitor regions; cardinals lead the church; and
the ultimate authority is the [[Keeper of the Flame]], who
maintains the font in Flamekeep and communes with
Tira Miron.
The [[Last War]] had a serious impact on the church.
Leaders still respected the Keeper's authority over spiritual matters, but the war wasn't about good or evil. Templars of all nations still joined together to fight demons,
but if no supernatural threat was present, they fought
for their own nations. This division allowed cracks to
form in the foundation. In [[Breland]], some priests fell
prey to greed or forged ties to criminal organizations.
In [[Aundair]], a zealous faction known as the [[Pure Flame]]
advocates using violence rather than compassion as
the primary tool for rooting out evil. And in [[Thrane]], the
church has become the ruling body. While still driven
by Tira's principles of redemption and sacrifice, the
intrusion of politics means that some come to the faith
seeking power rather than purely to do good.
In creating a follower of the Silver Flame, decide
whether you are bound to the church or simply inspired
by its principles. As a [[paladin]], are you part of the templar order, or were you a farmer called to action by the
Voice of the Silver Flame?
The Silver Flame is centered in [[Thrane]], but it has a
strong presence in [[Breland]] and [[Aundair]], and followers
across [[Khorvaire]]. Members of the [[Pure Flame]] sect treat
some species—notably [[shifter]]s and [[changeling]]s—with
suspicion, but the faith holds that people of all races
should stand together.
!! Symbol
The faith's symbol is a stylized flame inlaid with silver.
A silver arrowhead etched with the symbol serves as a
common token, worn as a necklace.
!! Rites
The Silver Flame has no need of prayers or offerings;
instead, services focus on the parishioners, encouraging
virtuous behavior. Church hierarchy is strictly observed,
and only ordained priests can perform services.
Archery is a devotional practice of the Silver Flame,
used both as a means of meditation and a martial art.
Communities devoted to the Flame engage in archery
training, and villages have militias of peasant archers.
!! Temples
Fortresses of the Silver Flame are designed to serve as
templar garrisons and to provide sanctuary against supernatural threats. Churches feature enormous arches and open spaces. The sanctuary of a Flamic church has
a mosaic floor with a flame burning at its center.
The seat of the religion is the [[Grand Cathedral|Cathedral of the Silver Flame]] in [[Flamekeep]]. Built around the site of Tira's sacrifice, this fortified temple is the size of a small city.
!! Foundations of the Faith
The Silver Flame is a force created during the [[Age of Demons]]
to bind the [[overlord]]s. It has a concrete purpose: it is the cage
that keeps apocalyptic evil at bay. The [[Sovereigns|Sovereign Host]] and [[Six|Dark Six]] are deities, believed to influence every facet of daily life. The Silver
Flame is different. It's not seen as an anthropomorphic entity;
rather, followers recognize it as a pure force of celestial energy.
It doesn't influence the world on its own, and can only empower
champions who will use that gift to protect the innocent. The
Flame itself doesn't speak to people; instead, it is the [[Voice of the Flame|Tira Miron]] that guides the faithful. Ultimately, the Silver Flame is a resource; if you seek to protect the innocent from supernatural evil, you may be able to draw on the power of the Flame to aid you in your fight.
The Church of the Silver Flame is a practical, pragmatic faith founded on active public service. It takes the approach that the world will manage itself—that there will be a harvest or a storm whether or not you acknowledge [[Arawai]] or the [[Devourer]]—and that the most important thing is to protect people from the darkness that could destroy
them. The church doesn't inherently challenge the worship of
the Sovereigns, and the two faiths have coexisted peacefully
throughout history. [[Paladin|paladin]]s of [[Dol Arrah]] often coordinate
with templars of the Silver Flame to deal with threats, and
Vassals of the [[Sovereign Host]] are usually happy to accept
the assistance of templars when danger strikes.
The basic doctrine of the Silver Flame doesn't promise
punishment or paradise after death. But its faithful commonly
believe that the souls of those who live virtuous lives pass
through [[Dolurrh]] unharmed, merging with the Silver Flame
itself. By strengthening the Flame, these souls continue to
protect the innocent of generations to come. Merging with the
Flame is generally depicted as a transcendent union with those
who have gone before, a state beyond mortal understanding—seen both as a reward and a duty.
See also [[Silver Flame Heresy and Corruption]].
!! The Hierarchy of Evil
The Silver Flame empowers mortals to fight against evil. But
not all evils are equal, and different threats call for different
approaches. The Church of the Silver Flame defines the
hierarchy of evil as follows:
* ''Entities of alien evil.'' These are the children of [[Khyber]], encompassing all manner of [[fiend]]s and [[aberration]]s. These beings are fundamentally unnatural and innately malevolent; even their presence is seen as harmful to the world.
* ''Entities of unnatural evil.'' These are beings once native to [[Eberron]] that have been corrupted by alien forces. [[Undead|undead]] and [[lycanthrope]]s are the most obvious examples of this category—innocent people transformed into monsters. Like the followers of the [[Undying Court]], the Church of the Silver Flame maintains that undead are inherently unnatural and harm the living simply through their existence.
* ''Entities of innate evil.'' This is the most contentious category on the list, and it is the idea of monsters—that there are creatures native to Eberron who are evil by nature. In the past, the church has placed [[medusa]]s, [[harpies|harpy]], [[troll]]s, and similar creatures into this category, asserting that through no fault of their own, these creatures are vessels for supernatural evil and pose a threat to the innocent.
* ''Those who choose evil.'' This encompasses all [[humanoid]]s who are born innocent but choose to follow an evil path. Because such beings aren't evil by nature, the goal of the faithful should always be to lead them back to the light.
* ''The evil within.'' Every follower of the Flame must recognize their own capacity for evil action; only through awareness can they guard against it. The [[Shadow in the Flame|Bel Shalor]] is always whispering, and it is arrogant and foolish to ignore that threat.
Entities of alien and unnatural evil must be fought with steel
and spell. This is the purpose of the Silver Flame: to protect
the innocent against these threats. When such forces arise,
followers of the Silver Flame are expected to set aside any
differences until the evil is defeated; this was seen in the
[[Last War]], where templars might serve different nations but
would unite to deal with a supernatural threat. If it's possible
to eradicate a threat without violence—such as curing a [[lycanthrope]] rather than killing it—that's acceptable, even laudable. But protection of the innocent should always be the
primary concern, which is why the [[Silver Crusade]] focused on eradication; the templars rarely had the resources to capture and cure lycanthropes.
With those who choose evil and those who fall prey to the evil
within, the Church of the Silver Flame urges compassion over
brutality. Templars take arms against unnatural evil, but it is
the purpose of friars and ministers to guide mortals to the light.
Innocents must always be protected from those who would
harm them, but anyone who chooses evil could be convinced to
choose good, and true followers of the Flame are encouraged to
act with empathy and compassion for all natural creatures.
In the past, the church assumed that [[troll]]s, [[harpies|harpy]], [[worg]]s,
and similar creatures were innately evil, so templars eliminated
these threats wherever they were encountered. With the rise
of [[Droaam]] and House [[Tharashk]]'s introduction of monstrous
mercenaries, [[Khorvaire]] is learning that these creatures aren't
any more inherently evil than [[human]]s or [[dwarves|dwarf]]. Ultimately,
it is up to the [[Keeper of the Flame]] to make rulings on these
matters—much like a past Keeper's ruling that the [[deathless]] of
[[Aerenal]] are not creatures of unnatural evil. In 992 YK, Keeper
Lavira Tagor ruled that the church needed to reevaluate the
classification of innate evil, and that templars should judge the
actions of creatures in question and seek guidance from the
[[Voice of the Flame|Tira Miron]]. Since then, the [[Council of Cardinals]] has
been debating the status of [[Droaam]], but Keeper Daran has
yet to make a final ruling on the matter.
The [[Ghaash'kala]], [[Serpent Cults]], and other paths have their
own traditions, each with the same core principle—the Silver Flame is a tool that allows the virtuous to fight [[fiend]]s and unnatural horrors. Though those paths may share similar beliefs, this particular hierarchy of evil is specifically defined
by the Keeper and the doctrine of the Church of [[Thrane]].
!! Paths of the Faith
The Silver Flame is older than humanity itself. The Church
of the Silver Flame is the dominant manifestation of this faith
on [[Khorvaire]], but you can be a follower of the Silver Flame
without having ties to the church.
* the [[Ghaash'kala]]
* the [[Pure Flame]]
* [[Serpent Cults]]
!! Heresy
The Church of the [[Silver Flame]] represents just one path of the
faith. It was built on the teachings of [[Tira Miron]], but less than
a year elapsed between her vision—leading her to embrace the
Flame and rally an army—and her final sacrifice to defeat [[Bel Shalor]]. Thus, it was't her own words that established most of the
church's traditions and doctrines, but the words of those who
fought alongside her during that year. These were refined over
time by priests who'd never met her—despite the passage of time,
it's believed these priests were guided by the Voice in the Flame.
The [[Keeper of the Flame]] is tied specifically to the official
Church of the Silver Flame. The Keeper's power is based in
[[Flamekeep]], and the fountain of fire they keep marks the spot
where [[Tira Miron]] gave her life to restore the bonds of the
[[overlord]] [[Bel Shalor]]. Some people mistakenly assume that this
fountain of fire //is// the Silver Flame. While it's a focal point where
the Silver Flame's power bleeds into the world and a conduit
for those who seek the guidance of the Voice of the Flame, the
Silver Flame itself is far more than a spark in one cathedral—its power stretches across [[Eberron]], binding [[overlord]]s on every
continent. The Church of the Silver Flame celebrates the
[[Keeper of the Flame]] as being both the vessel of the Voice and
the channel for the power of the Flame. However, the faithful of
other cultures—such as the [[Ghaash'kala]] of the [[Demon Wastes]]—see the Keeper as a powerful priest and nothing more.
The Church of the Silver Flame is largely willing to overlook
the divergent beliefs of groups like the Ghaash'kala. In the
church's eyes, these northern [[orc]]s are a curiosity and their
unusual beliefs don't threaten the faithful of the [[Five Nations]].
Likewise, the [[Council of Cardinals]] has taken no action to suppress the extreme beliefs of the [[Pure Flame]], even going so far as appointing the puritan Archbishop [[Solgar Dariznu]] as governor of [[Thaliost]]. In part, this is because the Pure Flame came into
its own over the course of the [[Last War]], and the cardinals of
[[Thrane]] had little ability to enforce their will over the faithful
of [[Aundair]]. Dariznu's appointment was an effort to ensure that
the followers of the Pure Flame would accept the authority of
[[Flamekeep]]. Despite the church thus far taking no action against
the Pure Flame, [[Keeper Daran|Keeper of the Flame]] is deeply troubled by this sect
and is considering the best way to address the problem.
There have been times when heretical beliefs divided the
church, the most infamous known as the Time of Two Keepers.
In 497 YK, a peasant woman calling herself [[Melysse Miron]]
challenged Keeper Kyra Danth for control of [[Flamekeep]] and the
Church of the [[Silver Flame]]. Melysse claimed that [[Tira Miron]]
had revealed she was Tira's direct descendant and the rightful
Keeper. She challenged many church doctrines and claimed
it had strayed from its path. And like Keeper Danth, Melysse
was shockingly able to wield the power of the fountain of fire in
Flamekeep, performing miracles no lesser priest could match.
This triggered a deep schism that lasted for years, until Melysse
was finally revealed by a [[secret organization|Miron's Tears]] to be the chosen hand of the Shadow in the Flame—it was not the Silver Flame, but rather the [[overlord]] [[Bel Shalor]], that strengthened her in Flamekeep. Because of the fear that her death would allow Bel Shalor to choose a new Anti-Keeper, Melysse wasn't killed; instead, she was petrified and placed in [[Dreadhold]], where she remains to this day.
More recently, the church was divided in 914 YK when Keeper
Serrain was invested with temporal authority over the nation of
[[Thrane]]. While many celebrated the idea of a kingdom founded
on the noble principles of the church, there are many—even
some in Thrane itself—who believe that investing cardinals and
Keeper with political power distracts the church from its proper
mission and serves as an invitation to corruption. This served as
justification for the foreign templars who fought against Thrane
in the [[Last War]]; they argued that they continued to respect the
spiritual authority of the Keeper, but that the church shouldn't
rule a reunited [[Galifar]]. The priests of [[Stormreach]] went so far as
to condemn the theocracy and Keeper Serrain. In the wake of
this division, Stormreach was formally severed from Flamekeep;
it receives no support and Flamekeep doesn't acknowledge its priests within the church hierarchy. As such, Stormreach has become a haven for those who believe in the principles of the Flame but question its doctrine. See [[Keep of the Silver Flame]] for more.
It's up to the DM to decide if the rifts over the theocracy and
the [[Pure Flame]] could widen or whether the faithful will remain
united. There is always room for new revelations or beliefs to
create a new path for the faithful to follow.
!! Corruption
The Church of the [[Silver Flame]] has lofty aspirations, and
it's easy to find fault when it fails to live up to them. While
there's always potential for corruption in the church, it's often
exaggerated. Stories about corrupt priests can be more dramatic
than virtuous ministers who are only there to help, but the
majority of priests do strive to live its principles—resisting the
evil within, treating others with compassion and empathy, and
working together for the common good. The point isn't that the
church is a fundamentally corrupt institution, but rather that no
one is perfect—in their imperfections, people can be led astray by
the [[Shadow in the Flame|Bel Shalor]] or simply succumb to pride or greed.
In dealing with corrupt followers of the faith, consider what
kind of “corruption” it is and where it comes from. There's
a considerable difference between the [[Brelish|Breland]] priest who
demands gold for a blessing and the [[Thrane]] inquisitor who
lets their zeal for fighting evil drive them to cruelty.
''Zealots'' represent the most common form of corruption,
especially among [[paladin]]s or [[cleric]]s. A zealot is devoted to
the principles of the faith, but loses sight of the importance of
compassion—giving in to the evil within in their quest to fight evil
in the world. This includes those who engage in unnecessary
cruelty, especially when dealing with those who choose evil.
Zealots have no interest in gold or power, and risk their lives to
defend others; they are simply able to justify ruthless and evil
actions in the name of the greater good. This is the primary sin
of the [[Pure Flame]], but zealots can be found anywhere.
''Opportunists'' seek to use their religious authority for
personal gain. This typically involves charging people for
services that should be granted freely, or gaining gold or
influence by using church resources for unrelated purposes. In
[[Sharn]], Archierophant [[Ythana Morr]] is often accused of using
templars as mercenaries and serving as a strongarm for local
merchants. Usually this reflects a fundamental lack of faith,
and as a result, opportunists rarely wield [[divine magic]]. If an
opportunist can channel the power of the Flame, it suggests that
somehow, they are able to justify these conflicting concepts—that they truly believe their actions are righteous and serve the greater good, even if those actions incidentally line the pockets of the priest. Such a character might believe that they
need greater wealth or influence to help others, or that they are
fighting fire with fire—teaching the wicked the error of their
ways through political or economic means. Before the [[Last War]],
opportunists were usually found in [[Breland]], but the rise of the
theocracy has yielded more opportunists in [[Thrane]] as well.
''The Tarnished'' are the worst form of corruption: priests
or templars who knowingly serve the [[Lords of Dust]] or the
[[Shadow in the Flame|Bel Shalor]] while posing as servants of the light. The
Tarnished may mimic a devout priest—as Melysse Miron did
in the Time of Two Keepers—but they are drawing this power
from the Shadow in the Flame. This still requires deep faith,
but the Tarnished are devoted to quite different principles.
The most widespread form of this corruption is the cult of the
[[Whispering Flame]]. But the Tarnished can also be loners who
embrace the evil within alone. In dealing with a Tarnished
villain, consider what has caused them to embrace darkness
over light. Have the [[Lords of Dust]] promised them something priceless? Do they believe mortals are fundamentally flawed or that the cruelty of [[Bel Shalor]] is the rightful state of humanity? Do they somehow see themselves as the heroes of the story?
The [[Silver Flame]] empowers all those who would fight to protect the innocent from supernatural evil. The Silver Forge [[monastic tradition|monk]] draws on the flame to transform the devotee into a weapon, striking with both fists and bolts of radiant flame. This unarmed fighting style was developed by the [[shulassakar]], and is largely unknown outside of their secluded enclaves.
Silver Lake is a freshwater lake that borders the [[Eldeen Reaches]] to the northwest and [[Breland]] to the south and east, as well as [[Droaam]] in the west. Silver Lake and [[Lake Galifar]] are connected by way of a [[river|Silver River]] that runs near the towns of [[Erlaskar]] and [[Xandrar]].
The Silver River connects [[Lake Galifar]] and [[Silver Lake]]. It forms part of the border between the [[Eldeen Reaches]] and [[Breland]].
The Silver Wood is a small forest in the foothills of the [[Starpeaks]], spanning across the border of [[Aundair]] and [[Thrane]] near [[Thaliost]].
Silverclaw Peak is a mountain located in the [[Thousand]] Flights of [[Argonnessen]]. The ice sheet around the base of the peak
is bordered by [[steaming jungle|Acid Green]].
This is a 6-foot-long birch wood oar with leaves and branches carved into its length. The grooves of the carvings are filled with silver, which glows softly (20-foot dim light) when it is outdoors at night. You may activate the oar to have it row a boat unassisted, obeying your mental commands. You may instruct it to row to a destination familiar to you, allowing you to rest while it performs its task. While rowing, it will avoid contact with objects on the boat, but can be grabbed and stopped by anyone at any time. The oar can move a total weight of 2,000 pounds at a speed of 3 miles per hour. It floats back to your hand if the weight of the craft, crew, and carried goods exceeds that weight.
''District Type:'' Fine shops<br/>
''Buildings:'' Upscale lodging (15), upscale food (25),
exotic trades (40), upscale trades (120), upscale
residences (80)<br/>
''First Impression: ''The streets of the district are
paved with silver stone, and gleam in the light of
the [[everbright lantern]]s. Beautiful music wafts out of an
expensive restaurant, and a young aristocrat examines a [[glamerweave]] cloak with a critical eye.<br/>
''Social Class: ''Upper class<br/>
''Neighbors:'' [[Pinnacle]] (east); [[Twelve Pillars]] (south); [[Crystal Bridge]] (bridge, north); [[Tavick's Market]] (below)
Silvergate provides an enormous range of goods
aimed at the wealthiest citizens of [[Sharn]]. Expensive
clothing, fine jewelry, exotic artwork, overpriced
food, and pretentious wines are all part of the
Silvergate experience. However, the district does
contain a few truly luxurious inns, and a magic
emporium—[[Crystals of Denion]]—that buys and sells
magic items of considerable value. Items purchased in Silvergate are always of exceptional quality, but generally have a 5% markup on price.
There are four different dining clubs in Silvergate, but they only accept members from wealthy families or [[dragonmarked house]]s.
In the first days of the City, the Silvermist Theatre was the finest theatre in Sharn. But as the towers rose, the Silvermist was forgotten. The curtains are faded and moth-eaten, and the silver gilt is peeling from its walls. Still, a handful of entertainers have managed to keep the old theater afloat, staging daring performances you won't see anywhere else in Sharn.
Officially, the Silvermist is a dream
parlor secretly owned by the [[Boromar Clan]]—a place
where [[illusion]]s and glamers are used for the entertainment of guests. The regular entertainers include
Jix, a [[changeling]]
who uses her natural powers to perform unusual
one-woman ballets and operas, and Salleon, a [[gnome]] illusionist who fascinates audiences with bizarre and compelling hypnotic patterns. In addition, the Silvermist is a [[dreamlily]]
den—a place where people can buy and use dreamlily
without fear of the law.
''Population:'' Primarily [[dwarves|dwarf]] in [[Coasthold]], and [[human]]s and [[elves|elf]] in the rest of the district.<br/>
''Character:'' Rough and bawdy in [[Locksmith Square]], driven and serious in [[Coasthold]].<br/>
''Businesses:'' Banking, diplomacy, messaging, gladiatorial fighting, locksmiths, pawnshops, security.<br/>
''Key Personalities:'' [[Amilene Santor d'Sivis]], [[Handlon the Brick]], [[Korbek Ghedin d'Kundarak]], [[Margheta Tuvodni]], and [[Toven d'Cannith]].<br/>
''Overseer:'' Lord [[Yorrick Amanatu]].
//Silverwall is a place of stark contrasts. One half, called [[Locksmith Square]], is alive with color and abuzz with activity, from street performers and peddlers to the comings and goings of locals and visitors alike. The sounds of haggling and laughter, as well as cheers and screams rising from the [[Red Ring]], dominate the air here. [[Coasthold]] is the square’s silent neighbor. A pervasive sense of gravitas, of orderliness, fills this dignified half of Silverwall, emphasizing its neighbor’s boisterous character.//
Of all [[Stormreach]]’s districts, Silverwall is unique in its layout. Other districts, such as [[Oldgate]] and [[Southwatch]], have cultural divisions, but only Silverwall is
physically divided. And as new arrivals are quick to
sense, the two halves could scarcely be less alike.
[[Locksmith Square]], the district’s western half,
plays host to some of the most notorious personalities and establishments in the city, including the [[Red Ring]] and the shattered land’s most upscale brothel, [[Shadows]]. The eastern half of the district, in contrast, is both a paragon of restraint and a monument to [[dwarf]] ingenuity. Dubbed [[Coasthold]], this ward lies entirely
outside the walls of the old city and was built from the
ground up by the engineers of House [[Kundarak]].
Silverwall gets its name from the peculiar coloration of the walls that surround [[Locksmith Square]]. The walls are massive, reaching some 60 feet into the air, but
the distinctive silver sheen covers only the sides facing
the square. As a result, the entire square is reflected
back at itself everywhere one looks, and though the
reflections aren’t mirrorlike in their clarity, they surround the area in a mildly disorientating cast, making lights seem more spread out (which in turn
generates more shadows) and colors appear brighter.
This curious design is found nowhere else in the city
and helps lend the square its vibrant character.
The name is doubly appropriate, since Silverwall
is easily the wealthiest district in the city. This is not
due to the success of the businesses in [[Locksmith Square]] but rather to the vast holdings of the [[Coasthold]] [[dwarves|dwarf]] and their prosperous [[cousin|Yorrick Amanatu]] among the [[Storm Lords]]. Coasthold is also the seat of international
diplomacy in [[Xen'drik]] and houses both the [[Citadel of the Twelve]] and the [[Kundarak bank|Kundarak Enclave (Stormreach)]], which secures the wealth of almost every important figure in the city.
!! Wards and Noteworthy Locations
* [[Coasthold]]
** the [[Citadel of the Twelve]]
** [[House Kundarak Enclave|Kundarak Enclave (Stormreach)]]
** [[House Lyrandar Shipyard]]
** the [[Titanswalk]]
** the [[Tower of Kol Korran]]
* [[Locksmith Square]]
** the [[Black Wrack]]
** [[Eldred's Pool]]
** the [[Red Ring]]
** [[Shadows]]
!! Adventure Hooks
* [[Locksmith Square]] is a notorious haven for pickpockets. When one of the PCs is robbed, the trail leads to [[Shadows]]. This could be the start of a romance with the exotic pickpocket or a gateway into one of House [[Thuranni]]’s schemes.
* A riot breaks out in [[Locksmith Square]] following a terrible upset in the [[Red Ring]]. Depending on how the PCs handle the situation, they could gain the friendship of the [[Amanatus|Amanatu family]] and the [[Stormreach Guard]] or the enmity of anyone they injure in the riot.
* Someone is willing to pay an astounding sum if the PCs can penetrate the security of the [[Tower of Kol Korran]]. He won’t reveal his identity; is he a member of the [[King's Citadel]], a rival [[house|dragonmarked house]], or House [[Kundarak]] itself? Any investigation of Kundarak’s affairs is a dangerous business—especially if the job is a setup from the start.
!! Overheard in Silverwall
//“See that [[dwarf]]? The one coming down the walk just
now? Don’t let the funny hat and gold-gilt cloak deceive
you: He’s a [[Kundarak]], and there’s a reason he walks the
streets of [[Stormreach]] with only one bodyguard.”//
//“Oh, I’ll gladly take that bet, I will. If you think that
a prancing june bug like Rossart has a chance against
a powerhouse like Mourning Mikah, you’re an even
bigger fool than I took you for. Mikah’s one of Kolos’s
stable, and a veteran Ringer to boot.”//
//“You honestly think that knocking over [[Shadows]] is
the way to make a name for yourself in this town?
Your name might be Durko the Deathless out here,
among us street scum, but in there, it’s just a nickname—one that’s apt to get you killed, or worse. Trust me, you want no part of them elves. And if Spider finds out you were even contemplating such a thing, it won’t matter: You’ll be Durko the Dead by sunup. Is that clear enough, or do I need to paint a picture for you?”//
//This spell requires 12 hours to cast, as well as snow or ice in quantities sufficient to made a life-size copy of the duplicated creature; some hair, fingernail clippings, or other piece of that creature's body placed inside the snow or ice; and powdered ruby worth 150c, sprinkled over the duplicate and consumed by the spell.//
You shape an illusory duplicate of one beast or [[humanoid]] that is within reach for the entire 12-hour casting time of the spell. The duplicate is a creature, partially real and formed from ice or snow, and it can take actions and otherwise be affected as a normal creature. It appears to be the same as the original, but only about half as physically resilient, and is formed without any equipment. Otherwise, the illusion uses all the statistics of the creature it duplicates, except that it is a [[construct]].
The simulacrum is friendly to you and creatures you designate. It obeys your spoken commands, moving and acting in accordance with your wishes and acting on your turn in combat. The simulacrum lacks the ability to learn or become more powerful, nor can it regain energy lost from casting spells.
If the simulacrum is damaged, you can repair it in an alchemical laboratory, using rare herbs and minerals. The simulacrum lasts until it is incapacitated, at which point it reverts to snow and melts instantly.
The effects of this spell last until it is dispelled. If you cast this spell again, any currently active duplicates you created with this spell are instantly destroyed.
Sirens are a variety of [[merfolk]] that have adapted the ability to weave [[illusion]] and [[enchantment]] magic into their beautiful singing voices. Much like [[harpies|harpy]], sirens have a reputation for using this power to prey on unsuspecting explorers. However, the arrival of a [[Kalamer|Karakala]] siren to a village on the southern coast of [[Khorvaire]] is a celebrated event; even the [[Ghaal'dar]] welcome friendly sirens. These [[bard]]s bring news and stories of the sea—of ships in the area, storms, or even just gossip from the next village down the coast—combined with enthralling song.
This strange aquatic creature is an enormous, two-headed serpent. A fierce
humanlike face with terrible, staring eyes glares from where the
serpent heads join its body. It is
about 20 feet long and as
thick and heavy as a giant
constrictor snake.
Sisiutl are very perceptive
and intelligent, despite their
bestial appearance. Those
whom they favor might earn the
creatures’ protection, but those who
trespass willfully incur their wrath.
''Leader:'' [[Lysse Lyrriman d'Sivis]] <br/>
''Headquarters:'' The [[Labyrinth|Labyrinth (enclave)]] ([[Korranberg]], [[Zilargo]])<br/>
''Dragonmark:'' [[Mark of Scribing]]
//Communication is the foundation of civilization.//
<div align="right">—Baron [[Lysse Lyrriman d'Sivis]] </div>
Bearing the emblem of the [[cockatrice]], the [[gnome]]s of
House Sivis facilitate communication. This is seen most
literally in [[speaking stone]]s, [[magic item]]s allowing a Sivis
heir to send a short message to another speaking stone.
House Sivis's message stations employ these items
as the backbone of their long-distance communication
network. The house also trains and licenses scribes, notaries, interpreters, cartographers, barristers, heralds,
bookbinders, and others who work with words. House
Sivis has an especially close relationship with House
[[Kundarak]], as Kundarak letters of credit must be notarized with a Sivis arcane mark.
House Sivis takes great pains to maintain the trust
of its clients and holds a position of absolute neutrality
in all disputes, whether between houses or nations.
Sivis gnomes are typically friendly, curious, and engaging, but that kindly exterior might conceal a scheming
mind. Gnomes have a natural love of intrigue, and the
different families within the house often engage in subtle schemes and feuds. Doyenne [[Lysse Lyrriman|Lysse Lyrriman d'Sivis]], the
leader of the house, takes pains to ensure that these
intrigues never threaten the house or its reputation.
!! History of House {{!!title}}
[[Zil|Zilargo]] society has long been dominated by influential
clans, and the families within Clan Sivis were well
established long before their mark appeared. To avoid
the jealousy of rival clans, the Sivis [[gnome]]s made
themselves as useful to their neighbors as possible,
establishing the code of neutrality that they have
upheld to this day. House Sivis has always been a
sensible, impartial voice among the [[Twelve]], and has
often helped mediate disputes between the other
[[dragonmarked house]]s.
The greatest turning point in the history of the
house came in 783 YK, when [[Tasker Torralyn d'Sivis]]
invented the first [[speaking stone]]s. Today, Sivis message stations are found in every major city in the [[Five Nations]], carrying words swiftly across the continent.
!!! The Last War
House Sivis prospered during the
war, as generals and kings relied on it to transmit
messages to officers in the field. Sivis held fast
to its neutral stance, and in those cases where messages were intercepted, it was never the fault of the house. This refusal to take sides resulted in record
profits for the house, and Baron [[Lysse Lyrriman d'Sivis]] has invested this gold in a new project—unlocking the secrets of the [[Draconic Prophecy]].
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
In addition to the local message
station, House [[Sivis]] maintains an enclave in [[Clifftop]]
devoted to the [[Speakers Guild]]. This enclave specializes in two things: the translation of texts and other materials recovered from [[Xen'drik]], and legal services
for adventurers in trouble. [[Josilian Kan d'Tarlian]] works out of this office,
and is widely considered to be one of the best barristers in [[Sharn]]—though at a base price of 5c/day (and possibly more, depending on the nature of the
case), he is certainly one of the most expensive.
The [[Sivis]] Enclave, tightly
enclosed in Sivis Tower, shares space with the
dwarves of House [[Kundarak]]. It has equally grand
architecture and ornamentation, though motifs of
writing and calligraphic engraving run through the
decoration of the Sivis locations. [[Solirion Torralyn d'Sivis]] is the head of the [[enclave]], and supervises the [[Speakers Guild]] operations in [[Sharn]].
Along the north face of the northernmost peak of the [[Graywall Mountains]] stands a testament to the power and grandeur of the [[Dhakaan]]i Empire that has the power to inspire awe to this day. The mountain has been carved and shaped to create a bas-relief sculpture over 1,000 feet high. Rising from the smooth stone face are the images of the [[Six Kings|Jhazaal Dhakaan]], [[hobgoblin]] warlords who came together to create the empire that once ruled the continent of [[Khorvaire]]. The second and third figures have been damaged, either by the passage of years or some forgotten act of vandalism. The valley at the foot of the monument has been a campsite of many monstrous war parties through the ages, and it must be acknowledged that many [[goblinoid]] commanders who stopped to pay their respects to the lords of old found great success in the campaigns that followed. Caves pierce the mount at the base of the carvings, and it is said that an ancient armory of [[byeshk]] weapons is hidden within the caves, and that the [[ghost]]s of Dhakaani champions test those who would enter, allowing those found worthy to emerge with a single weapon to carry into battle.
A [[Droaam]] tradition brought to [[Sharn]] by immigrants,
six stones is a game for seven competitors, who each
pay a base stake. The seven are then sealed in a large
chamber with a [[cockatrice]]. The match ends when six of the players have been turned to stone, at which point
the survivor is awarded all the stakes (except for a share
set aside for the organizers). A [[medusa]] handler monitors the competition to ensure that rules are followed.
Contestants carry no arms or armor, and no magic or
supernatural abilities may be used. Additionally, no one
is allowed to attack the cockatrice. The challenge lies
in outlasting the other contestants and luring them or
pushing them into the path of the cockatrice. The battleground might be barren or littered with rubble and
cover; it might be lit, or it could be be pitch black.
Six stones matches are staged by the criminal organization [[Daask]]. The sport is illegal, but the games go on
because the matches are confined to [[Lower Dura]] and
the [[Cogs]] and well hidden from the eyes of [[the Watch|Sharn Watch]].
A match usually occurs only once every few months.
Sometimes participants voluntarily enter the competition, but most are debtors who have been offered a
chance to pay off their loans by winning the match.
Daask takes bets on the outcome, and usually earns a
tidy sum as its share of the proceeds.
Twenty-five of the twenty-seven noble families of
[[Breland]] have strong ties and interests in [[Sharn]],
along with all of the [[dragonmarked house]]s. But the
majority of the wealth of the city lies in the hands
of the gentry: merchants and landowners who have
built their fortunes through centuries of hard work
and clever investment. There are hundreds of powerful families in the City of Towers, but a few stand
out from the rest. These are known as the Sixty.
Sharn was built with the gold of the [[ir'Tain family]], and today the ir'Tains are the most powerful and influential family in the city. Once each month,
they hold a grand party for the aristocracy—The [[Tain Gala]]. When the ir'Tains were building their new manor on [[Skyway]], Lady Shala told the architects
to make the banquet hall large enough to seat sixty
families and their servants. The Sixty of [[Sharn]] are
those with standing invitations to the Tain Gala—the
clear sign of success. It should be noted that other
people may attend the gala, as it is uncommon for
all sixty families to bring all of their family members and servants, and the hall was designed to hold entertainers as well as guests. But a single invitation,
while prestigious, is entirely different from being
invited to join the Sixty.
While many members of the [[Aurum]] are also members of the Sixty, the two organizations are quite different. The Aurum is a highly organized conspiracy that carries out carefully orchestrated plans to provide its members with greater power and wealth. The Sixty is more of a social club—a visible manifestation of the most powerful families in Sharn.
Members of the Sixty discuss politics and business
at the [[Tain Gala]]s, and these discussions can have an
impact on adventurers, [[Sharn]], or even [[Breland]]. But
the Sixty almost never act as a concerted unit, and
many members are actually bitter rivals beyond the
walls of the Tain Manor.
All of the noble families and the [[dragonmarked families|dragonmarked house]] are members of the Sixty; this means that
any [[Sharn]] resident with the //ir'// or //d'// prefix on their
last name could be found at the [[Tain Gala]]. A standing invitation can always be
revoked to make room for a more deserving candidate; one of the greatest fears of Councilor [[Sorik Sensos]] is that his family will be displaced to make
room for Councilor [[Javan Tomollan]]. Just last year Celyria expelled the ir'Moros family and gave their place
to [[Saidan Boromar]].
!! Noble Families in Sharn
* Clarn: [[Haftak|Haftak's Books and Binding]] publishes the [[Sharn Inquisitive]]
* Lantar: Noble family of [[Aundair]]. Have secretly served the [[Lords of Dust]] for generations; work with the [[rakshasa]]s of Sharn.
* Laisha: Anador ir'Laisha is the [[Thrane]] ambassador in Sharn, very religious
* Tonn: See [[Bestan ir'Tonn]], councilor of [[Upper Tavick's Landing]] and part of the [[Boromar|Boromar Clan]] Block of councilors. Strong candidate for Xander's family beef.
* Zarna: Eld ir'Zarna commands the King's Swords in Sharn
* Marasha: Councilor [[Evix ir'Marasha]]
* Tain: [[ir'Tain family]]
* Demell: Cathan ir'Demell is [[Lord Mayor of Sharn]].
* Talan: [[Iyan ir'Talan]], lord commander of [[Sharn Watch]]. "Good guys" trying to clean up corruption
* Kavay: [[Wayfinder Foundation (Sharn office)]] liason
* Dain: Jairan ir'Dain is the [[Cyre]] ambassador to Sharn
* Moran: Ancient [[dwarf]] family of Sharn with a proud tradition of military service. [[Kellas ir'Moran]] is a known as a cheerful old retired general, but holds a deep grudge against [[Valenar]], extending to all elves and even Cyrans.
* Tarrn: Syra ir'Tarrn is the [[Karrnath]] ambassador to Sharn
* Thadian: See [[Maza Thadian]]
* Morgrave: Founders of [[Morgrave University]]
The Siyal Marrain are the [[druid]]s of the [[Tairnadal]] [[elves|elf]]. Translated in the common [[Galifar]]an tongue to “Horse Watchers”, these
druids care for the remarkable steeds and other [[Valenar beast]]s of the elves and unleash the force of nature on the battlefield. Less spiritual than other [[druid]]s,
the Siyal Marrain wield the wild as a weapon against the foes of [[Valenar]], and many of them trace their lineages to the legendary [[Gyrderi]].
Skairn is a small, rugged town in the mainland [[Lhazaar Principalities]].
Supposedly murdering indigents and visitors who are unlikely to be missed, the
Skin Shucker shucks off a victim’s entire suit of flesh
using barbed tentacles, which he keeps concealed in his
open chest cavity. He collects the skins and wears them
at night. They say he lives somewhere near fly-infested
slaughterhouses in [[Forgelight]].
Warforged skirmishers were built to scout the edges of battle and
outmaneuver their enemies. They are lean and designed for speed. Quicker and stealthier than their [[juggernaut]] counterparts, they are better suited for subtlety than brute force.
A skulk is a humanoid with soft, leathery light-gray skin, and deep blue pupil-less eyes. They can change the color of their skin to match their surroundings, camouflaging themselves in any environment, even complex or regular patterns like bricks and mortar. They can be found scattered across [[Sarlona]], but can be found in significant numbers in the province of [[Ohr Kaluun]].
Legend says that at the conclusion of the [[Sundering]], the
people of [[Nulakesh]], [[Corvagura]], and [[Pyrine]] joined forces
to battle [[Ohr Kaluun]]. This dark kingdom was already
weakened by civil war, and the forces of the [[Inspired]]
took down the city-states of Ohr Kaluun one by one.
In what seemed to be an act of charity, a Shadow Lord
named Kul Uulan opened his war maze to the refugees of
fallen cities, suggesting that they might still find victory
through unity. The truth was far more macabre. Uulan
sacrificed thousands of refugees in a ghastly ritual calling
for the blessing and protection of the [[Dark Six]]. When the
soldiers of the Riedran Alliance came to Uulan's maze,
they found no trace of his people; even psionic [[scrying]]
proved useless. Soldiers were killed, and word spread
of evil spirits haunting the broken mazes. In time, the
truth came to light. Uulan's people hadn't vanished:
they'd been transformed. Through the blood sacrifice
of thousands of innocents, Uulan had gained a terrible
power for his own people. They had become the skulks.
The skulks of [[Riedra]] believe that they are the
chosen people of the [[Dark Six]], blessed and shielded by
the deities others fear. Although the skulks revere all
of the Six, they typically select one as a personal patron
and seek to emulate that force in all ways. The [[Mockery]]
inspires the most followers, and the skulks who idolize
the flayed god are terrifying indeed. Those skulks who
follow the [[Shadow]] often pursue arcane knowledge; the
most dangerous members of the [[Heirs of Ohr Kaluun]] are often skulk [[wizard]]s. Nonetheless, the skulks have never posed a serious threat to the [[Inspired]]. They are paranoid creatures who revere madness, treachery, and destruction. They have trouble forming large communities, as rivalries and feuds quickly arise, and they tend not to abide the company of other humanoids, even their [[tiefling]] brethren. The skulks love to kill [[Riedrans]]—but when there are no Riedrans about, they soon turn on each other.
Although most skulks are content with their savage
life amid the ruins, a few seek something more. Some of
these skulks end up working with the [[Dream Merchants]],
while others simply wander. A few seek to atone for the
dark deeds of their ancestors; it's said that a handful
of skulk guides have been seen on the [[Summit Road]] in
recent years.
One must earn a place among the [[undying|deathless]] of [[Aerenal]]. Conceit,
an overblown sense of entitlement, or grief over
the loss of a loved one has led a few young [[elves|elf]] to
demand access to the Transition ritual. The nobility
ignores these pleas, forcing the Skullborn, as they call
themselves, to seek other paths. That search led them
to form an uneasy alliance with the [[Emerald Claw]]. To
the Skullborn, becoming a [[vampire]] or a [[lich]] in the
near future is an acceptable alternative to waiting for,
or being denied, the Transition.
The Skullborn is a loose organization with few tenets.
Its members believe that the [[Undying Court]] is guilty
of allowing [[elves|elf]] to die needlessly and that the Transition should be performed on any elf who desires it.
Many of the group’s members dabble in [[necromantic|necromancy]]
rituals, and some have magical powers.
The Skullborn's headquarters is the [[Hall of the Bereaved]] in [[Pylas Talaear]].
This small anvil is made from cold iron and alchemical silver, with a ring of small [[dragonshard]]s around one larger shard. A sky forge enhances the magical fabrication abilities of a person with the [[Mark of Making]], enabling them to transmute much higher quantities of raw materials into products.
Common jousting is popular enough throughout [[Breland]], but in [[Sharn]], the sport has taken to the air. In a
formal skyblade match, the goal is to knock an opposing rider from the saddle—attacks against mounts are
forbidden, along with the use of magic or other supernatural abilities. Formal matches take place in one of
Sharn's two aerial arenas, in [[Cornerstone]] and [[Hareth's Folly]]. Skyblade jousters typically ride [[hippogriff]]s and
carry blunted lances that deal nonlethal damage.
Informal matches, which don't always use the same
rules, occur from time to time in [[Lower|Lower Dura]] and [[Middle Dura]], [[Tavick's Landing]], and [[Menthis Plateau]]. An informal match might be played out across an entire district,
with competitors weaving between towers and around
bridges. The rules for an informal match are set before
the start, establishing (among other things) whether
magic can be used and mounts can be targeted.
Skycoaches are flying vehicles resembling small boats that range from rowboat-sized skycars to longship-scale tour coaches. They are often found in [[Sharn]].
The storm-battered Skyfall Peninsula makes up the northernmost portion of the continent of [[Xen'drik]]. The city of [[Stormreach]] sits near the northern tip of the peninsula, but besides this one bastion of "civilization", Skyfall is untamed wilderness like the rest of [[Xen'drik]], though the [[Traveler's Curse]] appears to hold less sway over the fabric of reality here.
The Skyraker Claws is a mountain range in western [[Xen'drik]], forming the northwestern border of the [[Menechtarun Desert]]. Giant pythons with stony hides slither among the rock-strewn trails of these mountains.
The Skyraker Forest is a forest in western [[Breland]], just north of the town of [[Ringbriar]].
''District Type:'' Park district<br/>
''Buildings:'' Parks (3), temples ([[Arawai]] and [[Balinor]]),
druidic site ([[Gatekeepers]]), upscale taverns (25),
exotic trades (20), upscale trades (40), upscale services
(70), upscale residences (120)<br/>
''First Impression:'' A park seems impossible in this
city of towers, but grass and trees actually grow from
the tops of a few towers in this district. A colossal
iron statue looks over the entire area.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Mithral Tower]] (northwest); [[Highest Towers]] (southwest); [[Korranath]] (north); [[Den'iyas]] (bridge, south); [[Sword Point]] (below)
Skysedge Park is Sharn's only park district, though
[[Shae Lias]] (in [[Upper Northedge]]) is similar in some
ways. Here, three large parks occupy the top floors of
some of the largest towers—grass and trees grow in a
deep layer of earth atop the towers, artificial ponds
carved into the surface shimmer invitingly, and the
noises of the city are magically dampened.
The population of Skysedge Park includes a
small minority (around 400 people) of immigrants
from the [[Eldeen Reaches]], struggling to maintain
something like their traditional lifestyle in a city
that defies the encroachment of nature.
!! Noteworthy Locations
* [[Skysedge Park (park)]]. The largest of the three parks in this district gave its name to the whole district.
* The [[Gatehouse]]. This small stone building is a sacred site to the sect of [[druid]]s known as the [[Gatekeepers]].
The largest of the three parks in this district gave its name to the whole [[district|Skysedge Park]]. Skysedge Tower stands near [[Highest Towers]] and [[Mithral Tower]], and contains upscale businesses just below the park. The park is beautifully landscaped, with gently sloping earth and well-tended grass, small fruit trees, and three small ponds. At the entrance to the park, a 100-foot-tall iron statue stands watch. Called the Iron Guardian, it was crafted centuries ago by the artisans of House [[Cannith]]. Legends tell that it is a [[construct]] crafted for use in the [[War of the Mark]], but it has not been seen to move in the recorded history of the modern city.
''District Type: ''Sky district<br/>
''Buildings:'' Temples ([[Silver Flame]], [[Sovereign Host]]), upscale lodging
(40), upscale food (50), exotic trades (20), upscale
trades (40), upscale residences (120)<br/>
''First Impression:'' This district is almost silent,
floating on clouds high above the hubbub of the city.
Servants scurry about from fabulous mansions to
exquisite shops, while the gentry who call this place
home parade in state, often riding griffons or hippogriffs, as they call upon their counterparts.<br/>
''Social Class:'' Upper class
A number of floating towers drift above the upper wards
of [[Sharn]], but these are dwarfed by Skyway, an entire
district suspended above and between [[Central Plateau]]
and [[Menthis Plateau]]. Built on an island of solidified
cloud, Skyway holds the mansions of the wealthiest
people in [[Khorvaire]]—nobles whose feet never touch the
ground. It's a realm of wonders, filled with the finest
examples of luxury and extravagance that gold can buy
and magic can produce. For instance, [[Cloudpool Park]] is
formed from sculpted cloudstuff, with window panels of
ice that provide a view of the city below.
Skyway is home to lavish estates. Prior to the [[Last War]], noble families from across the [[Five Nations]] maintained mansions here. Though some of these places
remain in the hands of their original owners, others
were seized by the crown during the Last War and sold to wealthy citizens of [[Breland]]. The resulting influx of
residents has brought more diversity to the district, with
[[dragonmark]]ed heirs and even wealthy criminals living
alongside the nobility. The grandest estate in Skyway is
Tain Manor, home of the [[ir'Tain family]] and the monthly
[[Tain Gala]].
This district offers the highest-priced services in the city. The [[Dragon's Hoard]] is a [[Ghallanda]] resort, where travelers can enjoy the utmost in luxury if they can afford the most expensive amenities. The [[Celestial Vista]] and the [[Cloud Dragon]] are wondrous restaurants. The [[Azure Gateway]] is a new hotel and restaurant that has
replaced a [[Ghallanda]] establishment. The owner has
remained anonymous, and this touch of mystery has
piqued interest in the place.
If you're interested in mingling with nobles or celebrities, or if you want to pull off a heist that targets the richest people in Sharn, Skyway is the place to do that.
No bridges or lifts connect Skyway to the rest of the
city, so the usual way to reach the floating district is by
taking a [[skycoach]] or hiring a flying mount.
The Skyway consists of two neighborhoods: ''Brilliant'' to the north, and ''Azure'' to the south.
!! Noteworthy Locations
* The [[Azure Gateway]]. This luxurious hotel and restaurant recently replaced an old [[Ghallanda]] inn. The menu is a "[[Galifar]] fusion," combining styles from across the Five Nations.
* The [[Celestial Vista]]. This legendary restaurant is owned by Skyway's [[city councilor|Sharn Council]], Lady [[Evix ir'Marasha]]. The floor is studded with crystal windows, allowing diners to look down into the city below. The food isn't incredible, but tourist crowds keep the Vista filled with customers.
* The [[Cloud Dragon]]. This restaurant serves traditional Brelish cuisine, and it does so exceptionally well. It's rarely as crowded as the other venues in Skyway, but locals know its value.
* [[Cloudpool Park]]. This park is magically shaped from wispy cloudstuff, with window panels of ice that provide a spectacular view of the city below.
* The [[Dragon's Hoard]]. This resort, maintained by House [[Ghallanda]], offers every luxury for those who can afford its high prices.
* [[Tain Manor|ir'Tain family]]. Sharn's social life revolves around the ir'Tain family. The monthly [[Tain Gala]] is the hottest ticket in town, and it's held at the family estate in Skyway.
1: A few [[gargoyle]]s perch on a mansion's walls. They're seemingly there for security, but they offer lively commentary about everyone who passes by.
2: A noble with auburn hair held in a silver diadem holds a [[darkwood]] staff encrusted with [[dragonshard]]s, and taps it impatiently while waiting for a [[skycoach]].
3: You pass by a hope well. Supposedly, any coins you throw in the well are gathered and transported down to help the troubled people of the [[lower ward]]s.
4: "Make way! Make way!" A boy clears a path for a jewel-encrusted [[warforged]] wearing a lavish fur cloak.
5: You come upon a fountain of cold fire. In the center, a brass dragon spits brilliant flames into the air, and they spill down and out into the surrounding pool.
6: A team of handlers from House [[Vadalis]] walk alongside a small [[gelatinous cube]]. "We're trying it out, seeing if it can help keep things clean," they say.
7: A [[magewright]] offers to use a simple charm to polish the coins in your purse for just 3 copper crowns. "We wouldn't want anyone here to get grime on their gloves from handling those filthy coins of yours from the [[lower ward]]s."
8: A tour group pauses to marvel at a mansion.
9: A large statue commemorates Lord Dalian [[ir'Tain|ir'Tain family]], a noble philanthropist lost at sea at the end of the [[Last War]]. He holds a spyglass in one hand and a miniature dragon turtle in the other.
10: A [[warforged]] with roses twined around her limbs offers to sell you a bouquet for five silver sovereigns.
11: It starts to drizzle. A well-dressed [[half-elf]] glares at the sky and snaps his fingers. The rain immediately stops.
12: A member of the [[Sharn Watch]] stops you. "Can I help you? Are you sure you're in the right ward?"
The toad-like slaadi are native immortals of [[Kythri]]. Though they do
reproduce (in strange and disturbing ways) and can die of mortal
ailments, they're defined as [[immortal]]s because their population remains constant.
Slaadi reproduce either by implanting [[humanoid]] hosts with eggs or by infecting them with a transformative disease called chaos phage. Each color of slaad reproduces or transforms in a different way, with red slaadi spawning blue and green slaadi, and blue slaadi spawning red and green. Each green slaad undergoes a lifelong cycle of transformation into the more powerful gray and death slaadi. With each transformation, the slaad retains its memories. Some slaadi can shapeshift into the humanoid creatures from which they were originally spawned.
Whenever a new slaad is born—whatever the method of its creation—an existing slaad dies, seemingly at random. And whenever a slaad is killed, a new one is formed.
So while they seem to share many of the traits of mortals, they
can never be wiped out even if they die en masse, and even if a
blue slaad transforms a village of humans into slaadi with the
chaos phage, the overall number of slaadi doesn't increase.
The slaadi are the only native civilization of [[Kythri]]. They
aren't a monolithic society; some live in massive cities, while
others are tiny rustic communities. Each slaad community
has its own distinct culture and a grand name, and a few examples of these can be found below—but there are many more, and they're constantly changing. The grand city
of [[Cornerstone|Cornerstone (Kythri city)]] may be the seat of the brutal Concordance of Iron today, and the Enlightened Lyceum League a month later.
These changes are astonishingly fast, but they aren't instant;
there are usually at least a few days of chaotic transition and
revolution in between a change. The scope of a community
won't change—Cornerstone is always a metropolis, while Turn is always a village—but the structures of the community shift. Under the Concordance of Iron, Cornerstone is filled with brutalist iron towers, while the Cornerstone of the Lyceum
League is filled with slender glass spires.
* ''The Grand Concordance of Iron'' is a ruthless regime that intends to subjugate all slaadi, and then, the entire multiverse. It's a strict caste system in which the death slaadi are cruel tyrants and all slaadi serve in the military.
* ''The Enlightened Lyceum League'' is a democratic society of scholars and philosophers. They believe in finding a peaceful solution to every problem and a logical answer to every question.
* ''The Final Regency'' asserts that the [[Sovereigns|Sovereign Host]] have abandoned reality and ordered the slaadi of the Regency to rule the multiverse in their stead until they return. They are fanatically devoted to a slaad-based version of the Sovereign Host and are offended by all inaccurate representations.
* ''The Glorious Union of Flesh'' asserts that slaadi are the ultimate evolution of life and seek to grant all other [[humanoid]]s the gift of slaadhood through the chaos phage. They don't accept the idea that slaad numbers will always remain constant; clearly previous slaad cultures just weren't doing it properly.
* ''The Confluence of Reality'' believes that every civilization has something worth emulating, and studies other cultures to find these things. In a Confluence community, you could find slaadi eating [[Aundair]]ian crepes, playing an [[Aereni|Aerenal]] form of [[Conqueror]], and debating the finer points of [[Daanvi]] law.
* ''The Republic of B'ob'' is ruled by a red slaad who makes up new laws whenever he feels like it. Why is B'ob in charge? Well, that was the first rule he made, and the only one he hasn't changed. And he's B'ob! Who else would be in charge?
The slaadi themselves retain their core forms while their
buildings and government change. Red slaadi are always red
toad-like creatures that implant eggs, but the Lyceum slaadi
might be tall and slender, while the Concordance slaadi are
squat and heavy. Kythri's influence can also cause slaadi to
change color. So slaadi follow standard methods for creating
particular colors—a blue slaad infects creatures with chaos
phage, creating red or green slaadi—but a green slaad could
go to sleep one night and wake up as a death slaad, and vice
versa. In a culture like the Concordance, that means leadership
frequently changes, because it's based on color, not personality.
Because slaad cultures change so rapidly, they rarely enact
plans beyond their own communities, though cities occasionally
clash. Some weeks they seek to exterminate the [[githzerai|gith]], and
other weeks, to ally with them. You never know what you'll get.
Slade is the [[Dominion|dominion]] of Music. They craft and play
magical instruments, and may be willing to sell an
instrument, a song, or a performance at their storefront in the [[Immeasurable Market]] of [[Syrania]].
Among the most powerful of [[construct]]s, the slaughterstone is one of the deadliest expressions of [[Mror|Mror Holds]] ingenuity and [[artifice|artificer]]. Shaped from a pure block of stone like a stone [[golem]], the slaughterstone is a terror to behold. The construct comes in a variety of models, such as the ''behemoth'', which is typically the size of an elephant, or the lighter ''eviscerator'', which is equipped with powerful blade-arms.
Slaughterstones protect the cities and fortresses of the [[Mror Holds]]. House [[Kundarak]] also uses them as guardians in their [[enclave]]s and great banks. The massive slaughterstone behemoth that stands guard inside the [[Kundarak Bank of Sharn]] is one of the city’s tourist attractions.
This small cloth pouch contains enough fragrant salt for a
single bath. You can sprinkle the salts into a tub of hot water, consuming them. If you soak in the water for 1 hour, and then fall asleep within 1 hour, you only need 4 hours of sleep to get an excellent night's rest. Only one creature can benefit from this effect.
Made up entirely
of [[Chosen]] and
[[Inspired]] ([[tsoreva]] [[quori]] under the command of [[du'ulora]] spirits), this elite division of the [[Harmonious Shield]] of [[Riedra]] is valued both for its power and its unquestioned loyalty. It is assigned missions requiring
[[psionic|psionics]] power
and utter ruthlessness. Members
of the Sleeping Sword are typically
[[soulknives|soulknife]] or [[psi warrior]]s; a few are [[monk]]s, employing
the [[Tashalatora]] techniques also used by
the [[kalashtar]].
The blade of the sword is coated in an endless supply of violet-colored slime. Despite the sword's tendency to drip, the slime does not flow over the pommel, regardless of the angle at which it is held. You are entirely immune to the effect of the slime while attuned to this sword. You may communicate telepathically with [[ooze]] creatures while wielding this weapon, and you gain advantage when attempting to persuade oozes.
Once every few minutes, you may fling the slime on the blade towards a creature. This slime can poison living creatures.
While you wear these light shoes, you can move up, down, and across vertical surfaces and upside down along ceilings, while leaving your hands free. However, the slippers don't allow you to move this way on a slippery surface, such as one covered by ice or oil.
This grappling hook is affixed to a 60-foot-long silk rope.
When the hook is thrown, the rope animates to help affix
the hook. You have advantage on attempts to throw the hook.
The Slogars were one of the first families
to settle in [[Grawand]], and their restaurant has served
the community for hundreds of years. The food isn't
fancy and the ambience is rather gloomy, but the prices
are quite reasonable. If you like traditional [[Karrn|Karrnath]]
peasant cuisine—which, truth be told, is usually an
acquired taste—it's hard to find better.
The heart of [[Stormreach]]’s [[Brelish|Breland]] community, the
Sloths in [[Cross]] district is filled with opportunists, along with idealists
seeking to establish a bit of [[Breland]] in [[Xen'drik]].
Many tailors work in the Sloths, turning out light
clothing—such as is favored in Breland—that is better
suited to [[Stormreach]]’s climate than many other styles.
Slowly the tailors here are creating a style unique to
the city, a style of even lighter fabrics, reinforced for
sturdiness, and covering as little as is decent to keep
people cool in the humidity.
!! Noteworthy Locations
* [[Beehive Pastries]]
* the [[Brelish Consulate|Brelish Consulate (Stormreach)]]
Slug Keep is located deep in the [[Crawling Swamp]] of the [[Shadow Marches]]. A half-buried castle of the sort built during the early years of the kingdom of [[Galifar]],
Slug Keep has never known a master. No legends or
records make mention of its construction, nor even
of the importing of its stones, which could have originated no closer than central [[Droaam]]. At particular times each year, the walls of the keep are overrun by
slugs, snails, and other slimy denizens of the swamp,
granting the site its name. [[Tharashk]] or another of the
[[dragonmarked house]]s might mount an expedition
to the ruined keep that the characters become a part of—or that they might be forced to rescue. Alternatively, what secrets from before the [[Last War]] might be hidden here?
Captain Smargat is the proprietor of the [[Black Freighter]] tavern in [[Grindstone]]. Even though his “ship” is nothing more than a tavern on the water, Smargat likes to play up the theatrical element of his establishment and has a tendency to
refer to himself as captain. His demeanor might
be disarming, but only the most foolhardy would
believe the proprietor of the Black Freighter utterly
ignorant of the [[Emerald Claw]]’s activities in [[Stormreach]]; even so, some might be surprised to learn just how involved he really is. The order uses Smargat’s
presence and reputation as a double blind, playing
on the natural suspicions of its enemies to dismiss a
figure as public as Smargat as anything but a pawn.
Order superiors do keep the details of specific plans
and missions secret from Smargat, but this is done
mostly to protect him. What he does accomplish for
the order goes above and beyond what even the most
suspicious of Stormreachers would expect, given
the circumstances.
Running the [[Black Freighter]] is a greater service to the order than most would assume. Smargat especially enjoys the rumor that his tavern is capable of
unmooring and sailing itself downriver, since the
truth is entirely the opposite: The original piece of
[[thri-kreen]] architecture was built into and affixed
fully to the river bed. Secret hatches connect it to
the ruins beneath the city, and Smargat uses them
to move agents of the order at all hours of day and
night. So although the Freighter appears as a “false”
headquarters for the [[Emerald Claw]], it’s actually
much closer to a real base of operations for the
order (or at least the hub that connects several
different bases of operations). And as if running
the Freighter wasn’t enough, Smargat also assists in
both dirty work and coordinating other agents of the
order throughout the city. His distinctive tricorn hat
is a [[hat of disguise]], and Smargat’s superiors have used
its power to great effect over the years. For his part,
Smargat is all too thrilled to help and considers it an
honor to be asked to perform any function, no matter
how small, for the [[Emerald Claw]].
Smargat's superior in the [[Emerald Claw]] is the [[White Raven]].
Smith, one of three Adamants of the [[Iron Watch]] of [[Stormreach]], served alongside [[Steeljack]] in the [[Last War]], fighting for [[Breland]] under an abusive human commander. Designed to provide battlefield support, he
has become one of the most gifted [[warforged]] [[artificer]]s
in Eberron. He is fascinated by the [[docent]]s, [[quorcraft]] warforged,
and other mysteries of [[Xen'drik]], and spends his time
studying the past or crafting [[magic item]]s for the unit.
His work with warforged components has allowed him
to discover the ability to bond with a [[magical implement]], which he has
taught to a number of other mystics in the Watch.
This alchemically treated wooden stick instantly creates thick, opaque smoke when ignited.
''District Type:'' Theater district<br/>
''Buildings:'' Theaters (4), temple ([[Olladra]]), average
lodging (10), poor lodging (30), average food (20),
poor food (55), average trades (30), poor trades (60),
average services (40), poor services (80), average
residences (20), poor residences (40)<br/>
''First Impression:'' Theaters, restaurants, and concert halls offer the promise of an evening's musical
entertainment in this district.<br/>
''Social Class:'' Lower middle class<br/>
''Neighbors:'' [[Little Plains]] (south); [[Everbright]] (southwest); [[Dragon Towers]] (bridge, northwest); [[Sword Point]] (bridge, north); [[Grawand]] (bridge, northeast); [[Dancing Shadows]] (bridge, east); [[Torchfire]] (below); [[Den'iyas]] (above)
Smoky Towers is in some ways an extension of the [[Torchfire]] district directly below it, perhaps slightly better off in general but not much different in essentials.
Smoky Towers is the entertainment district of [[Middle Menthis]], known for dinner theaters, recital halls, and one grand theater. It presents a grade of entertainment
that falls between the burlesque of [[Torchfire]] and the
classical drama of the [[University District]]—affordable
yet respectable, accessible yet thoughtful.
A small but significant number of people who
trace their origin to [[Cyre]] have made their home in
Smoky Towers. Although culturally they differ little
from their [[Brelish|Breland]] neighbors, this community has
become very active in the wake of Cyre's destruction, discussing rebuilding or reestablishing the nation elsewhere in [[Khorvaire]]. The [[Citadel|King's Citadel]] keeps
the Cyran community here under close watch due
to this potentially treasonous talk.
!! Noteworthy Locations
* The [[Atrium]]. A recital hall that features an acoustically resonant open performance space.
* The [[Classic Theater]]. A small and inexpensive theater, the Classic performs only works written before the start of the [[Last War]].
* [[Mizano Rupa's]]. A dinner theater venue that offers decent food and high-quality entertainment in a variety of styles.
* The [[Starfire Dragon]]. This dinner theater venue offers a steady diet of entertainment accompanied by exquisite meals.
* [[Thovanic Hall]]. A former theater converted to use as a recital hall, Thovanic has has begun performing works from [[Darguun]] and [[Droaam]] featuring monstrous performers.
This item appears to be a simple wooden chair, but close
inspection reveals a hidden compartment when the seat is
lifted. The hidden compartment fills the space between the
chair legs and is concealed by an illusion that makes it
appear empty. The compartment has a volume of 1 cubic
foot.
This black belt is tooled with tiny scales. The buckle is silver and resembles a snake's head poised to strike.
When the command word is uttered, this belt uncoils and transforms into a black snake. The snake will obey simple commands as long as it is within 60 feet of the wearer, and it has a vicious (though non-venomous) bite. By speaking the command word again, the user can return the belt to its normal form.
If the snake is incapacitated, it dies and reverts to its belt form. The belt then crumbles and is destroyed. If the snake reverts to belt form before being incapacitated, it recovers from all damage.
A soarsled is a crystalline disk crackling with energy, 5 feet in diameter, that flies with
greet speed and maneuverability through the air. Within the city of [[Sharn]] or another [[Syrania]]n [[manifest zone]], a character can fly a soarsled at a speed of up to 25 mph, controlling its movements with their mind. The soarsled can carry up to 400 lbs, and stops hovering when the rider steps off it.
Outside a Syranian manifest zone, the soarsled's maximum speed is reduced to around 10 mph and the sled can only be used a few minutes until it spends at least 8 hours in a Syranian manifest zone.
Rare even in the abundant forests of [[Aerenal]], soarwood possesses a magical buoyancy. Ships made from soarwood skim effortlessly over the surface of the water. Soarwood is a necessary component in the manufacture of [[airship]]s and [[elemental galleon]]s.
The speed of a boat or ship made from soarwood is
double that of an equivalent boat made from ordinary
wood, and the cost is four times normal.
<ul>
<$list filter=[list{!!title}sort[title]]>
<li><$link/></li>
<<list-links-article "[tag{!!title}category[organization]regexp<capitalized>sort[title]]">>
</$list>
</ul>
The holdfast of Clan [[Soldorak]], Solangap boasts vast
gold mines and the largest mint and treasury in [[Khorvaire]]. Clan Soldorak has recovered many [[daelkyr]] tools and weapons from the [[Realm Below]]. Solan lords
proudly wear [[symbiont]]s and make no effort to hide their
[[warlock]] pacts.
A solar is godlike in its glory and power. On the battlefield, the solar's sword flies into the fray on its own, and a single arrow from a solar's bow can strike a target dead on contact. So great is a solar's celestial might that even arch[[fiend]]s on the fields of [[Shavarath]] shrink at its resonant commands.
Solars have a divine awareness that enable them to see through all illusions and deceptions. They can blind creatures with a glance, and heal any injury or affliction with a touch.
''Capital:'' [[Solangap]]<br/>
''Primary Resources:'' Gold, platinum<br/>
''Enemies: ''[[Doldarun]], [[Mroranon]]<br/>
''Celebrated Virtues:'' Independence, cunning. Question authority and find your own path.
In Dwarven, //sol dorak// means “defender of the realm.” While
most [[Mror|Mror Holds]] legends present the legendary Lord Mror as a wise
and powerful leader, the talespinners of [[Solangap]] say that
Lord Mror was an iron-handed tyrant—that the hero Soldorak
challenged Mror for the good of the common people, and it was this that led to the Exile. In all of the stories, Soldorak supports underdogs and challenges outdated systems and
oppressive authority. In some ways, this is at odds with the
fact that Soldorak remains part of the feudal system that has
defined the [[holds|Mror Holds]] for a thousand years. However, Soldorak is
more flexible than the other [[clans|Mror clan]]. Tenant families have a path
to become freeholders, and much like the [[Aereni]], Soldorak
seeks to draw the most talented dwarves from all walks of
life into the ruling clan. However, this is a knife that cuts
both ways; people can also be expelled from the ruling clan,
and heirs are expected to constantly prove their worth and
cunning, not to simply rest on the power of their name.
This principle is the cornerstone of the Soldorak character.
“Power must be earned. The ends justify the means.” They
believe the common concept of “honor” is a trick that serves
those in power; true honor lies in using your wits to defeat
impossible odds. It was this principle that led clan nobles to
found the [[Aurum]], originally as a nexus for acts of rebellion
against [[Galifar]]; today it continues to counterbalance the
influence of foreign aristocrats and [[dragonmarked house]]s.
Soldorak is one of the most populous holds, and one of
the richest. Its fortune lies in all manner of precious metals,
especially platinum and gold; coins from the Soldorak Mint
circulate across [[Khorvaire]], and Soldorak has many foreign
investments. It has invested deeply in the [[Realm Below]]
and is second only to Clan [[Mroranon]] in its subterranean
holdings. However, Soldorak has embraced the use of //dolaur//—[[symbiont]]s—and continues to explore the alien powers of the
[[daelkyr]] even while it recovers [[dwarf]] artifacts. Soldorak has
also embraced the path of the [[warlock]]. These dwarves have
less patience for arcane study than their allies in [[Narathun]], and
are less likely to become [[artificer]]s or [[wizard]]s. But bargaining
for power, earning supernatural gifts with your wits and will?
That's the Soldorak way. Soldorak maintains that this tradition
is entirely safe—that Sol [[warlock]]s can tap the power of the
[[daelkyr]] without serving them—but [[Doldarun]] is certain that all
Soldorak dwarves are corrupt, and [[Mroranon]] sees this foul
practice as another way to discredit its rivals.
While it's home to nobles and soldiers, Soldorakhold also
has more than its fair share of charlatans and criminals. It's a
haven for all manner of rogues and [[warlock]]s, especially those manipulating the powers of the [[daelkyr]]. While outsiders view the Soldorak as evil, they are primarily
about challenging tradition and refusing to accept unearned
authority; a Soldorak folk hero could champion underdogs
anywhere in [[Khorvaire]]. Soldorak dwarves are typically
skeptical of organized religion; there are relatively few temples
in the region, and [[cleric]]s and acolytes are uncommon.
Solei plays the part of a native [[drow]] “savage” with panache. In truth, he is a city slicker born and bred to [[Stormreach]]’s urbane [[Cross]] district. Solei rarely leaves
the city, and on such occasions he never strays farther than a mile into the wilds. Recently Solei’s mother took ill with a bad case of cackle fever, and the young drow is desperate for money to pay for a [[restoration]] spell or similar treatment for her. The young rogue dreamed up a great scam to cash in on foreigners’ bigoted idea of his people as jungle-dwelling savages. Solei paints himself up like a native, and bluffs to offer his services. He claims he can guide travelers safely through “my people’s” [[jungle|Jungles of Xen'drik]]. Shortly after his clients pay his advance fee, he leads them out of town a short distance and disappears into the brush. Solei then beats a hasty a retreat back to Stormreach, hoping to cure his mother’s disease and hide from those he swindled.
The Archbishop Solgar Dariznu, formerly of [[Wyr]] in western [[Aundair]], governs [[Thaliost]] with the aid of a detachment of [[Thrane]] knights. Despite exhortations from the [[Council of Cardinals]] for him to be lenient, he rules savagely, using excessive force whenever and wherever there’s trouble. His knights round up treasonous ringleaders, stage trials, and at times burn prisoners alive in public to dissuade others from following their example. Citizens face random searches, invasion and seizure of property, and imposition of heavy fines for minor infractions. His methods have quelled the worst of the violence and pacified most of the population, but the people despise him. Many observers inside and outside Thrane wonder when the archbishop will finally overstep so much that he sparks a devastating uprising.
Dariznu is sympathetic to the cause of the [[Pure Flame]] sect.
Solia is in charge of [[Lyrandar]]’s affairs in [[Sharn]], overseeing operations of the [[Dragon Towers]] [[enclave|Lyrandar Enclave (Dragon Towers)]] and all smaller offices as well. Troubleshooting various shipping crises keeps her constantly en route from the elemental [[airship]] [[docking tower|Lyrandar Tower]] at the city’s pinnacle to the [[Cliffside]] docks at its base. Ever since it became known that Solia was considering new routes to [[Xen'drik]], every airship captain has been vying for her favor.
Little is known about this figure or his relationship with [[Thora Tavin]], but he bears
the strongest [[aberrant dragonmark]] seen in this age and the
skills of a military commander. Some say that he is
[[Halas Tarkanan]] born again, and that he is preparing
to lead his people into battle.
This establishment serves hot beverages and simple food. Unusual in that most of its clientele are [[changeling]]s, it is a place for quiet conversation and meditation. Song of Skin changelings perform guided meditations in which a dozen people travel through
a journey of different bodies, forming and abandoning
a dozen different forms. The proprietor is a changeling
named Silence. It is quite likely that Silence is in fact a
group identity shared by multiple changelings; their alignment and abilities could change each day. Silence enjoys listening to the tales of
travelers, and has a special service for favored customers:
they produce and sell [[psionic tattoo]]s. It is up to you to
decide what they have available at any given time and what it
will take to convince them to sell.
There are many questions surrounding the Song of
Skin. Why do the [[Inspired]] allow Silence to sell tattoos?
What is their motivation? It's quite possible that Silence is
a creation of the [[Thousand Eyes]] and passes all information along to that group. On the other hand, perhaps Silence is a spiritual creation of the [[changeling]]s of Dar
Jin who serves as a focus for their belief in the [[Path of Inspiration]]. Either way, the Song of Skin could serve as a sanctuary for changeling dissidents such as [[Keshraa the Fallen]].
[[Molou's Distillery]] in [[Stormreach]] has recently begun selling [[sooka]], a form of [[kuryeva]] gin with a touch of [[dreamlily]]. This concoction is even more calming and addictive than [[kuryeva]], making it the ruination of those not blessed with a strong will.
This amulet is a wide band of carved bone, threaded onto a necklace of braided twine. When swung in a fast circle on its necklace, this amulet emits a high-pitched sound that has a calming, soothing effect on creatures that hear it. It reduces anger, fear, and other forms of agitation, magical or natural. The stronger the emotion, however, the less likely the creature is to be calmed.
The [[hanbalani|hanbalani alta]] network in [[Riedra]] allows
the [[quori]] to broadcast telepathic messages to the [[people|Riedrans]] across wide
areas. The effect can be narrowed to a single village or linked to broadcast across an entire
sphere, but it cannot pinpoint individuals. The Voice
addresses the populace throughout the day, providing
news, encouragement, and instruction to the people.
This system is controlled and monitored from [[Dal Quor]].
Those who want to do so can cut off a village from the
Soothing Voice by deactivating a nearby monolith, but
they cannot transmit messages of their own without going
to Dal Quor.
The stories of Sora Katra are many and varied, for she's a gifted
shapeshifter who seems to love meddling in the lives of heroes.
She's the old woman at the inn whose idle comment sows
doubt in lovers' hearts. She's the tinker who gives the farmboy
the magic sword that helps him become king—the same blade
he uses to kill himself in the final act. It's only through a wink to
the audience or a hint to the reader that Katra's true identity is
revealed. In some ways, this fictive role overlaps with that of the
[[Traveler]], but the gifts of the Traveler bring //chaos//, while those of
Sora Katra inevitably bring //tragedy//.
However, Sora Katra isn't always the villain in tales. When
she acts openly, she often poses a challenge that tests the
hero's wits or resolve. In most of these tales, the champion fails
the challenge—which is, to be fair, usually weighted against
them—and disaster ensues. But in those rare cases where the
protagonist remains true to their ideals or outwits the hag, she
always holds true to her promises. It's this penchant for testing
resolve and punishing failings that gave birth to the popular
tale that if a child makes a promise and breaks their word, Sora
Katra will come in the night and take a finger from them.
Sora Katra is known as a schemer. In many stories she's
found weaving curses on her loom—plotting misery and
misfortunes to release into the world. In the tale //The Sleeping Prince//, she curses the Prince of [[Wroat]] three days after his
birth. In the end of the story, the Woodcutter's Daughter kills
the [[giant]] in the King's Forest and gives Katra his tongue, and
when the curse is lifted, the Woodcutter's Daughter marries the
prince. Scholars have long debated Katra's motives in the tale.
Is it that she couldn't kill the giant, and was setting a scheme
in motion that would lead to his downfall? Or was it actually
her goal from the start to elevate the Woodcutter's Daughter—did she create the obstacle in order to give her chosen hero a chance to rise? While this is a positive spin, there's no question that Katra's actions always bring misfortune to someone—especially those who fail to measure up to her challenges.
Sora Katra is a brilliant orator. In the stories, she usually
uses her words to sow doubt or discord, but she is equally
capable of binding people together and weaving dreams of
glory. In [[Droaam]], she is the voice of the [[Daughters|Daughters of Sora Kell]], and her
speeches have drawn a dozen different species together,
and made raiders and brigands believe that they are part of
something greater and grander than they ever imagined. In
part, this is about playing on the peoples' anger and fear of the
easterners. But she also has a knack for simply knowing what
people want—such as the ambitions of her warlords—and using
that to her advantage. Combined with the guidance of [[Teraza|Sora Teraza]],
she foresees problems and invariably finds someone to take the
fall for things that cannot be avoided. In some ways, this is the
central mystery of Droaam: Why found a nation to begin with?
And why seek to be recognized by the [[Treaty of Thronehold]],
when Teraza most likely knew the effort would fail? One
possibility is that the entire nation is just a stepping-stone
toward her true goal—just as the prince in //The Sleeping Prince//
was a tool that ultimately elevated the Woodcutter's Daughter. It's possible [[Droaam]] is another of her tests—but who's being
tested, and what happens if they fail? What about the criminal
organization [[Daask]]? Is this just a diversion for Katra, or is
Daask advancing a mysterious agenda?
In her natural form, the Mistress of the Mires is a [[green hag]],
with green skin and dark green hair. However, she loves [[illusion]]
and rarely remains in her true form. If she has no reason to
remain in a particular form, she often shifts in mid-speech. She
delights in forms with a personal impact on the people she's
dealing with—taking the face of a dead lover or a betrayed friend.
She possesses abilities like a powerful [[bard]], both the ability to
inspire and to perform powerful [[enchantment]]s and illusions.
Sora Katra loves challenging heroes, which makes it easy to
tie her to a story. Perhaps [[Droaam]] itself has been created to test
the player characters—she's spent a decade and built a nation
to force the characters to make a difficult decision. If you want
to create a connection between Katra and a character, is the
character the archetypal Sleeping Prince—who Katra torments,
seemingly without reason—or are they the Woodcutter's
Daughter, who may be challenged but has a chance to come
out ahead in the end? Consider also the tale of the farmer
who became a king. Katra might give a character an artifact,
seemingly for no reason; can they use it wisely, or will it lead
them to despair? While a connection to Katra could develop
during play, you could establish a tie to the Mistress of the Mires
in a character's backstory. Perhaps Katra cursed the character's
family because of something their parents did; is there
something the character can do to lift the curse? Or perhaps
the character unwittingly did a favor for a disguised Katra back
when they were a child, and she promised to repay this act
of kindness; when and how will the character call in this
favor?
Katra utilizes the agents of [[Katra's Voice]] to maintain order in [[Droaam]].
Sora Maenya is often depicted as a monster, said to wander the [[Towering Wood]]. She is known for her strength and her endless appetite; it's commonly said that she can crush a [[giant]] with her bare hands, then eat the whole thing and still be hungry.
Stories often depict her through her absence, as an unstoppable force that punishes arrogance or cruelty. The shepherd warns the foolish farmers not to settle in the forbidden meadow; later, he returns to find their bones picked clean and stacked near the hearth, but without their skulls. There's no need to say who it was or to show the battle. The tale notes the missing skulls, and everyone knows that Maenya keeps the skulls of her victims, binding their souls to the bone and using them as lanterns.
Maenya greatly enjoys games
and challenges, and she may
spare someone who shows spirit.
While she doesn't lay out schemes
as complex as does [[Sora Katra]],
there are many tales of Maenya
wandering the woods in disguise
and tricking travelers into unwise
contests. Her endless appetite
reflects a broad love of life; it's not
simply that she's hungry, it's that she
loves to eat. She fights for the sheer joy that comes in crushing an enemy, and in the folk song //Edar's Last Jig//, she dances until her partner dies of exhaustion. She
seems to have a sense of humor, albeit a morbid one; she may
spare someone who makes her laugh, or let someone live
because it amuses her to do so. There are stories where a hero
beats her in a seemingly impossible contest through cunning
and courage; when defeated, she honors any promise she has
made. However, a victor would be wise not to gloat; in the tales,
this is a sure path to an unexpected end.
Sora Maenya is the general of [[Droaam]]'s armies, the iron fist
that crushes any rebellion. The core of her power is Maenya's Fist, an elite corps of war [[troll]]s and skullcrusher [[ogre]]s. Everything about the Fist is shrouded in mystery. Some say Maenya bred and trained them in a buried [[Dhakaan]]i fortress; she calls these soldiers her children, and some scholars believe this might be literally true. Others say that Maenya herself forged the imposing plate armor
that they wear. Whatever the truth, the members of the Fist
are fanatically devoted to Maenya. While [[Droaam]] has yet to
assemble an army combining the full force of its warlords, thus
far, Maenya has shown herself to be a brilliant and unorthodox
strategist, one not to be underestimated.
In her natural form, Sora Maenya is an [[annis hag]]—a
towering, powerful figure. She can assume smaller forms, but
rarely seeks to play psychological games with her shapeshifting
as [[Katra|Sora Katra]] does. She appears in many tales as a hungry woman—tall and thin, with ragged clothing and long black hair, seeking shelter and food. While her primary power is her martial might, she does have supernatural gifts; the most infamous is her soulbinding. And perhaps she also has other [[necromantic|necromancy]] skills that
haven't been revealed in the tales...
While she's known for her immense strength, Sora Maenya
isn't just a brute; there are stories in which she actually
trains a hero, either teaching them to fight or granting them
unnatural strength. While it would be an unusual path, a
monk or barbarian could attribute their class features to early
training with Sora Maenya. The question is whether they
knew her identity when she taught them; was she the Reaver
of the Woods, or did she teach them in an assumed form? If
a character is from the [[Eldeen Reaches]], might they have met
Sora Maenya as a child? Perhaps they ran away from home,
and Maenya devoured their village while they were away. Or
maybe they made an unwise bargain—asking Sora Maenya to
kill a childhood rival, which she did; now the character owes her
a debt, and someday she'll come to collect. Or perhaps it's the
other way around; perhaps as a child, the character defeated
Maenya at a game, and it's she who owes the character a favor.
Sora Teraza is the most enigmatic of the [[Daughters of Sora Kell]]. She's known to be blind, yet she's perfectly aware of her
surroundings; it's not that she can see, she simply knows where
everything is. In some tales, it's said that she knows when every
individual will die; in other stories, she herself chooses when
each person will die. It's also said that she has a library in which
she keeps books documenting the lives of remarkable people—books that contain the souls of those heroes, and that she appears to collect the soul when that champion is near death.
Sora Teraza is a [[dusk hag]]. While she can change her shape,
she rarely does so; she wears an old, tattered robe and hides
her face beneath a deep hood. She rarely speaks, other than to
issue cryptic pronouncements. When she's not with her sisters, she spends her time tending her library in the [[Great Crag]], or in
meditation. Teraza is certainly the most gifted oracle of the age.
This may be connected to the [[Draconic Prophecy]], or it may be
that she perceives the future in a different way. Certainly, Teraza
is never depicted as having to seek her answers; it seems she just
knows them. Given this unerring knowledge, it would seem like
it should be impossible for the Daughters to ever fail; she can
reveal the plans of their enemies and the location of any treasure
they might seek. But Teraza doesn't always share her knowledge,
act in the best interests of her sisters, or even her own interests.
Why not? The simplest answer is that she is unhinged; any
mind could be broken by the burden of such knowledge. A
more complicated possibility is that she is trapped by her own
knowledge—that she already knows what she is going to do,
and doesn't actually have any real free will. Or perhaps her
knowledge isn't as absolute as it appears: she has the potential
to know anything, but some things simply evade her sight.
Regardless, Sora Teraza certainly can, and sometimes does,
warn her sisters about possible threats, such as treacherous
warlords or approaching player characters, and directs them to
the best path to ensure victory. But she can also remain silent,
or only offer information later than others consider helpful. For
example, she could reveal that there's an [[Aundair]]ian war
criminal—a [[wizard]] of tremendous skill, who [[Sora Katra]] would
surely have a use for—hiding out in [[Graywall]]. But she might
provide this information a year after his arrival, and only a day
before he plans to depart—leaving Katra with just 24 hours to
mobilize agents to try and capture the wizard. Will these agents
compete with the player characters, or will they be the player
characters? Teraza might also provide a character with a
mysterious piece of information—via dream or [[sending]]—that
could be very useful, even if it could hurt her sisters. This
doesn't mean she is betraying her sisters; it is simply that she
does what she must do, when she must do it. While Sora
Teraza's knowledge is potentially limitless, in practice, it's a
tool to drive an interesting story, not to derail it.
''Capital: ''Blackhammer<br/>
''Primary Resources:'' Artisans, Eberron [[dragonshard]]s, manufactured goods<br/>
''Enemies:'' None<br/>
''Celebrated Virtues:'' Industry, innovation. There's always a better way to do things.
When the exiles were driven from the [[Realm Below]], it was
Soranath who made them weapons. Clan Soranath is one
of the smallest [[clans|Mror clan]], but its influence reflects the talents of
its artisans. Other clans have mines and fields—it's Soranath
who takes what they produce and makes wonders.
Not all artisans are from Soranath, just as not all of the
denizens of Soranathhold are artisans. Most blades in
Mroranonhold are forged by [[Mroranon]] smiths. But Soranath
artisans are unmatched in their techniques and their work ethic. Rather than being bound by secrets of the past, Soranath
smiths are always looking for ways to improve their techniques,
searching for new sources of inspiration. While this sounds
impressive, Soranath is a small hold with limited resources,
without the capabilities either in research or production of
House [[Cannith]] or the [[Arcane Congress]]. The artisans of Clan
Soranath won't change the world with their works, but they
produce remarkable things for those who can afford it.
Soranathhold is small, with only three spires. Its families
are tightly knit, and the divide between tenant and clan is
a thin line. Industry is the prime virtue of Soranath, and its
people work hard and live austere lives; for Soranath dwarves,
a job done well is more satisfying than any luxury. Soranath
has abundant deposits of [[dragonshard]] geodes, and thus
isn't dependent on [[Tharashk]], but doesn't seek to challenge
Tharashk as an exporter of shards. Due to its otherwise limited
resources, Soranath is dependent on other clans for many
things, including protection. Soranath [[artificer]]s are fascinated
by the potential of the [[Realm Below]] and what they could learn
both from the Udar artifacts and the [[symbiont]]s of the [[daelkyr]],
and Grayroot Spire has been experimenting with fleshcrafting.
However, they are artisans, not warriors; they must hire others
to venture into Sol Udar on their behalf.
The Soranath dwarves are devoted to the [[Sovereign Host]],
especially to [[Onatar]]; they are quick to assign credit for any
great work to the Sovereign of Fire and Forge. There may also
be a cult of the [[Traveler]] within Soranath, perhaps in Grayroot
Spire; if so, it keeps its true devotion well hidden.
Soranath dwarves are generally guild artisans, acolytes, or
sages. [[Artificers|artificer]] (primarily Battle Smiths) and [[cleric]]s of the
Forge are both logical classes for Soranath dwarves.
Sorcerers carry a magical birthright conferred
upon them by an exotic bloodline, some otherworldly
influence, or exposure to unknown cosmic forces.
One can't study sorcery as one learns a language, any
more than one can learn to live a legendary life. No one
chooses sorcery; the power chooses the sorcerer.
[[Arcane magic|arcane magic]] is a part of every sorcerer, suffusing body, mind,
and spirit with a latent power that waits to be tapped. Sorcerers have no use for the spellbooks and ancient tomes of magic lore that [[wizard]]s rely on, nor do they
rely on a patron to grant their spells as [[warlock]]s do.
By learning to harness and channel their own inborn
magic, they can discover new and staggering ways
to unleash that power. Depending of the nature of that inborn magic, sorcery can sometimes trigger unusual [[side effects|random magical effect]].
By far, the most common source of sorcerous power in [[Eberron]] is [[dragonmark]]s. Either by sharing ancestry with a [[dragonmarked house]] and manifesting one of their marks, or by spontaneously manifesting an [[aberrant dragonmark]], you can channel arcane magic instinctively by channeling the power of the mark.
Other kinds of sorcerers are exceedingly rare by comparison. One might obtain sorcerous power by being born within a [[manifest zone]] and thereby gaining a magical link to the associated plane. Perhaps you are a survivor of the [[Mourning]], and since that day you have undergone mutations and gained strange, disturbing arcane powers. Or maybe you were created to be a sorcerer: a [[warforged]] created as a living wand; a creation of the [[daelkyr]] made to be an arcane conduit to [[Xoriat]]; or a super-soldier [[magebred|magebreeding]] by the [[Feral Heart]] and infused with [[dragon]]'s blood.
Sorik Sensos ([[half-elf]] councilor for [[Middle Central]]) is a clever man and a brilliant orator, and he is one of the oldest and most influential voices on the Council. However, he is influenced by his need for gold, and his supporters are aggravated by the growing economic gap between [[Middle|Middle Central]] and [[Upper Central]]. His frustration is compounded by the rising success of [[Javan Tomollan]], and every month he becomes increasingly obsessed with Tomollan. Sorik is determined to humiliate Javan and to bring down his fortunes, but he needs to be careful.
Sorrowdusk Island is a small island in the [[Barren Sea]], off the coast of [[Xen'drik]].
[[Dolurrh]]'s pervasive melancholy sometimes gives rise to strange incarnations of the plane's bleak nature. The emotional residue of hundreds or thousands of [[shade]]s can form deadly sorrowsworn, which each embody specific forms of suffering that can be visited upon those who stumble into their midst.
Each sorrowsworn personifies a different aspect of despair or distress. Some are manifestations of anger or hunger; others are loneliness given physical form. Their nature provides a clue both to understanding how they become more powerful and to overcoming them. Giving in to the negative emotions that the sorrowsworn represent causes these entities to grow deadlier. Fighting against these emotions can weaken them and drive them away.
Like [[lemure]]s, sorrowsworn are "waste products" of the machinery of the Realm of the Dead, and are dispatched by the [[nalfeshnee]] and [[marut]] guardians of [[Dolurrh]] whenever encountered.
Most assassins strike with physical weapons,
and many burglars and spies use [[thieves' tools]] to
infiltrate secure locations. In contrast, a soulknife strikes and infiltrates with the mind, cutting
through barriers both physical and psychic. These
rogues discover [[psionic|psionics]] power within themselves
and channel it to do their roguish work.
Soulknives can manifest their psionic power as shimmering blades of psychic energy. These mind blades can be thrown, honing in on their target even behind cover. They can also weave a veil of psychic static to mask their presence, and communicate telepathically with their allies.
While wearing these iron studs, the user can hear nothing at all.
The South Circle is the northernmost latitude in the Southern Hemisphere at which the sun can remain continuously above the horizon for 24 hours during the [[Zarantyr|Khorvaire calendar]] equinox (or below the horizon during the [[Lharvion|Khorvaire calendar]] equinox).
''Population:'' Mostly [[Karrnath]]i [[human]]s.<br/>
''Character:'' Paranoid and dangerous.<br/>
''Businesses:'' Small market stalls, cottage industries, laborers for other districts.<br/>
''Key Personalities:'' [[Berrinessa]], [[Drago Thul]], [[Gaulronak]], [[Harysh]], and Captain [[Smargat]].<br/>
''Overseer:'' Lady [[Kirris Sel Shadra]].
//As you pass through the gates and enter [[Grindstone]], the air takes on
a different feel. People glower at you from doorways or shutter their
windows. Children stop playing their games, and only street vendors
look you in the eye. These people seem more taciturn than usual for
[[Karrn|Karrnath]]s, but why?//
//Citizens from other districts move quickly, as if eager to be away
from here. They seem a little fearful, and that gives the residents some
measure of pride.//
With only the [[Koronoo River]] between it and the jungle, Southwatch is exposed to the wilds. Over the centuries, the district’s older buildings have been dismantled to provide other districts with building material, and only fragments remain of the great wall that used to defend this stretch of the city’s southern face. Across the river, the [[Tents of Rushemé]] lie ready to trade with the city.
Southwatch is home to those not afraid to live on the edge, whether pariahs, poor people with no choice, or those who have dealings with [[giant]]s. Among these people are many settlers from [[Karrnath]]. The freedom to worship the [[Blood of Vol]] openly has drawn many [[Karrn|Karrnath]]s to the city, and the [[Last War]] sent its share of expatriates.
Justice here is rough, enforced by the [[Swords of Karrn]] under the leadership of [[Drago Thul]]. If the [[Storm Lords]] think they need to intervene, they are more likely to send in House [[Deneith]] mercenaries than the [[Stormreach Guard]], which would be outmatched by the Swords.
!! Wards and Noteworthy Locations
* [[Grindstone]]
** the [[Black Freighter]]
** the [[Temple of Vol]]
* [[Summerfield]]
** the [[Ship's Cat]]
** the [[Thrifty Traveler]]
* the [[Tents of Rushemé]]
!! Adventure Hooks
* Something is stirring up the [[giant]]s at the [[Tents of Rushemé]]. They have thrown up a wooden palisade around their camp, and loud arguments can be heard from behind it. The arguments involve a new tribe that came out of the jungle a few days ago with a carved icon. Understandably nervous, the [[Storm Lords]] want to send someone into the camp to ascertain what is going on and to defuse the situation if possible.
* The [[Swords of Karrn]] have gone too far and have executed a member of the [[Stormreach Guard]], openly defying the [[Storm Lords]]. An attempt by the guards to restore order ended with the Swords routing them. In addition to turning to House [[Deneith]] for help, the Storm Lords seek adventurers to help restore order in the ward.
* In [[Grindstone]], the remnants of the city wall are riddled with tunnels and chambers that descend into the earth. Some show signs of a catastrophe in the past, a force that destroyed the wall from underground. A recent mudslide has revealed a deeper set of tunnels. Perhaps they hold the answer to what happened.
!! Overheard in Southwatch
//“You think you get any say what goes on in [[Grindstone]]?
We get to say what happens in Grindstone, nobody else,
just us. Now, we’re going to dock a finger to remind
you. Every time you look at the stump, remember who’s
really in charge.”//
//“It’s not too scary living near those great big lummoxes. Some nights, special nights I guess, just as the sun sets, they sing in their own language. The sound moves right through you—so deep but so beautiful.”//
//“Have you seen my cat? He’s a tabby tomcat, mackerel
colored. Probably run off to the [[Ship's Cat]] again.
Anyone would think he belonged to that [[shifter]] rather than me! What’s the use of a genuine ship’s cat getting fat and lazy on table scraps in an inn, I ask you?”//
Many [[dragon]]s who follow the [[Thir]] faith seek to emulate one of the [[Sovereigns|Sovereign Host]]. By embodying a Sovereign in life, a [[dragon]] hopes to ascend and assume this role after death.
Pursuing a Sovereign archetype is a lifelong goal,
and it is reflected in a dragon’s behavior and outlook on
life. Dragons are still individuals; one [[loredrake]] might be dry and serious, while another is cheerfully manic. But both are utterly dedicated to the pursuit of knowledge. As such, the choice of a Sovereign archetype should provide a DM with a thumbnail sketch of a dragon’s motivations and personality.
<<list-links-article "[tag{!!title}sort[title]]">>
!! The Traveler
No Sovereign archetype is associated with the [[Traveler]]. The [[dragon]]s maintain that this role has its roots in all [[Sovereign|Sovereign Host]] archetypes. They believe that fortune, invention, magic, and war are all aspects of this force of change, and all paths can lead to ascension to this role.
This viscous, milky-white substance can form a permanent adhesive bond between any two objects. It must be stored in a jar or flask that has been coated inside with [[oil of slipperiness]]. When found, a container contains <<dr "1d6 + 1">> ounces.
One ounce of the glue can cover a 1-foot square surface. The glue takes 1 minute to set. Once it has done so, the bond it creates can be broken only by the application of [[universal solvent]], or with a [[wish]] spell.
* The Sovereigns are with us at all times. [[Onatar]] stands at every forge, and [[Dol Dorn]] is with you whenever blades are drawn.
* The Sovereigns shape the world. They offer us guidance and strength, but we must learn to listen.
* Honor every Sovereign in their place and time. If you hear one voice clearly, embrace their path.
As a follower of the Sovereign Host, you believe that the hand of the Sovereigns can be seen in all things. What others take to be intuition or instinct, you see as the voice of the Sovereigns offering guidance. You don't need absolute proof; the fact of a bountiful harvest is evidence of [[Arawai]]'s benevolence.
The pantheon of the Sovereign Host embodies all that
is good in the world. The people of [[Khorvaire]] have followed the Sovereigns for thousands of years, and everyone knows the names of the Sovereigns and the [[Dark Six]]. Even people who aren't devout might still swear by
the Sovereigns or offer a prayer in a moment of crisis.
The Sovereign Host is wondrously diverse. Variations
and subsects of the faith thrive, and temples are only
loosely aligned. In a small community, a skilled smith
might double as the priest because people believe he's
close to [[Onatar]]. A midwife might symbolically speak for
[[Arawai]] and [[Boldrei]]. Typically, the faithful are united by
their shared beliefs; no central authority seeks to enforce a singular creed.
As a Vassal—a follower of the Sovereign Host—you
might feel connection to a particular Sovereign, but still
show reverence to each. Your background can influence
your particular interpretation of the Sovereigns—the
[[Talenta|Talenta Plains]] [[halfling]]s consider the Sovereigns part of a pantheon of spirits, while some [[Karrn|Karrnath]]s honor only the Sovereigns of war—but any character can be a Vassal.
!! Sovereigns
These common names and attributes describe the nine
Sovereigns as they are worshiped in Khorvaire:
* [[Arawai]] is the Sovereign of Life and Love.
* [[Aureon]] is the Sovereign of Law and Lore.
* [[Balinor]] is the Sovereign of Horn and Hunt.
* [[Boldrei]] is the Sovereign of Hall and Hearth.
* [[Dol Arrah]] is the Sovereign of Sun and Sacrifice.
* [[Dol Dorn]] is the Sovereign of Strength and Steel.
* [[Kol Korran]] is the Sovereign of World and Wealth.
* [[Olladra]] is the Sovereign of Feast and Fortune.
* [[Onatar]] is the Sovereign of Fire and Forge.
!! Symbol
The Octagram is the symbol of the Host as a whole. A
Sovereign priest either carries a metal Octagram holy
symbol or holds a staff tipped with the icon. Priests
dedicated to a particular god also display their deity's
symbol, and Vassals carry tokens with the symbols of
the Sovereigns whose favor they seek. There are eight
points in the symbol for eight Sovereigns; the ninth Sovereign ([[Aureon]]) is represented by the Octagram itself.
!! Rites and Customs
Formal prayers to the Sovereigns usually involve song.
Specific songs invoke each Sovereign and seek their
favor, appreciate the blessings received, and recognize
the presence of a Sovereign. Celebrants sing the songs
of [[Boldrei]] and [[Aureon]] at weddings, and soldiers sing
[[Dol Dorn]]'s marching songs on the move and [[Dol Arrah]]'s
hymns on the dawn before a battle.
In truth, the Sovereigns are ubiquitous
in the [[Five Nations]]. When
you go into a courtroom,
you stand on an Eye
of [[Aureon]]. Standard
marriage ceremonies
invoke [[Boldrei]]. Many people
aren't devoted Vassals and don't
actually believe the Sovereigns are
guiding their every action. But even
such pragmatists recall the names of each
Sovereign, know many of their songs, and
will celebrate [[Wildnight]] or [[Boldrei's Feast]]. By and large, if you live in the
[[Five Nations]], it's assumed you're a
Vassal unless you specifically say
you're not.
!! Temples
Sovereign shrines arise where people feel the deities
are close, such as a library for [[Aureon]] or a smithy for
[[Onatar]]. The rites of [[Boldrei]] or [[Arawai]] typically occur in
the wild, and a tavern could serve as a shrine to Olladra.
The shrines can take any form, but they prominently display the symbol of the particular Sovereign.
Temples of the Sovereign Host are made of stone and
have eight doors. The walls depict images of the Sovereigns, with the icon of Aureon over the altar and the Octagram engraved on the floor.
!! The Power of Divinity
The [[giant]]s of [[Xen'drik]], in the practice of their [[Rushemé]] faith, raised temples
to "Ouralon Lawbringer" long before
humanity embraced [[Aureon]], the
Sovereign of Law and Lore. Hunters
in [[Aundair]] give thanks to [[Balinor]], but
[[orc]]s in the [[Shadow Marches]] invoke
"Baalkan the Beastlord", while the [[Talenta|Talenta Plains]] [[halfling]]s tell stories of clever "Bally-Nur".
Though scholars debate the
reason why, most agree that the more
similar a tradition is to an archetypal
Sovereign, the easier it is to draw
[[divine power|divine magic]] from that faith. A culture
that invokes a deity of the hunt is more
likely to produce [[cleric]]s and [[paladin]]s than
a culture that worships a giant salmon of the
same name—and if the deity's name is similar
to “Balinor,” the connection to divine magic will be
easier still. Vassals sages assert that this proves the
existence of the Sovereigns, while skeptics say it could simply
be a numbers game—it's easier to draw power from a shared
belief, and belief in the Sovereigns has reached critical mass.
!! Paths of the Faith
The Sovereigns are worshiped in many different configurations and forms. A particular community could be devoted to a single Sovereign, or it could present a Sovereign and member of the [[Dark Six]] as being allied forces (as seen with the [[Restful Watch]]). Because of this diversity, Vassal priests are rarely concerned
with heresy. Those who follow the [[Pyrinean Creed]] may attempt
to correct what they see as flawed beliefs, but ultimately, most
just smile at the ignorance of the Marcher [[orc]], content in the
knowledge that they know the proper names of the Sovereigns.
This openness is also reflected in Vassal interactions with the Church of the [[Silver Flame]]. The [[Pyrinean Creed]] asserts that the Sovereigns defeated the [[overlord]]s at the dawn of time; if the Silver Flame is what keeps the overlords bound, presumably the Sovereigns created it. So there's no inherent conflict; rather, a Vassal will simply shrug and say, "But why do you worship a cage?"
A few of the best-known Sovereign Host sects are below.
* the [[Pyrinean Creed]]
* the [[Church of the Wyrm Ascendant]]
* the [[Restful Watch]]
* the [[Three Faces]]
''District Type:'' Temple district <br/>
''Buildings:'' Temples (10: each of the [[Sovereign Host]]
and the [[Silver Flame]]), shrines ([[Aureon]], [[Dol Arrah]],
[[Onatar]], The [[Traveler]], The [[Undying Court]]), upscale
lodging (5), average lodging (15), upscale food (15),
average food (30), exotic trades (20), upscale trades (20), average trades (40), upscale services (40), average services (100), upscale residences (20), average
residences (80)<br/>
''First Impression:'' This district regales all things
holy, or at least their representation in art and architecture. Statues, paintings, and mosaics of deities and
saints are everywhere, and great temples stand out
among the lesser buildings.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Tradefair]] (northwest); [[Ambassador Towers]] (west); [[Sword Point]] (southwest); [[Oakbridge]] (bridge, north); [[Holdfast]] (bridge, northeast); [[Boldrei's Hearth]] (below); [[Korranath]] (Korran-Thiven neighborhood) (above)
The Central Plateau's temple district houses some of
[[Sharn]]'s greatest monuments of faith. Unfortunately,
too often these monuments seem cold as the faith
that inspired them evaporated long ago, replaced by
ritual or even a deep corruption.
!! Noteworthy Locations
* [[Cathedral of the Cleansing Flame]]. The central temple of the Church of the [[Silver Flame]] serves both as a templar garrison and the site of grand rituals and celebrations.
* [[Pavilion of the Host]]. The center for worship of the [[Sovereign Host]] is a grand open tower surrounded by nine temples, each dedicated to one of the Sovereigns.
The spellcaster touches a living creature on the verge of death. That creature is stabilized.
The //spark// is a small oval stone engraved with [[Fernia]]n glyphs. While you are holding the //spark//, you can touch a candle, torch, small campfire, or similar object, and instantly ignite it.
You grant the semblance of life and intelligence to a corpse of your choice within 10 feet, allowing it to answer the questions you pose. The corpse must still have a mouth and can't be [[undead]]. The spell fails if the corpse was the target of this spell within the last 10 days.
Until the spell ends (after up to 10 minutes), you can ask the corpse up to five questions. The corpse knows only what it knew in life, including the languages it knew. Answers are usually brief, cryptic, or repetitive, and the corpse is under no compulsion to offer a truthful answer if you are hostile to it or it recognizes you as an enemy. This spell doesn't return the creature's soul to its body, only its animating spirit. Thus, the corpse can't learn new information, doesn't comprehend anything that has happened since it died, and can't speculate about future events.
The Speakers Guild of House [[Sivis]] maintains
and operates the network of [[message station|speaking stone]]s and
provides [[sending]] ritual services. It also oversees
a number of professions tied to the spoken word.
The guild trains and licenses barristers, mediators,
heralds, interpreters, and other similar professions.
Although some of these services overlap with those of
House [[Phiarlan]], as a rule the Speakers Guild handles
practical matters of communication, while House
Phiarlan focuses on artistic endeavors.
Operators of [[speaking stone]]s often use a condensed language called Stonespeech which was designed by the [[gnome]]s of [[Tasker's Dream]]. It is a difficult language to master; however, when someone who knows Stonespeech uses [[sending]] or any other power or ritual that carries a limited word count, they can triple the length of the message by using Stonespeech to communicate it. (The recipient of the message must also know Stonespeech for the communication to succeed.) The language is a trade
secret of House [[Sivis]], and it would be quite unusual for
an outsider to know it.
The key to long-distance, virtually instantaneous communication across [[Khorvaire]] is House [[Sivis]]'s network of message stations. Each station contains at least one speaking stone, which is carved from a Siberys [[dragonshard]] and inscribed with arcane symbols that uniquely identify it. If you're a [[gnome]] with the [[Mark of Scribing]], you can touch the stone and send a short message from it (about 25 words or less; or, if compressed, up to 50 words; as the [[sending]] spell). The target is any other speaking stone whose location or unique sequence of symbols you know. A creature within 5 feet of the stone hears the message as if they were the target.
In a Sivis message station, a gnome is always on duty by the speaking stone, listening for messages that might come in and transcribing them for delivery to their intended recipients.
The //spear of the desert winds// is one of the [[destiny arms]]—a mighty weapon of the [[giant]]s forged during the war against the [[quori]]. This spear once belonged to Axa’tasamat, a giant chieftain who was said to have wielded the power of the sun.
This short spear has a shaft of sandstone
inscribed with flowing lines. Three iron bands run along
its length, and it is capped by a razor-sharp obsidian head.
The wielder of this spear can cause it to ignite at will. They can also command a gust of burning wind to issue from the spear, a magical effect which can also potentially exorcise a [[quori]] from its possessed host. When its searing wind power is used, the spearhead glows bright red, burning with an inner fire.
Fashioned in the style of a whaling spear, this long, barbed weapon is made from bone and heavy, yet pliant, ash wood. Its point is lined with decorative engravings of fish, clam shells, and waves. While you carry this spear, you receive advantage on any attempts to swim or to acquire food via fishing. When set on the ground, the spear always spins to point west.
When thrown in a westerly direction, the spear does a significant amount of additional cold damage to any creature it strikes.
Speartip is a small island in the [[Lhazaar Principalities]], located between [[Ninebay Island]] and [[Greentarn]].
While wearing these glasses, you can choose to perfectly recall anything you have seen during a 5-minute period within the past month.
Once you have used this property, it can't be used again until the next dawn.
A spectator is a lesser [[beholder]] that can be summoned directly from [[Xoriat]] by a magical ritual of the [[Vigilant Eye]], the components of which include four beholder eyestalks that are consumed by the ritual's magic. Appropriately, a spectator has four eyestalks, two on each side of the wide eye at the center of its four-foot diameter body.
Like any beholder, a spectator views itself as the epitome of its kind, and it has an intense hatred of other spectators. If two spectators encounter one another, they almost always fight to the death.
A specter is the angry, unfettered spirit of a [[humanoid]] that has been prevented from passing to [[Dolurrh]]. Specters no longer possess connections to who or what they were, yet are condemned to walk the world forever. Some are spawned when dark magic or the touch of a [[wraith]] rips a soul from a living body.
//''Dwellers in Darkness.''// Sunlight represents a source of life that no specter can ever hope to douse, and it pains them. When night falls, they leave their final resting places in search of living creatures to slay, knowing that few weapons can harm them in return. At the first light of dawn, they retreat back into the darkness, where they remain until night falls again.
A spell is a discrete magical effect (typically [[arcane|arcane magic]] in nature), a single shaping of the magical energies that suffuse the multiverse into a specific, limited expression. In casting a spell, a character carefully plucks at the invisible strands of raw magic suffusing the world, pins them in place in a particular pattern, sets them vibrating in a specific way, and then releases them to unleash the desired effect—in most cases, all in the span of seconds.
Spells can be versatile tools, weapons, or protective wards. They can deal damage or undo it, impose or remove conditions, drain life energy away, and restore life to the dead.
Uncounted thousands of spells have been created over the course of the multiverse's history, and many of them are long forgotten. Some might yet lie recorded in crumbling spellbooks hidden in ancient ruins or trapped in the minds of dead gods. Or they might someday be reinvented by a character who has amassed enough power and wisdom to do so.
!! Schools of Magic
{{||spell school}}
!! Spell Tiers
{{||spell tier}}
!!
For a complete list of spells, check <<showspells "Find Spells">>.
Academies of magic group [[arcane|arcane magic]] [[spell]]s into eight categories called schools of magic, or "{{!!schoolname}}s". Each {{!!spellname}} cast by a [[wizard]] or [[magewright]] falls into one of these categories.
<<list-links-article "[tag[spell school]sort[title]]">>
Some arcane spellcasters focus on only a few schools of magic; for example, [[eldritch knight]]s typically cast only [[abjuration]] and [[evocation]] spells.
However, not all magic is [[arcane|arcane magic]], and magic that is [[divine|divine magic]], [[primal|primal magic]], or [[psionic|psionics]] in nature may not even neatly fit into the category of "spell". But for spell-like phenomena in these categories, we can structure them in much the same way as arcane spells, with a "spell school" tag corresponding to their power source.
This device emanates an antimagic field (same effects as
the [[antimagic field]] spell) in a radius of 1 to 3 miles. The
field can be activated or deactivated with a
touch by its controller.
The form that the device takes depends on the nature
of its creator. The [[Ashbound]] [[druid]]s despise unnatural
magic, so a spell sink created by them might be a living
artifact, such as a twisted tree that consumes the magical energy around it. Conversely, a spell sink created by
a mad [[artificer]] might be a massive vessel composed of
[[dragonshard]]s and exotic metals.
A variant device called the //spell siphon// not only neutralizes magic but also absorbs all magical energy in the
area, storing that power for a cataclysmic effect.
A {{!!spellname}}'s tier is a general indicator of how powerful and rare it is.
# ''Cantrip.'' A cantrip is a quick and simple spell that can be performed without a significant expenditure of energy. Ex: [[prestidigitation]], [[fire bolt]], [[mage hand]], [[light]].
# ''Common Spell.'' These spells require more effort or time to cast than cantrips. The people of Khorvaire are used to dealing with tools and services that mimic cantrips or common spells. Ex: [[knock]], [[alarm]], [[burning hands]], [[floating disk]], [[zone of truth]]. Common spells require the expenditure of 1 "spellcasting [[stress]]" to cast.
# ''Rare Spell.'' These spells are exceptionally potent, but aren't part of everyday life, and the typical commoner doesn't expect to run into them. Ex: [[fireball]], [[sending]], [[conjure elemental]], [[raise dead]], [[cloudkill]]. Rare spells require the caster to expend 2 stress.
# ''Legendary Spell''. These are magical incantations of mythical proportions, usually the product of more advanced civilizations—the [[dragon]]s of [[Argonnessen]], the [[elves|elf]] of [[Aerenal]], the ancient [[giant]]s of [[Xen'drik]]. Ex: [[eyebite]], [[plane shift]], [[simulacrum]], [[antimagic field]]. Legendary spells cost 3 stress to cast.
# ''Mythical Spell.'' Spells of never-before-seen power over the fabric of reality. Ex: [[wish]], [[true resurrection]], [[imprisonment]]. Mythical spells cost 4 stress to cast.
Player characters who are able to cast spells (usually by taking a [[talent]]) generally start with only the capability to cast cantrips and common-tier spells. With increasing skill, they can learn how to cast rare, legendary, and perhaps even mythical-tier spells. They may also obtain extra [[stress]] boxes that can only be used for spellcasting.
If a [[magic item]] grants a character the ability to cast a spell, but places a daily limit to the number of times the spell can be cast, that spell does ''not'' cost any stress to cast. The energy needed to cast the spell is stored (and slowly recharged) within the item itself. If there is no limit, that means the spell is simply added to your spell list and you must expend your own energy to cast it.
If an item grants a non-spellcaster access to a spell, they may still cast it using that item, but at a single disadvantage.
These scarab-like [[symbiont]]s, bred by the [[daelkyr]] [[Valaara]],
have brilliant, iridescent shells. To attune to a spellburrow,
you must place it on your head; in the process of attunement,
it digs in and burrows through your skull, establishing
a psychic connection with you. While it lacks any sort
of human consciousness, it possesses a strange alien
sentience that responds to your desires. There are tales
of rarer spellburrows that possess greater knowledge and
sentience; such stories sometimes end with the spellburrow
consuming the brain of the [[wizard]] who pushed it too far—but these are surely just fanciful stories!
A spellburrow knows one cantrip and two common-tier [[spell]]s of the DM's choice, and you can cast these spells as if you know them.
While holding this shield, you have a large advantage to resist or avoid [[spell]]s.
This polished Eberron [[dragonshard]] fits in the hand and stores information similar to a book. The shard can hold the equivalent of one book that's no more than 320 pages long. A shard can be created blank or already filled with information. When the shard is created, the creator can set a passphrase that must be spoken to access the information stored within.
While holding the shard, you can close your eyes and open your mind to the shard, seeing its content in your mind. Reading the text or scribing new text on blank "pages" in the shard requires concentration and takes the same amount of time it takes you to read and write normally. Thinking of a particular phrase or topic draws you to the first section in the shard that addresses it.
1: cantrip
2: common
3: rare
4: legendary
5: mythical
''[[Spell Tier|spell tier]]: ''''<$transclude tiddler="SpellTierNames" index={{!!tier}}/>''
In sacred isolation, a sphinx guards the secrets and treasures of the ancients. As it calmly regards each new party that comes before it, the bones of supplicants and quest seekers that failed to pass its tests lie scattered around its lair. Its great wings sweep along its flanks, its tawny leonine body rippling with muscle and possessed of forepaws powerful enough to tear a humanoid in half.
Sphinxes test the worth of those who seek the treasures of the first [[ages|era]], whether forgotten secrets or mighty spells, artifacts or magical gateways. Creatures that choose to face a sphinx's test are bound to that test unto death, and only those worthy will survive it. The rest the sphinx destroys.
!! Androsphinx
An androsphinx bears the head of a masculine [[humanoid]] on its lion's body. Outwardly gruff and downcast, it often begins conversations with insults or negative observations. Beneath this gruff exterior, however, an androsphinx has a noble heart. It has no wish to lie or deceive, but it doesn't give away information readily, choosing its words as wisely as it guards its secrets.
An androsphinx tests the courage and valor of supplicants, not only by forcing them to complete quests but also with its terrible roar, which echoes for miles as it terrifies and deafens nearby creatures. Those who pass its tests may be rewarded with a heroes' feast.
!! Gynosphinx
A gynosphinx bears the head of a feminine [[humanoid]]. Many have the regal countenances of worldly queens, but some are marked with wild, leonine features. A gynosphinx's eyes see beyond the present time and place, and penetrate veils of invisibility and magic. Supplicants who look deep into those eyes might find themselves magically displaced, banished to some far flung plane where a difficult trial awaits them.
Gynosphinxes are virtual libraries of knowledge and lore. They ask riddles and present puzzles to test the wit of supplicants that come to learn their secrets. Some are willing to bargain with such supplicants for treasure or service.
!! Mysteries of the Sphinx
Sphinxes are enigmatic and inscrutable. For all their cryptic insights and challenges, in some ways the greatest riddle of the sphinx is the sphinx itself. Where do they come from? What is the source of their knowledge, and most of all, what is their motivation? In most tales a sphinx is found guarding some arcane site or artifact, only sharing its treasure or its knowledge to those who can pass its test. Why does it do this?
No sphinx will answer these questions. No power on [[Eberron]] can read the mind of a sphinx, and [[divination]]s shatter against their unknowable nature. And so the sages of Eberron are left to ponder the riddle, studying the clues that are available. The first and most popular theory about sphinxes was presented by the loremaster [[Dorius Alyre ir'Korran]]. In his //Codex of All Mysteries//, ir’Korran asserted that sphinxes are living embodiments of the [[Draconic Prophecy]]. Their oracular abilities are tied to the fact that they are manifestations //of// the Prophecy and innately know the paths of the future. They are bound to their duties and found in portentous locations because they are literally instruments of destiny, positioned to guide and challenge the people who will in turn shape history. They slip through time and space because they exist beyond it. Ir’Korran suggested that although they appear to be individuals, sphinxes are in fact all part of a greater entity, fingers on a hand too vast for mortals to see.
For centuries most scholars have supported the //Codex// theory. However, other theories have been presented; a team of [[Arcane Congress]] support the premise that sphinxes are creatures of [[Thelanis]]. Sphinxes aren’t instruments of //destiny//, but rather that they exist to //drive the plot//. Thelanis is the plane of stories, and its [[archfey]] often seem to enjoy seeing echoes of their stories in the world. Under this theory, the reason sphinxes show up at such dramatic times and locations is because the story needs them to—that they are some form of servants to the archfey, helping to guide the world in ways that echo the story of their masters. However, opponents point out that sphinxes appear not to be [[fey]] using any known planar taxonomy.
In his paper “//The Sphinx in the Library//”, Professor [[Cord Ennis]] of [[Morgrave University]] observed that while they often appear to be bound to some sort of duty, sphinxes seem to have personalities and even a desire to learn. The most well-documented sphinx of the modern age, [[Flamewind]], resides at [[Morgrave University]] and often spends her time reading; she has been known to attend parties and theatrical events. In addition, sphinxes are not [[celestial]]s, [[fiend]]s, or [[fey]]. This suggests that they are creatures of flesh and blood, rather than [[immortal]] incarnations. Ennis made the case that sphinxes are mortal creatures, that they can study and learn, that they have more personality than the typical celestial. But as critics were quick to point out, no one has ever discovered any evidence of a civilization of sphinxes, or even accounts of ever encountering more than one at a time.
[[Ennis|Cord Ennis]] countered that the reason there’s no evidence of any sphinx civilization is because //they aren’t from this time//. According to Ennis’s theory, the idea that sphinxes can move through time helps to explain both their seemingly oracular abilities and their interest in seeming cryptic actions; that their enigmatic behavior shapes future events in ways we don’t see, but they do. Their civilization could be from the distant future, or perhaps more likely, from the distant past, in a lost age pre-dating the [[Age of Demons]], wiped out by the rise of the [[overlord]]s.
If sphinxes are indeed time travelers, perhaps they use their lairs as [[eldritch machine]]s powered by the energies of [[Xoriat]] to step outside the normal flow of time. But the mystery of motive remains. Are the sphinxes simply tourists through time? Or are they setting wheels in motion to establish a utopian future to which they might transport their doomed civilization?
Until the spell ends up to one hour later, one willing creature you touch gains the ability to move up, down, and across vertical surfaces and upside down along ceilings, while leaving its hands free.
The [[deathless]] state isn't the only way to experience eternity. Most
honored dead of [[Aerenal]] are preserved in spirit idols that preserve
the soul from the dissolution of [[Dolurrh]]. This stone bust of a
dead elf holds relics of their corpse (bone shards, a lock of hair)
embedded within it. While dormant, the spirit within the idol is unaware of the outside world or the passage of time, existing in an ongoing trance—a dreamlike existence built from memories and personal experiences. A spirit idol can be awakened with the [[speak with dead]] [[spell]], though some remain conscious indefinitely and can be found serving as tutors, provosts, and judges. Hundreds of spirit idols are stored in the [[Well of Memories]] in [[Shae Mordai]], but they can be found in every city in [[Aerenal]].
Not all [[Aereni]] want to become [[deathless]]—many consider the
spirit idol the superior state. The deathless are sworn to protect
and serve the living, and must deal with the ongoing inconvenience
of physical existence; within a spirit idol, an [[elf]] can experience
eternal peace in a dream of their own making. For many Aereni,
their greatest goal in life is to gather the memories and ideas that
will be their companions in their eternal trance after death.
While there are more spirit idols than there are deathless, not
all dead are preserved this way. Spirit idols are reserved for those
who have proven worthy of eternal existence. The common dead
are embalmed after death and interred in the vast catacombs
below the land, along with a record of their life. Only those who
have committed truly heinous crimes—such as grave robbers—are denied memory; such criminals are burned after death, their ashes scattered in the oceans, with no records kept of their lives.
A spirit of the land is a powerful [[elemental]] force of nature tied to [[Lamannia]] that lies dormant until the area it guards is threatened. Each assumes dominion over a particular bounded geographical area, such as a small valley, a river, or a desert, existing as a living part of the land. [[Ahdryatmin]] is one such spirit, dwelling in a fertile valley in the heart of [[Adar]].
In its natural form, a spirit of the land is an invisible and
intangible force. It appears as a shapeless mist to creatures
that can see invisible things. When it wishes to manifest a
physical form, a spirit of the land can assume the shape of a
humanoid, animal, or elemental of its own size composed of
one particular element—air, earth, fire, or water.
Spirits of the land are always aware of what transpires in
their territories, and they punish all who would ravage or
defile them. They get along well with [[druid]]s as well as with
races that respect the land.
* We are the spiritual anchors of the greatest champions of our people. Through our faith, we keep their spirits from being lost to oblivion.
* You have been chosen by a hero. Live your life as they lived theirs, letting their instincts guide you.
* Treasure our past and the stories of our people. You are the vessel through which new legends will arise.
As a [[Tairnadal]] [[elf]] of [[Valenar]], you were raised on the legends of your people, on tales of champions who battled mighty [[dragon]]s and armies of [[giant]]s. When you came of age, the Keepers of the Past read the signs to determine which of these ancestors chose you to be their vessel. Since that day, it has been your duty to emulate
your patron ancestor. If you're a [[wizard]], you've studied
the spells created by your ancestor. If you're a warrior,
you've practiced their specific martial techniques. When
you trance, you relive their greatest battles. But these
studies are just preparation. Now it's your sacred duty
to be a revenant of your ancestor: to live your life as they
did and allow the champion to walk the world again
through you.
The bond between ancestor and living [[elf]] is holy. Your
ancestor doesn't speak to you or control your actions.
But as a [[Tairnadal]], you believe that they are with you—that your instincts and your reflexes are the ancestor
moving through you, telling you what to do. The closer you follow the path, the more guidance they provide,
helping you create new legends.
The folk of [[Khorvaire]] see your people as mercenaries and conquerors. But you don't care about gold or
personal glory. All you want is to let your ancestors
live again, and that means you need to perform deeds
worthy of champions. That drives you now: seeking out
adventures that will add to the legends of your patron.
You and your GM should develop the identity of your
ancestor. How did they fight? What were some of their
legendary deeds? Did they have a distinctive weapon
or favor a particular kind of magic? Equally important
is your relationship with the ancestor. Are you proud of
your ancestor and excited to live as they did, or is your
duty a burden?
Since the rise of [[Valenar]], [[half-elves|half-elf]] and even some
[[human]]s have sought to be inducted into the faith. But so
far the Keepers of the Past have declared that only [[elves|elf]]
can be revenants. Beyond the blood connection to the
ancestor, an elf communes with their ancestor during
trance, and half-elves can't enter this state. The Keepers say it can't be done, but perhaps you'll be the one to
prove them wrong.
!! Symbol
The primary symbol of the faith is the zaelshin, an amulet that bears the seal of your patron ancestor and worn either as a brooch or embedded in the forehead of a
helmet. A devotee of the faith typically wears a veil—the
zaelta, or "spirit mask"—over their lower face while in
battle or performing rituals, so an opponent sees the
zaelshin rather than the living [[elf]].
The zaelshin is the symbol of the faith, but the holy
symbol used by a [[cleric]] is an object associated with their
personal ancestor.
!! Rites
Services revolve around the stories of the ancestors,
commemorating their glorious deeds, as well as ritual
exercises and trance meditation. While resting, an elf
spends four hours in trance. The faithful spend this time
in communion with their ancestor, experiencing their
memories and contemplating their deeds.
!! Temples
The nomadic [[Tairnadal]] elves don't raise permanent temples; a Keeper of the Past marks a circle on the ground with their blade, and the space within becomes sanctified for the service. The one major exception is the [[Temple of the Ages]] in [[Taer Valaestas]].
Spring Harbor is a bay off the coast of mainland [[Lhazaar Principalities]], near the town of [[Tantamar]]. It connects to the [[Eel Bay]].
In secret groves and shaded glens, tiny sprites with dragonfly wings flutter. For all their [[fey]] splendor, however, sprites lack warmth and compassion. They are aggressive and hardy warriors, taking severe measures to ward strangers away from their homes. Interlopers that come too close have their moral character judged, then are put to sleep or frightened off.
//''Forest Protectors.''// Sprites build little villages in the boughs of trees and willing [[treant]]s, in verdant glades brightened by moss, wild flowers, and toadstools. Wild nature thrives, and the sprites allow no trespassers. When intruders are spotted, the sprites lead them astray with ominous rustling from the bushes and distant snapping twigs. Creatures foolish enough to persist in intruding on a sprite's territory are stung with poisoned arrows and lulled into a senseless sleep. While they slumber, the sprites make good their escape, retreating to an even more secluded area of the forest.
//''Heart Seers.''// Sprites can sense whether a creature is good or evil by the sound and feeling of its beating heart. Weighing the balance of a creature's past actions, a sprite can tell whether its heart beats rapidly in love or flags in sorrow, or whether it is darkened by hate or greed. The sprite's power to perceive the heart always shows the truth, because the heart can't lie.
//''Poison Brewers.''// In their forest domains, sprites brew toxins, unguents, antidotes, and [[poison]]s, including the sleeping poison with which they coat their arrows. They venture far into the woods to harvest rare flowers, mosses, and fungi, sometimes crossing dangerous territory to do so. If desperate, sprites even steal their ingredients from the gardens of [[hag]]s.
//''Good-Hearted.''// Because they are judges of the heart and favor good creatures, sprites oppose the will of evil [[fey]] and pledge to thwart evil [[archfey]] at every turn. If they encounter adventurers on a quest to rid their forest of an evil fey creature or [[fiend]]ish menace, they will pledge their support and even come to their aid when the adventurers least expect it.
Unlike [[pixie]]s, sprites rarely indulge in frivolous merriment and fun. They are firm warriors, protectors, and judges, and their stern bent causes other [[fey]] to consider them overly dour and serious. However, fey that respect the sprites' territory find them staunch allies in times of trouble.
The Spur is a small cluster of mountains on the [[Nulakesh]] peninsula in [[Riedra]], just east of the [[Forest of Lurking Shadows]].
Objects viewed through a spyglass are magnified to twice their size.
If you place an object weighing no more than 1 pound (such as a shard of crystal, an egg, or a stone) above the tip of the staff while holding it, the object floats an inch from the staff's tip and remains there until it is removed or until the staff is no longer in your possession. The staff can have up to three such objects floating over its tip at any given time. While holding the staff, you can make one or more of the objects slowly spin or turn in place.
This wooden staff is decorated with bird carvings. It holds 10 charges, which recharge daily. While holding it, you can expend 1 charge from the staff and cause it to create one of the following sounds out to a range of 60 feet: a finch's chirp, a raven's caw, a duck's quack, a chicken's cluck, a goose's book, a loon's call, a turkey's gobble, a seagull's cry, an owl's hoot, or an eagle's shriek.
If a spellcaster is attuned to this staff, they can cast [[charm]], [[command]], or [[comprehend languages]] using their own power.
In addition, the wielder gains advantage to resist [[enchantment]] spells cast on them. On a [[critical|full success]], the spell is reflected back onto the caster as if the staff wielder had cast the spell.
This slender, hollow quarterstaff is made of glass yet is as strong as oak. It weighs 3 pounds. You must be a spellcaster and attune to the staff to gain its benefits and cast its spells.
While holding the staff, you gain a small amount of passive protection against physical damage. In addition, you can cast [[mage armor]] and [[shield]] using your own power.
This wooden staff holds 10 charges, which recharge daily. While holding it, you can expend 1 charge from the staff and cause a flower to sprout from a patch of earth or soil within 5 feet of you, or from the staff itself. Unless you choose a specific kind of flower, the staff creates a mild-scented daisy. The flower is harmless and nonmagical, and it grows or withers as a normal flower would.
This staff can be wielded as a magic quarterstaff.
When you physically attack with this staff, you can [[push yourself]] to deal extra force damage to the target.
If you are a spellcaster, this staff allows you to cast the following spells using your own power: [[cone of cold]], [[fireball]], [[globe of invulnerability]], [[hold]], [[levitate]], [[lightning bolt]], [[magic missile]], [[ray of enfeeblement]], and [[wall of force]]. You also gain two additional spellcasting stress boxes.
You can choose to break the staff over your knee or against a solid surface, performing a retributive strike. The staff is destroyed and releases its magic in an explosion that expands to fill a 30-foot-radius sphere centered on it. You have a chance of instantly teleporting to a random [[plane]] of existence, avoiding the explosion.
While holding the staff, if you are a spellcaster, you can summon a cloud of swarming insects that you can control. This cloud persists for up to 10 minutes, and can have one of the following properties:
* Fills a 20-foot radius sphere, and consists of biting insects that can rapidly chew through anything in the area.
* Fills a 60-foot radius sphere, and consists of harmless but annoying flying insects that heavily obscure the area to all creatures except you.
You can use this staff twice per day before it needs to recharge. Overusing the staff may result in it being consumed by the summoned insects, destroying it.
A [[cleric]], [[druid]], or [[warlock]] can speak this staff's command word and make the head of the staff become that of an animate poisonous snake for 1 minute. The snake head can bite targets up to five feet away. By speaking the command word again, you return the staff to its normal inanimate form.
The snake head can be attacked while it is animate. If the head is incapacitated, the staff is destroyed. As long as it's not destroyed, the staff head recovers all damage when it reverts to its inanimate form.
The //staff of the magma falls// is one of the [[destiny arms]]—a mighty weapon of the [[giant]]s forged during the war against the [[quori]]. Created by the [[sorcerer]] Sharatazz,
the staff served as a powerful weapon against the invading quori, then later against renegade [[elves|elf]].
The staff is made from a shaft of pure
obsidian resembling a large dripping stalactite. Three
iron bands are placed along its length, and they appear
to have melted the obsidian where they touch it. Each of
these bands bears faintly glowing red symbols. The runes glow brightly when a possessed creature (such as an [[Inspired]]) comes within 100 feet, and begin to pulse with increasing frequency as the possessed creature draws nearer.
In addition to alerting the wielder to the presence of possessed creatures, the staff can also be used to channel powerful fire and earth magic, granting the wielder the ability to cast [[fireball]], [[wall of fire]], and [[conjure elemental]] (fire or earth only, or a group of [[magma mephit|mephit]]s). Both ends of the staff can be commanded to ignite in a fiery burst when used as a melee weapon.
A [[cleric]], [[druid]], or [[warlock]] can speak this staff's command word and throw the staff on the ground within 10 feet of them. The staff becomes a giant constrictor snake under their control. They can send mental commands to the snake as long as it is within 60 feet of them and they aren't incapacitated. By speaking the command word again, they return the staff to its normal form in a space formerly occupied by the snake.
If the snake is incapacitated, it dies and reverts to its staff form. The staff then shatters and is destroyed. If the snake reverts to staff form before being incapacitated, it recovers from all damage.
Creatures struck by this staff are afflicted with a magical withering that saps their strength and vigor for up to an hour.
''Sovereign:'' [[Balinor]]
Part [[wyrm of war]], part [[child of Eberron]], the stalker is a [[draconic|dragon]] [[Sovereign archetype]] who revels in the hunt and their own place in the natural world. Often encountered as ravagers searching for challenging prey, stalkers also serve as scouts in the armies of [[Argonnessen]] and as guardians of the wilds.
The Starfire Dragon offers a
steady diet of entertainment accompanied by exquisite meals. In this case, however, the entertainment clearly takes a back seat to the food. Trying to compete in a crowded market, the Starfire Dragon's
owner, Amman Todav ([[human]]), has hired excellent cooks, and the
restaurant's menu offerings reflect the trouble he
has gone to. Todav's choice in entertainers is less
discriminating, however; he lost a good portion of
his hearing fighting in the [[Last War]], and judges performers more on their looks than the quality of their
performances. On a good night, the entertainment
ranks with the best [[Middle Menthis]] has to offer.
But the Starfire Dragon is gaining a reputation for
showcasing a great number of beautiful women with
mediocre singing voices.
One of [[Upper Menthis]]'s four theaters, the Stargazer Theater is located
on the top of Kelsa Spire, open to the sky. A grassy
park surrounds the open-air amphitheater, allowing audience members to picnic on the lawn if they
prefer. Once confined to the summer months, its
performance season was extended to the whole year
thanks to the weather-controlling powers of House
[[Lyrandar]]. Now, audiences can enjoy the warmth
of a spring or summer day whenever they visit the
Stargazer. Its repertoire focuses on classics with
family appeal.
Starilaskur is a large city in [[Breland]], located near the shores of [[Lake Brey]] and the [[Brey River]]. The city's population has a higher percentage of devout Vassals of the [[Sovereign Host]] than most other Brelish cities. It is home to the Martial Temple of [[Dol Arrah]], an academy of war that specializes in honing the talents of Vassal [[cleric]]s and [[paladin]]s.
In 916 YK, during the peaceful festival of [[Sun's Blessing]], the armies of [[Thrane]] mounted a great assault against Starilaskur. Since that day, many [[Brelish|Breland]] curse Thrane and its dishonorable attack on this holiday.
The Starkwood is a forest in the northern mainland [[Lhazaar Principalities]].
The Starpeaks are a mountain chain in northern [[Aundair]], best known as the location of the Starpeaks Observatory.
!! Starpeaks Observatory
Located high in the mountains, the Starpeaks Observatory was constructed in [[512 YK|Modern Age]] by King Daroon of [[Galifar]]. Daroon became fascinated with the practice of
charting the moons and stars, especially with the idea
that these charts could provide signs and portents for the
future. He had the observatory built, but he died before
construction was completed.
The [[Arcane Congress]] recently claimed the Starpeaks Observatory. The complex had
been abandoned for centuries, and observers wonder
about the Arcane Congress’s sudden interest in the
ancient structure and its view of the heavens.
On the Day of [[Mourning]], a blast of arcane power obliterated [[Cyre]], leaving empty wasteland. Most Cyrans perished that day, including the patriarch of House [[Cannith]]: Baron Starrin d’Cannith, known as “the [[Gorgon|gorgon]]” for both his
intimidating manner and the symbol of his house. [[Whitehearth]]’s destruction alone claimed the life of not only the baron, but also many of the house’s prominent leaders and [[dragonmark]]ed heirs. Starrin’s named successor was his only son Norran, who died with his father in Cyre and left no children of his own.
When succession becomes murky, the elders of the
house interpret the will of the former baron and
choose a successor. However, with the ranks of the house
leadership decimated, no effective or fair vote could be
held. [[Cannith]] was paralyzed, with three heirs emerging to claim leadership: [[Merrix d'Cannith]], [[Jorlanna d'Cannith]], and [[Zorlan d'Cannith]]. Though each had a valid claim to the baron’s seat, a more problematic set of candidates would be hard to find.
Steel Maw is an [[ogre]] who was captured near [[Dar Qat]] and sold into slavery in the [[Red Ring]]. He is a new addition to the Sin Spear stable. His cruel stablemaster, a woman named Shalstri Griteye, had a giant steel mask with a razored maw riveted to the ogre’s skull. The poor beast is forcefed a mind-shredding narcotic called [[wrathweed|wrath]]. He no longer retains any sense of self beyond the fury that
incites him in the ring.
This loose affiliation of [[Io'lokari]] weaponsmiths and armorsmiths resembles many of the crafter and artisan enclaves of the [[Freeward]]. Its residents live in palatial second- and third-floor apartments above well-appointed workshops whose anvils ring from morning
to night.
Many of the city’s crafter enclaves open their homes to visitors with demonstrable skill in the same areas. In addition, the smiths here trade their services for foreign arms and armor they have not seen before (including weapons of [[Xen'drik]] and [[Sarlona]]). Like most smiths in the city, members of this enclave work only on magic armor and weapons.
Steeljack is the charismatic leader of the [[Iron Watch]] of [[Stormreach]]. He is a deadly
fighter with a gift for inspiring [[warforged]] and questioning the world around him. During the [[Last War]]
he served in the Brelish army alongside [[Smith]] under a commander
who despised the warforged, abusing his troops and
sacrificing them needlessly. After seeing one too many
of his comrades shattered on the battlefield, Steeljack
took his squad, commandeered a boat, and made
his way to [[Stormreach]]. In time [[Storm Lord|Storm Lords]] [[Paulo Omaren]], who was looking for a force to counter the [[Amanatus|Amanatu family]]’ hold on the [[Stormreach Guard]], contacted him, and so the [[Iron Watch]] was born. Steeljack feels
a debt to Omaren and intends to honor his commitment to Stormreach, but his ultimate interest lies in creating a haven for his people.
When looking through these spectacles, the constellations
in the night sky are outlined in white lines. While wearing
the spectacles, you have advantage when navigating using the stars.
Many in [[Stormreach]] who speak of the entity known as
Steppin’ Jaq think, or hope, that he is simply an urban
legend. The [[changeling]] Jaq heard the [[Calling|Cabal of Shadows]] at a very
early age and left behind a life in [[Khorvaire]] that he
can no longer remember. Now entirely devoted to the
Calling and quite mad, Jaq walks the streets and alleys
of Stormreach using his shapechanging
abilities to assume any of a dozen different identities.
One minute he is a [[Stormreach Guard]], the next a [[Bilge Rat|Bilge Rats]] enforcer. He even maintains separate identities among the sects, and it is likely that Jaq has no single
controlling personality anymore. The persona known as Steppin’ Jaq is the one that inspires the most fear. Hunting the alleys and shadows of the city at night, Jaq enjoys using [[spider climb]], [[invisibility]], and his rapier and shortbow to kill randomly for sport. Lost in the
shadows of his own mind, Jaq could be anywhere, any
time... or anyone.
The fortress of Sterngate protects [[Breland]]
from [[Darguun]] invaders. It sits at the end of [[Marguul]] Pass,
and for more than six hundred years it has defended the
nation from marauding [[goblinoid]]s and other threats
from the [[Seawall Mountains]]. Today, the militia assigned
to Sterngate watches for Darguun warbands and sometimes has to drive such bands back into the mountains
from which they emerge. The frequency of such incursions, despite the [[Treaty of Thronehold]], demonstrates
the fragile nature of the current Darguun government.
Captain Toris, a [[changeling]] veteran of the [[Last War]], distinguished herself as a goblin
fighter to be reckoned with. Her hatred for goblinoids
sometimes clouds her judgment, but King [[Boranel|Boranel ir'Wynarn]] rests
easier with Sterngate under Toris's command. The militia
also keeps an eye on the [[Zilargo]] border, but relations with
the [[gnome]] nation are so good as to make strict vigilance
there unnecessary.
You create a 20-foot-radius sphere of yellow, nauseating gas centered on a point within 100 feet. The cloud spreads around corners, and its area is heavily obscured. The cloud lingers in the air for 1-10 minutes, or until dispersed by a strong wind.
Each creature in the cloud that can't withstand the poison immediately stops everything and starts retching and reeling. Creatures that don't need to breathe or are immune to poison aren't affected.
The elite of [[Stormreach]] pay thousands of gold pieces a year to ensure security for their
[[enclave]]s and manors, but one notorious cat burglar has found ways around every defense. This masked culprit is known only as the Stirge. More than a few suspicious souls have seen the incredible acrobatic performances of [[Nat Gann]], dancing from pole to pole with the grace of a cat, and some whisper the acrobat is none
other than the Stirge himself. The PCs might be hired
to track down the Stirge by someone he burglarized, or
they might hire the talented thief to acquire an item
beyond their reach or to supply them with a detailed
plan to infiltrate a stronghold.
The Stone Cage Mountains in the western reaches of the [[Demon Wastes]] are named for their peculiar shape; the peaks are thin and narrow, and resemble worked iron.
Stone [[giant]]s have granite-gray skin, gaunt features, and black, sunken eyes which gives them a stern countenance. For giants, they are surprisingly lithe and athletic. They tend to be reclusive and quiet. Average height: 18 ft.
In every district of [[Stormreach]], carved stone heads lean against walls,
lie in the street, and teeter on ledges. Once a part of
long-lost statues, the heads resemble [[giant]]s and have
a variety of expressions and hairstyles. Most of them cluster in groups of three or more, though some have
been towed away, built into walls, or simply piled up.
Because of a folktale that they bear a deadly curse, very
few have been quarried.
Some of the city’s older residents claim that the
heads’ expressions have changed over time, reflecting
the ancient giants’ opinions of the modern city and its
people. Other residents occasionally lay offerings on
the heads and reverently clear them of moss, lichen,
and dirt.
This division of the [[Harmonious Shield]] of [[Riedra]] is typically assigned to defend fortresses or to battle the [[Akiak]] [[dwarves|dwarf]] or [[dromite]] hives—situations where durability is more important than speed. Recruits are selected for their strength and toughness, and are equipped with shields and armed with longswords or polearms.
This dismal fortress is a hub for negotiations between the [[Znir Pact]] [[gnoll]] mercenaries and their clients.
This keep was known as "Stubborn" when it was under [[Brelish|Breland]] control. See [[Droaamish History]].
Stonespur is an island in the [[Lhazaar Principalities]].
There are rumors that Baron [[Elar d'Thuranni]] has
been constructing secret [[enclave]]s for activities that
the [[Shadow Network|Thuranni]] wants to hide even from trusted
clients. Sailors claim to have seen a black citadel near
the island of Stonespur, protected with powerful
magic; this could be one of Elar’s secret fortresses.
''District Type:'' Apartment townhomes<br/>
''Buildings:'' Average residences (40), poor
residences (220)<br/>
''First Impression:'' Balcony orchards line the exterior
towers of this quiet residential district, and small parks
are scattered throughout the district. A large number of
[[shifter]]s inhabit the area, and shifter children scamper
through the trees with great enthusiasm and agility.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Longstairs]] (northwest); [[North Market]] (southeast); [[North Towers]] (bridge, southwest); [[Boldrei's Hearth]] (bridge, south); [[Oakbridge]] (above)
Stoneyard is a peaceful residential district, notable
primarily for its significant [[shifter]] population and the
large number of orchards and parks scattered throughout the region. Shifter children often use the parks
for [[hrazhak]] matches, swinging through the trees and
racing through the grass. A [[druid]] named Teln ([[shifter]]) helps to maintain the foliage and tend to those injured in hrazhak; in exchange for his services, the locals provide for his needs. Teln follows the [[Gatekeeper|Gatekeepers]] tradition, and sends word to the [[Gatehouse]]
in [[Skysedge Park]] if he sees anything disturbing.
''District Type:'' Warehouse district<br/>
''Buildings:'' Warehouses (50), poor trades (25), poor
services (50), poor residences (400)<br/>
''First Impression:'' Wide storage towers dominate
this district, surrounded by tenements and smaller
warehouses. The streets are full of wagons and
laborers hauling goods to and from the skydocks
of [[Precarious]].<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Callestan]] (northeast); [[Precarious]] (northwest); [[Fallen]] (south); [[Forgelight Towers]] (bridge, southeast); [[Ship's Towers]]/[[Sharn's Welcome]] (below and west); [[Stormhold]] (above);
The Stores district has much in common with [[Precarious]]. However, the Stores is not actually built on
the cliff side, and the [[Watch|Sharn Watch]] focuses its attention
and resources on Precarious. The result is that the
Stores are slightly more dangerous than Precarious,
and smugglers are more likely to hide their goods
in these warehouses. The [[Boromar Clan]] has strong
interests in this district, and thus a considerable
[[halfling]] population can be found here.
This boomerang is a ranged weapon carved from [[griffon]] bone and etched with a symbol of elemental air. When thrown at an enemy, on a hit, it emits a loud cracking sound like thunder and deals additional damage to the target.
After it is used this way, the magic in the boomerang is expended until it spends at least 1 hour inside a [[Lamannia]]n [[manifest zone]].
This hidden cult within House [[Lyrandar]] holds that the [[Mark of Storm]] is a gift from the [[Devourer]], not [[Arawai]] and [[Kol Korran]]. The Storm Front believes that great bearers of the Mark of Storm live on after death as [[kraken]]s in the deeps and will arise when called to ensure Lyrandar dominance over sea, sky, and even land.
Storm [[giant]]s have pale purple-gray skin and hair, and glittering emerald eyes. Some rare storm giants are violet-skinned, with deep violet or blue-black hair and silvery gray or purple eyes. They are masters of the storm, able to hurl lightning bolts and control weather. Average height: 26 ft.
Storm giants once had a presence along the coastline of
[[Xen'drik]]. After devastating conflicts with several [[sahuagin]]
nations, they were all but wiped out. Today, they’re generally
known only through the ruins and tombs they left behind,
usually protected by powerful magic and left alone by the
[[Eternal Dominion]]. There are still a few storm giants in hiding deep beneath the waves of the [[Thunder Sea]]; most are shadows of their former glory, but there may still be a
few hidden giants who have preserved their ancient powers.
Legends on wings, the Storm Guardians are reputed to
be a clan of [[blue dragon]]s that calls the [[tallest peak|Korrandar]] in [[Adar]]
home. Many believe these majestic beasts are responsible
for the storms that plague and defend Adar. [[Adarans]]
imagine that a draconic heart beats at the center of every
thunderhead that blows over the land of refuge. Those
Adarans are close to correct.
In some ways like [[Rhashaak]], who guards the ruins of [[Haka'torvhak]] in [[Q'barra]], the Storm Guardians might be mythic figures, but they are real. They, however, have
not been corrupted by their time in [[Adar]] or [[Korrandar]].
Concerned with the protection of a realm shaped long
ago by [[dragon]] and [[couatl]] magic, the Storm Guardians
watch from above and below. They count among their number [[dragon turtle]]s and [[sea drake]]s that stalk the oceans around Adar. Such sea
dragons often attack any flotilla that contains more than
a few ships. Most of these dragons are aloof from mortal
concerns, but their hold in Korrandar contains what
could be considered the soul of Adar—the [[Teeth of the Three]].
The [[overlord]] imprisoned in [[Khyber shards|dragonshard]]
under Adar sleeps restlessly. It is wrath incarnate. The
[[rakshasa]]s name it [[Ran Iishiv]], the Unmaker, and one
could suppose that the [[Teeth of the Three]] are in place to
keep it quiescent. This isn't true, however, because the
[[dragon]]s would have other such devices to quiet other
great overlords. The truth is that the dragons foresaw a
time when Adar would serve as more than the prison of
a great [[fiend]].
The Storm Guardians live by their duty to guard
[[Korrandar]], and they are content to be legendary. While
some folk near Korrandar have built shrines to the Storm
Guardians and even lay valuables within as prayers for
peace, the Guardians do not communicate with mortals. Those
who climb Korrandar are rarely seen again. Though the
current [[Speaker of the Word|Chanaakar]] is a survivor of such a trek,
he does not speak about it, like other similar persons
from [[Adar]]'s history.
''Getting the PCs Involved:'' One does not trifle with
[[dragon]]s. Still, a problem that can't be solved by mortal
magic might require the characters to make a treacherous
ascent into [[Korrandar]]'s storm clouds to ask the Storm
Guardians for aid.
Though silent on the subject, [[Chanaakar]] is actually
on the lookout for adventurers who will fulfill the next
part of the [[Draconic Prophecy]] in [[Adar]]. These intrepid
explorers, he knows, will uncover secrets of the [[dragon]]s
and [[couatl]]s among the ruins that still riddle Adar.
Through hints and general wisdom, Chanaakar can
guide such individuals, and they might discover a way to
defend Adar better than it is now.
''Argunastrisek'' is an ancient [[blue dragon]] who seeks and punishes those who violate ancient draconic sites. She does so by drawing explorers to her, being
particularly murderous toward mere treasure hunters.
However, those on a righteous path set by [[Chanaakar]] and
the Storm Guardians might be able to persuade her to
help. She is curious about upright mortals. Securing her aid can be one of the
challenges the Storm Guardians actually set for the PCs
before allowing them onto [[Korrandar]].
''Leader:'' [[Miraan]]<br/>
''Turf:'' [[Dannel's Pride]]<br/>
''Portfolio:'' Completely unpredictable; the Storm Hammers engage in fraud one day and murder the next. Any crime could be laid at their feet.<br/>
''Tactics:'' Various
At a glance, the members of the Storm Hammers seem to have little in common. A few have the physique one might expect of street toughs, but most seem to be typical commoners—bartenders, farmers, blacksmiths, and the like—and many wear the clothes of these professions. But time spent in the company of the Storm Hammers (were such an experience possible) would reveal the traits that they all share: an utter disregard
for law or morality, an inclination toward casual cruelty, and a seeming lack of concern for their personal safety. The Storm Hammers are true sociopaths, monsters in humanoid form more terrifying than any [[ogre]] or [[zombie]].
The Storm Hammers claim to be survivors of the [[Mourning]], the event that destroyed the nation of [[Cyre]]. The events they witnessed on the Day of Mourning were horrifying and gruesome, though the Hammers relate these tales with the same equanimity another person might use to discuss the weather. If these stories are true, it would hardly be surprising for these people to have been driven mad by their experiences. But there might be more to it than that. The Hammers weren’t Cyran soldiers or [[wizard]]s; most were simply commoners. But following the [[Mourning]], they found
themselves with new talents—dark magic born of simmering rage. Even though they are
a relatively small gang, these [[sorcerous|sorcerer]] abilities make the Storm
Hammers a threat to much larger groups, and their
full capabilities remain to be seen.
It might be logical to expect the Storm Hammers
to sympathize with [[Dannel's Wrath]], but
the Hammers are anything but logical. They have no
interest in a new [[Cyre]] or a unified [[Galifar]]. Those who
lacked the strength to survive the [[Mourning]] deserve
nothing more than death. The Storm Hammers view
themselves as the first children of a new generation.
They saw the end of the world and survived, and now
they see themselves as beyond any mortal law.
The Storm Hammers are completely unpredictable. They are capable of acts of astonishing violence and cruelty. Sometimes they seem to be motivated by greed, whereas at other times simple boredom drives them. The Storm Hammers have been touched by the [[Mourning]], and some whisper that a darker force guides them—a sinister spirit that links them together, with a secret agenda that draws would-be members to [[Stormreach]].
In [[Stormreach]], political power is measured in gold
and steel. The first Storm Lords were the most capable
pirates and smugglers of the [[Thunder Sea]]. They
saw the opportunities in working with [[Galifar]], and
together they were a strong enough force that Galifar
agreed to work with them. Between the wealth amassed
through decades of crime and the deals with Galifar,
and the combined military forces of these pirate kings,
the first Storm Lords were able to assert their will
over the other people of Stormreach. They created
the Stormreach Compact, a document that lays out
the few laws of the city—the first of which is that the
Storm Lords and their descendants will rule the city
until it falls.
The Stormreach Compact assigns specific duties and areas of influence to each family. The [[Wylkes|Wylkes family]] line, for example, holds power over the [[Harbor]] district and has the right to set docking fees; however, the Wylkes are also bound to maintain the docks and to facilitate travel and trade. Each Storm Lord holds final authority over specific districts, but in practice, any Storm Lord can exercise power throughout the city, as long as the local lord does not object.
The Storm Lords work together to maintain [[Stormreach]], but the balance of power between them is constantly shifting. Adventurers might become longterm pawns in this quiet struggle, or they can simply be the tools of the moment. The Storm Lords are always looking for capable agents, and PCs will likely be some of the most skillful in the city.
The seat of power of the Storm Lords is [[Lorsmarch Palace]] in the [[Marketplace]] district.
!! Coin Lords and Harbor Lord
In [[800 YK|History of Stormreach]], the Kingdom of [[Galifar]] began a naval campaign to bring an end to piracy in the [[Thunder Sea]]. After a few battles filled with bitter losses on both sides, a [[gnome]] smuggler appeared in the court of Galifar. [[Kolis Sel Shadra]] was known by his reputation as the smuggler who had never lost a cargo. He represented the four most powerful pirate captains of the [[Thunder Sea]]: [[Delera Omaren]], [[Yorrick Amanatu]], [[Molou Lassite]], and himself. He offered a truce—if [[Galifar]] would grant these captains amnesty and authority, the four would use their influence to disperse the pirates. After extended negotiations, the king agreed in 802 YK, and even promised to join the [[dragonmarked house]]s in funding [[Stormreach]]’s
expansion. But he insisted on one condition: that he appoint a fifth lord who had his trust. There was much debate, but in time, the four captains—now called Coin Lords—agreed to grant the privateer [[Jolan Wylkes]] the title of Harbor Lord and for the five of them to rule the city together as Storm Lords. Wylkes was a sailor, as opposed to the nobles who were first suggested. He and his descendants held to their vow, and the Coin Lords lived up to their end of the bargain.
!! Storm Lords and their Families
* Lord [[Yorrick Amanatu]], Coin Lord of [[Respite]] and [[Silverwall]]. A venerable [[dwarf]], Lord Yorrick is one of the city’s founders. His family trains and organizes the [[Stormreach Guard]]. An old maxim states, “The [[Amanatus|Amanatu family]] are the steel of Stormreach.”
* Lord [[Varen Lassite]], Coin Lord of [[Cross]] and the [[Marketplace]]. The [[Lassites|Lassite family]] are master brewers and frequently sponsor festivals and feasts. As a result, Lord Varen is easily the most popular of the [[Storm Lords]].
* Lady [[Kirris Sel Shadra]], Coin Lord of [[Southwatch]] and [[Oldgate]]. A family of [[gnome]]s, the [[Sel Shadras|Sel Shadra family]] maintain a low profile for lords of the city. Some say that the Sel Shadras have connections throughout the city’s underworld, but it is unwise to spread such rumors.
* Lady [[Paulo Omaren]], Coin Lord of [[Forgelight]] and the [[Temple District]]. The [[Omarens|Omaren family]] are the city’s premier smiths; their forge produces the arms and armor of the [[Stormreach Guard]]. Lady Paulo is a passionate young woman who claimed her current position with her blade.
* Lord [[Jonas Wylkes]], Harbor Lord overseeing the [[Harbor]] district and the shipping trade. Rumors abound of this young lord’s debauchery.
!! The Secrets of the Coin Lords
The Coin Lords’ public personas and family histories are a matter of record. The people of Stormreach think they know everything about Varen Lassite and Yorrick Amanatu, but they couldn’t be more wrong. Every family has secrets—and the Coin Lords have more than most.
Each of the Coin Lords has a hidden motivation. Five options are presented here; it’s up to the DM to decide which secret is associated with each Coin Lord, and which is a red herring.
* ''The Murderer'' is a capable administrator and diplomat—levelheaded and dispassionate, true to their word, always doing their best to hold [[Stormreach]] together. However, they are also responsible for the death of a prince of [[Breland]], and a warrant for their arrest remains on the books. Consequently, they rarely leave Stormreach, and the [[King's Dark Lanterns]] seek to kidnap them and bring them to Breland to face justice. If this is [[Yorrick Amanatu]], the crime might date all the way back to his years of piracy. If it’s [[Varen Lassite]] or [[Paulo Omaren]], it might be a relatively recent crime—a duel sparked by an unwise romance. If it’s [[Kirris Sel Shadra]], the victim might have been a captain of the [[King's Citadel]] who was investigating her smugglers.
* ''The Orphan'' has always had a talent for [[artifice|artificer]] and infusion. However, they never knew about their blood connection to House [[Cannith]] until they manifested the [[Mark of Making]], just one year ago. It turns out that their pirate ancestor was punished for stealing from the house. Now this Coin Lord is trying to decide whether they should reveal their true nature to House [[Cannith]] and how this revelation would affect their role as a lord of [[Stormreach]]; beyond this, with Cannith fractured, they need to determine which Cannith faction they should deal with. Since the [[Mark of Making]] can only be carried by [[human]]s, this has to be [[Paulo Omaren]] or [[Varen Lassite]]. As the lord of the [[Stormreach Forge]], it makes sense for Omaren to be an [[artificer]]—but Varen might have been hiding his interests while running the [[distillery|Molou's Distillery]].
* ''The Fiend'' is one of the [[Lords of Dust]], a [[rakshasa]] named [[Kashurashan]]. Any of the Coin Lords could fill this role, and the fiend plays out the political games attributed to his surface identity for his own amusement. As [[Kirris Sel Shadra]], the rakshasa would take great pleasure in moving the pawns of the underworld. In any case, the fiend is an expert in long-term infiltration, and uses an aura cloak to avoid detection.
* ''The Seeker'' of the [[Blood of Vol]] has delved into the mysteries of the Divinity Within. They keep their faith secret from strangers, and they don't attend the services in [[Grindstone]]. But they are enthralled by the legends of the [[Grim Lords]] and has strong sympathy for the Order of the [[Emerald Claw]]. Any of the lords could fill this role. [[Paulo Omaren]] could see the Blood as another path to the power long denied to her family. [[Yorrick Amanatu]]’s ancestors perhaps brought the faith with them from the [[Lhazaar Principalities]], where [[Lady Illmarrow]] lies hidden in [[Farlnen]]. [[Kirris Sel Shadra]] could have learned of the Divinity Within from her subjects in [[Grindstone]]. In time, the Seeker might gain greater power.
* ''The Quori Spy'' is an agent of the [[Dreaming Dark]], [[mind seed]]ed long ago by the dominator [[Tirashana]]. They're not the first; every Storm Lord in their line has been subverted by Tirashana, and their heir apparent has likely already been seeded. The goals of the Dreaming Dark are mysterious, and the [[quori]] spy might behave in exactly the manner described for their surface identity. However, the spy has additional goals, specifically gathering information about the [[quori]]–[[giant]] [[conflict|Age of Giants]] and preventing any [[kalashtar]] from doing the same. The spy tries to avoid direct actions that could threaten their cover, but might employ adventurers to achieve their goals.
A 20-foot-radius sphere of whirling air springs into existence, centered on a point you choose within 150 feet. The sphere remains for up to 1 minute, or until your concentration breaks. Each creature in the sphere is buffeted by strong winds.
Until the spell ends, every few seconds, you can cause a bolt of lightning to leap from the center of the sphere toward one creature you choose within 60 feet of the center. You have advantage on the attempt if the target is in the sphere. If struck, a target takes a great deal of lightning damage.
This [[eldritch machine]] can only be controlled by creatures that bear the [[Mark of Storm]]. Storm spires allow
House [[Lyrandar]] to influence the weather, which can be
a boon for the local population or a curse if a Lyrandar
baron chooses to demand payment for ideal weather.
In order to attune to this magic item, you must possess the [[Mark of Storm]].
When you fall while wearing this ring, you descend 10 feet per second and take no damage from falling.
A [[merfolk]] stormcaller of the [[Karakala]] feels the flow of the tides around, currents
below, and shifting storms above the water, and can direct this power against those who threaten their people. Working together, a circle of stormcallers can bring down an entire fleet of ships. The greatest stormcallers have incredible [[primal|primal magic]] powers; the merfolk tell stories of stormcallers who can command the beasts of the sea and transform into mighty squids or whales.
//''Wardens of the Water.''// Most [[merfolk]] stormcallers seek to
maintain balance within their realm. Like the [[Wardens of the Wood]], they strive to protect their region from outside threats, but also to protect foolish outsiders from the dangers of the deeps and the [[manifest zone]]s the stormcallers guard. However,
there are stormcallers who view any intrusion into their waters
as an affront that must be punished.
//''Druidic Speech.''// Stormcallers know the Druidic language,
which they believe to be the language of the world itself. Most
stormcallers will parley with any creature who speaks Druidic,
but they have high expectations of such beings. A stormcaller
may ask a foreign [[druid]] to help with an unnatural threat or
to serve as a mediator in a local dispute.
The Stormhaven ward in [[Stormreach]] is the city’s wealthiest. Most of
the [[Storm Lords]] maintain houses here, whether small
retreats or mansions. The ward is surrounded by walls
covered by flowering creepers and is almost a miniature
city, with its own shops and a group of the [[Stormreach Guard]] assigned to patrol its streets day and night. These guards keep their eyes on “riffraff” from other parts of
the city and run them out at the first sign of trouble.
!! Noteworthy Locations
* the [[Aurum Lodge]]
* [[Coldwake Pond]]
''District Type:'' Average residential<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' The houses of this district are
extremely solid, and almost seem more like miniature fortresses than residences. The people tend to
be serious and suspicious. Children are kept off the
streets, and strangers are watched closely.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Underlook]] (northwest); the [[Bazaar]] (northeast); [[Rattlestone]] (south); [[Warden Towers]] (bridge, southeast); the [[Stores]] (below); [[Daggerwatch]] (above)
[[Clifftop]] solicitors, overseers from the workhouses
in [[Redstone]] and the [[Bazaar]], and other successful
crafters and merchants have made their homes in
Stormhold. A number of manors built by the aristocratic founding families of [[Sharn]] in the first days of
the city can be found in this district, but most of the
powerful families have moved on to [[Central Plateau]]
or [[Skyway]] in recent centuries. A handful of the [[Sixty]]
great families still live in this district, however. The
townhouses of Stormhold are generally cramped
and uncomfortable, but the walls are thick and the
doors stout. Stormholders take security extremely
seriously, and the powerful families hire [[Deneith]]
mercenaries to supplement the [[Watch|Sharn Watch]] patrols.
This island city at the mouth of [[Scions Sound]] has been the seat of House [[Lyrandar]] for 600 years, and Queen [[Aurala|Aurala ir'Wynarn]] allows the house a free rein in governing the isle. It is Lyrandar's largest [[enclave]], as well as the finest resort and vacation spot in [[Khorvaire]]. [[Lyrandar]] [[wizard]]s use magic to continuously alter
Stormhome's weather, turning the otherwise bleak and storm-blasted location into a temperate island getaway.
In the final years of the [[Last War]], Stormhome was a neutral meeting place for spies and power brokers from all sides. After the war, House [[Ghallanda]] constructed several luxurious inns, making the island a popular holiday destination for the wealthy. The
island is more than a vacation destination, however. Large dry docks repair and maintain [[Lyrandar]]’s [[elemental galleon]]s and its fleet of elemental [[airship]]s. One of the oldest buildings on the island, Slate Keep, is where young members of House Lyrandar learn seacraft.
Stormhome remains part of [[Aundair]] but is left to
its own devices, making it an ideal retreat for foreign
dignitaries and nobles. Even Queen [[Aurala|Aurala ir'Wynarn]] seems
enchanted with the place, spending a portion of each year in the company of Lyrandar’s [[baron|Esravash d'Lyrandar]], swapping secrets and rumors to the dismay of both their advisors. As the premier destination for the wealthy and powerful, Stormhome has emerged as a hotbed of intrigue, and agents come to broker alliances and
gather intelligence about their rivals.
!! Stillstone Holt
With the [[Dreaming Dark]] scheming in [[Aundair]] over the course of the [[Last War]], the northern [[kalashtar]] felt they had to establish a presence in Stormhome, a hotbed of intrigue and espionage. Several decades ago, kalashtar elders purchased a number of rundown warehouses on the waterfront, which evolved over the years into the community of Stillstone Holt. While it appears to be a poor community of fisherfolk and shipwrights, it includes a significant number of gifted [[psion]]s.
Stillstone Holt is led by the elders Kanashtai and Deratath. The [[kalashtar]] Halazerai leads a small division of [[soulknives|soulknife]] trained for urban combat that are tasked with defending Stillstone Holt. The community's religious leader is a [[cleric]] of the [[Path of Light]] named Dolarhad.
The Stormhorn Clan guards an [[Age of Demons]] ruin in the [[Q'barra]]n jungle near the [[Hope]] town of [[Wyrmwatch]]. [[Mishva Garodya Stormhorn]] hails from this clan.
{{dragonborn clanhold}}
//In the arena known as the [[Red Ring]], a [[Valenar]] warrior leaps out of the way of a [[giant]]’s club. The [[elf]] came to Stormreach in search of his history—now he is forced to reenact it in this deadly contest.//
//In [[Falconer's Spire]], a [[Lyrandar]] lord studies maps and reports. He reaches out with his thoughts, feeling the paths of the storm and considering if he wants to hold back the tempest or welcome it in.//
//In the slum of [[Dannel's Pride]], a young man studies the scroll he’s been given, marveling at the destructive power bound within its words. For an instant he feels doubt. Then he hears the cries of a starving child and the curses of a crippled soldier, and he knows what he must do.//
//In a harbor alley, a merchant spits blood and teeth onto the ground. As the [[eneko]] ruffian draws back for another blow, the wounded man sees a guard standing in the mouth of the alley, and for an instant hope surges through him. But the guard just laughs, and the merchant realizes... the guard is waiting for his cut.//
''Population:'' 58,250<br/>
''Rulers:'' The [[Storm Lords]]<br/>
''Motto:'' “Rising on the edge of the world.”
Stormreach is humanity’s greatest outpost on the continent of [[Xen'drik]]. Established by pirates and smugglers, it has become a vital resource for those who wish to explore or exploit the shattered land. Although the [[culture of Stormreach|Culture of Stormreach]] has its roots in [[Khorvaire]], it is a free city with no allegiance to any of the [[Five Nations]]. As such, Stormreach is a haven for explorers and exiles, for adventurers and criminals, for soldiers disillusioned with their former kingdoms and those who wish to continue the war. It is a beacon for dissidents and romantics, for fugitives on the run and those who need to escape their own memories. Far smaller than [[Sharn]], it is a city where a few bold adventurers can make a difference—a place where the major players quickly come to know each other.
Stormreach is far more than a gateway to Xen’drik. The [[history of the city|History of Stormreach]] stretches back across the [[Age of Giants]] to the dawn of [[Eberron]]. Modern Stormreach is built on the ruins of past civilizations, from [[giant]] to [[thri-kreen]] and even stranger things. Some remnants of these civilizations can be seen on the surface. Others lie hidden underground, from the sewers of the giants to entire sections of ancient cities preserved from the ravages of time.
Poised on the edge of civilization, Stormreach is a hotbed of intrigue and adventure. It is home to criminals seeking sanctuary from the laws of the [[Five Nations]], scholars working to unearth the secrets of the past, [[dragonmarked|dragonmarked house]] barons striving to exploit the untapped resources of [[Xen'drik]], and many others.
!! What the City Offers
Hundreds arrive in Stormreach every month to start their lives anew, seek their fortune, hunt old enemies, or shrug off their homelands’ laws. Some come for freedom, others chase dreams of adventure, and many travel to the remote city as a last resort.
Unless the player characters grew up in Stormreach, how they find their way to this city of vice and peril can be an adventure in itself. A heist gone wrong, a simple bodyguard mission that turns into a regicidal frame-up, a fragment of their past pointing like a compass to the city, or any other strange occurrence
can set the PCs’ course for Stormreach.
!!! A Place to Lie Low
No city is more suited for ducking the law than Stormreach, where the [[Storm Lords]] spurn any attempts by the [[Five Nations]] to enforce the [[Code of Galifar]] within their domain. Built on piracy, the city rewards those with a taste for crime. Felons, war criminals, and even regicides can leave their pasts behind, for as a common saying goes, the city’s muck, blood, and tides wash sins away. Or perhaps most crimes simply seem trifling compared to the villainy here.
PCs who have troubled pasts, whose deeds bring agents of the law hard at their heels, might choose Stormreach as an escape. And those who are branded as outcasts elsewhere can walk in the open here, with no fear of persecution. If the PCs are framed for a crime, Stormreach is a place for them to lie low and gather their wits and resources before returning home to prove their innocence.
Stormreach is also an ideal place to spend ill-gotten loot. No one cares here how you came by your coin. The city’s brothels, drug parlors, and gambling houses find all that glitters to their liking, regardless of how much blood they need to wipe away to see the
sparkle. PCs laden with dirty gold will find no port more ready to take it. In a city of pirates, all tender is legal.
The city is the perfect place to launder money as well. Those with an interest in bringing their disreputable fortunes back to the [[Five Nations]] can cleanse them in the mire of Stormreach. Gambling on the [[Red Ring]]’s matches or purchasing gems discovered in the city’s ruins are two of the many ways to turn dirty money into unmarked valuables. Just be sure not to purchase cleverly masked knockoffs peddled by the [[Hollow Shards]], lest you exchange your gold for garbage.
!!! Thrills for the Daring
The bold can find few places better to seek adventure than in [[Xen'drik]], whether probing cyclopean ruins, battling jungle tribes, slaying mighty [[giant]]s and claiming their hoards, braving volcanoes, digging in the [[Menechtarun Desert]] for ancient secrets, or conquering Stormreach’s streets. The city is the gateway to the shattered land, and below its streets, in the dark places once presided over by lost civilizations, lie untold treasures.
Many are drawn to Stormreach like moths to a flame, and often with the same result. The city does not suffer the foolhardy lightly. Still they come by the hundreds to make corpses for porters to drag from the streets. Those with heroic hearts just might survive the city’s dangers, from cutthroats in its alleys to monsters in its dungeons, and become legends.
Stormreach is a holy city for fortune hunters, explorers, and vagabonds. It is an adventurer’s proving ground. Those who have scratched its perilous underbelly and survived are part of an exclusive club. You’re really somebody when you’ve been to Stormreach and dared the wilds of Xen’drik beyond.
!!! Evil to Hunt
Stormreach—you will find no greater den of villainy on the face of Eberron. The city’s pseudonyms, from the Pirate’s Haven to the Nest of Vipers, are too many to list. Here war criminals with the blood of hundreds on their hands consort with [[dragonmarked|dragonmarked house]] scions, [[Storm Lords]], and reputable merchants.
Where evil hides, heroes dare. PCs might have to cross the [[Thunder Sea]] to find a traitor whose actions nearly destroyed the [[Brelish|Breland]] crown, track down the [[hobgoblin]] who killed a sibling or dear friend, or find the duplicitous [[changeling]] who ruined their lives.
!! Architecture
Many of Stormreach’s buildings and monuments are ancient, but while many old cities are built upon the refinement and expansion of a style, Stormreach is built upon change, upon necessity, upon the mixture of many styles, both ancient and modern. The city’s districts have their own overall styles, defined by the inhabitants and their occupations, but the districts are still a mishmash of new buildings amid, and atop, the old.
Even with the city’s chaos of architectural styles,
its districts have common features, all arising from Stormreach’s unique character.
!!! Floating Ruins
The magic of [[Xen'drik]] is legendary, and the faded
glory of the past can still be seen in Stormreach
today. The city had a number of floating fortresses,
mansions, and towers in past centuries. Time, war,
and disaster broke them, but remnants float in
place or drift in patterns above the city, and sometimes beyond.
Some of the ruins remain serviceable, albeit ramshackle, and a few wealthy citizens have claimed them for their own, patching and rebuilding them. Other
floating chunks of masonry are treated like islands,
built upon by enterprising people. Under a few of the
larger chunks, wooden homes hang perilously and are
reachable by knotted ropes and ladders, which can be
drawn up, affording the inhabitants a secure, if precipitous, existence.
The most picturesque ruins collected seabird
guano until a windblown seed or two germinated,
creating islands of tangled plants. A riot of color, these
islands’ roots flutter in the wind.
Stormreach is also full of broken pillars of various degrees
of antiquity, though few remain standing. Those that
do are significant landmarks. These snapped-off columns once supported the roofs of [[giant]]s’ dwellings or decorated the outsides of their temples. Now they serve
other purposes. Some have been turned into watchtowers, helpful in spotting fires and directing firefighting efforts. Others have become so encrusted with
ropes and ramshackle dwellings that they resemble a
rock covered in mussels. Most, however, have suffered
the fate of being quarried for stone to pave roads, patch
city walls, and build new dwellings.
See also [[circle of visions]] and [[Stone Heads of Stormreach]].
!!! Permanent Impermanence
Many of the homes in Stormreach look temporary:
tents, huts, and shacks that seem as if they were
thrown together on a whim. Visitors are surprised
to discover that many of these driftwood huts and
canvas tents have been handed down from generation to generation.
Especially in the poorer districts, the city has a
culture of making do, patching up, and never throwing something useful away. This applies as much to
buildings as it does to pots and pans, clothing, and
other items. Old rowboats are built into roofs to keep
the rain out, and tents are patched, stitched, and
layered over and over until they are as thick as a wall.
A building that was once a temple to a forgotten deity
might be turned into a brewery and then a storehouse,
and finally the brewing vats might be capped off with
conical roofs and turned into houses, surrounded by
the temple ruins.
Nothing is wasted: driftwood, canvas, hide, whalebone, flotsam, and stone. The people of Stormreach show endless ingenuity in their use of materials that
would be rubbish in other cities.
!!! The Rigging
Stormreach was not originally built for the people who
live there now. For much of its [[history|History of Stormreach]], it was occupied
by [[giant]]s, and its buildings recall that past, from its
enormous drains to its high steps and towering columns. A [[human]] or [[elf]], let alone a [[halfling]] or [[gnome]],
would have a difficult time climbing over and around
these edifices were it not for “the rigging.”
When citizens mention the city’s rigging, they
mean the steps that have been carved into some massive
stones or the wooden ladders and staircases bolted into
or leaned against others. Or they mean the nets and
knotted ropes they use to scramble over the ruins or
the rope bridges, high above the streets, that crisscross
the city. Where the ropes and bridges are especially
dense, shanties are suspended in the air, often from
the underside of a floating ruin.
Wealthy neighborhoods such as [[Stormhaven]] and
[[Coasthold]] are built on solid ground and have relatively
clear streets, but other neighborhoods are riddled with
hazards. Tunnels and ancient sewers shift or subside,
flash floods crash through during storms (see "Scuppers" below), persistent
humidity rots rope and wood, and shacks, even those
that have survived generations, suddenly collapse. The
next plank in the bridge might break, the rope might
snap, or the tarp might be more mold than tarp—as you
discover when you put your weight on it.
!!! Scuppers
The city of Stormreach is named for the storms that batter [[Xen'drik]]’s
coast and that often engulf the city in lightning flashes and torrential rain. This rain was merely an annoyance to the [[giant]]s; a flood to the smaller races is but a puddle to them. Moreover, the ancient city’s enormous sewer system, along with its broad and open streets, allowed rainwater to drain away quickly.
Today, the city is cluttered and congested, its
streets filled with tents, market stalls, and boarding
houses. Many drains are blocked by rubbish, and others
have been sealed by the monsters that lurk in the sewers.
Despite the [[Storm Lords]]’ efforts to have the drains
cleared, most are useless for much of the year.
The few working drains usually flow like rapids, and the rest of the city’s rainwater drains from the surface, down into the harbor. Somehow this haphazard drainage system works. First, many newer buildings are built on stilts, which lets rainwater flow beneath and keeps the buildings out of the reach of vermin. Second, when a neighborhood floods, the
residents create channels to allow the water to drain onto nearby streets, and often into someone else’s neighborhood.
As rain falls, it follows a complex network of
improvised channels, which run together onto broad
streets that feed the water to the harbor. Stormreachers
call these streets //scuppers//, after the drainage holes on
ships. New settlers are sometimes washed away when
the water flows rapidly, not knowing to keep clear of
the scuppers during heavier storms.
!! Districts and Wards
Like many cities, Stormreach is divided into districts, each with a distinct character, and some of those districts are further divided into wards. Certain nationalities, [[dragonmarked house]]s, and business types tend to cluster in the different districts.
Stormreach is a frontier city with a large transient population (several thousand beyond its permanent residents). For these travelers, the city is a jumping-off point for exploring the continent’s interior or for seeking their fortunes in the city’s dungeons. And the city’s businesses are happy to cater to them. Although the services might be rough compared to those in other cities, they serve adventurers well.
Some of the districts’ citizens are leery of foreigners, fearing they might be the agents of someone or something they fled in [[Khorvaire]], yet most of these citizens are happy to take visitors’ money, whether through legitimate or illegitimate means. Many natives fleece their customers for all they can, taking advantage of their lack of knowledge of Stormreach and [[Xen'drik]].
* [[Cross]]
* [[Forgelight]]
* the [[Harbor]]
* the [[Marketplace]]
* [[Oldgate]]
* [[Respite]]
* [[Silverwall]]
* [[Southwatch]]
* the [[Temple District]]
!! People of Stormreach
Look along the harbor and consider what you see. A [[hill giant]] and a pair of House [[Tharashk]] [[orc]]s are loading [[dragonshard]]s onto a House [[Lyrandar]] cargo ship. A [[goblin]] merchant haggles with a pair of [[elves|elf]] from [[Aerenal]]. A [[dwarf]] dressed in the robes of the [[Sovereign Host]] and a [[human]] in the colors of the [[Silver Flame]] debate religion with a [[sahuagin]] [[Ta'har]] priest draped in seaweed and bones. Adventurers, scholars, mystics—all
can find their way to Stormreach.
The city is small, but many residents take pride in it. A visitor to [[Sharn]] is likely to get lost in the teeming masses. You’ll quickly get to know the people of Stormreach, and you’ll have a chance to meet even the most important people of the city. Wander the market for a day, and you’ll likely see Lord [[Lassite|Varen Lassite]]. Take a week and
you might know half the artisans, all the innkeepers,
and the city’s magistrates—hopefully because you’ve
been drinking with them and not because they’re
sending you to the [[Red Ring]]!
The city is growing rapidly. According to a [[Korranberg|Library of Korranberg]] census, the city had about 45,000 residents in 996 YK. Estimates suggest that more than ten
thousand immigrants have joined them since then, and more are arriving every day. With the [[Last War]] at an end, there’s been a groundswell of interest in the city. Refugees who lost their homes in [[Khorvaire]] come in search of a fresh start. Academics seek answers to [[Xen'drik]]’s mysteries. The [[dragonmarked house]]s see untapped potential in the lands beyond the city’s walls. And so the population grows and the city expands. Moreover, transients steadily flow through—hundreds of merchants, sailors, explorers, and others who remain for a few days before passing on to the next port of call.
For more information, see [[Culture of Stormreach]].
!! Authority Figures
This free city is governed by the [[Storm Lords]], a
hereditary council formed by the five families that
founded modern Stormreach in 802 YK. Each family
monitors a particular region of the city, and together
they oversee most of the city’s industries.
A Storm Lord wields absolute power within the
city, governing both trade and justice. Because the
lords balance each other, this power rarely turns into
tyranny. All citizens of Stormreach respect the Storm
Lords—or at least their influence over the [[Stormreach Guard]]. The Storm Lords are a frequent topic of conversation in the city’s taverns and common rooms,
and Lord [[Jonas Wylkes]] and Lord [[Varen Lassite]] often
mingle with the city’s people. Keep your eyes open and
you might see one of them!
The current [[Storm Lords]] and their families are
described below.
* Lord [[Yorrick Amanatu]], Coin Lord of [[Respite]] and [[Silverwall]]. A venerable [[dwarf]], Lord Yorrick is one of the city’s founders. His family trains and organizes the [[Stormreach Guard]]. An old maxim states, “The [[Amanatus|Amanatu family]] are the steel of Stormreach.”
* Lord [[Varen Lassite]], Coin Lord of [[Cross]] and the [[Marketplace]]. The [[Lassites|Lassite family]] are master brewers and frequently sponsor festivals and feasts. As a result, Lord Varen is easily the most popular of the [[Storm Lords]].
* Lady [[Kirris Sel Shadra]], Coin Lord of [[Southwatch]] and [[Oldgate]]. A family of [[gnome]]s, the [[Sel Shadras|Sel Shadra family]] maintain a low profile for lords of the city. Some say that the Sel Shadras have connections throughout the city’s underworld, but it is unwise to spread such rumors.
* Lady [[Paulo Omaren]], Coin Lord of [[Forgelight]] and the [[Temple District]]. The [[Omarens|Omaren family]] are the city’s premier smiths; their forge produces the arms and armor of the [[Stormreach Guard]]. Lady Paulo is a passionate young woman who claimed her current position with her blade.
* Lord [[Jonas Wylkes]], Harbor Lord overseeing the [[Harbor]] district and the shipping trade. Rumors abound of this young lord’s debauchery.
!! Crime and Punishment
See [[Crime in Stormreach]].
!! Militias
Life is cheap on the edge of [[Xen'drik]], and the only way to ensure a safe future is to have a weapon close at hand. Throughout the history of Stormreach, many ethnic and religious groups have formed [[militia]]s—people ready to defend their friends and neighbors from any threats.
After hearing tales of the harsh justice of the [[Swords of Karrn]] or the violent actions of [[Dannel's Wrath]], newcomers to Stormreach might have the impression that the militias represent a lack of control on the part of the [[Storm Lords]]. Such fears are unfounded. The Storm Lords allow the militias to exist out of respect for the diverse cultural values of the city’s people. However, many of these values are tied to hostility toward other ethnic, national, or religious groups. A traveler is therefore advised to consider the following and to avoid wards dominated by hostile forces.
* The [[Swords of Karrn]] have recently appeared in the [[Grindstone]] neighborhood of [[Southwatch]]. The exiled [[Karrnath]]i warlord [[Drago Thul]] leads this band of hardened veterans.
* The [[Knights of Thrane]] operates in the [[Embers]] ward of [[Oldgate]]. Commander [[Valen Vanatar]] believes the [[Blood of Vol]] and worship of the [[Dark Six]] pose a threat to the stability of Embers and acts accordingly.
* The [[Ninth Wands]], based in the [[Whitewash]] ward of [[Oldgate]] and largely drawn from [[Aundair]]ian veterans, are known for their use of war magic. The militia is led by a mysterious [[wizard]] known as the [[Dragonhawk]].
* [[Dannel's Wrath]] is a [[Cyran|Cyre]] militia based in [[Dannel's Pride]] in the [[Cross]] district. Rumors say that the Wrath is using violence as a tool to force the [[Storm Lords]] to provide more territory and recognition to Cyran refugees. The leader of the militia is a [[changeling]] war criminal named [[Fury|Fury (changeling)]].
!! Stormreach and the Last War
The population of Stormreach has always included immigrants from the [[Five Nations]], many of whom retain fond memories of their distant homelands. The city has never been subject to the Five Nations, but the [[Storm Lords]] gave their fealty to [[Galifar]], by virtue of its strength, and feared a day would come when the kingdom across the ocean would send its fleets to bring their city under its rule. When word reached Stormreach that King [[Jarot|Jarot ir'Wynarn]] was dead and [[Galifar]] had
collapsed in [[civil war|Last War]], the [[Lassite|Lassite family]] Storm Lord at the
time gave a shot of [[kuryeva]] to anyone who would drink
a toast to the kingdom’s fall.
Stormreach remained neutral throughout the
[[Last War]] and became a haven for dissidents and
defectors. The city is an imperfect sanctuary due to
the relative lawlessness of the streets, but those who
have sufficient funds can turn to House [[Deneith]] or
House [[Kundarak]] for security. Less affluent defectors can always find sanctuary by joining the [[Stormreach Guard]]. Whatever their flaws in protecting the common people, the guards look after their own, and the [[Stormreach Recruiters|Stormreach Guard]] ask no questions; when a man picks up a guard’s sword, he leaves his past behind.
Despite Stormreach’s neutrality, echoes of the [[Last War]] resonate through the city, where [[militia]]s and gangs have arisen based on national themes. An
adventurer who thinks the war is over might change his
mind after clashing with [[Dannel's Wrath]] or the [[Ninth Wands]] of [[Aundair]] (as long as the [[Storm Lords]] are not threatened, the [[Stormreach Guard]] ignores sectarian
violence between immigrants). The [[Last War]] continues in Stormreach in ways unseen in [[Khorvaire]], ways that surprise visitors who were involved in the war. A
former soldier could be pressured to help a [[militia]]
that has ties to his nation. [[Cyran|Cyre]] refugees could hold a
player character responsible for crimes she committed
while serving in the war. An old companion could show
up with a scheme to recover a treasure cache lost in the
war—but the soldier has been exiled, and he needs his
old war buddies to help. Vengeance, bigotry, and hope
are all aspects of Stormreach. Even in this land of new
opportunities, adventurers should come face to face
with the consequences of the war.
!! Stories in Stormreach
Stormreach is unlike any city in [[Khorvaire]]. [[Sharn]]’s vast
size provides a host of opportunities, but Stormreach’s
unique location and history make possible adventures that could never occur elsewhere in [[Eberron]]. Whether you’re playing an explorer traveling to Stormreach or you’re a GM plotting a story arc, consider the following paths a story could take.
* ''The Gate to Xen'drik:'' Stormreach is the largest [[human]] city in [[Xen'drik]]. Even if an expedition does not go directly through the city, explorers will probably use the city as a stopping point to replenish supplies or hire guides. Even adventurers who prefer pulp action over global intrigue have much to gain from making friends in Stormreach. Suppliers and smiths can provide travelers with vital goods or a market for treasures found in the continent’s interior. Sages and stranger folk, such as [[Katanavash]], can provide rewards to adventurers willing to reveal their discoveries. If PCs have the urge to adventure but have no goal in mind, Stormreach always has patrons looking for capable swords to risk venturing into the shattered land.
* ''The Tip of the Iceberg:'' With ancient dungeons below every street in Stormreach, characters in search of adventure and treasure never need to leave the city. Stormreach’s history includes occupation by [[sahuagin]], the [[psionic|psionics]] [[thri-kreen]], and [[giant]]s whose knowledge of magic outstripped that of the modern age. The world beneath the city is filled with traps, treasures, monsters, and more. If the PCs desire a dungeon crawl, Stormreach can offer it.
* ''Echoes of the Last War:'' The [[Treaty of Thronehold]] keeps tensions in check in [[Khorvaire]], but anything goes in Stormreach. Home to war criminals, dissidents, and soldiers who wish to keep the war alive, the city offers many opportunities for adventures based on the [[Last War]]. Characters could start a new movement or fight one that already exists, such as the [[Swords of Karrn]] or the [[Brelish|Breland]] antimonarchists. Political intrigue can occur in any city in Khorvaire, but in Stormreach it can occur out in the open.
* ''Mingling with Monsters:'' With [[giant]]s, [[drow]], [[sahuagin]], and others, Stormreach is home to more "monsters" than any other city outside [[Droaam]]. Stormreach provides a chance to interact with these creatures in a neutral environment and can serve as a starting point for adventures among the [[Thunder Sea]]’s [[Eternal Dominion]]; among the [[Qaltiar]] [[drow]] and their conflict with the [[Sulatar]] drow, the dreaded firebinders; and among other groups. Beyond this, Stormreach offers chances to associate with [[human]]s whom many would describe as monsters. When characters come to the [[Black Freighter]] for a tankard of ale, they might find a knight of the [[Emerald Claw]] and one of the [[Inspired]] having a discussion with a [[cultist of the Dragon Below|Cults of the Dragon Below]] or an [[Aurum]] Concordian. Stormreach is a neutral city, and justice is in the hands of the individual. Adventurers can therefore end up associating with people they would normally see on the other end of a blade.
* ''A Small Pond:'' Stormreach’s size, as well as its remoteness, means that many services expected from a larger city are unavailable. Merchants have limited funds, and selections of [[magic item]]s and services are restricted. The city’s size has a flip side; PCs can be big fish in a small pond. They would have a difficult time destroying the [[Boromar Clan]] in [[Sharn]]; the criminal organization is simply too large, too influential, too entrenched. But they could eliminate the [[Bilge Rats]] or the [[Swords of Karrn]] in Stormreach. The fight would be difficult—and a new group could rise to fill the void left behind—but the characters’ actions could have a lasting impact on the city’s balance of power.
Characters should also find it easy to make a reputation and to cross paths with other major players in the
city. This isn’t [[Sharn]], with over a million people. PCs can meet gang and militia leaders, [[dragonmark]]ed viceroys, and the [[Storm Lords]] themselves. Player characters are remarkable people, and in Stormreach that gets noticed.
Twenty more possible adventures can be found in the table below.
| !<<dr d20>> |!Stormreach Adventure |
| 1 |The [[Battalion of the Basalt Towers]] is preparing to launch another major offensive against the city, and the [[Storm Lords]] need a small team to deliver a critical preemptive strike. |
| 2 |An agent of Storm Lord [[Kirris Sel Shadra]] asks the PCs to dispose of a body beyond the city’s borders. Seems a simple task, and the price is right. What could go wrong? |
| 3 |Aging Storm Lord [[Yorrick Amanatu]] seeks a magical artifact said to restore youth. It is located deep in the wilds of [[Xen'drik]], and the lord is willing to pay handsomely for it. Storm Lord [[Paulo Omaren]] makes a counteroffer, promising rewards and influence if the adventurers give Lord Yorrick a cursed relic instead. |
| 4 |Someone is murdering the [[Ninth Wands]]. If the characters are [[Aundair]]ians, they will be asked to help. If they are enemies of Aundair, they might be framed for the murders. |
| 5 |Storm Lord [[Paulo Omaren]] hires the adventurers to investigate House [[Kundarak]] and to discover what lies beneath the [[Tower of Kol Korran]]. |
| 6 |[[Dannel's Wrath]] takes hostages at the inn where the adventurers are staying. Can the PCs stop the situation without the loss of innocent life? |
| 7 |A devastated [[Riedra]]n expedition bound for [[Dar Qat]] stumbles into Stormreach, bearing a cursed artifact from the [[Dal Quor]] invasion. |
| 8 |The [[Swords of Karrn]] and the [[Knights of Thrane]] are fighting an escalating war of retribution. Mercenary work can be found with either side, though investigation reveals a third party is pitting the two factions against each other. |
| 9 |Adventurers discover a [[Tairnadal]] crypt in the dungeons beneath the city. If the PCs defeat the [[undead]] [[elves|elf]] and take their treasures, they will have to face [[Valenar]] elves who want to reclaim their ancestors’ relics. |
| 10 |Naleen Lassite, daughter of the popular Storm Lord [[Varen Lassite]], has been kidnapped, and the PCs have been framed for the crime. Suddenly Stormreach’s most wanted criminals, the PCs must move quickly and carefully to clear their names. |
| 11 |A [[thri-kreen]] approaches the party and indicates that they should follow him, but he will not speak. If they follow, he leads them to a powerful monster lurking in the [[Undercity]]. But what drew the mantis warrior to the PCs? |
| 12 |A magical infection is spreading through the city. Is it an ancient curse triggered by unwise explorers or an arcane weapon being tested by the [[Dragonhawk]]? |
| 13 |[[Jirian Zayne]] has been poisoned within the [[Keep of the Silver Flame]], and the venom resists all magical healing. The PCs must recover the antivenom from the [[Hantar'kul]] [[drow]] and hunt down the mysterious assassin. |
| 14 |A group of powerful [[Khorvairian|Khorvaire]] benefactors offer the party nearly unlimited resources to uncover the true identity of the individual called the [[Dragonhawk]]. |
| 15 |The blind sculptor [[Mazrath the Maker]] requires an escort to a secret rendezvous in the [[Xen'drik]] jungle. |
| 16 |One or more of the adventurers are arrested on trumped-up charges and sentenced to a week in the [[Red Ring]]. |
| 17 |Something has driven the [[undead]] court of the [[Shrouds]] to madness. Now waves of [[elf]] [[ghost]]s and [[wraith]]s assault the surface world, howling in rage. |
| 18 |A renowned Stormreach [[inquisitive]] asks the PCs help to avenge his sister’s death at the hands of the psychotic [[Jacques the Hook]]. |
| 19 |[[Tulea Wylkes]], mother of the city’s new [[Harbor Lord|Jonas Wylkes]], hires the PCs to act as bodyguards for her delinquent socialite son. |
| 20 |An unlikely gang of [[drow]], [[sahuagin]], and [[thri-kreen]] warriors threaten to disrupt the power balance in the city. Who could possibly create, or control, such an alliance? |
Patched and re-dyed again and again, the gigantic red
tent that covers [[Stormreach]]’s bazaar dominates the
[[Marketplace]] and can be seen from almost every part
of it. Inside is a mess of walkways, smaller tents, and
market stalls, all lent a reddish glow when sunlight
shines through the tent overhead.
Here the traders would sell their own mothers for
a handful of coins and compete enthusiastically with
one another for customers. Only the most wily vendors
last in the bazaar, so while the merchandise is good
quality, buyers can expect to pay more than usual and
are sometimes fleeced.
!! Denizens of the Bazaar
Everyone's selling something in the bazaar. If the PCs want to browse some random stalls and tents, consult the following table:
| !<<dr d10>> |!Shop |
| 1 |The blind [[half-orc]] crone at this stall sells statuettes of her clients’ faces. She feels their faces with her weathered hands and then carves amazing likenesses of them in soapstone or wood. Each statuette takes the crone about 1 hour of work. |
| 2 |Roars, neighs, and squawks emerge from this expansive pavilion. The only House [[Vadalis]] business in the city, //Tooth and Nail// sells creatures from the continent’s interior. Inside the tent, cages and pens hold potential mounts and guardian beasts, as well as exotic pets. Members of the [[Handlers Guild]] keep the creatures from biting each other and the house’s customers. See also [[Tyris d'Vadalis]].|
| 3 |The [[gnome]] Hanruli sells tapestries at this stall. Uncannily, her tapestries all feature images of the PCs in horrific circumstances. One shows a black tower by a stormy sea, with one of the PCs impaled on the iron fence below the tower. The second shows a PC being ripped to pieces by the many maws of a [[hydra]] in a swamp. The third shows a PC as a [[vampire]] feeding on a family member or friend, while a shadow-obscured figure looks on in the background. The last shows a PC in a loving embrace with a beautiful person, who clutches a curved dagger poised to stab the PC in the back. Hanruli claims that her inspiration comes from her dreams, and she is just as disturbed by the PCs’ resemblance to her models as they are. |
| 4 |The portly [[goblin]] who runs this booth sells spices from across [[Eberron]]. [[Fernia]]n [[firepepper]]s and many other exotic flavorings are available for purchase. He also cooks up plates of squid with his spices. His six children, each more homely than the last, help him cook, and he tries to pawn them off on prospective mates (“He cooks good!” or “She’ll take care of you!”). The squid is delicious. |
| 5 |A [[halfling]] peddler named Ilgargo Reddlin offers beautiful stones and shells polished by the sea. He is a simple man and collects pieces for their color; one of his treasures might be an undervalued [[ioun stone]] or a piece of ancient rubble that holds a terrible curse. |
| 6 |A beautiful [[gnome]] named Ridara runs this fragrant stall, where she sells all manner of candles and incense. Everything from sandalwood incense sticks to candles that burn with multicolored flames line her tables. She has a limited supply of incense of meditation and one [[candle of invocation]] (aligned to [[Dol Dorn]]). |
| 7 |The [[elf]] Garay Gyriaz runs Garay’s Games, a small wooden shop offering the finest in games, including [[Conqueror]], Dragonhunt, Engagement, and [[Three-Dragon Ante]]. Specialty versions of the games—carved from [[livewood]], obsidian, or silver—are available for wealthy gaming enthusiasts. |
| 8 |A famous designer from [[Sharn]], the [[gnome]] Tyzian Davandi (relative of [[Thurik Davandi]] runs //Far Davandi//, which sells [[glamerweave]] outfits. The outfits cost between 10 and 30 c. |
| 9 |A [[human]] boy is selling strips of bloodstained cloth. He collects the blood of criminals killed in public executions. Apparently, there is a market for these grisly trophies. The boy charges up to 0.1c, based on the amount of blood and the notoriety of the criminal. |
| 10 |//Forgotten Places// offers a wide variety of bizarre maps. A map of the [[Thunder Sea]]’s floor costs 2c; a [[Sharn]] “star map” pointing out the residences of [[Last War]] heroes and famous performers, 3c; a map supposedly leading to a lost city in the jungle, 10c; and a dubious map of the Churning Chaos of [[Kythri]], 20c. |
Standing in the [[Foundry]]’s shadow, this is the main
outlet for the goods produced in [[Forgelight]], [[Stormreach]]. It is the primary business of the [[Omaren family]].
Anyone who knows how to use a sword can try for a place in the [[Stormreach]] Guard. Your past is irrelevant; all that matters is your willingness to forget past loyalties and to serve the [[Storm Lords]]. As a result,
the guard is a mixture of ruffians, war criminals
and fugitives from the [[Five Nations]], former soldiers
still itching for a fight, and a handful of people who
actually care about the law. They randomly patrol the
streets and are as likely to ignore a [[crime|Crime in Stormreach]] as they are
to intervene.
Guards who do their best to uphold justice find
the obstacles in their path daunting. Rampant corruption in the Guard’s upper echelons makes displays of heroics potentially threatening to a guard’s
continued employment. By doing their job, these
devoted guards put pressure on their fellows to do the
same, and the city’s rabble is much easier to dupe when
no one steps out of line to help them. Also, busting
criminals who paid bribes to higher-ranking guards
ensures dire consequences.
The city’s [[gang|Crime in Stormreach]]s and [[militia]]s are well aware of the
Guard’s boundaries. They know the battlegrounds that guards will leave alone. The [[Titans]] might fight the [[Storm Hammers]] in the alleys of [[Dannel's Pride]], but they would never cross blades in the heart of the [[Marketplace]]. Common sense is the key to avoiding an encounter with the Stormreach Guard or the [[Iron Watch]]; you can brawl freely in [[Locksmith Square]], but keep your sword in its sheath in [[Respite]].
The ''Stormreach Recruiters'' seek to recruit loyal soldiers for the Guard. Anyone who joins the Guard and completes the three-month training has all past crimes wiped away; many change their names to reflect this new beginning. The [[Storm Lords]]
have extradited criminals before, but they stand by the Stormreach Guard. As long as guards serve the lords faithfully, they can leave their pasts behind.
Recruiting, training, and management of the Stormreach Guard is handled by the [[Amanatu family]]. The [[Omaren family]] is tasked with outfitting the Guard.
Steam tunnels run under much of the city of [[Stormreach]] and have
vents and pipes that are especially visible in the [[Marketplace]], where they emerge from the ground in alleys and run alongside buildings before descending back
into the earth. The workings of the tunnels and pipes are a mystery to all, despite many expeditions to try to understand them. Following a steam tunnel may lead an explorer into the [[Undercity]].
The Stormwalkers were founded by a cruel [[blue dragon]]. Although one of the smallest tribes, they are nonetheless dangerous and thus, highly respected. The Stormwalkers developed a martial, [[monastic|monk]] tradition emulating the natural attacks of the [[dragon]], and the greatest masters of this art can extend their lifespans or even temporarily change shape into the form of a dragon.
This luxurious tower serves
as the private estate of [[Dantian d'Lyrandar]]. Dantian, a
trade minister for House [[Lyrandar]], is second in
influence to his aunt Solia. While [[Solia d'Lyrandar]]
spends most of her time in the [[house enclave|Lyrandar Enclave (Dragon Towers)]] in
[[Dragon Towers]], Dantian prefers the luxury of
Stormwind Keep. The house often uses Dantian's
estate when hosting gala events or entertaining
important guests. Dantian himself is a diplomatic
individual, but primarily interested in furthering
the economic and political power of his house. He
has little interest in dealing with adventurers or
other members of the lower classes.
Stormwreck Bay lies off the coast of [[Q'barra]] and the southern tip of the [[Mror Holds]], as well as [[Tempest Isle]].
This blue silk mask with golden beads lining the hem covers the wearer's nose and mouth. While worn, the user can alter their voice to mimic anyone they have heard before. They can also mimic simple sounds with great accuracy.
Stout [[halfling]]s are hardier than average and have
some resistance to poison. Some say that stouts have
[[dwarven|dwarf]] blood. In some places, these halflings
are called stronghearts.
The Straits of Orthoss lie between the islands of [[Farlnen]] and [[Orthoss]] in the [[Lhazaar Principalities]]. They connect the [[Lhazaar Sea]] to the [[Bitter Sea]].
The Straits of [[Port Verge]] lie between the islands of [[Questor]] and [[Trebaz Sinara]] in the [[Lhazaar Principalities]]. It connects the [[Lhazaar Sea]] to the [[Eel Bay]].
The Straits of Shargon form the western edge of the [[Thunder Sea]], and include the dangerous [[Shargon's Teeth]] chain of islands that make ocean travel between [[Sharn]] and [[Stormreach]] treacherous without a [[sahuagin]] guide.
The number
is an exaggeration, but this single ward of [[Korranberg]]
has more shrines and temples than some [[Khorvairian|Khorvaire]]
cities. Every member of the [[Sovereign Host]] and the
[[Dark Six]] is represented here, in addition to multiple
temples dedicated to both pantheons as a whole. A
sanctuary of the [[Path of Light]] sees [[gnome]]s meditate
alongside [[kalashtar]] mentors, and the [[Blood of Vol]] has
a sanguinary where folk peacefully contemplate the
divinity within. Shrines to the [[Cults of the Dragon Below]] and to the [[overlord]]s of the [[Age of Demons]] can be found here, though worshipers who take their
beliefs too seriously face the wrath of the [[Trust]]. The
centerpiece of the street is the Codex Vault, the largest temple to [[Aureon]] in [[Khorvaire]].
This branch of the [[Unity]] of [[Riedra]] tends to the infrastructure
of the nation, construction, villages, bastions, roads, and
the [[monolith|hanbalani alta]]s. It is based in the bastion of [[Dul Borin]]
under the leadership of Lord Laneth ([[hashalaq]] [[Inspired]] [[shaper|psion]]).
The Su'har (“heart”) of the [[Eternal Dominion]] maintain the civic infrastructure of the [[sahuagin]] nation. They maintain and expand the cities, ensure the steady flow
of supplies, and organize the spawning pools and the
education and evolution of the young. The [[Ta'har]] develop new
techniques, but it’s the Su’har who turn the wheels of industry.
Some [[humanoid]] races have "subraces". These are different phenotypes within a specific species of humanoid, still considered part of the parent race, but with some different physical traits or abilities.
!! Subraces
<ul>
<$list filter="[tag[subrace]tags[]category[creature]sort[title]]">
<li><$link overrideClass="graylink"/></li>
<ul>
<$list filter="[tag[subrace]tag<currentTiddler>]">
<li><$link/></li>
</$list>
</ul>
</$list>
</ul>
You suggest a course of activity (limited to a sentence or two) and magically influence a creature you can see within 30 feet that can hear and understand you. Creatures that can't be charmed are immune to this effect. The suggestion must be worded in such a manner as to make the course of action sound reasonable. Asking the creature to stab itself, throw itself onto a spear, immolate itself, or do some other obviously harmful act ends the spell.
If the target does not have the resolve to resist your suggestion, it pursues the course of action you described to the best of its ability. The suggested course of action can continue for the entire duration (up to 8 hours). If the suggested activity can be completed in a shorter time, the spell ends when the subject finishes what it was asked to do.
You can also specify conditions that will trigger a special activity during the duration. For example, you might suggest that a knight give her warhorse to the first beggar she meets. If the condition isn't met before the spell expires, the activity isn't performed.
If you or any of your companions damage the target, the spell ends.
//I know the secrets that shape the world. With three words, I can kill with fire; with four, ice. But why should I, when I can bend you to my will? The Queen of Shadows reveals your secrets—do as I command, or all will learn what you've hidden.//
<div align="right">—A cultist of Sul Khatesh</div>
The overlord Sul Khatesh embodies the fear of both magic
and of secrets... for what is magic but secret knowledge? She
whispers insights to students at [[Arcanix]] and inspires evokers
working on weapons of war. But she also encourages people to
keep secrets, and then sets misery in motion when she reveals
these secrets to those who would use them.
//''The Queen of Shadows.''// An entity of shadow, Sul Khatesh can assume any form. Her favored shape is a twelve-foot-tall humanoid figure draped in a flowing, hooded robe formed of swirling mist and clinging shadow.
Sul Khatesh's heart [[demiplane]] is the [[Tower of Shadows]].
//''Cultists and Minions.''// Sul Khatesh's cults often begin as transactional. [[Wizard|wizard]]s or would-be [[warlock]]s invoke her with rituals, offering blood or
service in exchange for power and knowledge. Sul Khatesh has
no need of mortal souls, but a cultist might believe they have
sworn their soul to her. What truly delights her is when magic is
used for cruel purposes or in ways that cause people to fear it. Covens devoted to the Queen of Shadows use dark magic and fear to dominate whole communities, while isolated warlocks make pacts with Sul Khatesh to pursue power and revenge. By sharing her power in this way, the overlord perpetuates the image of the evil warlock, inciting fear that strengthens the Keeper of Secrets even more.
While cultists may forge a bond for rational reasons, the more
people that draw on her gifts, the more that corruption can
creep in. Members of the Court of Shadows believe that they
are part of a shadow kingdom that becomes more real with
each day; some members even believe they can see its towers
and spires overlapping the structures of the real world. Other
cults may become obsessed with their own power, embracing
the idea that those who can do magic are superior to those who
cannot—that it is their right to prey on these mundane cattle.
Given her love of secrets, the cults of Sul Khatesh are almost
always hidden and subtle. While magic usually plays a role in
her cults, she could certainly have one that deals purely with
blackmail and the manipulation of secrets.
Sul Khatesh's chief agent among the [[Lords of Dust]] is the [[rakshasa]] [[Hektula]], who serves as the librarian in the demonic citadel of [[Ashtakala]]. Known as the First Scribe, Hektula presides over an immense trove of arcane knowledge and artifacts.
Lord Sulakhal of the Silver Shield is a [[du'ulora]] [[Inspired]] [[psi warror]] and the commander of the military forces of [[Dar Jin]]. He is rarely seen
on the streets, but should a major riot or other disruption occur, the du'ulora champion will appear to take personal action.
The Sulat League was an [[Age of Giants]] civilization of titans in [[Xen'drik]], led by the legendary "Fire Prince", Adaxus. They specialized in the [[binding|elemental binding]] of [[fiend]]s and [[elemental]]s, as well as [[magebreeding]]. They created the [[drow]] as living weapons to deal with rebellious [[elves|elf]], and it's thought that [[fire giant]]s are remnants of the Sulat.
The knowledge and wisdom of the Sulat League was
lost in the cataclysm that destroyed [[Xen'drik]], and the
[[fire giant]]s fell into barbarism with their kin. One legacy
of this civilization remains, however—the [[Sulatar]] [[drow]],
who still live in the ruined [[blood glass]] fortresses of their
former masters.
The [[Battalion of the Basalt Towers]], [[fire giant]] ancestors of the Sulat, might some day seek to regain the knowledge of the Sulat League. At the moment, however, these giants exploit their physical might rather than arcane knowledge.
//This world was born in fire, and in fire it shall end. Our future lies in the Land of the Promise, from whence all fire flows.//
//In the [[first days|Age of Giants]], the mighty learned to bind the flames of the far lands, drawing fire from the air and blending it with blood and iron. But the clumsy hands of the [[giant]]s could not weave the fine threads of true fire, and the deepest secrets seared their minds and left them mad. And so the wisest among them sought our ancestors, seeking those with the power to truly embody the flame and to find the path to the Land of the Promise. They bound the fire to our blood, where it burned our skin as black as basalt. They taught us the ways of the fire and the secret knowledge of the Promise. And when they fell to the [[madness|Du'rashka Tul]], we laid claim to the cities of glass. Many of our [[kindred|Vulkoor]] fell to the madness and now roam the wilds, worshiping vermin and picking at ruins. But we hold destiny in our hands. We hold the secrets of the fire. One day we shall open the Gates of the Promise and spread our flames across all lands. For this world was born in fire, and in fire it shall end.//
The Sulatar [[drow]] of [[Xen'drik]] have clung to traditions of magic dating back to the [[Age of Giants]]—specifically, an ancient form of [[elemental]] binding. The
Sulatar (“firebinders” in the Giant language) are masters of fire in all forms. Their champions wear burning [[orichalcum]] armor and bind elementals to their [[blood glass]] blades, while Sulatar [[artificer]]s create [[magic item]]s that even the [[gnome]]s of Zilargo have yet to perfect.
The firebinders remained loyal to the [[giant]]s throughout the [[elf]] uprising and, even after forty thousand years, have held to the teachings of their ancient
masters. The Sulatar believe that their devotion will
eventually grant them access to a promised land of fire,
where they will gain immortality and power and lead an
army that will sweep across the world. Scholars speculate
that the promised land is the plane of [[Fernia]], but so far
the legends remain just that.
Few explorers have encountered the Sulatar, for the firebinders have little interest in other cultures. To the Sulatar, all will fall when the Gates of the Promise
open; until then, they have no need to deal with inferior
creatures. In addition to this isolationist attitude, the
Sulatar have long fought the followers of [[Vulkoor]], and
this has kept their population in check. The firebinders
consider the scorpion tribes to be savages and traitors,
while the children of Vulkoor hate the Sulatar for their
continuing loyalty to the [[giant]]s.
In the end, the DM must decide on how many Sulatar live in [[Xen'drik]] and the significance of their presence. It might be that only a single enclave of Sulatar exists—the legendary [[Obsidian City]], deep in the Xen'drik jungles. Alternatively, hundreds of thousands of firebinders might inhabit the [[Fangs of Argarak]] in the center of the continent—an army that could pose a deadly threat to Stormreach and to Khorvaire if the Sulatar chose to emerge from hiding.
The Sulatar have a strong martial tradition. They forge their armor and weapons from [[orichalcum]] or "firebrass", and they typically incorporate fiery patterns and designs into their equipment. Sulatar [[cleric]]s are devoted to an abstract force called the Promise of Fire. Sulatar [[wizard]]s focus on [[evocation]], [[conjuration]], and [[abjuration]], and no tradition of [[necromancy]] or [[enchantment]] exists among them.
The firebinders tattoo patterns of flames across
their skin, believing that these grant mystical protection.
Although the tattoos do not actually confer any benefit,
a combination of mystical heritage and long training
allows the Sulatar to exercise great control over bound
fire [[elemental]]s. Curiously, when dealing with a [[dragonmark focus item]], a Sulatar can control the item as if they had the required [[dragonmark]].
The [[du'ulora]] champion Lord Sulatesh commands
[[Kintam Ulakhun]], the great fortress that watches [[Kasshta Keep]] from the edge of [[Syrkarn]]. Sulatesh has commanded this front since the war began—he was present at
the first disastrous siege of Kasshta, and he still thirsts
for vengeance. Sulatesh is a cruel being who takes great
pleasure in torturing his foes, both on the battlefield
and in his dungeons. The [[kalashtar]] and agents of the
[[Summit Road]] who fall into his hands suffer for weeks
before being allowed to die. While the tortures Sulatesh
devises are horrifying, this obsession could provide the
time rescuers need to liberate a prisoner, or it could give
prisoners time to devise a plan of escape.
Although cruel to his foes, Sulatesh treats his troops
well and is loved by his soldiers. Many are disturbed by
the practice of torture, but most accept their lord's explanation that it is a necessary tool to purge the prisoners of the //altavars// that possess them. A few, however, are deeply
troubled by what they have seen, and these doubters could
come to the aid of prisoners in [[Kintam Ulakhun]].
[[Karrn|Karrnath]]s might dominate much of [[Southwatch]] in [[Stormreach]], but they
are not the only settlers within the area. The Summerfield ward contains a large amount of the district’s housing, and many of the residents are not Karrns.
The ward has a mix of poor people who cannot afford
to live elsewhere, or choose not to squeeze into an
overcrowded district such as [[Cross]], and well-to-do
explorers and pirates who would rather live in the open
than with the wealthy folk of [[Respite]]. Summerfield is
therefore welcoming to almost anyone, and many of
the residents do not take kindly to the [[Swords of Karrn]]
throwing their weight around in this ward.
!! Noteworthy Locations
* the [[Ship's Cat]]
* the [[Thrifty Traveler]]
//"You heard I can get you into [[Adar]]? Well aren't you a bold one—[[Brelish|Breland]] I'd bet from the swagger, the accent, and that gods-awful blue. How'd you and your whelp friends survive long enough to get here, boy? And even if I could get you to Adar, why would I? Go home. You've been misled."//
<div align="right">—[[Murephan]], Summit Road guide</div>
Some dissidents within [[Riedra]] live long enough to
escape, but few places in [[Sarlona]] are welcoming, and getting into [[Adar]] is not easy. Occasionally, [[Adaran|Adarans]] warriors
engage in sorties to bring the war to the [[Inspired]] or to get
to other lands. Adar's defenders also need intelligence on
their enemies' movements along their borders. In sum, a
need for spies and a secret way across Adar's boundary is
obvious. A clandestine organization called the Summit
Road, or simply "the Road," performs these services.
!! Joining the Summit Road
Entry into the Summit Road's ranks is a mixed blessing, and few take to this arduous pursuit lightly. But the Summit Road doesn't just trust those who would join it
because they pass a cursory magical examination. Membership on the Road is only offered to hardy souls who have proven themselves capable and
daring, steadfast and honorable. Such persons must be
loyal to [[Adar]] and foes of the land's enemies. Such agents
are often called Summit Road guides, or just guides.
All sorts of people work for the Summit Road. Their common
bond is a desire to fight for freedom and willingness to face, confound, and even kill Riedran authorities. Members are
prepared to die before allowing themselves to be captured.
About half of the members of the Road are spellcasters or
[[psionic|psionics]] manifesters of some sort, since these talents aid in fooling
and defending against the forces of the [[Inspired]].
!! Summit Road Benefits
At its core, the Summit Road is a group of highly skilled
infiltrators and sneaks. They form a network of individuals and small groups, [[Adarans]] and non-Adarans, willing to shelter those on the move. All hope to thwart
the [[Inspired]] and to free as many awakened [[Riedrans]] as
possible. Many in [[Sarlona]] sympathize with the Summit
Road, or would if they knew about it.
The large number of spellcasters and
manifesters in the ranks of the Summit Road means
easy access to services provided by such persons. Healing
and spells or powers that remove mind-affecting magic are accessible within a day, as long as the spell or power requested is [[rare-tier|spell tier]] or lower. Guides
must provide costly material components. Similarly, if
they provide the materials and can show a great need,
Summit Road guides can get a [[magic item]] made for cost.
Those who abuse these services for personal gain quickly
find that their fellow guides won't provide such aid.
Information is one of the Summit Road's strong suits, particularly when it comes to [[Adar]]'s borders. Many of the Road's members and sympathizers are
knowledgeable and capable information brokers. It has maps of Riedran fortifications near Adar, diagrams of regular patrol routes, lists of sympathizers, and so on. Usually, when a group of guides goes on a mission for the Road, the leader (trailblazer) assigning the task supplies all relevant intelligence available for and pertinent to the job, including destination, contacts, and expected challenges. Known information gaps are always revealed. Of course, sometimes the job is to gather intelligence, in which case some or all of these facts can be "gaps."
As Summit Road guides, characters have
access to a wide variety of travel modes and routes, as
well as known safe houses and hiding spots. Secret routes
through underground passages and psionic portals are
all available. NPCs sympathetic to the cause might also
provide aid. Access to all such benefits is given on a need
basis—important and sensitive information and locations
are reserved for trusted guides.
!! Playing a Summit Road Guide
You are the pathfinder on a way to safety and hope from a land
that has lost all freedom. Sometimes you are a chirurgeon's
knife, infiltrating diseased territory to lead someone in need
from [[Riedra]] to [[Adar]]. Other times you are the watchman's
eyes, observing to discern truth and useful knowledge
about the enemy. And when need be, you are the merciful
arm of death that removes those who cannot be saved.
Trust is vital to you and your team members, and to
those who direct you. Misplaced faith is death or worse.
Without one another, Summit Road guides can't survive—each provides essential skills. Your team is only as strong as its weakest member, and when failing can cost you your
mind, nobody wants to be the chink in the group's armor.
You do much of your work incognito. Whether you're
actually masked or disguised depends on the work and
the timing, but letting someone see your face who doesn't
need to do so is a mistake. Many persons you aid never
learn your name or what you look like.
When you joined the Summit Road, you did it because you thought it was right or because you had nowhere else to go. Regardless of your initial motivations, the risks you take in infiltrating [[Riedra]]n territory or the [[Syrk|Syrkarn]] frontier aren't part of some romantic fantasy. Worst of all, people back home in [[Adar]] might respect what you do, but they're always wondering if the person who comes home is really you.
Still, you are a hero. You can see it in the eyes of the
Riedran defector you smuggle through [[Zi'til'natek]] and
into central [[Adar]]. He has seen horrors, you know, and now
he'll have a hard life, but he'll be free. Sure, the monks
will watch him, but he'll marry a valley woman and
raise his children to be whatever they want to be. And he
won't have to serve beings he has come to know as evil and
alien. You created that life for him, and, the [[Light|Path of Light]] willing,
you'll survive long enough to do it for many others.
One day, the [[Inspired]] will kill you if you're lucky, or
capture you if you're not. Between now and then is the
time to make them pay and take from them what they
never deserved to own. Maybe you'll live to see the
Inspired fall. Until then, your homage to the [[Path of Light]] is walking the Summit Road.
!!! Combat
You evade enemies until you must engage,
using three "weapons" taught to every Summit Road guide:
information, stealth, and speed. First off, know your enemy
and your path as well as you can before you set out. "Prepare for the worst, but travel light" is a maxim for those on the
Summit Road. Stealth means going only where you have to,
and doing so unnoticed. Speak with whom you must, but
reveal only that which must be told. Speed means getting
whatever you came for and getting out. If you must engage
an enemy, kill quickly, letting that be a form of mercy to
those doing their duty for the [[Inspired]]. If you want to send
a message with your violence, send it directly to the [[Chosen]]
or the Inspired—the [[soldiers|Harmonious Shield]] and [[common folk|Riedrans]] of [[Riedra]] are slaves, and they don't deserve further pain.
!!! Advancement
The Summit Road recruited you because you showed the ability to do what needs to be done. You exemplify some combination of stealth, fighting prowess, and resistance to mind control. You also showed a willingness to do thankless work in nerve-rattling conditions.
New recruits face intense scrutiny and dangerous missions. Green guides are given information and shelter as needed and no more. As you show dependability and
good performance, along with a willingness to undergo
regular and rigorous testing to guard against [[mind seed]] and
other sorts of infiltration, you can be inducted further
into the Road's internal structure, and you become privy
to more sensitive information.
Rank isn't formal on the Summit Road—respect must be
earned and kept through merit. If leadership is for you, the
current leaders, called trailblazers, must make sure you're
not an infiltrator. Once you do get in, you can assign teams
to special operations and oversee information-gathering.
Staying in the field is always an option, but doing so means
never being truly on the inside.
!!! Missions
Working the Summit Road is hard but simple. You get missions from trailblazers and you perform them.
A Summit Road guide might be asked to do any
number of tasks. Helping a dissident cross into [[Adar]] is
usual, but guides might be assigned to take out a group of
monsters that have moved into one of the organization's
secret passages through or under Adar's mountains.
Scouting enemy positions and removing obstacles for
another team's mission, or even providing a distraction,
can be part of a guide's duties.
Sometimes a Summit Road guide is taken prisoner.
Other guides are dispatched to help the prisoner escape
or, if they must, end the unfortunate's life.
!!! Responsibilities
The Summit Road expects you
to devote your time to the organization's needs, taking
missions whenever they are available. You can engage in
other activities as long as they don't endanger the Road,
and finding and planning your own missions is looked
upon favorably when such undertakings prove successful
and meaningful. However, long absences raise suspicions,
especially when they're not prearranged. Such a hiatus
can lose a member some standing and might require them
to undergo interrogation and a fresh [[mind probe|detect thoughts]].
!! The Summit Road in the World
"//Those guides, they're hard and strange. Not normal, you know? Why anyone would do what they do is beyond me. Still, if any come here needing a roof or some food, my house is open to them. My wife's grandfather was Riedran...//"
<div align="right">—Deepak Ruudraksh, Adaran herder</div>
As Summit Road guides, the PCs are revolutionaries and soldiers—perhaps in an unwinnable war. The Road requires a stoic resolve and unswerving commitment. It also offers a great deal of freedom. Guides can plan and
execute their own missions, gaining that much more glory
when the undertaking works in favor of [[Adar]]. Further, the
characters can rest assured that if they're captured, their
allies in the Road won't sit idle. Members of the Summit
Road are like a strange family where interdependence is
as important as good steel and the right spell.
!!! Organization
When [[Adar]] shut its borders after repelling the initial attacks of the [[Inspired]], the early focus was on fortifying all points of entry. During that time the
[[Shroud]] was built. The masters of the monastery-fortresses,
especially [[Kasshta Keep]], [[Malshashar]], and [[Shalquar]],
quickly found they needed a way to get into and out of Adar.
This need was the genesis of the Summit Road.
[[Malshashar]] has always had friendly contact with the
[[dromite]]s of [[Zi'til'natek]]. Zi'til'natek's inhabitants had no
love for [[Riedra]]'s new leaders. Preliminary crossings were
through Zi'til'natek and underground ways constructed for
the purpose. In this time, many would-be Riedrans still
opposed the [[Inspired]] and sought escape. [[Adaran|Adarans]] warriors
also took the fight to the Inspired on a small scale.
Conditions on both sides of the mountains soon stabilized, more [[Riedrans]] becoming loyalists and [[Adarans]] becoming more defensive and insular. The Summit Road
evolved. Failed missions and subverted guides proved the
need for strong will among Road members. Supernatural
defenses were essential parts of any team, so the remaining leaders began to favor mystical recruits. During this growth phase, the Road also put forth tendrils, establishing bases in [[dromite]] city-hives under [[Riedra]] and even in the [[Syrk|Syrkarn]] port of [[Ardhmen]].
Summit Road guides call their leaders trailblazers—
those who find new ways. New, probationary, and regular
members have always been called guides, and most Road
agents are guides for years before being named trailblazers.
Guides have differing levels of esteem in the organization,
but no official rank differentiates them. Those with less
experience usually defer to those with more. Advancement
is based purely on merit and is totally optional—under
the control of existing leaders. No guide is ever forced to
become a trailblazer, which can be a sedentary job.
Masters of the temple-keeps in [[Adar]] are nominally in
control of the Summit Road. It is they who often ask the
trailblazers to undertake some task for the good of Adar.
The trailblazers in turn assign guides to a task, or even
oversee a mission directly. Most trailblazers remain in Adar
however, so it is harder for the Road to be subverted.
The Road is highly decentralized, like [[Adar]]'s entire
defense infrastructure. Guides must speak or learn Riedran, and they learn special phrases and sign language that help them identify one another and communicate
secretly. Few outside the Summit Road know its underground language, and unauthorized persons who show such knowledge are often met with hostility.
Cells of the Road operate independently. A group of
guides is a highly specialized team composed of four to
six members. Each member has skills that complement
those of the others in the group. In this way, each Summit
Road squad is a strong support system for its members.
Information is shared between groups by [[psionic|psionics]], magical, and mundane means, and teams change operations centers as needs dictate.
All teams are expected to take circuitous routes from
their starting points to prevent those points from being
located by [[Riedra]]n patrols.
!!! NPC Reactions
[[Adarans]] admire the courage and
skills of Summit Road guides, and those who recognize
a guide are often friendly. Only in the smallest Adaran
thorp might a group of guides find no aid. However, most
Summit Road guides keep their affiliation secret, and few
people can tell a guide on the Summit Road from other
hardened folk who travel the wilds of Adar.
Many of the Road's members are outsiders in Adaran
society. Some are known criminals. Others are members of
races that rarely work on Adar's surface but that also dislike
the [[Inspired]], such as [[dromite]]s. Because of this unusual
membership, a few inside [[Adar]] fear Summit Road guides.
One slip, these people say, could open the door to the
[[Inspired]] or worse. Such persons might be unfriendly.
Agents of [[Dvaarnava]], [[Shalquar]], [[Malshashar]], and
[[Kasshta Keep]] closely watch members of the Summit
Road, but they are usually indifferent. Their job is to
catch any unusual behavior among the guides, not to help
or hinder.
Loyal [[Riedrans]] have no love for Summit Road
guides, believing they are kidnappers and assassins in the
service of fiendish magicians. Such Riedrans who discern
a guide's true connections are invariably hostile.
!! Summit Road Adventures
Summit Road guides are facilitators, spies, soldiers, and,
well, guides. If somebody needs to get into [[Adar]] from the
outside, it's likely that the Summit Road is going to be
involved somehow. Guides are meant to be a "first contact" point between foreigners and the land of refuge, but
they also serve as foils for [[Riedran|Riedrans]] patriots and a way for
[[Adaran|Adarans]] characters to move into the wider world.
From rescue missions, to strikes against Riedran
fortifications, to expeditions to uncover potentially
useful artifacts from [[Sarlona]]'s bygone ages, the Summit
Road can be a motivating force behind an entire campaign. Outsiders and foreigners can earn the respect of
Adarans by serving the Road, so foreign characters could
do worse than to have the Road as an ally or a patron.
Players who like action and intrigue mixed with a good
dose of paranoia should find the Summit Road to be a
fine home for their PCs.
The Summit Road has the potential to be a group of allies or foes, or even a patron. Initial
encounters with guides are always edgy as they get to know
foreign characters or raw recruits. Everything is a test
at that stage. If pushed, Summit Road guides don't take
chances—they strike with deadly efficiency against those
they see as risks to the Summit Road.
''Example Encounter:'' [[Murephan]] and his sidekick [[Kelki]] are in [[Ardhmen]] in [[Syrkarn]] looking for the PCs, having heard of them through intermediaries. The rogue [[Chosen]] wants to size up the foreigners and see why they're in [[Sarlona]]. If he
likes what he sees, he offers the characters their first test
run for the Summit Road. Alternatively, Murephan and
Kelki are about to put some inexperienced Adaran guides
to the test by pretending to be a couple of questionable
wanderers in Adar's wilderness.
The spellcaster completes a foul ritual using the blood of a [[humanoid]] killed within the last 24 hours, calling forth between four and eight [[tier 1|creature tier]] [[demon]]s (such as [[quasit]]s or [[dretch]]es) from a [[demiplane]] of [[Khyber]] or another [[plane]] of existence.
The DM chooses the demons, and you (the spellcaster) choose the unoccupied spaces you can see within 60 feet where they appear. A summoned demon disappears when it is incapacitated or when the spell ends after 1 hour (or your concentration breaks).
The demons are hostile to all creatures, including you. The demons pursue and attack the nearest non-demons to the best of their ability.
As part of casting the spell, you can form a circle on the ground with the blood used as a material component. The circle is large enough to make a 2-foot-radius circle around you. While the spell lasts, the summoned demons can't cross the circle or harm it, and they can't target anyone within it.
If you are able to cast legendary-tier spells, you can cast this as such to double the number of demons summoned.
This item appears to be a longsword hilt. While grasping the hilt, you can cause a blade of pure radiance to spring into existence, or make the blade disappear.
This sword deals radiant damage instead of slashing damage. It deals extra damage to [[Mabar]]an [[undead]].
The sword's luminous blade emits bright light in a 15-foot radius and dim light for an additional 15 feet. The light is considered sunlight. While the blade persists, you can expand or reduce its radius of bright and dim light, to a maximum of 30 feet each or a minimum of 10 feet each.
The Sun Pillars are a small mountain range in [[Xen'drik]], separating the [[Menechtarun Desert]] from the [[Wasting Plain]].
''Date: '' [[15 Therendor|Khorvaire calendar]]
The festival of [[Dol Arrah]], the Sovereign of Honor and Light, is a day of peace, a time for enemies to set aside their differences and commune. This tradition continued throughout the [[Last War]], when most
armies kept the peace on Sun's Blessing. However, in
916 YK the armies of [[Thrane]] conducted a great assault
on the [[Brelish|Breland]] city of [[Starilaskur]] on Sun's Blessing,
and many Brelish curse Thrane on this holiday.
Most of [[Sharn]] observes Sun's Blessing, and a
grand celebration takes place at the [[Pavilion of the Host]] in [[Sovereign Towers]]. It is one of the safest days to wander the city, and a time when rivals often try
to resolve their conflicts peacefully.
The arrival of the [[kalashtar]] in [[Adar]] 1,800 years ago was the beginning of the end
for the [[Twelve Kingdoms|Sarlonan province]] of [[Sarlona]]. War raged in [[Dal Quor]], and the enemies of the kalashtar were determined to bring the struggle to [[Eberron]]. The quori that served [[il-Lashtavar]] (The [[Dreaming Dark]]) were not prepared to sacrifice their power and individuality as the kalashtar spirits
had, and this prevented them from directly taking hosts.
But they could still manipulate mortals through dreams.
They could give a paranoid king nightmares of a conspiracy, leading him to persecute his own people. They could
send a charismatic general visions of justice, urging him
to rise up against a tyrannical king. They could send two
people dreams of love, ultimately forming a relationship
and a child more suited to quori manipulation.
Starting 1,500 years ago, they did all this and more.
Using fear, prejudice, and greed, the [[quori]] threw the
kingdoms into chaos. For two hundred years, Sarlona
was shaken by war. As one nation became stable, another
would attack it, driven by racial prejudice or religious
zealotry, or a new rebel group would arise within its borders. Terrible magic was unleashed. No [[human]] nation had the power to rival the [[giant]]s of [[Xen'drik]], but the [[wizard]]s of [[Khunan]] and the [[sorcerer]]s of [[Corvagura]] were
mighty in their own right, and the lords of [[Ohr Kaluun]]
were masters of [[divine|divine magic]] and [[arcane magic]]. This period was
known as the Sundering, and nations were shattered in
its wake.
The [[quori]] used their power to set the Sundering in
motion, and so they used their power to end it. After two
hundred years of careful manipulation, they managed to
establish bloodlines across [[Sarlona]] whose members were
especially vulnerable to quori manipulation and possession—the predecessors of what are today known as the
[[Chosen]]. They began a campaign of dreams, promising
salvation to those who would follow their newly forged
"[[Path of Inspiration]]." Soon, the first [[Inspired]] appeared.
These beings had great charisma and impressive [[psychic powers|psionics]], and to the people of the war-torn lands they
were literally the answer to their dreams. The Inspired
brought an end to many feuds, frequently by uniting
former enemies against carefully selected scapegoats. The
[[yuan-ti]] of [[Syrkarn]], the [[shulassakar]] of [[Khalesh]], the [[oni]] of [[Borunan]], and the mystics of [[Ohr Kaluun]] were
all targeted in this way. Many were destroyed or enslaved;
others fled to [[Adar]], [[Xen'drik]], or [[Khorvaire]]. Throughout
these struggles, the [[Inspired]] extolled the virtues of unity.
Within two centuries, the old traditions of the twelve
kingdoms had been abolished. Where once twelve proud
nations stood, now only one remained: [[Riedra]].
!! The Age of Unity
Over the course of the next thousand years, the [[Inspired]]
tightened their grip on the people of [[Riedra]], slowly
expunging the remaining traces of the old cultures. The
Inspired moved slowly, making changes with each generation until no one alive remembered a time when life was
any different. Through psychology, indoctrination, and
control of dreams, the quori shaped a nation of slaves
whose people were grateful for their chains, believing that
the Inspired were their only shield against the horrors of
the past and the outside world
The Sundering Peaks are a small mountain range in southern [[Aerenal]], just north of the [[Blackwood Jungle]].
''District Type: ''Average residences<br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' The few mansions in this district
are on the east side, where they get the best view of
the sunrise over the cliffs. Most of the people in this
neighborhood are successful, but not tremendously
wealthy; they are the shopkeepers, hirelings, and
servants who see to the needs of the rich and powerful
inhabitants of the quarter.<br/>
''Social Class: ''Middle class<br/>
''Neighbors:'' [[Highhold]] (northwest); [[Ocean View]] (east); [[Seventh Tower]] (bridge, north); [[University District]] (bridge, northeast); [[Kenton]] (below)
Sunrise is a quiet, unremarkable district. It is exceptionally clean, and one of the safer places to live. However, inhabitants still have to comply with [[Tavick's|Upper Tavick's Landing]] Laws, which can prove to be quite annoying for adventurers.
This 1-foot-long, gold-tipped, iron rod glows brightly when struck. It clearly illuminates a 30-foot radius and provides shadowy illumination in a 60-foot radius. It glows for 6 hours, after which the gold tip is burned out and worthless.
The Sunscale Clan guards an [[Age of Demons]] ruin in the eastern tip of the [[Q'barra]]n jungle.
{{dragonborn clanhold}}
The first of two tiers of [[Io'lokar]] that wrap the mountain slope on all sides, the Sunward is home to higher-rank spellcasters, lower-grade academics, and the city’s most respected entertainers. Its cobbled streets are quieter than those of the lower tiers (the [[Terrace]] and the [[Freeward]]), but the ward’s theaters draw audiences from across the city.
!! Noteworthy Locations
<<list-links-article "[tag{!!title}category[location]sort[title]]">>
This province of [[Syrkarn]] is the most sparsely populated of the four, with much of its land covered by the [[Andnemun Desert]]. The crystalline ores used for [[crysteel]] are mined here, as well as iron and other ores. In addition to the [[human]] and [[eneko]] population, a small band of [[stone giant]] nomads known as the Sandstriders are rumored to roam the Andnemun.
Like many of her fellow [[Io'lokari]], Sura sought a new life after fleeing
a tyrant dominion lord in the [[Vast]]. She is a low-level
researcher at the [[College of Arcane Sciences|Colleges of Io'lokar]], but her
work there is more than it appears. Sura is not a [[human]] but a [[yuan-ti pureblood]], kin to the [[serpent folk|yuan-ti]] that have secretly laired in the ruins of [[Io'vakas]] since that city’s fall. For years, she has relayed powerful arcane lore to her sinister cult. What those leaders do with Sura’s secrets is as yet unknown.
Lord Surasek, supreme pathfinder of the [[Guiding Path]], guides the nation of [[Riedra]] from the metropolis of [[Durat Tal]] in [[Corvagura]]. As Eidolon of the Sphere of Surasek, he also holds final authority over the governing of nearby [[Dar Myan]] and [[Dul Kabana]]. He is one of only three [[kalaraq]] [[quori]] who spend most of their time in their [[Inspired]] vessels on [[Eberron]] rather than scheming in the [[Region of Dreams|Dal Quor]]; the other two are Lord [[Zoratesh]] and Lady [[Sharadhuna]].
Surrinek, a [[shifter]], has a near monopoly on the river taxi business in [[Stormreach]], which extends down the [[Koronoo River]] to the [[Harbor]]. She allows
the riverboat captains who work under her to operate
almost autonomously, as long as they divide the available customers equitably. The captains’ boats range
from gondolas to barges. Surrinek runs the business
from a stilted hut over the river in [[Whitewash]]. Boats can be tied up at
its base and are left there when they need repair.
The ablest captain on the city’s waterways, Surrinek grew up in [[Stormreach]] and knows the river and harbor like the back of her hand. She is a source of
information if she can be persuaded to part with it;
flattery is as much a weakness for her as coin.
Within this satchel are a number of items that can be used by any adventurer to help endure the hardships of the harsh wilderness. Each part of the satchel can be put to good use if the person carrying it knows basic survival skills. The features of the satchel are as follows:
* The strap of the satchel can be removed. Speaking the word "rope" changes it to 50 ft. of hemp rope. Speaking the word "chain" transforms it into 20 ft. of chain. Speaking the word "strap" returns it to its ordinary form.
* One of the pouches within the satchel holds a single branch. Each morning, this branch grows <<dr 1d4>> [[goodberries|goodberry]] up to a maximum of 10. These goodberries accelerate healing and provide sustenance for an entire day.
* Attached to the front of the satchel is a small, round yellow orb. If it is removed from the satchel, it begins to glow. This casts bright light in a 15-foot radius and dim light for another 15 feet.
* Speaking the word "shelter" causes the satchel to spring up into a tent large enough to hold 4 human-sized creatures comfortably. Any items that were contained in the bag when this command word is spoken are stacked up neatly in the corner of the tent. Speaking "satchel" causes this item to return to normal, but only if the contents of the tent can be contained within the satchel.
A demonic [[overlord]] could be sealed beneath the ruined [[yuan-ti]] city of Sustrai Mor in [[Khunan]], [[Syrkarn]]. The [[eneko]] [[Karrak]] cults are said to be numerous within the wasted plain that surrounds the ruins. Among the [[Syrk|Syrks]] nomads, the city has a reputation for being haunted or overrun with secret sects of [[yuan-ti]].
This ruin of an ancient [[Dhakaan]]i city is today populated by [[troll]]s and [[ogre]]s. The ruins and the surrounding lands are the domain of the [[warlord]] [[Taal'chib]].
Swiftstride [[shifter]]s are graceful and quick. Typically
feline in nature, swiftstride shifters are often aloof and
difficult to pin down physically or socially.
This sword was sculpted from [[Mabar]]an [[quintessence]], and hungers for the spark of life.
When you attack a creature with this magic weapon and score a [[critical|full success]], that target takes extra necrotic damage if it isn't a [[construct]] or an [[undead]]. You simultaneously rapidly recover from minor injury.
When this [[devil]]ish weapon wounds a living creature, green steam issues from the wounds. Injuries dealt with this weapon cannot be healed through magical means, and excruciating necrotic energy widens the wounds for a few minutes after they are dealt.
''District Type:'' Garrison<br/>
''Buildings:'' Garrison building, temple ([[Dol Arrah]]), average lodging (20), poor lodging (4),
upscale food (8), average food (15), poor food (15),
upscale trades (15), average trades (33), poor trades
(28), average services (40), average residences (160),
poor residences (40)<br/>
''First Impression:'' Officers of the Watch march to
and fro, others stand at attention, and still others
drill for combat. Shouted commands and marching
songs fill the air.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Sovereign Towers]] (northeast); [[Dragon Towers]] (southwest); [[Dava Gate]] (northwest); [[Smoky Towers]] (bridge, south); [[Olladra's Kitchen]] (below); [[Skysedge Park]] (above)
Sword Point houses the [[Sharn Watch]] [[garrison|Sword Point Garrison]] responsible for maintaining order throughout the [[Central Plateau]] and [[Northedge]], with just over 500 guards in residence or assigned to duty in the district.
This sprawling complex
links five adjacent towers into an enormous fortresslike structure. Thick walls crowned with battlements
connect the towers along the periphery, while a huge
platform connects all five towers to form an open
yard for drills, all a half-mile above the ground.
The ranking officer at Sword Point, Commander
[[Belew Yorgan]],
is a harsh but effective leader. He tries to curry favor
with the [[Citadel|King's Citadel]], the [[dragonmarked house]]s, the [[city council|Sharn Council]], and the temple leadership all at the same
time. As a direct result, he commits most of his
resources and attention to the [[Upper|Upper Central]] and [[Middle Central]] districts, leaving [[Lower Central]] under protected and [[Northedge]] practically ignored.
''Leader:'' [[Drago Thul]]<br/>
''Notable Members:'' [[Mordalyn ir'Tanar]], [[Reng Nagel]]<br/>
''Base of Operations:'' [[Grindstone]]
In many ways, the district of [[Grindstone]] is a separate
city within [[Stormreach]], and it is a city under martial
law. Grim soldiers patrol the streets. One warrior
wears [[Aundair]]ian leather, another heavy [[Karrnath]]i
chain. But both bear the same device on their tabards
and shields: a greatsword crossed by two longswords,
set against a field of black. These are the Swords of
Karrn, drawn from among the deadliest warriors of
the [[Five Nations]].
The Swords defend the [[Karrnath]]i immigrants
of Grindstone, and many assume that the sympathies
of the militia lie with Karrnath. This is a mistake.
Instead, the Swords of Karrn are bound together by
the teachings of [[Karrn the Conqueror]], by their secret [[faith|Three Faces of War]], and by their devotion to a man named [[Drago Thul]]—a person they wish to place on the throne of a new united realm.
[[Drago Thul]] has
transformed [[Grindstone]] into a vision of his ideal
state, imposing a rule even harsher than that of the
[[Code of Kaius]]. Under the watchful eyes of his soldiers,
Grindstone is one of the safest places in [[Stormreach]].
The Swords dispense harsh justice whenever the peace
is disturbed; criminals might be beaten, maimed, or
even killed. Occasionally the Swords venture outside
Grindstone in pursuit of enemies, but by and large
they are content to police their territory. They have
no respect for the [[Stormreach Guard]], and few guards
enter Grindstone without direct orders.
The Swords of Karrn are one of the most dangerous forces in Stormreach. Its members are drawn from
the elite forces of the [[Five Nations]]; they are not simply
soldiers, but among the best soldiers [[Khorvaire]] has to offer. They are equipped with masterwork and magical
equipment, and they react to challenges with a careful
grasp of tactics. Despite coming from many nations,
the soldiers are bound together by their faith in the
[[Three Faces of War]] and the words of
[[Drago Thul]]. The Swords enforce [[Karrnath]]i values,
but they seek to bring back the old Karrnath of [[Karrn|Karrn the Conqueror]]’s
time. It’s not a case of holding one of the [[Five Nations]]
over the rest: It’s wiping away the weak traditions of
[[Galifar]] and returning to something pure.
Founded on principles of freedom and a sharp
disdain for what they see as oppressive monarchies
across the continent of [[Khorvaire]], the Swords of Liberty emerged
at the start of the [[Last War]] and began causing trouble
both in [[Breland]] and throughout the [[Five Nations]]. In the new peace,
their numbers swell, as does their violence. They now
foment war, staging attacks and raids, murdering
and burning villages to draw Breland into war once
again. The Swords believe that Breland was strong
enough to win the Last War outright and that the
other nations are too weakened and too afraid to put
up much of a fight now. This view might be truer than
the other nations would like to believe.
The Swords are said to be led by a mysterious individual named Red Owl, whose headquarters is located somewhere in [[Xandrar]].
(Tyrannosaurus Rex)
This enormous predator terrorizes all other creatures in its territory. Despite its size and weight, a swordtooth titan is a swift runner. It chases anything it thinks it can eat, and there are few creatures it won't try to devour whole. While prowling for substantial prey, a titan subsists on carrion, and on any smaller creatures that try to dart in to steal its meal.
These creatures are native to parts of [[Talenta Plains]], and are sometimes hunted by [[Valenar]] raiders for sport.
The [[daelkyr]] create living tools and weapons, objects formed from chitin, bone, and muscle. Many of these items bond to their bearer, drawing sustenance from the creature attuned to them; for this reason, they are commonly called "symbionts." Though symbionts are living tools, they are not necessarily considered sentient creatures.
Most of these items, once they bond to their bearer, cannot be removed even if the bearer desires it. The only way to end the "attunement" and remove a symbiont is to use an effect or spell that ends a curse.
!! Symbionts
<<list-links-article "[tag{!!title}sort[title]]">>
This [[arcane theory]] maintains that an effect produced can be magnified; to create a [[fireball]], burn a ball of flammable guano. In addition, things that have once been in contact maintain a connection—a leaf is still connected to a tree, a lock of hair is still connected to the creature it came from—and magic can flow along this connection. Sympathetic magic still relies on words of power for its verbal components, but its material and somatic components are often quite different from other techniques; rather than tracing sigils in the air, a sympathist [[wizard]] might light a match to produce a [[fire bolt]], or plunge a needle into a wax figure to cast [[crown of madness]].
Sympathetic magic isn’t taught at [[Arcanix]]. It’s generally seen as a primitive form of [[Siberyan|Siberyan Theory]] magic—that the [[wizard]] is channeling the Siberyan energy, but using the sympathetic focus as an alternative to the more complex Siberyan techniques. It is effective, but not as versatile; it relies on the ability to create a sympathetic construct of the desired result. As a result, sympathetic magic is often found used by self-taught “hedge mages” or clans or tribes that have stumbled onto these techniques in isolation. Practitioners may be powerful, but limited in their range of spells or ability to incorporate new ideas.
A second form of sympathetic magic is tied to the "magical thinking" approach to [[artifice|artificer]]. Rather than being a different approach to [[Siberyan|Siberyan Theory]] magic, magical thinking is actually a form of [[Externalist|Externalist Theory]] magic that draws on the power of [[Thelanis]] to temporarily enforce [[fey]] logic on reality. This is more often associated with [[warlock]]s, [[sorcerer]]s, and [[bard]]s than with [[wizard]]s.
Verbal components in sympathetic magic vary based on the powers being wielded. A fundamentally [[Siberyan|Siberyan Theory]] approach may use Draconic syllables, even if the caster has just stumbled upon the sounds that produce effective results. Magical thinking could use Sylvan phrases. On the other hand, sympathetic magic can also involve a chant or a poem describing the desired outcome; essentially, it’s a longer and less efficient process that combining three syllables of power, but it’s something someone can stumble onto even when they don’t know those syllables of power.
''Color:'' Smoky gray<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Shadow|Mark of Shadow]]<br/>
''Associated Plane:'' [[Mabar]]
Sypheros is a dim [[moon]], and people often find it difficult to spot in the night sky. Recent observations using powerful spyglasses have confirmed that a jagged crack runs down the center of the moon, as if the moon is splitting in two. Many believe that children born in the month of Sypheros inherit a shifty, untrustworthy nature, and parents often seek to time pregnancies to avoid this month. However, the [[druid]]s say that the children of Sypheros are not evil; rather, they are comfortable with the shadows and can face them without fear.
Imagine a perfect blue sky, stretching
off into the horizon. There's no sign
of the sun, but the sky is clear and
bright, and the floating crystal
towers gleam as if caught in a
sunbeam. A warm, gentle breeze
brushes over you, and there's a faint sound of distant chimes. You feel absolutely calm; in this moment, all anger melts away.
This is Syrania, the Azure
Sky. While people often
think of its floating towers
and crystal spires—the
same magic that sustains
the great towers of [[Sharn]]—Syrania is the plane of
peace and all that flourishes
in peaceful times: commerce,
education, reflection. There are
no vast armies here, no dangerous
monsters. The magic of Syrania allows
all creatures to communicate and dispels
aggression. As such, it's a common crossroads for beings who
do travel the planes, and the [[Immeasurable Market]] of Syrania
is the safest place to interact with [[fiend]]s, [[slaad]]i, and other
extraplanar beings. However, while bloodshed is rare in the
Azure Sky, you can still make deadly enemies; mortals are
always wise to tread lightly in the cities of [[angel]]s.
!! Universal Properties
Syrania encourages communication and negotiation, and
grants all creatures the gift of flight. The [[Open Sky]] of Syrania
is an endless void, and without flight, you could fall indefinitely;
fortunately, all creatures find that they can move through the
air just as naturally as walking.
* //''Unburdened.''// A creature can fly as easily as they can walk, unless it already fly faster than it can walk, in which case its existing flight speed is enhanced.
* //''Gentle Thoughts.''// A creature has advantage when using gentle persuasion and disadvantage when using intimidation.
* //''Standard Time.''// Time passes at the same pace as on the Material Plane, and is consistent across its layers.
* //''Universal Understanding.''// A creature can understand the literal meaning of any spoken language that it hears and can understand any written language that it can see. This doesn't decode secret messages or reveal the meaning of symbols that aren't part of a written language.
* //''Absolute Peace.''// Creatures have disadvantage to attack or cast damaging spells, and suffer 1 additional stress whenever suffering consequences for aggressive actions.
!! Denizens
Syrania is a curiously empty plane. While the [[Immeasurable Market]] is always bustling, most of this traffic is comprised of creatures from other planes. Syrania's other spires have comparatively few inhabitants—not so few that they feel
desolate or barren, just enough so that it always feels slow
and peaceful. There's no need for people to perform menial
tasks in Syrania, nor does this plane have [[manifestation]]s to populate it; damaged structures gradually repair themselves,
and litter and debris slowly dissolve.
The native inhabitants of Syrania are winged humanoid
[[immortal]]s, collectively referred to as [[angel]]s, though they
differ from those of other planes in some important ways.
While they're considered to be [[celestial]]s, most angels of
Syrania are neutral in alignment. They aren't champions
of justice or bringers of hope; rather, they're observers
and scholars, defined by their [[domain|Syranian domain]] of study. The lesser
immortals are simply referred to as angels, while the higher
orders have titles—[[virtue]]s, [[dominion]]s, and [[throne]]s. These
higher angels are bound to the contemplation of a particular
concept, based on their domain, and devote their existence
to contemplating and understanding it. Some believe that
it's through this contemplation that the concept continues
to exist (though most inhabitants of other places—mortal
and immortal alike—consider this to be highly unlikely). The
appearance of Syranian angels is influenced by their domain,
so the Dominion of Storms might be wreathed in lightning
and have wings formed of storm clouds, while the Dominion
of Trees could have bark for skin and moss for hair.
Unlike lesser angels and visitors to Syrania, virtues,
dominions, and thrones are immune to the effects of Syrania's
//Absolute Peace// property, and are capable of taking aggressive
action to defend Syrania, or when pursuing their domain—so
a virtue of war could fight. However, they always try to find
nonviolent or nonlethal solutions to threats.
!!! Lesser Angels
Lesser angels are the least of the [[immortal]]s of Syrania. They have
no names or domains and are generally interchangeable;
they serve as scribes and guides, performing minor tasks.
They do not engage in combat and their statistics are largely
inconsequential.
!!! Greater Angels
[[Virtue|virtue]]s act as assistants and emissaries of the [[dominion]]s.
[[Dominion|dominion]]s focus on a very specific aspect of a single [[domain|Syranian domain]], like "wolves" or "swords".
The greatest angels of Syrania are the [[throne]]s. There's a
single throne for each domain, and they have a profound
knowledge of their entire domain.
!! Layers
Rather than being divided into separate [[layer]]s in the same way
as many other [[plane]]s, Syrania is comprised of crystal spires
floating in the seemingly infinite void of the [[Open Sky]]. The
space within a spire may be far larger than it appears from the
outside, whether the spire leads to the multiple towers of the
[[University]] or the vast expanse of the [[Immeasurable Market]].
However, all of these regions are connected through the
medium of the spires and the Open Sky.
The majority of spires aren't all that vast. Most are the seats
of a [[dominion]], who is attended by a few [[virtue]]s and additional
angels as needed. These have the general flavor of a library
or museum, with additional facilities to allow the dominion to
practice or study its subject. The spire of a dominion of nature
has gardens, while the tower of a dominion of war has displays
of armor and a dueling chamber. But these are still places for
study and contemplation; the seat of a dominion of war isn't an
impenetrable fortress, and the spire of a dominion of nature
has cultivated gardens, not the wilderness one finds in [[Irian]]
and [[Lamannia]].
<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>
!! Planar Manifestations
Here are some ways that Syrania affects the Material Plane.
!!! Manifest Zones
[[Manifest zone|manifest zone]]s tied to Syrania can reflect one or more of
the properties of the plane, but often in more limited ways.
The manifest zone containing the city of [[Sharn]] has a lesser
aspect of the //Unburdened// property; it doesn't grant flight,
but it enhances effects that grant flight or levitation, enabling
the skycoaches and flying buttresses that support the towers.
A zone that has the //Absolute Peace// property might encourage peaceful
behavior without actively enforcing it. Temples are often
built on Syranian zones with the //Absolute Peace// property, while universities and House [[Sivis]] search for zones with the
//Universal Understanding// property.
In addition to standard manifest zones, there are a few
portals to the [[Immeasurable Market]] hidden in [[Eberron]]. These
take many forms; a back door could be an actual door, a large
chest, or a shallow pool of water. A back door only opens under
specific circumstances: when opened with a special key, when
used at a certain time, when blood is spilled, or when a heart
is broken. Most who discover these portals jealously guard
them; a merchant with access to the Immeasurable Market can
acquire remarkable goods!
!!! Coterminous and Remote
When Syrania is coterminous, goodwill spreads across the
world and people find it nearly impossible to contemplate
violence. These periods brought welcome moments of peace
during the [[Last War]], and there are stories of enemy soldiers
coming together to share stories or play games. During these
times, the //Absolute Peace// and //Gentle Thoughts// properties
apply across [[Eberron]]. However, if a creature is attacked,
harmed by a spell, or witnesses its friends being harmed, that
creature is unaffected by //Absolute Peace// for a few minutes. The
influence of Syrania limits violence, but once conflicts break
out, it can't stop them.
While Syrania is coterminous, the skies are clear and the
weather is calm—it's believed that if you're in a Syranian
[[manifest zone]] during this time, it's possible to fly into the [[Open Sky]] simply by flying straight up to the edge of the sky. This may
be apocryphal or only true in certain manifest zones... there's
only one way to find out!
When Syrania is remote, the skies are gray and the sun can't
be seen. People feel quarrelsome and it's difficult to come to an
understanding. Creatures have disadvantage when using gentle persuasion and advantage when using intimidation. Outside of Syranian manifest zones, all flying speeds
are reduced.
Traditionally, Syrania is coterminous on the 9th day of
the month of [[Rhaan|Khorvaire calendar]], once every ten years. Followers of the
Sovereign Host celebrate this day every year as [[Boldrei's Feast]],
a time for people to come together and resolve their grievances;
the tenth-year coterminous celebrations are especially grand.
Syrania is remote once every ten years on the same day, five
years after the coterminous period. This day is still celebrated,
as people make a conscious effort not to give into anger.
!!! Syranian Artifacts
Syrania's greatest treasure is the [[Immeasurable Market]] itself,
with all manner of exotic goods available there. Many of the
[[dominion]]s of Syrania are more interested in collecting relics
tied to their domain than in creating them, but there are a few
who do both; the limits of what they can produce are tied to
their domain.
Other Syranian items are usually linked to the plane's
universal properties. The power of Syrania enhances flight;
there's a stall in the Market that sells [[cloaks of flight|cloak of flight]] that
resemble the wings of an [[angel]]. Things that encourage or
enforce peace may come from Syrania, along with items that
enhance a character's diplomatic ability.
!! Syranian Stories
Wandering angels can stumble into any story, and the
[[Immeasurable Market]] is a boon for adventurers lucky enough
to find it. The [[Last Resort]] can be an interesting place for a
powerful enemy to arrange a meeting; what safer place for neutral negotiations than on the [[plane]] of peace? Given the versatility and opportunities available in the Immeasurable Market, a DM may wish to limit access to Syrania; even if
adventurers find a back door, it could open only at certain
times or require a particular sacrifice.
//''Curious Virtue.''// After the adventurers acquire a curious
object that defies any attempt to divine its powers and history,
a hireling or observer is revealed to be a Syranian [[angel]] that's
observing the adventurers. The item is a powerful extraplanar
artifact; the [[virtue]] doesn't want to take it from them, but rather,
to observe the effect it has on its bearer and the world around
them. The virtue is the key to unlocking the powers of this
powerful artifact... but how do the characters feel about being
subjects of a celestial case study?
//''Pursuit through the Market.''// An enemy of the adventurers
has been making use of powerful and exotic weapons—[[Shavaran|Shavarath]] explosives, a [[Mabar]]an shadow-blade, [[Fernia]]-forged
armor. The adventurers corner the supplier, but they escape
through a portal, and when the characters pursue, they find
themselves in the [[Immeasurable Market]]. Can they find their
foe in the Market? If so, how will they deal with them in a realm
where violence is all but impossible?
//''Celestial Knowledge.''// The adventurers need to obtain a
particularly obscure piece of information, and the only being
that might possess it is a [[dominion]] of knowledge in Syrania.
Can the adventurers find a way to reach the celestial's library
spire? What does it want in exchange for its knowledge—
and will the adventurers try to pay this price, or steal the
information they need?
Each [[virtue]], [[dominion]], and [[throne]] of [[Syrania]] is dedicated to
contemplation and mastery of a domain. Here are
some example domains.
* Arcana
* Art
* Commerce
* Death
* Knowledge
* Life
* Nature
* War
Five thousand years before the arrival of the [[Inspired]] and the present age, the nations now known collectively as Syrkarn were the jewels in the imperial crown of old
[[Sarlona]]. Today, only ancient stonework and half-forgotten
legends mark the fall, passing, and rebirth of this land.
Still, to those who have inherited this seemingly inhospitable kingdom, Syrkarn offers a gift denied to both the warring nations of the past and the Inspired-dominated
lands of the present. To its [[people|Syrks]], Syrkarn is the promise of freedom.
Syrkarn is a vast expanse of arid plains where four nations
of old once stood. Its history is rich with conflict and
conquest, and it is one of the few places in [[Sarlona]] where
the devastating effects of the ancient [[magewars|Sundering]] can still
be seen, untouched by [[Inspired]] reconstruction. A land
surrounded by [[Riedra]] yet distinct from it, Syrkarn has
long been left to its own devices for reasons that none but
the Inspired understand.
Nearly all settlements in Syrkarn are agricultural
centers—communal farmsteads (//daabi// in the Giant
tongue) that trap the windblown soil of the steppes
behind vast networks of berms and stone walls. However,
nearly a third of Syrkarn's population lives on the open
steppes. Though most are nomadic herders or hunters, a
distinct class of traders (mostly [[eneko]]) are the lifeblood
of commerce across the nation. Regular trade roads
carry goods, laborers, and knowledge between the larger
settlements, allowing the [[Syrks]] to maintain a social
infrastructure that belies the land's isolation.
!! Land of the Far Horizon
Syrkarn is an arid landscape of harsh deserts, lush grasslands, and endless steppes sloping up from the southern extent of the [[Sea of Rage]]. Its population consists of an
almost equal mix of Sarlonan [[human]] clans and tribes of [[eneko]]—the mongrel [[ogre]]s who trace their lineage back to the nation of [[Borunan]].
Though the climate and the isolated life of this
land are never easy, the coastal steppes and inland
savannah of Syrkarn offer limitless range for animals
and agriculture. Herds of wild bison and domesticated
goats, deer, and horses roam the grasslands, while
cultivated fields of oat grass and flax spread across the
[[Itzaina|Khunan]] plains and the steppes of the [[Lamecha]] lowlands.
The natives grow a range of vegetable crops, including the gnarled root known as [[sepse]], native to Sarlona and prized for its high nutritional value. Exotic spices
found nowhere outside Sarlona thrive in the heat of
the savannah, as does [[dreamlily]]. Use of the drug is
rare among the [[Syrk|Syrks]] humans, but the [[eneko]] (who are
immune to dreamlily's narcotic effects) grow it for its
medicinal value. Harvests are hard in some years, but
the clans and tribes of Syrkarn know bounty more often
than not.
Though the ruins of great cities dot the landscape, modern-day Syrkarn is predominantly a land of hamlets, villages, and nomadic town sites. The remnants
of [[human]] cities are common in the former lands of
[[Mae-Kree]], [[Sunyagir]], and [[Lamecha]], but the plains
and savannah that were once [[Khunan]] are marked exclusively by the ruins of the [[yuan-ti]]. [[Shulassakar|shulassakar]] and yuan-ti ruins are especially common on the [[Hailana Islands]], said to be the site from which the yuan-ti launched
their desperate voyage to [[Argonnessen]] and left their
homeland behind.
[[Wild zone|wild zone]]s linked to [[Fernia]], [[Risia]], and especially [[Lamannia]] are found throughout this land. Like all of [[Sarlona]], Syrkarn is beset by storms whose force borders on the unnatural, and
planar disturbances flare and flood across the steppes
like unnatural wellsprings. Still, these rifts are seldom
as haunting or destructive as the [[reality storm]]s of the
[[Tundra|Tashana Tundra]]. The prominent planar connection in Syrkarn
is the [[Whitewater]], the crystal-clear lake believed to
mark a [[manifest zone]] linked to [[Lamannia]].
A few [[rogue dragon]]s roam the savannas and deserts of Syrkarn, most notably [[Qataakhast]] the Bright-Eyed.
!! Getting There
As with any other destination in [[Sarlona]], travel to
Syrkarn is never undertaken lightly. The direct sea route
from eastern [[Khorvaire]] covers the entire length of
the [[Sea of Rage]]. Ships embarking from Khorvaire's western shores must ply the [[Barren Sea]] and the [[Sea of Lost Souls]]. In either case, the journey is long, and ships
must pass through the waters of unwelcoming [[Riedra]].
Most ships traveling to Syrkarn are privateers from
the [[Lhazaar|Lhazaar Principalities]] isles making trade runs, and the majority
of adventurers arriving in Sarlona take passage on a
Lhazaar ship. The privateers' destination is almost always the
southern port of [[Ardhmen]].
Attempting to land an unauthorized ship in [[Riedra]]n-controlled
territory is extremely dangerous. As a result, travelers
who have secret dealings often enter Riedra across the
Syrkarn frontier. Likewise, [[kalashtar]] pilgrims and
refugee Riedrans seeking to escape the gaze of the
[[Thousand Eyes]] usually make their way to [[Khorvaire]] by
way of Syrkarn.
Khorvairian ships traveling east often stop at
[[Stormreach]] before returning to [[Sharn]], seeking to maximize their profits on the long voyage with a quick pickup of [[Xen'drik]] goods. Those [[eneko]] who leave Syrkarn
typically book passage on that route, seeking to experience the lands of their forgotten [[giant]] explorers.
!! Five Common Syrkarn Legends
# ''Syrkarn is free.'' Though nominally a protectorate of [[Riedra]], Syrkarn and its people owe no fealty to that land or its [[Inspired]] overlords. When occasional muttering chalks this fact up only to Riedra's apparent lack of interest in Syrkarn. a pint or two of [[ustah]] and a toast to the past will drown it out.
# ''In the past, greatness lingers.'' The [[eneko]] are descendants of [[ogre]]s and [[giant]]s, the latter thought to be explorers from ancient [[Xen'drik]]. From this lineage, the mongrel tribes believe that the blood of both the mighty titans of Xen'drik and the former [[oni]] [[sorcerer]]-kings of [[Sarlona]] flows in their veins.
# ''The yuan-ti once held this land in the iron grip of dark magic—and seek to do so again.'' The [[yuan-ti]] empire that rose in the ruins of [[Khunan]] is one of the few pieces of old [[Sarlona]]n history still predominant in the age of [[Riedra]]. Some speculate that this is so because Riedra wants it that way, and many Syrks question whether the yuan-ti are a force to be fought along with the [[Inspired]], or a potential ally in the fight against Sarlona's masters.
# ''The giant-based faiths of the eneko hide dark secrets.'' The [[eneko]] tribes follow religious traditions drawn from the faith of ancient [[Xen'drik]], [[Rushemé]]. However, it is said that dark cults among the "mongrel ogres" use the veneration of [[Karrak]] (thought to be an aspect of the [[Keeper]]) to conceal the practice of dark magic.
# ''Beneath the beauty of Syrkarn, dark things abide.'' No one who has ridden the [[Itzaina|Khunan]] range or spent a night within sight of the [[Whitewater]] can deny the natural splendor that is Syrkarn. At the same time, whispered rumors speak of a nameless darkness in the desert, and of voices that call to those who walk the plains alone. Some who seek to define this darkness speak of connections between the fragmentary legends of the [[yuan-ti]] and the lore of the [[Age of Demons]]. What the truth is, none can say.
!! Who Rules Syrkarn
According to the [[Unity]] of [[Riedra]], Syrkarn is a protectorate of that nation, and ostensibly owes fealty to Riedra and the [[Inspired]]. In truth, however, the Inspired's last act of governance in Syrkarn was to order the land emptied of its [[human]] population in the aftermath of a victorious purge of the [[yuan-ti]] more than twelve centuries ago.
"Sahar" is a general term of leadership common among both humans and [[eneko]], but it can cover a wide range of power. The sahar of a nomadic tribe might rule only two dozen people, half of them her immediate family. The sahar of a large settlement might rule a mixed population of a thousand humans and eneko, and have ultimate authority over security, trade, and commerce in a wide region.
In larger settlements, sahar are usually elected to
fixed-year terms, the exact length of which is set by
tradition. Among the tribes and clanholds, leadership is a matter of strength or will, with warriors, spellcasters, or manifesters of [[psionics]] often taking up the mantle of power.
Whether by social accident or design, no central leadership exists in Syrkarn, though the sahar of [[Nderitese]]—the territory's largest settlement—is
sometimes asked to broker disputes between other settlements and larger clans.
Smaller disagreements on trade, tariffs, and power
sharing are typically handled by the time-honored tradition of threats and force, but the reality of Syrkarn means that its people typically have little reason to fight.
Resources and land are plentiful, and the common culture
forged by [[eneko]] and [[human]] has created social customs and
a rule of law unheard of in agrarian tribal societies.
However, those Riedran exiles who monitor the
activities of the [[Inspired]] in Syrkarn often claim to see
signs of subtle manipulation of the clans and tribes that
hint of [[psionics]]. Rival chieftains who have long histories
of being at each other's throats will suddenly declare a
mutual commitment to peace and allegiance. Smaller
factions will suddenly gain tactical sophistication that
allows them to thwart the expansionist plans of more
powerful nomadic tribes, or force the larger settlements
into a defensive stance.
The least populous (and most mysterious) residents
of Syrkarn are the [[yuan-ti]]. Descended from the few of
their kind who did not flee to [[Argonnessen]] when their
nation was overthrown, these serpentfolk keep themselves well hidden. Even after twelve hundred years, the utter destruction of the yuan-ti at the command of the
[[Inspired]] remains a potent reminder of the power the
lords of [[Riedra]] can bring to bear.
!! Foreign Relations
[[Syrks]] are content to leave others alone and hope for the
same in return. For all intents and purposes, [[Riedra]] is
the nation's only neighbor, and the monolithic and isolationist bent of that land means that Syrks frequently
define themselves as its antithesis.
!!! Riedra
The [[Inspired]] in [[Riedra]] clearly have the resources and the
military might to take Syrkarn in a heartbeat, driving
its people into the sea if they so chose. Although desert
and mountain marks much of Syrkarn's inland frontier,
unlike [[Adar]], no natural or mystical defenses protect this
land from invasion.
The fact that the Inspired have chosen not to invade
suggests that they have strong reasons to leave Syrkarn
as it is. The [[Thousand Eyes]] has agents throughout the land, but these seem primarily focused on maintaining the status quo among the tribes and clans. Isolated skirmishes are sometimes made against the human exiles, but clear benefits can be seen in Riedra's allowing the exile clans to survive as a beacon to the like-minded. No matter how many exiles swell its population, vast Syrkarn
will never have the resources or the population to challenge
the [[Inspired]]. Better to have those who oppose Inspired rule
flee for the "freedom" of the barbarian frontier than to
disturb the Riedran peace.
Riedran agents harass the [[eneko]] tribes with
greater frequency than they do the [[human]] clans. Some
speculate that this behavior marks a fear that the "mongrel ogres"
are more apt to pursue dark magic, as has been seen in
the recent rise of the [[Karrak]] cults. It is known that the
[[Horned Shadow]] has sought to recruit eneko from Syrkarn in recent years, but whether any connection exists between the rebellious [[oni]] and
the cults remains to be seen.
More than anything else, [[Inspired]] agents seek signs
of magic use in Syrkarn. They are especially watchful
for any sign of the [[Heirs of Ohr Kaluun]] in the steppes
and the [[yuan-ti]] ruins. When it is found, the [[arcane|arcane magic]] is
exterminated. Riedra is intent on seeing that Syrkarn's
lost lore stays that way.
Sharing a desert border as it does with [[Borunan]],
Syrkarn has a more open relationship with the former
[[ogre]] kingdom than with the other Riedran provinces.
Just as the ogres made their way south centuries ago,
more than a few [[eneko]] make the trek north today. The
eneko in the [[Savage Legion|Taskaan Legion]] are drawn from the ranks
of such Syrk exiles.
!!! Adar
The lands of the mountain refuge of [[Adar]] border Syrkarn to the
southeast, and the outposts of that frontier are firmly in
[[Inspired]] hands. For the Syrks of the border territories,
the land along [[Jathara Sound]], guarded by a series of
coastal forts, is merely another part of [[Riedra]], and that
nation's business with the folk of the distant mountains
is none of their concern.
However, for those Syrks who actively oppose the rule
of the [[Inspired]], the [[Adarans]] are brothers in arms. The
treacherous seas and inhospitable cliffs of [[Adar]] channel
those seeking to enter the mountain refuge to Syrkarn,
where they land at [[Ardhmen]] or the smaller fishing villages of the western coast. They then make their way
inland, crossing into Adar between Riedran outposts
and patrols.
Syrkarn is also the departure point for the goods that
[[Adarans]] trade to [[Khorvaire]], and a steady flow of couriers
passes along the [[Summit Road]] throughout the year.
!!! Other Nations
Outside of academic circles, few non-[[Sarlona]]ns even
know of the existence of Syrkarn. Unlike the [[Adar]]an
monks and the [[kalashtar]] who have established enclaves on
[[Khorvaire]], [[Syrks]] have little reason to leave their land.
Since the end of the [[Last War]], [[Lhazaar|Lhazaar Principalities]] traders have
made their way to [[Ardhmen]] in order to barter for spices
and [[dreamlily]]. However, with the [[Inspired]] now actively
directing trade between [[Riedra]] and [[Khorvaire]], Syrk
merchants are seeking contacts among the Riedrans,
hoping to broker more profitable trade in mainstream
Khorvaire. The merchants of the [[Lhazaar Principalities]]
have largely turned their own trade to Syrk art, antiquities, and textiles—their quality as high as Riedran goods, but their design incorporating an old-Sarlonan aesthetic
lost to Riedra.
!! The Syrkarn Overlord
From fragments of [[yuan-ti]] lore and contemporary
human records, some scholars assert that a demonic [[overlord]]
exists in Syrkarn, possibly beneath the ruined yuan-ti
city of [[Sustrai Mor]]. The [[eneko]] [[Karrak]] cults are said to
be numerous within the wasted plain that surrounds the
ruins. Among the Syrk nomads, the city has a reputation
for being haunted or overrun with secret sects of yuan-ti.
Whatever the truth, the Syrks avoid the place.
Whether the [[Inspired]] or the [[Dreaming Dark]] have
reason to fear the might of a bound [[overlord]] is an open
question. It seems likely, though, that the Inspired's
unwillingness to risk the resources necessary to destroy the Syrkarn [[fiend]] drove the decision to simply empty that
land—denying the fiend (and its inevitable [[Lords of Dust]]
allies) the followers it would inevitably seek.
At the same time, the Inspired show little of the same
concern for the overlords thought to be trapped in the [[Tashana Tundra]]
and [[Adar]]. Perhaps the lords of [[Riedra]] have some plan for
keeping these other fiends in check, either before, or
preferably after, they run rampant in those lands. At the
same time, the fall of [[Khunan]] and the subsequent rise of
the yuan-ti suggests to some that the Syrk overlord was once
unbound—and that whatever act saw it put down might not
have bound it as strongly as the Inspired would like.
Abel Varmanc, patron and leader of the [[Korranberg]] expedition that bore his name, has gained recent notice for his attempts to collect the fragmentary lore of old Sarlona
from Riedran merchants engaging in trade with [[Khorvaire]].
In academic papers and private debate, he has suggested
that some lingering power from the [[Age of Demons]] was not
only involved in the creation of the [[yuan-ti]], but also in the
destruction of [[Khunan]] that preceded that genesis. In his
view, oral traditions describing the legendary devastation of
Khunan bear an eerie similarity to the events in [[Thrane]] of
299 YK, when the rising of a terrible [[force|Bel Shalor]] bound since the
[[Age of Demons]] gave birth to a manifestation of [[Silver Flame]] through the
sacrifice of a [[couatl]] and the [[paladin]] [[Tira Miron]]. Whether
the destruction of Khunan was the result of a bound [[fiend]]'s
stirrings or of potent magic wielded by the Khunani in their
attempts to confine it once more, "Syrkarn" is the name the
legends give to that dark presence.
The population of [[Syrkarn]] is largely a mix of [[eneko]]
and [[human]] clans descended from [[Riedran|Riedrans]] refugees.
Settlements dot the plains, and semi-nomadic clans wander regular
hunting grounds in the forests and river valleys with
the changing of the seasons. The clans and tribes both
see themselves as the only truly [[Sarlona]]n culture left on the continent—avoiding the stagnation of [[Riedra]]
and the rigid culture of [[Adar]] as they build their lives
in the shadows of the past.
Whatever their race, Syrks are thoughtful and
hardworking folk who believe that celebration should be
the end result of all honest labor. Their love of freedom
leads Syrks to respect privacy and the individual, but they
balance this with a sense of community that allows them
to thrive in the sometimes hostile plains. A Syrk neither
seeks to lead nor to follow. He does the job to the best of
his ability, and expects the same in return from those he
trusts and depends on.
The love and celebration of freedom is central to the
Syrk spirit, and nearly all disputes between Syrks concern
obligation, restitution, or a sense that someone desires
power not rightly theirs. Such disputes are not infrequent,
but rarely lead to more than threatening standoffs.
Those unfamiliar with Syrk customs can sometimes
find themselves caught off guard when angrily accused
of some affront by a Syrk native. Those who don't know
the appropriate Syrk response (be fierce, be truthful,
and apologize when truth turns against you) sometimes
needlessly respond with violence that the other party
never anticipated.
Syrkarn is a rural and agrarian nation, but that
nation is built on the bones of old [[Sarlona]]. As a result,
Syrks appreciate art, architecture, and formal music that
contrasts with their humble lives. From field laborers
to nomadic hunters, Syrks take as much pride in their
appearance as they do their work and skill. Textiles are
one of the primary trades of Syrkarn, and those too
young or too old for harder labor spend their days at the
loom or with needle and thread.
Nearly a third of Syrk society leads some form
of nomadic life, but no great differences can be seen
between the Syrk nomads and their brethren who settle
in villages and towns. In fact, many Syrks live a cyclical
life—wandering the steppes in their youth, later settling in a community to raise children or pursue a formal
vocation, then breaking away to take up the life of a
nomad or trader in their twilight years.
Likewise , the harmony between [[Syrkarn]]'s two
main races is remarkable, given [[Sarlona]]'s long history
of conflict. Though the [[human]] clans and [[eneko]] tribes
maintain their own separate ways and traditions, little
sense of division exists between the races, and virtually
all settlements and nomadic groups feature members
of both races living alongside each other. Humans and
eneko often form lifelong romantic bonds, but they
cannot interbreed. Mixed couples do adopt orphaned kin
of either race.
Syrks typically define themselves by vocation and
deed. A majority of traders and herders happen to be
eneko; most farmers and artisans happen to be human.
Still, these happenstances are unimportant next to the
quality of the artisan's goods, the shot that brings a bison
down, or the strength that drives a plow. Syrks take great
pride in their work, and they spend as much time as that
work allows celebrating the wealth and heritage their land
has bequeathed them.
!! Syrk Names and Speech
The [[eneko]] tribes typically use a first name and a clan name. Because clan names are fixed in number, eneko traveling outside their homeland often add their place of birth or vocation as a de facto third name.
//''Masculine Eneko:''// Alimbida, Ametzama, Baraxil, Eusko, Iker, Kaxen, Kusko, Perutxo, Txartiko, Urtungo.<br/>
//''Feminine Eneko:''// Agosti, Denlilla, Eninnuta, Immasa, Iziaka, Jhaszuurra, Nahia, Ospinu, Szagani, Urumea.<br/>
//''Eneko Clan:''// Dgatumdut, Galgalmemean, Garranan, Hrursaggat, Ididignaam, Lagaskiaker, Maraandun, Numanigar, Tartarredar, Tumagin.<br/>
//''Humans:''// Humans newly fled to [[Syrkarn]] bring
their names with them from [[Riedra|Riedrans]]. The long-established human clans maintain Riedran surnames, though human given names have evolved a Giant-inflected flavor over time.
!!! Phrases
The following turns of phrase are unique
to Syrkarn, and are expressed in both Giant and
Riedran.
* "//Serpent's eye.//" A catch-all expletive or curse, as in "The serpent's eye take you!"
* "//Arch-strong.//" "//Long as a column stands.//" General expressions of praise or commitment are often drawn from the long-lasting architecture of old Sarlona.
* "//Shackled.//" Cowardly, vacillating, a general term of contempt. All Syrks value freedom, and while the realm is far from lawless, being beholden to the will of others is seen as a sign of weakness.
!! Syrk Religion
Derived as it is from [[Riedran|Riedrans]] refugees and their
descendants, [[Syrkarn]]'s human population is uniformly
contemptuous of the [[Path of Inspiration]]. Nearly half
of all human Syrks follow no gods at all, instead placing their faith and devotion in the land itself. For Syrk [[cleric]]s, the spirit of Syrkarn is treated as a neutral
force that provides access to some sparks of [[divine magic]].
In much of Syrkarn, humans have reclaimed the
worship of the [[Sovereign Host]] from contact with [[Lhaazarites|Lhazaar Principalities]]. At the same time, the [[eneko]] have always invoked
aspects of [[Arawai]] and [[Balinor]], naming these "Rowa of the
Enduring Trees" and "Banor the Bowhunter". Human Syrks
thus focus their own worship on Arawai and Balinor, with
this accidental meeting of traditions underpinning the
long-term social stability in the region.
Among the [[eneko]], some worship [[Karrak]] the Final
Guardian. No analogous faith exists among the humans,
and Karrak's sects are among the few eneko-only enclaves
in [[Syrkarn]].
!! Syrk Style
A nation of farmers and hunters would seem an unlikely
place to seek the highest artistic traditions of an empire.
[[Syrkarn]] is the only place where the legacy of old [[Sarlona]]
still lives—a legacy that spreads through Syrk culture on
every level.
!!! Art
The cloaks and clothing of the Syrks are decorated with
intricate line-art patterns in a style reminiscent of the
architecture of old [[Sarlona]]. The images are created
using long-lasting red and black inks created from the
berries and leaves of the hardy hilp bush. Given most
Syrks' dismissal (or outright distrust) of [[Riedra]], the
modern artistic style of that land, with its flowing lines
and curves, is all but unknown here.
!!! Architecture
Because [[Syrkarn]] has never been subject to [[Inspired]]
rule, it has been spared the cultural purges the Inspired
used to build monolithic [[Riedra]] over the nations of old.
Syrkarn is thus one of the few places in Sarlona where a
significant portion of the architecture of the past survives. Across this land, derelict castles stand atop windswept tors, their stark lines seemingly thrust up from the
living rock. Where the villages of the [[eneko]] have
been built on the central plazas of the ruined cities that
came before them, ancient avenues and neighborhoods
(called "corners") still radiate out through the surrounding grasslands like ghostly spokes. Along isolated
mountain passes and long-lost wayroads, fortresses stand
whose foundations are as solid as when they were laid two
thousand years before.
Dominated by columns, straight lines, and square
arches, the architectural style of old [[Sarlona]] still affects
this land and its people. Even the most utilitarian structures are built to a standard of stark beauty, and whether of wood or stone, are typically buttressed,
arched, and reinforced to last a lifetime. The nomadic
tribes are no less inventive than their brethren in
Syrkarn's fixed settlements, building their mobile homes
from elaborate frameworks of interlocking poles and
light beams over which decorated hides are stretched
and sealed.
!!! Cuisine
Food in [[Syrkarn]] is plentiful, well spiced, and served with
copious amounts of [[ustah]]—a potent liquor brewed from
honey and wild berries, reportedly from an ancient [[ogre]]
recipe. The demands of rural life limit the choices available to the Syrk palate, with meat, fruits, and vegetables (including the region's native [[sepse]]) all typically dried for storage and transport. However, Syrks treat cooking with the same reverence as their other arts, and need no excuse for a feast.
!!! Fashion
True to Syrkarn's reputation as a land of freedom, the
fashions of its people encompass an eclectic range of
styles, and a remarkable artisanship can be seen in the
textiles, cloth, and weaving of Syrkarn. Among both
the [[eneko]] and the humans, a wild aesthetic
predominates, combining utilitarian function and the
simple beauty of old [[Sarlona]]n design.
The Ta’har ("mind") of the [[Eternal Dominion]] are the scholars, scientists, and priests—
which, among the [[sahuagin]], are all branches of a single path.
[[Alchemy|alchemist]] and [[sorcery|sorcerer]] are core sciences in the Dominion. The
sahuagin recognize [[divine magic]] as a resource, and excel at
the aggressive cultivation of the faith required to channel it.
Ta’har scholars advise the [[Ra'har]], using the lessons of history
to drive military strategy, while Ta’har [[artificer]]s work with the
[[Su'har]] to maintain the infrastructure of the cities.
A [[troll]] [[warlord]] of great age and
power, Taal'chib ("Skeleton Chief" or "Prince of Bones") rules the land around
the ruins of [[Suthar Draal]]. He is one of the oldest and
most loyal followers of the [[Daughters of Sora Kell]],
and his cadre of [[troll]]s, [[ogre]]s, and [[giant]]s is always at
the [[hag]]s’ disposal.
When this tabard is worn over armor, it completely disguises the fact that the user is wearing armor. All armor, including helmets, seems to disappear completely.
The town of Taer Kalindal in [[Aerenal]] is the seat of the [[Aereni noble line]] of [[Jhaelian]]. It contains an outpost of the [[Deathguard]], as well as the second highest concentration of shrines to the [[Undying Court]] per capita, next to [[Shae Mordai]].
Taer Lian Doresh is a [[feyspire]], one of the cities of [[Thelanis]].
Long ago, the tyrant titan [[Cul'sir]] cursed the feyspire and cast it into [[Dal Quor]], after an ongoing revenge feud following the sacking of [[Shae Tirias Tolai]]. Caught in the transformation of the //Quor Tarai//, these [[eladrin]] became embodiments of classic nightmares, and ease their pain by spreading fear among mortals. The spire itself is a vision from nightmare, and no two people perceive it in the same way.
Taer Lian Doresh now exists between [[Dal Quor]] and the
Material Plane, hidden deep in the [[Whitepine Forest]] in the [[Lhazaar Principalities]]. The [[eladrin]] of this feyspire can freely pass to both planes, but other creatures can only enter Taer Lian Doresh and return to their plane of origin; they can't use it as a portal to
the other plane. Thus, [[quori]] and adventurers can walk the halls
of the Fading Dream together, but the quori can't cross over
to physically enter [[Eberron]] itself, nor can the denizens of the
Material Plane (including eladrin of other feyspires, humans,
and all other creatures of Eberron) enter Dal Quor.
!! Organization
The [[fey]] of the Fading Dream are led by an [[eladrin]] named ''Shan Lian Doresh''. This brooding king rarely leaves his [[feyspire]], watching the
world through the dreams of innocents and destroying lives with whispered secrets and terrible visions.
Seven Knights of Terror serve Shan Lian Doresh, each of which embodies
a particular primal fear. The shrouded sages, led by the [[night hag]] ''Santyriana'', are mystics and dream weavers.
The fortress of Taer Sadaen in [[Valenar]] was raised by the [[Aereni]] who settled these lands 10,000 years ago. According to legend, the citadel was the
site of a terrible battle between [[goblin]]s and [[elves|elf]]
shortly before those ancient settlers returned to [[Aerenal]]. The ruins of Taer Sadaen have never been found, and some say that the fortress was shifted out of the
world by a powerful elven curse. When the stars and
[[moon]]s properly align, Taer Sadaen is said to reappear
with that ancient battle still raging around its walls.
PCs traveling in [[Valenar]] might find themselves
in the right place at the right time when the fortress
crosses back into the mortal realm. Or, interests in
[[Aerenal]] or the [[Five Nations]] might have information
that points to the location of the fortress—and reasons
for the PCs to find it before the [[Valaes Tairn]] does.
Near the western edge of the [[Karrnwood]], the Winter Citadel rises through gray pines, the blue-white stone of its slender towers and delicate minarets sparkling in the light. Fragile bridges span the gaps between, giving the place the appearance of a crystalline web formed from ice. A steep ice wall surrounds the [[feyspire]]. Helmeted guards, their faces hidden behind grim visors, stand guard, watching for enemies and intruders alike.
When the spire is in [[Karrnath]], [[eladrin]] knights ride forth from the citadel in the dead of night on white horses, bringing winter’s breath to the
surrounding woods. Their passing freezes the needles
on the pines and leaves icy impressions of their
horses’ hooves in the ground. The riders are slender,
with pale skin and blue-white hair. Dressed in milky
white armor and armed with matching blades, they
brook no trespass on their lands, cutting down any
interlopers they find.
Taer Syraen is the seat of the [[Prince of Frost]], and is closely allied with the winter fey of the [[Moon Court]].
The [[elves|elf]] of [[Valenar]] have little love for cities, but
they recognize that their nation and their king require
a capital. Taer Valaestas is a walled city built with
military precision. The wall surrounding the city is
a massive thicket of [[bronzewood]] thorns. Its narrow
streets are designed to thwart attack by armored
forces, and its buildings are constructed of stone and
dense wood for strength and resistance to fire.
High King [[Shaeras Vadallia]] maintains his seat in Taer
Valaestas. Though unimpressive by the standards of other nations, the royal palace is the
most ostentatious structure in Valenar. High King
Vadallia’s quarters are austere, but the palace’s regal
courtyard with its towering columns evokes memories of the forests of [[Aerenal]] and the great city of [[Shae Cairdal]].
In addition to the royal palace, outposts of most [[dragonmarked house]]s, and a [[market|Peasants' Market]] where foreigners sell their wares, Taer Valaestas hosts the primary [[temple|Temple of the Ages]] of the [[Keepers of the Past|Spirits of the Past]] and a vast arena used for horse training, races, and other displays of equestrian skill.
''Date: '' first [[Far|Khorvaire calendar]] of each month
The [[ir'Tain|ir'Tain family]]s are the richest and most powerful family in
[[Sharn]]. Each month, Lady [[Celyria ir'Tain]] holds a ball at
her [[Skyway]] mansion. The guest list defines the current
social order of the city; those families who hold permanent invitations, known as the [[Sixty]], are the de facto royalty of Sharn. Celyria does invite unusual guests and attractions each month, and an up-and-coming entertainer
or a renowned folk hero might catch her notice.
Tairnadal elves dedicate themselves to the arts of
war. The greatest heroes of the Tairnadal's many
wars—against [[giant]]s, [[dragon]]s, and the champions of
[[Dhakaan]]—live on after death, becoming the patron
ancestors of the Tairnadal. Upon reaching adulthood, a Tairnadal elf forms a bond with one of these ancestors and strives to follow in the footsteps of this [[ancestor|Spirits of the Past]], living as the patron did. In this way, the champion comes
to embody their ancestor, allowing the dead to live on.
Tairnadal [[elves|elf]] have keen senses and intuition. Their skin tends to be copperish in hue, sometimes with traces of green. Their hair tends toward browns and blacks, but it is occasionally blond or copper-colored. Their eyes are green, brown, or hazel.
The Tairnadal have three distinct lines: the [[Draleus Tairn]], the [[Silaes Tairn]], and the [[Valaes Tairn]]. All three lines roam the [[northern plains|North Aerenal]] of [[Aerenal]], having left the forest long ago, but the Valaes Tairn now reside
mostly in [[Valenar]], being the Tairnadal most often encountered in [[Khorvaire]]. Despite sharing a homeland
with the [[Aereni]], the Tairnadal have distinct religious
traditions, revering their [[patron ancestor|Spirits of the Past]]s rather than
the [[Undying Court]].
In creating a Tairnadal character, including a Valenar
elf, think about your patron ancestor. Most Tairnadal
pursue the same class as their patron, so if your character is a [[wizard]], your ancestor was likely a legendary archmage. Was your ancestor a famous blademaster, a
stealthy hunter, or a war chanter? Were they chivalrous
or merciless? Bold or clever? Whatever their path, it
is your duty to follow their example. Is this something
you proudly embrace, or do you resist it? Do you know
another elf with the same patron ancestor, and what's
your relationship to that character? Do you know an elf
whose patron ancestor was a bitter rival of yours?
Also consider why you are traveling with a group of
player characters (who are presumably not also members of your war band) instead of serving with the Tairnadal. Do you experience visions of your patron ancestor driving you on a particular course? Are you pursuing
an epic quest that mirrors your ancestor's legendary
deeds? Are you seeking vengeance for the death of a
friend or ally? Or have you turned away from your people, either by choice or because of the actions of a rival?
!!! Double-Bladed Scimitar
The double-bladed scimitar is the signature weapon of
[[Valenar]] elves. A haft of fine wood supports a long, curving blade on either end. Forged with techniques honed over centuries, these blades are strong, sharp, and
remarkably light. Each scimitar is a masterpiece, and as a result the double-bladed scimitar is an expensive weapon—few though ever have the opportunity to purchase one. A Valenar blade in the hands of a non-elf is generally assumed to have been stolen or looted from a fallen foe, and a Valenar elf might feel entitled to demand its return or challenge the bearer to prove they're worthy to wield it.
Tal Esk is a large [[Riedra]]n settlement on the edge of a [[crystal waste]] of the [[Scimitar Spires]] in [[Xen'drik]]. The people of Tal Esk quarry and prepare blocks
of crystal for travel, gathering [[dragonshard]]s uncovered
in the process, and send the materials north to [[Dar Qat]]. They are unfriendly to strangers and actively hostile to [[kalashtar]]. However, a skilled diplomat
who speaks the Riedran tongue might be able to find
shelter at Tal Esk.
Professor Tolaoi taught at [[Rekkenmark Academy]] for fifty years prior to the outbreak of the [[Last War]], and now teaches military studies at [[Morgrave University]] in [[Sharn]]. In addition to modern methods of warfare, Professor Tolaoi is an expert on the military traditions of [[Aerenal]], and notably predicted the [[Valenar]] betrayal three years before it occurred. Professor Tolaoi encourages all students to study both the physical arts of self-defense and the principles of modern warfare.
This fortress houses both the
[[Sharn Watch]] and the elite [[Redcloak Battalion]]. While
slightly smaller than the [[Daggerwatch Garrison]], it
is far more heavily fortified and could withstand an
extended siege.
Taldor leads the [[Basilisk's Gaze]], a group charged with hunting war criminals
from the [[Last War]]. Even among the cerebral [[Medani]],
Taldor is considered something of an eccentric. He claims to have sharpened his powers of observation and reasoning through rigorous mental training and to have left “extraneous thought and counterproductive emotion” behind. If the typical House Medani member projects calm rationality at all times, then Taldor is like a living statue. Some say he doesn’t even blink without considering eyelid movement first.
The people of the [[Talenta Plains]] have little interest in
political machinations. Stories say that they draw straws
to see who has to serve as an ambassador, but these
rumors are false. In truth, they fight duels, with the
losers being sent to the courts of the western nations.
Ambassador R’tannan attends diplomatic meetings and trade negotiations, but he is far more interested in gambling,
especially on the many races that occur in the city.
The Talenta embassy has no direct connection with the [[Boromar Clan]], House [[Ghallanda]], or House [[Jorasco]].
''Capital:'' [[Gatherhold]]<br/>
''Hallmarks:'' Dinosaurs, halflings, livestock
The [[halfling]]s of the Talenta Plains have no cities and no
industrialized magic, but they do have [[dinosaur]]s. The
halflings domesticated the dinosaurs of the plains and
use these creatures as mounts, livestock, and beasts
of burden. A sacred bond exists between a hunter and
mount, and few people are prepared to face a raging halfling barbarian riding a furious [[clawfoot]] raptor.
Talenta religion reveres spirits, both departed ancestors and natural spirits. Each tribe has a lath—a chieftain who guides the tribe—and shamans who consult
the spirits and choose the paths of migration.
In the past, the tribes stood alone, but during the Last
War, many halflings came together under [[Lathon Halpum]] to defend their land. Halpum won recognition for
the Plains as one of the [[Thronehold nations|Treaty of Thronehold]], though it's
still unclear what this means beyond increasing passage
between the Plains and the outside world.
!! Interesting Things About {{!!article}}{{!!title}}
* House [[Ghallanda]] and House [[Jorasco]] both originated in the Talenta Plains. The [[dragonmark]]ed bloodlines appear throughout the tribes, though you can play a dragonmarked halfling from the Plains who doesn't work for the houses.
* The Talentan reverence for spirits derives from the fact that a variety of spirits haunt the Plains. The region contains an unusual number of manifest zones tied to [[Dolurrh]] and [[Thelanis]]. Ghosts are more likely to linger in such places, and minor fey are scattered across the Plains.
* Stories tell of ancient ruins that date back to the first age of the world and of a vast graveyard holding the bones of [[dragon]]s.
!! Talentan Characters
* ''Wild Warriors and Tricksters.'' You were born in the wild, and your wits and your weapons helped you survive. Talenta warriors are often barbarians or rangers, relying on speed and skill. Outlander is a logical background, but you could easily be a folk hero, entertainer, or charlatan. You could even be an urchin who was stranded in a great city and adapted to life there.
* ''Surrounded by Spirits.'' Fey, fiends, and the ghosts of ancestors, these are all part of the spirit world, and they're all around you. Do you believe that the spirits guide your actions? Do you show respect to the spirits of a location? Talentan shamans often shapeshift into the form of dinosaurs. You could also reflect a strong bond to spirits by playing a [[warlock]] with an [[archfey]] patron, a [[cleric]] with the Nature domain, a [[paladin]] sworn to the Oath of the Ancients, or a barbarian on the Path of the Totem Warrior or Path of the Ancestral Guardian. Hermit and outlander are natural backgrounds, but you could be an acolyte or a sage who consults spirits instead of books. Warriors and shamans both wear masks to present a particular face to the spirit world.
* ''Dinosaurs.'' Talenta halflings have a close bond to their [[dinosaur]] companions. If you don't begin the campaign with a dinosaur mount or companion, you might acquire one over the course of your adventures. You can also consider whether a fallen dinosaur is part of your backstory; perhaps you lost your faithful mount in the [[Last War]], but you believe its spirit is still with you.
!! Cities and Sites
The Talenta Plains have been described as an ocean of
grasslands. The nomadic halflings have little interest
in building towns; most shelter in the Talenta Plains is
temporary. Halflings shun the ruins scattered across the
Plains, believing them to be haunted by [[fiend]]s.
<<list-links-article "[tag{!!title}category[location]sort[title]]">>
!! Aftermath of the Last War
The [[halfling]] tribes joined together to defend themselves
from outsiders, and the Talenta Plains were recognized
as a nation under the [[Treaty of Thronehold]]. Now that
the war is over, most of the tribes have returned to their
hunting grounds and ancient traditions. They united to
defend their way of life, and now they wish to enjoy it.
But the halflings don't yet know if it's possible to
return to the previous ways. More foreigners visit
the Plains than at any time in the past. Settlers and
merchants cross the Plains as they make their way to
[[Q'barra]], and they clash with Q'barran bandits. The [[Valenar]] [[elves|elf]] ride through the Plains in search of adventure.
Monsters emerge from the [[Mournland]]. [[Dragonmarked houses|dragonmarked house]] seek to expand their role at [[Gatherhold]] and to
explore the untapped resources of the Plains.
The halflings have no interest in change, but it might
be inevitable. [[Lathon Halpum]] believes that if the tribes
can work together, they could become a nation of nations, but others aggressively oppose such a path. [[Holy Uldra]] is a powerful shaman and the leader of her own
tribe. She urges halfling warriors to join together for a
single purpose: to drive all outsiders from the Plains
and to maintain the ancient traditions. The halflings
must decide whether the tribes will choose the path of
peace or return to war.
Talia is a House [[Sivis]] agent of [[Tasker's Dream]], and the youngest heir to master the potent skills of the Wordsmith. She prefers to conceal
her true intelligence and power from
strangers, playing the part of a curious
apprentice or an absent-minded sage.
While this stuffed doll is within 5 feet of you, you can spend a short rest telling it to say up to six phrases, none of which can be more than six words long, and set a condition under which the doll speaks each phrase. You can also replace old phrases with new ones. Whatever the condition, it must occur within 5 feet of the doll to make it speak. For example, whenever someone picks up the doll, it might say, "I want a piece of candy." The doll's phrases are lost when your attunement to the doll ends.
While you are holding this wand, your voice and other sounds you produce are three times as loud as normal. House [[Phiarlan]] makes use of the //thunderous amulet//, a similar device that leaves the wearer's hands free.
One shadow from the [[Age of Demons]] continues to haunt the [[dragon]]s to this
day: [[Tiamat]]. Even in her prison, Tiamat holds the power to seduce and corrupt dragons... and some join her of their own free will, dreaming of the power they will possess when she is freed.
The Talons of [[Tiamat]] are the cult of the Daughter of Khyber. The Cult can draw
on the [[spawn of Tiamat]], vile creatures born from tainted
dragon’s eggs. The spawn have always appeared in small
numbers in [[Argonnessen]], a lingering reminder of
Tiamat’s presence. But now the numbers of the spawn are
growing, and the Talons of Tiamat are gathering these
forces to build an army.
Even though she is bound, [[Tiamat]] occasionally stirs
in her prison; at these times, she is more conscious and
active than any of the other [[overlord]]s of the [[Age of Demons]]. It’s said that she can see through the eyes of any [[dragon]] she corrupts, and that she can whisper into the hearts of dragons as they sleep. Her chosen agents can commune
with her, and at times they have even summoned aspects
of her into the world—far weaker than Tiamat in her full
glory, but fearsome nonetheless. Each time that Tiamat
has awoken in the past, that event has brought disaster
to [[Argonnessen]]. Now she is stirring once more, and
the prophets say that the doom of Argonnessen could
be at hand.
The Talons serve an [[overlord]] of the first age, and
[[rakshasa]]s and other [[fiend]]s appear among their ranks.
As such, they can be seen as a branch of the [[Lords of Dust]]. However, the Talons rarely coordinate their actions with the [[Bleak Congress]] of [[Ashtakala]]. Most believe
that [[Tiamat]] is the only true Daughter of [[Khyber]], and the other overlords are merely usurpers with delusions of grandeur.
The agents of Tiamat have many goals that could take
them into the wider world. They oppose the [[Chamber]]
and the [[Eyes of Chronepsis]], and adventurers could be
caught in the middle of such a conflict. The cultists are
gathering artifacts and tools in preparation for war in
[[Argonnessen]]. They are spreading the [[spawn of Tiamat]]
across the world, creating hidden nests beneath major
cities. Above all, they are working to manipulate the
[[Draconic Prophecy]] in ways that will result in the release of Tiamat.
If a DM wants to pit adventurers against a significant number of truly evil dragons, the Talons of Tiamat are an excellent choice.
Not all dragons touched by Tiamat serve in her cult. Some simply grow hateful in solitude, giving in to greed and hunger. Any ravager or rogue could be a victim of Tiamat’s corruption; they might simply terrorize a region, or they could one day be recruited to serve the Talons.
Tamara is the [[Dragon God|Dragon Gods]] of Life, Light, Mercy, and Forgiveness. She dispenses mercy both in life and in death; her [[cleric]]s are healers, but deliver death to those who would attempt to [[escape it|undead]]. She is the consort of [[Lendys]].
This tankard has a stern face sculpted into one side. You can drink ale, wine, or any other nonmagical alcoholic beverage poured into it without becoming inebriated. The tankard has no effect on magical liquids or harmful substances such as poison.
The Tanni River in the [[Tashana Tundra]] flows from [[Lake Aat]] into the [[White Sea]].
Tannishold is a fortress in the [[Eska Mountains]]. The Stone Council of the [[Dorann Holds]], previously an intermittent conclave gathered to settle important intraclan disputes, has been in permanent session in the fortress in recent years.
Tantamar is a town in mainland [[Lhazaar Principalities]]. It has a high population of [[dwarves|dwarf]] and [[orc]]s with family ties to the [[Ironroot Mountains]]. It is also the heart of House [[Thuranni]]’s activities on [[Khorvaire]] proper. The house has established a grand theater in Tantamar, and the finest artists of the [[Shadow Network]] perform on this stage.
The Tapestry is the youngest and smallest of the territories of [[Argonnessen]], born less than four thousand years ago. The [[dragon]]s of the [[Thousand]] cling to their individual flights, and to the traditions and philosophies they see as the property of their lineage. The founders of the Tapestry wanted to bring dragons of different colors together, to set aside the idea that influence and age were inseparable, and to consider new ideas about [[religion|Thir]] and the [[Draconic Prophecy]]. They might have established themselves in the [[Vast]], but many of the young dragons
hated the rampant violence there. One of their main objections was the process of sending the young into the Vast, a tradition intended to weed out the weak. Initially,
their efforts received little support from the [[Conclave]], but they continued, predicting a great change in the shape of the Prophecy.
Then the first [[dragonmark]]s appeared.
In the wake of this event, the [[Conclave]] agreed to
provide the young dragons with territory to continue
their work. This land came to be known as the Tapestry of
Thought, since it was intended as a land where all colors
would come together as one. In time, the Conclave agreed
to let the dragons of the Tapestry act abroad, and so the
[[Chamber]] was born.
The Tapestry is the home base of the [[Chamber]], although some dragons of the [[Vast]] serve in that body. In the Tapestry, dragon mystics, prophets, and sages continue their work, while their elders defend the activities
of the Tapestry and the [[Chamber]] before the [[Conclave]].
Both the [[Eyes of Chronepsis]] and the wyrms of the
Conclave have grave doubts about allowing dragons to
intentionally interfere with the outcome of the [[Prophecy|Draconic Prophecy]],
and many wish to shut down these activities and force
the dragons of the Chamber to rejoin the [[Thousand]] or
disperse into the [[Vast]]. For now, however, the Tapestry
remains a crucible for new ideas.
!! Industries
The Tapestry has no large-scale industries. However, its
members are constantly exploring new paths of magic.
Although they don’t produce massive quantities of treasure, they might develop spells or [[magic item]]s that can’t be found elsewhere on Eberron.
!! Life and Society
The [[dragon]]s of the Tapestry believe that diversity spawns
new ideas. Rather than continue the dragons’ natural
solitary ways, residents of the Tapestry collaborate with
each other. Dragons spend their time working with one
or more partners, switching frequently (for a dragon,
this can mean anything from years to decades) to gain
new perspectives. Dragons of different colors work far
more closely than in the [[Thousand]], and, in a few cases,
Tapestry dragons have chosen to pair-bond in spite of a
difference in color.
Even though they have liberal ideas regarding relationships between dragons and the newly formed bond between nondragons and the [[Prophecy|Draconic Prophecy]], the
members of the Tapestry are still dragons. They display great arrogance. Although they are intrigued by the destiny of the nondragon races, most still consider them to be lesser creatures. Some even champion the theory that the best approach is the destruction of
the [[dragonmark]]ed.
The [[Prophecy|Draconic Prophecy]] is of great concern to the members of the Tapestry, but they are also interested in advancing understanding of all knowledge, from magic to the physical sciences. Combined with their arrogance, these lofty aspirations could have disastrous results; [[human]]s aren’t the only ones who can reach for something beyond their grasp.
!! Government and Politics
The Tapestry was founded on the idea that all [[dragon]]s
should have an equal voice, setting aside the traditional
hierarchies of age and color. The Tapestry holds its
own conclaves at [[Vorel'arux]], the Valley of Beauty. All
dragons are invited to participate in discussion and
voting, but in truth few do—few dragons are as interested in the administration of the territory as they are
in the acquisition of knowledge. As a result, several
older dragons have accumulated considerable influence within the territory. These dragons helped found the Tapestry when they were mere adults, and now, thousands of years later, they have grown into their glory. Only great wyrms can speak at the [[Conclave]] of [[Argonnessen]], and these dragons have taken up that role.
The wisest among them is a [[loredrake]], [[Jancarlyrix]]. Although he is the strongest voice the Tapestry has, Jancarlyrix still holds to the core doctrine of the territory and takes care to listen to the younger dragons around him.
!! Nondragons in the Tapestry
Despite their enlightened views on [[dragon]] relations
and the fact that the [[Chamber]] works closely with nondragons, the dragons of the Tapestry have little love for the lesser races. Many take the lessons of [[Aureon’s Folly|Age of Giants]] seriously and believe that nondragons
simply cannot be trusted. Some are exceptions—a
few dragons maintain teams of [[human]] scribes or
[[stone giant]] guardians, and others train promising
[[Seren]]s to serve as agents in the wider world. But in
general, nondragons are rare in the Tapestry, and
dragons treat foreigners with great suspicion if not
outright hostility. An adventurer had best bring valuable information, or have some other way to win the trust of a dragon, if he wishes to roam through the Tapestry.
This attitude toward nondragons is one of the main differences between those who reside in the Tapestry and the other supporters of the [[Chamber]], the dragons who founded [[Io'lokar]]. The two factions share similar goals, but as the latter dragons
explore the [[Prophecy|Draconic Prophecy]], they are typically looking for outcomes that will aid the lesser races as well as [[Argonnessen]].
A small but significant force of [[yuan-ti]] is hidden in the Tapestry. Driven into war against the [[dragon]]s after the destruction of [[Io'vakas]], these clever spies have long been draconic foes. They seek to steal the wisdom of the [[Chamber]] and use it against all dragons.
!! Important Sites
The Tapestry is a small territory, and the dragons live
quite close to one another—more like flight-brothers
in the [[Thousand]] than the dominion lords of the [[Vast]].
Due to the type of work done in the Tapestry, a large number of [[planar observatories|planar observatory]] and other [[eldritch machine]]s exist.
<<list-links-article "[tag{!!title}category[location]sort[title]]">>
!! Adventure Seeds
Although the [[dragon]]s of the Tapestry are rarely pleased to see adventurers in their land, they aren’t likely to be as aggressive as the dragons of the other territories. In addition, the Tapestry doesn’t have as many dangerous wandering monsters as the [[Vast]] or the [[Light of Siberys]].
''Setup!:'' Adventurers who have formed an alliance with the [[Chamber]] receive a rare invitation to visit [[Vorel'arux]]. While they are there, a team of [[yuan-ti]] thieves successfully raids the archives and frames the party. The PCs must quickly cool draconic tempers to prove their innocence—but even if they do, can they find the yuan-ti and recover the stolen scrolls?
''Library Search:'' The party finds a series of cryptic clues revealing the location of the [[Crystal Library of Azalakardon]]. But another group has found the same clues—a team of [[rakshasa]]s who intend to use the power of the library to increase their standing in the [[Lords of Dust]]. Do the adventurers turn to the [[Chamber]] for help, or do they seek the treasures for their own? When the library is breached, a powerful [[dracolich]] is waiting for them. Is it Azalakardon? Is he insane and deadly? Or has he been waiting for them to arrive—prepared to set them on the path leading to their true destiny?
Taratai was the [[kalaraq]] leader of the rebel [[quori]] and the
originator of the [[Path of Light]] on Eberron. She led sixty-seven spirits that became the [[kalashtar]] to [[Adar]], where the monk Hazgaal and his students accepted them. In
Hazgaal's body as Haztaratai (though many stories still
call her Taratai), she taught and wrote the precepts of
the Path of Light as a living symbol of balance.
!! The Legend of Taratai
An aged
Haztaratai was the first of the [[kalashtar]] to cross [[Adar]].
Followed by her entire lineage, she did so as an indication
that her people should spread out over Adar, stopping at
[[Mountainsoul|Ahdryatmin]] and [[Korrandar]], marking both as holy to
many [[Adarans]]. In 151 Age of Taratai (-651 YK), Haztaratai passed from this world peacefully at [[Kasshta Keep]]. Taratai continued on, bound to Haztaratai's lineage, and
did so until over 550 years later.
Taratai's scions were the most numerous among
those who had visions or dreams of the [[Shroud]] in the
winter of 701 AT (-101 YK). Construction of [[shroud resonator]]s started immediately, taking many months of work deep in [[Adar]].
When the [[Inspired]] laid siege to [[Kasshta Keep]] in
mid-autumn of 702 AT (-100 YK), even the storms that
naturally form when war comes to Adar could not stem
the tide. The eldest of the Taratai lineage put out a call to
his brethren, many of whom came to the front as quickly
as they could. Together, the members of the Taratai
line created a [[metaconcert]] unlike the world has ever seen.
Accompanied by a small army of brave Adaran monks
and mystics, they met the [[Riedrans]] near the [[Kasshta River]] and on the headlands of [[Syrkarn]]. Even those who survived the clash remember only silvery light. In the
end, the Riedran army was broken, and Ulakhun, one
of the greatest [[kalaraq]] [[Inspired]] generals in history, was
slain in body and his [[quori]] soul bound by the [[Keepers of the Word]]. A gem still rests in [[Kasshta Keep]], among many others, containing that [[fiend]]'s spirit.
War continued into winter, with the Taratai line
fighting in the forefront against the [[Inspired]]—they felt
personally responsible for the arrival of the Inspired on
[[Eberron]]. By midwinter, the Inspired still pushed into [[Adar]],
razing to the ground the original [[Malshashar]] Monastery
on the border of Riedra. The Inspired were less committed to taking [[Kasshta Keep]] only because of their losses to soul-binding magic, but their war machine ground on
from the north. In late winter, [[shroud resonator]]s were placed in
the remaining fortresses in [[Adar]], and one was placed in a
cavern provided by new allies the [[kalashtar]] had convinced
to aid Adar—the [[dromite]]s of [[Zi'til'natek]].
In the last month of winter, the few remaining members of Taratai's line came to each of Adar's citadels. All disappeared in silver light as the shroud resonators began to function. The line of Taratai was no more, but Adar's borders became nearly impossible to cross from that day forward.
Targath is a soft metal mined on the northern coast of [[Argonnessen]] and the [[Seren]] Islands, and is closely guarded by the Seren barbarian tribes. The metal possesses some natural salubrious properties, granting creatures resistance against non-magical diseases. It is also mysteriously effective against the [[deathless]] elves of [[Aerenal]], who shrink from its touch.
Taris Irvalo is one of the few
people in [[Embers]] who has a true connection to the
[[Silver Flame]], but she chooses to work with the [[Knights of Thrane]]
instead of at the [[Keep of the Silver Flame]]. She is a
gentle woman, and she tries to prevent [[Valen Vanatar]] from
engaging in rash action.
Long ago, the [[dragonmarked house]]s sought to exterminate the bearers of [[aberrant dragonmark]]s. Today, those who carry aberrant dragonmarks are still treated with fear and suspicion. During the [[Last War]], the [[King's Dark Lanterns]] of [[Breland]] trained a team of covert operatives who all bore aberrant marks. Considered expendable, this group was sent on one suicide mission after another. After half its members died in the field, the survivors turned on their masters. Six years ago, they fled to [[Sharn]] and founded
House Tarkanan. The group takes its name from Lord [[Halas Tarkanan]], who fought the dragonmarked houses long ago and used his aberrant dragonmark to destroy [[Old Sharn]].
The smallest of Sharn's four major criminal organizations, House Tarkanan has no interest in claiming territory or dominating the criminal underworld. The house takes neither side in the war between the [[Boromar Clan]] and [[Daask]], and it will not assassinate
high-ranking members of either organization. In other matters, it sells its services to all who have the gold to pay for them. House Tarkanan's top priority is using its wealth to protect, train, and care for people who have [[aberrant mark|aberrant dragonmark]]s. The leaders of the house are pragmatists and soldiers, and they train their recruits to be warriors and thieves.
Despite its name, House Tarkanan is not a [[dragonmarked house]]; it has taken the name to mock its enemies, and it doesn't have the recognition, power, or resources of a dragonmarked house. In fact, many members of House Tarkanan hate the dragonmarked houses for being prejudiced against their kind and fear that they will instigate a second purge of aberrant marks. Others are more idealistic, and see the growing power of the houses as a threat to all of the nations of [[Khorvaire]].
!! House Tarkanan Operations
House Tarkanan provides two basic services to clients: theft and murder. Fees for jobs are based on the task's complexity and riskiness; a simple cutpurse contract costs far less than the assassination of a [[Sharn Watch]] captain in [[Skyway]].
What differentiates the assassins of House Tarkanan from those of House [[Phiarlan]] and [[Thuranni]] is their accessibility. The [[dragonmarked house]]s sell their services only to a select list of wealthy and powerful clients, and they can pursue contracts anywhere in [[Khorvaire]]. Conversely, anyone with enough gold can hire House Tarkanan's assassins, but they take jobs only within [[Sharn]].
!! House Tarkanan NPCs
Because House Tarkanan helps all those who have [[aberrant dragonmark]]s, the organization has allies across a wide range of society, from beggars to nobles. Some of
the organization's most important people are these:
* [[Thora Tavin]], a female [[human]], has the ability to sense mystical energies—a gift that enables her to identify others with aberrant marks. She founded the organization and serves as its leader. While she uses the name Thora Tarkanan among her compatriots, she has established herself as Thora Tavin among the wealthy elite of Sharn and has cultivated relationships with many influential people.
* [[Rotting Bal]] is one of Thora's most trusted lieutenants. A male [[human]], Bal was part of the original squad of aberrant commandos. He's an exceptional martial artist whose skills are enhanced by his mark.
* [[Zae]] is a female [[halfling]] who has the power to speak to and control vermin, and see through the eyes of her rats. Though she's no warrior, her gift helps the house gather information. She is the daughter of [[Fileon]].
!!! Tarkanan Contacts
| !<<dr d4>> |!Contact |
| 1 |[[Fileon]] ([[halfling]]) is a healer with a deadly touch, who evaluates and trains potential recruits. |
| 2 |[[Hemlock]] ([[gnome]]) is an assassin and [[alchemist]] specializing in exotic poisons, who's always interested in acquiring new toxins or unusual herbs. |
| 3 |[[Whisper]] ([[elf]]) is a thief whose [[aberrant dragonmark]] absorbs sound. Whisper appreciates fine things and has a vast collection of unusual trinkets. |
| 4 |[[Mala Shol]] ([[half-elf]]) is an expert pickpocket and a master of disguise, with a talent for illusion. |
!! House Tarkanan Villains
Some House Tarkanan villains are obsessed with bringing down the [[dragonmarked house]]s. Others are willing to take innocent lives if doing so means saving one person with an aberrant mark. Sample villains appear on
the table below.
| !<<dr d4>> |!Villain |
| 1 |A member of House Tarkanan murders members of dragonmarked houses, reducing her victims to smoldering piles of ash. |
| 2 |Driven mad by his [[aberrant dragonmark]], a [[dwarf]] becomes obsessed with destroying [[Sharn]] in the same manner that [[Halas Tarkanan]] collapsed [[Old Sharn]]. |
| 3 |A House Tarkanan [[half-elf]] kidnaps children with aberrant marks, believing the organization is better suited to bring up the children than their parents. |
| 4 |A House Tarkanan mage starts drinking the blood of dragonmarked nobles, believing it will increase the strength of his aberrant mark. |
!! House Tarkanan Campaign Themes
As assassins for hire, the members of House Tarkanan
can appear in a campaign as agents of other enemies of
the adventurers. But they can also play a central role in
a campaign.
To use House Tarkanan as a recurring villain, you can
stress its ruthlessness and emphasize its hatred of the
[[dragonmarked house]]s. If any of the adventurers have
ties to one of the houses, this confrontation could begin
with a number of small attacks against the adventurer
or their friends. Over time, these actions could escalate.
In addition, you could build a story around [[Thora Tarkanan|Thora Tavin]]'s quest to discover the secrets of [[aberrant dragonmark]]s. Long ago, [[Halas Tarkanan]] and the [[Lady of the Plague]] possessed marks so powerful that they could
destroy cities. Can Thora find a way to amplify her own
power in the ruins of [[Old Sharn]]?
If one or more of the adventurers has an [[aberrant dragonmark]], House Tarkanan can also serve as a group patron for a party of adventurers. The table below provides hooks for adventurers who are working with the organization.
| !<<dr d4>> |!House Tarkanan Assignment |
| 1 |Steal a satchel full of research on the [[War of the Mark]], carried by a [[wizard]] who works at [[Morgrave University]]. |
| 2 |Kill a [[Karrnath]]i warlord who is visiting [[Sharn]], and make it look like an accident. |
| 3 |Kill a target before she signs her last will and testament to assign her property to a new heir. |
| 4 |Rescue a [[dreamlily]] dealer with an [[aberrant mark|aberrant dragonmark]] who has been captured by the [[Sharn Watch]]. |
!! House Tarkanan Adventure Hooks
The table presents ideas for adventures themed around House Tarkanan.
| !<<dr d4>> |!House Tarkanan Adventure Hook |
| 1 |House Tarkanan disturbed the dead during an expedition to [[Old Sharn]], causing undead to terrorize the city above. |
| 2 |House Tarkanan declares war on the [[dragonmarked house]]s in [[Sharn]] and begins killing nobles in the streets. Many of the houses' businesses in the city are shut down as fear spreads. |
| 3 |A victim who was killed by a House Tarkanan assassin returns as an undead that tries to kill anyone who bears an aberrant mark. |
| 4 |House Tarkanan steals a key that can disable a ticking time bomb created by an [[artificer]]. |
One of three temple-fortresses that guards passage into [[Adar]] directly from [[Riedra]], Tashalatora is home to [[monk]]s renowned even in [[Khorvaire]]. A few
Khorvairians even seek this monastery as a place to perfect their training. Tashalatora's fighters are among the most powerful in Adar, blending [[psionic|psionics]] or [[magical|arcane magic]] skill with fighting prowess in unorthodox ways.
Tashalatora breeds strong fighters because many
within the fortress and in [[Adar]] fear the [[Riedrans]] will one
day cross into the land of refuge by way of [[Vulpana Falls]],
which the citadel overlooks. For the hundreds of miles
between Tashalatora and the [[Haztaratain Monastery]] no other land is passable. Still, an army would have to pass
through or around the [[Shanjueed Jungle]] and its [[Mabar]]
[[manifest zone]], climb all the way up the hills and mountains to the falls, and then cross the falls. Furthermore,
the [[Inspired]] have few significant settlements nearby to
support such an undertaking. As a result, the Riedrans
have yet to try the passage.
Those seeking an audience with Venerable [[Thatari]] must establish a relationship of trust with the elders of Tashalatora before they will reveal the location of her remote mountain cave.
[[Tashana|Tashana Tundra]] shamans can create a wide variety of magic substances from the native rock lichens that approximate the effects of standard
[[potion]]s and oils. The lichen pastes use natural materials
and processes such as sun-drying. They can be purchased in the coastal ports of [[Whitetooth]] and [[Winterstead]], or from individual [[shifter]] tribes encountered in the
inland of Tashana.
Consumable pastes appear as very small and thin wafers of
shredded leaves. Oil-type pastes have a greasy or buttery consistency. Taste and smell also vary among types.
The Tashana region also produces some lichens which
contain natural magical or psychoactive properties. These
lichens do not require any preparation and can be harvested and ingested raw. The most notorious of these is
the blood-red rock lichen known as [[icewild]].
The Tashana Tundra is a land of vast, open spaces and
endless sky. Home to the great [[shifter]] nations of [[Sarlona]],
the Tundra consists mainly of grassy, treeless plains that
stretch without interruption from horizon to horizon.
For many thousands of years, these [[semi-nomadic tribes|Culture of the Tashana shifters]]
have roamed the grasslands, isolated from the rest of the
world and left in relative peace to contemplate the cold,
pure spirit of their ancestral homeland.
!! Land of Many Waters
Tashana means "many waters" in an ancient, nearly extinct
[[shifter]] dialect. The plains are dotted with hundreds,
if not thousands, of small glacial lakes. Many of these
remain frozen year-round, but the southern waters thaw
in summer. In these months, the Tundra is a place of pure
and unspoiled natural beauty. The landscapes are regularly interrupted by huge mounds of rocks and boulders, some miles wide, that seem to have fallen from the sky.
Remnants, presumably, of an earlier glacial age, these rock
mounds have a strange and otherworldly beauty.
The majority of the Tundra is covered with frosty
grasslands. To the north the [[Eska Mountains]] rise, and
the northern foothills of the [[Paqaa Mountains]] encroach
upon the southern border. In the far north, the dreamlike and ghostly [[Tashyvar Islands]] reach into the [[Sea of Rage]]. Finally, the mysterious [[Krertok Peninsula]] extends
northeast of the Eskas.
The climate is mainly subarctic, with true arctic conditions in the northern plains and mountains, and short
summer months of near-temperate conditions in the south.
If anything definitive can be said of the Tundra as a whole, it
is this—it is a land of strange weather. Blizzards, snow squalls,
and whiteouts sometimes descend in an instant, but also
common are strange heat waves, downpours of inexplicably
warm rain, and savage lightning strikes.
The southern border of the Tashana region is marked by a gradual elevation shift and what appears to be an intermittent [[manifest zone]]
tied to the [[plane]] of [[Risia]]. All along these borderlands, planar manifestations of ice and snow have
given the appearance of a land of perpetual winter to
those south of the border. This geographical isolation
has resulted in a land that is remarkably insular and
self-sustaining.
The Tundra is well known for [[reality storm]]s (//aukarak//s
in the ancient [[shifter]] dialect), rogue planar breaches and
manifest zones that drift over the landscape.
!! Getting There
Although no more difficult to travel to than other locales,
the Tashana Tundra had few visitors in the past. The austere beauty of the place and its peoples drew little interest.
Recently, however, things have changed.
Intercontinental trade on a significant scale has
developed on the western Tashana coastline. Exports of
medicinal and magical lichens from the Tashanan interior have resulted in expansion of the port communities of
[[Winterstead]] and [[Whitetooth]], at the respective openings of
the [[Qonama|Qonama River]] and [[Tiiki|Tiiki River]] rivers. Although the Tundra does
produce some unique herbs and spices, the true reason for
this rapid growth is less savory—coastal Tashana produces
a particularly potent strain of the fatigue-alleviating
lichen known as muqqa, or [[icewild]]. Also, Tashana [[shifter]]
art is currently in vogue among a few wealthy collectors in
[[Zilargo]]. As a result, there's a great demand for brave souls
willing to discover and barter for genuine artworks.
Recent years have also seen a significant influx of
[[shifter]]s from [[Khorvaire]]—both individual pilgrims and
entire communities. Khorvairian shifters have been arriving by boat in greater numbers since the end of the
[[Last War]], with charismatic leaders often at the head of
entire naval convoys of pilgrims. Individual shifters
might want to travel to Tashana for personal or spiritual
reasons; other characters might sign on as escorts and
defenders of the larger shifter migrations.
And as with any place, not all visitors arrive by
choice. The [[Akiak]] people maintain their community-in-exile in the northern foothills of the [[Paqaa Mountains]]. While the shifters of the southern [[Qiku]] are careful not to
overtly oppose the [[Riedrans]], they are providing material
support to the Akiak fighters and harboring some civilian communities.
Internal travel is not difficult despite the lack of good
roads. [[Shifter|shifter]] and [[dwarf]] communities have long traded
among themselves, and limited trade exists between the
shifters and the northern border communities of [[Riedra]].
!! State of the Region
The Tashana Tundra is better understood as a geographical
region rather than a nation. Although the Tashana [[shifter]]s
are the dominant people in terms of a semi-unified culture (and sheer numbers), they do not recognize political borders, and they have no diplomats or delegations abroad.
The [[dwarves|dwarf]] of the [[Dorann Holds]] are closer to being an
actual political nation, but their isolationist policies have
kept them all but invisible in their distant mountain holds.
The [[Akiak]] refugees and the [[Icebinder|Icebinders]] [[frost giant]]s remain
essentially nomadic peoples, and little is known of the
mysterious [[Inana]] [[maenad]]s. The Tashana Tundra is simply
too big, too wild, and too sparsely populated to qualify as a
nation in any but the loosest sense of that term.
!!! Shifter Nations
The [[Qiku]] and [[Saartuk]] nations are
composed of hundreds of individual tribes, each led by a
council of elders. The tribe is the basic organizational unit
of the [[shifter]] people, and each functions more or less independently. Each tribe has one or more shamans—healers and
spiritual councilors. In the north, the desperate and more
warlike [[Chuniigi]] are more fractured and entirely nomadic,
following the herds of caribou and competing with the many
human tribes in the area.
The three nations have enjoyed a state of relative peace
for many decades. The great wars of the past had been devastating for all, and the Tundra is too harsh a land to spill
unnecessary blood. Twice a year, each nation holds a gathering of its internal tribes and once a year, representatives
from the three nations convene a Summit Council at a
secret location in the central plains known as the Speaking
Stones (not to be confused with [[Sivis]] [[speaking stone]]s). Recent threats by the [[Kalaak]] barbarians have tribal
leaders uniting in common defense, and a semipermanent
Summit Council has gathered for several years now. The Council is led by a triumvirate known as the Sky Tellers,
with each of the three great nations represented. Among
all three nations, adults of any gender are hunters
and fighters, and in times of war, each nation is capable of
fielding an army of fighters on very short notice.
See also [[Culture of the Tashana shifters]].
!!! Other Tashana Groups
* [[Dorann Holds]]
* [[Akiak]] refugee clans
* [[Inana]] [[maenad]]s
* [[Icebinders]]
!! Foreign Relations
Among the various peoples of the Tundra, relations are
generally peaceful. The [[shifter]] nations keep to themselves,
having successfully averted large-scale war for hundreds of
years. Isolated tribal skirmishes still occur regularly when
resources become scarce, particularly involving the warlike
[[Chuniigi]] tribes of the north.
In recent years, the refugee people of the [[Akiak]] and
the tribal leaders of the [[Qiku]] shifter nation have joined in alliance. This alliance has historical roots: When the
Akiak split from their [[Dorann|Dorann Holds]] forefathers hundreds of
years ago, the shifters of the Qiku nation helped the
dwarves in their migration from the [[Eska Mountains]]
across the Tashana Tundra. After the Akiak established
their new clanholds in the [[Paqaa Mountains]], the two
groups remained friendly and engaged in significant
trade. After the betrayal of the [[Inspired]], the Qiku shifters provided refuge and shelter to the desperate Akiak
refugees in the northern foothills of the mountains,
where they remain to this day. While there is no formal
military alliance, the Qiku provide Akiak guerrilla raiders with supplies and mercenary warriors to assist in their
campaign to retake clanholds in the Paqaa range.
Along the western coast of the Tashana, the [[Saartuk]]
nation coexists with colonies established by
the [[Inana]] [[maenad]]s of the [[Tashyvar Islands]].
There is certainly no shortage of space
or resources along that shoreline.
The port communities of [[Winterstead]] and [[Whitetooth]] are an
intriguing mix of [[maenad]] and
[[shifter]] culture, along with a
smattering of various [[Khorvarian|Khorvaire]] influences brought by
increasing sea trade.
In the far north, lowlying [[Dorann|Dorann Holds]] clans have
a tradition of trading
worked metal and weapons
with the [[Chuniigi]], typically for prepared meats
and animal products.
However, relations have
soured in recent years.
The Chuniigi are enduring relentless raids by the
savage [[Kalaak]] barbarians,
and these are desperate times
for the northernmost [[shifter]]
nation. Chuniigi now regularly
raid Dorann [[dwarf]] settlements,
and even northern roaming [[Qiku]]
and [[Saartuk]] tribes when necessary.
The nomadic [[Icebinder|Icebinders]] giants generally have good relations
with all three [[shifter]] nations, in that
they leave one another alone. The scattered and self-sufficient [[human]] barbarian tribes of the Tundra have no overarching organization, and conflict arises
only when competition for resources heats up.
The human barbarians known as the [[Kalaak]] are an
entirely different matter. Of these terrible raiders, little
is known—and of that, little is spoken. Some say the savagery of the Kalaak has earned them a reputation entirely
out of proportion to their actual power and numbers.
There is no doubt, however, that the Kalaak represent a
grave threat to all peoples of the Tashana.
!!! Riedra
[[Riedra]] and Tashana have long had a mutually beneficial
policy of ignoring one another's existence. It's unclear to
what extent the [[shifter]] leaders know of the Riedran government, and all indications are that the [[Inspired]] consider the
shifter nations harmless primitives. Several passes break
through the strange planar-influenced border between
the lands of Tashana and Riedra, and limited trade exists
between individual shifter tribes of the southern Tundra
and northern [[Riedran|Riedrans]] settlements—proximity trumps
politics in these cases. The upper reaches of the [[Paqaa Mountains]] represents a significant exception, due to direct
hostilities between the refugee [[Akiak]] fighters and [[Riedra]]n
occupiers. Although there exists no state of war between
Riedra and the [[Qiku]], it is common knowledge that the
shifters support the Akiak in their struggle to reclaim their
homeland. Tashana tribes and [[Riedran military|Taskaan Legion]] shifters
harbor a deep enmity toward one another. Extremely bloody
incidents in the past have led the leaders of both Riedra
and the Tundra nations to avoid direct conflict.
!!! Syrkarn and Adar
Tashanans are, for the
most part, unaware of the
distant nations of [[Syrkarn]]
and [[Adar]]. It's probable, however, that leaders of the shifter
nations have some knowledge
of these lands. In fact, there
are those who suspect that
emissaries have been dispatched in both directions,
and that secret talks are under
way to assess a possible alliance
against [[Riedra]].
!!! Other Nations
It's a fact known to only a select
few, but Tashanan coastal communities and pirates of the [[Lhazaar Principalities]] have maintained secret trading and smuggling routes
across the [[Lhazaar Sea]] for many years.
Initial trade was probably in certain
exotic spices native to the Tashana coast,
but much of the commerce now revolves
around trafficking of medicinal and magical lichens, especially [[icewild]]. Other
commodities include native Tashanan art,
and mineral and crystal exports from the [[Eskas|Eska Mountains]].
Tasho Mol Doras, the ambassador of [[Zilargo]] at the [[Sharn]] [[embassy|Zilargo Embassy (Sharn)]], is a brilliant diplomat and ruthless negotiator. He is always looking for a
way to get an edge over his political and mercantile opponents, and quickly seizes upon any sign weakness and exploits it. He is a skilled actor and can feign a wide range of emotions, but when the interests of his nation or family are at stake, he acts without mercy.
The Tashyvar Islands off the coast of the [[Tashana Tundra]] in [[Sarlona]] are the ancestral home of the [[Inana]] [[maenad]]s.
Also known as the Savage Legion,
this [[Harmonious Shield]] division of shock troops is composed of nonhumans—primarily [[shifter]]s, but including [[ogre]]s and a few [[eneko]]. Each [[Riedra]]n bastion
lord has their own Taskaan
guards, raised from
birth to serve their
[[Inspired]] master.
!! Notable Members
<<list-links-article "[tag{!!title}category[person]sort[title]]">>
Tasker Torralyn d'Sivis was a famous inventor and explorer of House [[Sivis]]. His most notable achievements were the invention of the [[speaking stone]]s in 783 YK, and his incredible adventures in the [[plane]] of [[Lamannia]], during which he encountered the totem beasts of that realm; he was the first among the people of [[Khorvaire]] to report on the existence of these gargantuan creatures.
Today, the organization known as [[Tasker's Dream]] bears this intrepid pioneer's name.
Tasker's Dream (named after legendary [[Sivis]] [[gnome]] [[Tasker Torralyn d'Sivis]]) is a House [[Sivis]] think tank dedicated to developing new forms of magical and
linguistic communication. In addition to working to
improve upon the [[sending]] ritual and the [[speaking stone]]s, Tasker’s Dream is exploring the potential of telepathy and even developing new languages.
These practical projects provide cover for the
true work of the unit. Tasker’s Dream is dedicated to
unlocking all secrets of linguistic magic, including
the [[Draconic Prophecy]] itself. The Wordsmiths of
Tasker’s Dream will pursue any lead that could shed
more light on the Prophecy, and are especially interested in Prophecy marks found etched into the earth.
A PC who has ties to House Sivis could be recruited
to help the Dream unlock the secrets of the Prophecy, or to undermine its work if the Dream’s plans go
beyond house interests.
[[Talia Torralyn d'Sivis]] is a prominent Wordsmith of Tasker's Dream.
Identical twins Tasra d'Deneith and [[Lalia d'Deneith]] are the leading [[Sentinel Marshals]] in [[Sharn]], headquartered in the [[Three Towers]] [[enclave]]. They can be inconsistent about which fugitives they chase down, leaving some high-profile but potentially longterm pursuits to other marshals. Nonetheless, they
are a fugitive’s worst nightmare: implacable, but likely to toy with their quarry before ending the chase. Tasra in particular knows the seedy areas of [[Sharn]] like the back of her hand.
Unknown to all but agents of the [[Dreaming Dark]], both sisters are hosts to [[tsucora]] [[quori]] spirits.
Tattered Alice lingers in Fisher’s Folly in [[Stormreach]]'s [[Harbor]] district, near the
[[Leaky Dinghy]], living on scraps and the odd coin
from a sympathetic passerby. Tearing at her clothes
with her nails, she shouts dire warnings and prophecies. Awakening dark gods, plagues of sea devils, a
conspiracy by the [[Storm Lords]] to poison the water
supply—these and other dark portents have passed
her lips.
Tattered Alice is unusual for a prophet; so far
as anyone has been able to tell, not one of her dire
predictions has come to pass. Strangely, the district’s
fisherfolk take this to be a mark of divinity, that she
somehow prevents these terrible futures. Some come to
see her simply to be reassured that none of these dire
things will happen.
Everyone who comes to [[Sharn]], whether by land or air,
passes through Tavick's Landing. The quarter took on
a martial aspect during the [[Last War]], and the tense
atmosphere can still be felt today. On the positive side,
Watch Commander [[Iyanna ir'Talan]] has gone to great
efforts to purge corruption in the local garrisons of the
[[Sharn Watch]]; as a result, this is one of the few districts
where the Watch is both helpful and competent. On the
downside, visitors from any nation that fought against
[[Breland]] during the war might be greeted with suspicion
or hostility.
* [[Upper Tavick's Landing]]
* [[Middle Tavick's Landing]]
* [[Lower Tavick's Landing]]
Tavick's Landing is connected by bridge to [[Menthis Plateau]] and [[Northedge]]. It connects to [[Dura]] on the south side of the city ([[Fallen]]/[[Foundation]]; [[Rattlestone]]/[[Kenton]]; [[Highhold]]/[[Sunrise]]).
!! Things to Do in Tavick's Landing
As a metropolitan district filled with immigrants, merchants, and travelers from across [[Khorvaire]] and beyond
it, Tavick's Landing offers a host of opportunities to
enjoy food and entertainment from distant lands. Or you
might find yourself here for one of a few specific reasons, such as:
* ''Take a chance.'' The [[Dragoneyes]] district is filled with ways to lose your wages, both in established gambling halls and on street corners. If you you're looking for something a little more exotic, see if you can find [[Chance]]. This is the name both of a secret, roaming gambling den and of the [[changeling]] who runs it. In addition to offering all manner of mundane games and bets, Chance is said to be able to arrange and cover nearly any sort of wager or duel. Are you ready to gamble with a [[fiend]]? Would you wager a year of your life for a moment of good fortune when you need it the most? If any of the rumors are true, these are examples of what's possible at Chance.
* ''Find refuge.'' Though most of the refugees in [[High Walls]] come from [[Cyre]], the district is a haven for anyone displaced in the war, including [[Brelish|Breland]]. The place is overcrowded, however, and resources are stretched thin. Tensions are high, and feuds and power struggles among the refugees take place regularly. If you're from Cyre, you might be able to find a cot in High Walls, especially if you already have friends or family living there.
* ''Bond over blood.'' The [[Grawand]] district in [[Middle Tavick's Landing]] is one of the few places in [[Breland]] where the [[Blood of Vol]] religion is practiced openly. Residents are circumspect about their activities, and [[undead]] servants are largely kept off the streets. But if you're a follower of the faith, it's a place where you can participate in the Sacrament of the Blood or consult with a priest. It's also the best place to find a skilled necromancer, or to hear rumors about the latest schemes of the Order of the [[Emerald Claw]].
''District Type:'' Marketplace<br/>
''Buildings:'' Open-air market, temple ([[Kol Korran]]),
average lodging (9), average food (45), exotic trades
(15), upscale trades (50), average trades (140), poor
trades (40), upscale services (20), average services
(60), poor services (20)<br/>
''First Impression:'' Traders and travelers fi ll the open
market, offering foods, crafts, and spirits from across
[[Khorvaire]]. The crowd is loud and bustling, but the
City Watch helps to maintain order and discipline.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Cornerstone]] (east); [[Grawand]] (south); [[Holdfast]] (bridge, north); [[Terminus]] (below); [[Silvergate]] (above)
[[Terminus]] lies just below Tavick's Market, and goods
from across [[Khorvaire]] come in on [[lightning rail]]
and are shipped directly up to the open market.
This district is an excellent place to find clothes,
crafts, and goods from the [[Five Nations]] and the
younger kingdoms. Farmers from the surrounding
countryside typically prefer to sell their goods in
Tavick's Market, as the [[Bazaar]] of [[Dura]] is dangerous
and [[North Market]] is expensive. Most farmers come
to market on [[Far|Khorvaire calendar]] and [[Sar|Khorvaire calendar]] each week, and these are excellent times to purchase produce and livestock. A market permit costs 1 sp, and the [[Sharn Watch]] makes
certain that merchants have their permits.
While the open market is the primary attraction in Tavick's Market, there are many permanent crafters, restaurants, and taverns scattered throughout the district. Most of this is average fare, but there are a few diamonds in the rough.
An awe-inspiring and majestic piece of [[dragon]] artifice,
the Teeth of the Three could be the hope of [[Adar]] and [[Sarlona]],
and perhaps even [[Eberron]]. The Teeth of the Three rests above
the head of a creature of legend—a slumbering [[overlord]]—and if destroyed, it could spell doom for Adar, Sarlona, and the world. This incredible item is a magical
focus that might be responsible for Adar's odd mixture of
planar energy and the physical manifestations of them. It
could have been why the [[kalashtar]] were able to cross the
barrier between dreams and the world into Adar.
!! Lore
Few know about it. Fewer know where it is.
And fewer still will ever see it and live to tell the tale. Pieces of the story of the Teeth can be revealed in the following order.
* The creators of the [[Shroud]] are said to have shared a vision during their meditations or in their dreams in sleep. This vision revealed a great device like the [[shroud resonator]]s. Some believe that this device exists.
* The whole story is that the shared vision included the mighty peak [[Korrandar]]. Perhaps the mysterious device glimpsed lies on or in the volcano. But none besides Speaker of the Word [[Chanaakar]] have braved the storms or the [[Storm Guardians]] to find out, and he hasn't said.
* It is said that within the shrouded heart of [[Korrandar]] is set a massive draconic artifact composed of all three types of [[dragonshard]]s. The [[dragon]]s brought it from [[Argonnessen]] and used it and their mighty sorcery to create the natural fortress [[Adar]] is today. Under the land of refuge they sealed the spirit of an [[overlord]] named [[Ran Iishiv]]. They then placed this item, called the //Teeth of the Three//, within the volcano, and a mighty [[couatl]] sacrificed herself to power the crystal's eternal power against [[fiend]]s.
* Tales say the [[Storm Guardians]] gave [[Vusgaar]], the [[sorceress|sorcerer]] of legend who was friend to [[dragon]]s, leave to see the halls under [[Korrandar]]'s mists. In that story, Vusgaar tells that the //Teeth of the Three// is a joining of three [[dragonshard]]s, each amplifying the others' power. It is a nexus that vents the [[overlord]]'s wrath into [[Adar]]'s storms, at the same time focusing eldritch power to keep Adar as the dragons want it.<br/><br/>Vusgaar's disciples kept records that indicate the //Teeth of the Three// is a major component of the [[Draconic Prophecy]]. Dragons created it based on their auguries. The artifact seems to pull certain creatures near and push others away. It is also a massive psionic and magic focus. If this is so, it could be possible to tie Adar's [[Shroud]] to the //Teeth of the Three//, greatly reducing the maintenance the Shroud requires and strengthening its properties. Perhaps such a network is what the dragons sought to build all along.
!! Description of the Artifact
The Teeth of the Three is a breathtaking
conglomerate crystal made up of three [[dragonshard]]s of
a size never seen in modern Eberron. In the center is a
Khyber shard. An Eberron shard and a Siberys shard join
the Khyber shard at the base and emerge from that point at
45-degree angles. Each shard is easily double the height of a
full-grown human and as wide as that person is tall; the artifact weighs over 6,000 lbs. Motes of golden, violet, and crimson light seem to materialize
near and flow into the crystals, and a diaphanous shaft of
silver radiance surges from the center of each upward.
This flow forms a wavering flame that dissipates at about 5
feet above the artifact.
Space around the crystal thrums as if in time with the
heartbeat of the world. This vibration is felt not heard. A
silence beyond silence surrounds the item, as if the gods hold
their breath. The faint smell of burned metal taints the air,
though, and your brow furrows with some forgotten anger.
!! Effects of Activating the Teeth
A being of sufficient spiritual resolve can touch the artifact to activate it.
The [[couatl]]'s gentle and loving spirit within the
Teeth calls to those who value life, freedom, and balance. This
effect is hard to measure, but it covers [[Adar]] and stretches
beyond the land's borders. Far from insuring that all within
Adar are good, this effect has still influenced Adar's development over the millennia. No doubt some [[Riedrans]] near
Adar's borders have felt a longing to cross into the mountains, quickly dismissing the notion and reaffirming the
teaching that Adar is a land of monsters.
More definitively, the area around the Teeth of the Three is
blanketed in several effects. A dimensional lock covers an area
67 miles around the artifact, preventing all extradimensional travel, and within 7 miles of it all effects that summon or call creatures, or that require [[material]]s from other [[plane]]s, are impeded. Within this radius, any attempt to summon or call a
[[couatl]], resist possession, or overcome any resistances of an extraplanar [[fiend]] or [[aberration]] is automatically successful.
When [[Ran Iishiv]] and its minions were trapped beneath
[[Adar]], the [[overlord]]'s rage was so great that the land around its
prison boiled, hurling up the great volcano [[Korrandar]]. The
Teeth of the Three was put in place, and the dragons used their
most puissant magic through it to bring [[Lamannia]]'s energy
closer to [[Eberron]], though Ran Iishiv's chaotic mind also
attracted [[Kythri]]'s influence. With access to elemental forces,
the [[dragon]]s pushed the land of [[Adar]] higher and a [[couatl]]
joined with the crystal to channel Ran Iishiv's fury. The
plan worked, as did the idea to channel Ran Iishiv's violent
passion into supernatural and natural storms that rage in
[[Adar]]. Dragons foresaw they would need these storms to protect their hold in [[Korrandar]]. Strangely, this has an affect in Adar—whenever more than a few score persons act in anger or violence in the land of refuge, a magical effect causes a terrible storm (a hurricane on the coast or a tornado-spawning thunderstorm inland) to manifest in the area of the battle. Such a storm is worse for those without shelter in the mountains—a Riedran siege force, for example.
While in contact with the Teeth of the Three, a creature is
affected as if by a [[mind blank]] spell, and can perform [[scrying]] at will. This scrying is not blocked by the [[Shroud]]. They can also perform a variety of other [[divination]] [[spell]]s.
Those who contact the Teeth of the Three immediately understand its lingering effects and how to access those powers.
!! Lingering Effects
Anyone who has been in the presence of the //Teeth of the Three// is immune to possession for one year thereafter. They may also gain lingering divination capabilities.
A teleportation circle is a circular fixture, typically around 10 feet in diameter and inscribed with [[arcane|arcane magic]] sigils or imbued with a [[psionic|psionics]] imprint, which enables instantaneous transportation to another circle.
In [[Khorvaire]], teleportation circles are created and operated by [[dragonmark]]ed members of House [[Orien]], who use their [[Mark of Passage]] to activate a circle and link it to another circle with a known unique sigil sequence. A shimmering portal then opens, and anyone who steps through the portal in the next few seconds arrives at the destination circle. However, only very powerful wielders of the Mark of Passage are able to operate the circles, so the service is expensive. Orien's [[First Step]] program is actively researching how to expand and improve upon teleportation technology.
In [[Riedra]], the [[Inspired]] have built a secret but extensive network of psionic teleportation circles that connect every bastion city and kintam (fortress), through the central hub of [[Durat Tal]].
Other, vanished cultures also developed portal rituals and left teleportation circles behind. [[Dragon|dragon]]s, [[demon]]s, the [[wizard]]s of [[Ohr Kaluun]] in [[Sarlona]], the [[giant]]s of [[Xen'drik]]—all left teleportation circles in the world, waiting to be found.
Talented [[wizard]]s, [[Orien]] heirs, [[psion]]s, or other such masters of instantaneous translocation can cast a [[rare-tier|spell tier]] [[spell]], spending about a minute and expending ritual components worth at least 5c, to make a makeshift teleportation circle wherever they are and link it to a known circle. The circle vanishes after it is used once.
This silver-rimmed monocle has three lenses layered over one another. While worn, it allows the user to "zoom-in" the vision of one eye, allowing them to clearly view things a mile away.
Jutting up from the sea near the southern coast of the [[Lhazaar Principalities]],
Tempest Isle takes its name from the never-ending
storm that rages over its central mountains. Some say
this phenomenon is caused by a clan of [[storm giant]]s
descended from [[Xen'drik]] exiles that landed here
millennia ago. Others assert that a mighty [[wizard]]
lives atop the peak, and that the storm is his warning
against visitors.
Whatever the cause of the storm, rumors of fabulous wealth hidden on the island bring ships from across [[Khorvaire]] to these waters. It is said that pirate
captains in ages past used the numerous natural
caves and caverns on the isle to store their treasure,
and that one such trove in particular holds more gold
and jewels than the wealth of all the Lhazaar princes
combined. No one has ever found this legendary trove,
of course, and most treasure hunters who set foot into
the island’s jungle-shrouded interior never return.
Tempest Isle is also home to a tribe of particularly large and brutal aquatic [[troll]]s (also known as //scrags//).
Tempest Strait lies between [[Tempest Isle]] and [[Q'barra]] to the west, and [[Lorghalan]] and [[Dreadwood Isle]] to the east.
The Tempest's Spine is a volcanic mountain range in eastern [[Xen'drik]]. The fabled [[Ring of Storms]] is said to sit among these peaks.
''Population:'' A mix of many races, with more [[human]]s and [[elves|elf]] than any other.<br/>
''Character:'' A confusion and profusion of sound, color, theater, and religion.<br/>
''Businesses:'' Entertainment, accommodation, religious services.<br/>
''Key Personalities:'' [[Jirian Zayne]], [[Morian Shol d'Phiarlan]], and [[Zarzalia Shol d'Phiarlan]].<br/>
''Overseer:'' Lady [[Paulo Omaren]].
//Your senses are assaulted on all sides by the overwhelming presence of this part of [[Stormreach]].//
//Sight: Bright colors, pennants, entertainers dressed like colorblind magpies, swooping arches, green leaves, and colorful lanterns.//
//Smell: The tang of spices on the wind, the hint of incense and oils
from the temples.//
//Sound: Temple adepts calling passersby to worship, hawkers drawing attention to their sweetmeats and savories, bards plucking at their instruments, actors calling out the merits of their plays, and, booming over all of it, the performance in the [[Livewood Theater]].//
Standing at the fork of the [[Koronoo River]], the Temple district is the heart of entertainment and worship in [[Stormreach]]. Because of the abundant groundwater here, the district is subject to more subsidence than other parts of the city, its stone buildings cracked and its cobbled streets uneven. Aside from the city walls and the stone
banks of the [[Livewood Theater]], few ancient structures remain. New buildings are crafted out of wood, many of them out of [[livewood]]. The district’s architecture is
marked by arches and domes, intermingled with trees festooned with paper lanterns.
When House [[Phiarlan]] arrived in the city, the [[giant]]s’ amphitheater—now the [[Livewood Theater]]—was a major attraction to them, so they established their
[[enclave]] here. Nearby are various entertainment venues, accommodations for visitors, and many shrines.
!! Noteworthy Locations
* the [[Bogwater Tavern]]
* the [[Golden Wing Inn]]
* [[House Phiarlan Enclave|Phiarlan Enclave (Stormreach)]]
* the [[Keep of the Silver Flame]]
* the [[Livewood Theater]]
* [[Object Desire]]
* the [[Onyx Fountain]]
* the [[Pink Conch]]
* [[Temple Row]]
* [[Vestrii's Arms]]
!! Adventure Hooks
* Brawls between the [[Knights of Thrane]] and the Order of the [[Emerald Claw]] are common in the district, but the civilian faithful of the [[Blood of Vol]] are spared this violence. Tonight, though, a Seeker has been stabbed to death and dumped in the river. The residents of [[Grindstone]] blame the [[Knights of Thrane]], who indignantly deny responsibility. If the real culprit cannot be found, even the [[Iron Watch]] might not be able to contain the trouble.
* A new play is making the rounds. Never performed, the script itself is causing a fuss. Titled //Rough Weather//, it is a bawdy comedy that makes most of its jokes at the expense of the [[Storm Lords]]. The lords are offering a considerable reward to anyone who can find and stop the printing of the script and bring the playwright into custody.
* The [[Livewood Theater]] is having problems with its [[halfling]], [[gnome]], and [[dwarf]] workers and audience members because a [[human]] was recently cast as Lothar in a production of //Globach and Lothar//. The problem is that Lothar is traditionally a [[halfling]], and the theater plans to make the human actor look like one through magic. Shorter actors have walked out in protest. [[Zarzalia Shol d'Phiarlan]] is at her wit’s end and needs help to break the strike, one way or another.
!! Overheard in the Temple District
//“Praise not the greater gods; they do not need your prayers. Spare a thought instead for the little gods, the ones to whom we all pray but whose names we do not know. The ones who keep our food warm, our feet shod. Praise the little gods! Praise Humoona, goddess of lemon zest. What would your sweet cakes be without her?”//
//“But hark, you hear that sound? The faint blowing of the wind where once there was a storm. Once a gale could determine the direction of the wind, but this? No arrow could find the mark, but perhaps a mark could find the arrow...”//
//“Ladies and gentlemen, if I might speak to you of the [[Pink Conch]]’s advantages for a moment. Our services are refined, our men and women unmatched, and our discretion limitless. And at the Conch, there is no theatrical subterfuge, as you might find at the [[Livewood Theater]]. No, here what you see is what you get. And I’d wager we have much you’d like to see.”//
The Temple of the Ages is
the primary place of worship and training for the
[[Keepers of the Past|Spirits of the Past]]. It is also the site where High
King [[Vadallia|Shaeras Vadallia]] hosts annual tournaments and contests
of military and equestrian skill.
Before the rise of the [[Silver Flame]], it was not uncommon to find people
who openly worshipped the [[Dark Six]], either hungry
for power or making sacrifices to placate the dark
gods. Temples to the Six were usually built in hidden
places, and when [[Sharn]] was created, an enormous
temple to the Dark Six was constructed beneath the
city. In 484 YK, Flamekeeper Jalus Baine led a force
of the faithful and exterminated the followers of
the Six, and the temple was quickly ransacked. But
it was not completely destroyed. Currently, it serves
as the headquarters of [[Daask]] and the home of the
[[oni]] [[Cavallah]]. Cavallah respects the [[Mockery]] and the [[Shadow]]
and has restored their altars, but for the most part
the temple was simply a convenient base of operations. She has established a range of defenses in the
temple, and brought a variety of unpleasant beasts
from [[Droaam]]: [[grick]]s, [[displacer beast]]s, [[basilisk]]s,
and an assortment of other deadly creatures. The
wealth gathered by Droaam lies in the vaults of this
temple—but seizing it would be a dangerous task.
Many of the [[Dark Six]] have other worshippers
in [[Khyber's Gate]], who have established hidden
temples; these folk generally practice their faith in
private and have little contact with [[Cavallah]].
[[Stormreach]]’s oldest temple of the [[Sovereign Host]] was
founded in [[Forgelight]], before the [[Temple District]] was
established. Mercenaries often visit the temple to make
offerings to [[Dol Dorn]] or [[Dol Arrah]]. But many visitors are surprised when they see that the temple is dedicated to an unusual variation of the Host, the [[Church of the Wyrm Ascendant]].
This temple is easily identified by the Octogram
symbol above its gate. The icons within the temple
depict the gods in draconic form; mosaics depict images of these [[dragon]]s in battle with
[[fiend]]s. The priests of the Wyrm believe that those who serve
the [[Sovereigns|Sovereign Host]] and build a hoard can literally buy
their way into the heavens, joining the Sovereigns on
a transcendent plane as heavenly dragons. According to rumors, a hoard of treasures lies beneath the temple, which includes two centuries of tithes combined with a vast
array of draconic artifacts and relics recovered over
the decades.
The temple’s high priest is [[Maru Sakhesh]]. His chief acolytes are Cael Duryn, a kind [[elf]] who nevertheless believes in the Wyrm Ascendant doctrine that miracles have their price, and Tania Drake, a young and ambitious [[human]] [[cleric]] who is very interested in recovering draconic artifacts from the wilds of [[Xen'drik]].
The [[Blood of Vol]] operates openly within [[Grindstone]], and
its temple is the main place of religious observance for the
ward’s [[Karrn|Karrnath]]s. Congregants call the temple Rosewood,
after the crimson ivy that covers it, and are led by the priest
[[Berrinessa]], a quiet herbalist. The temple occupies an old ruin, its rituals performed
amid broken pillars and statues of the past. Despite
[[Stormreach]]’s laissez-faire approach toward religions,
the presence of the Blood of Vol does cause uneasiness in
other districts, where biases against the faith have carried over from [[Khorvaire]]. Remaining within Grindstone gives the temple a measure of protection from its enemies.
A jumble of shrines and stalls selling devotional
knickknacks, Temple Row is a bazaar of religion in the [[Temple District]] of [[Stormreach]]. Most of the street’s priests, prophets, and charlatans make
appeals on behalf of the [[Sovereign Host]], but it is not
unusual for representatives of the [[Dark Six]] or even the
[[Dragon Below|Cults of the Dragon Below]] to preach among them.
The namesake of the
[[Torchfire]] district is this crowded, smoke-filled theater near the point where Torchfire, [[Firelight]], and
[[Center Bridge]] converge. Though critically derided
as the bottom of the barrel in [[Sharn]]'s entertainment
scene, crowds fill its hall to bursting every night,
thanks to a winning combination of cheap tickets
and undeniably entertaining shows. It is sometimes
hard to hear the performers over the roaring crowd,
but no one seems to care—except perhaps the performers, or the young playwrights with aspirations
of writing for the [[Grand Stage]].
When this shield is tossed on the ground and the command word is spoken, the shield grows and morphs into a sturdy three-person tent made of peculiar silver canvas.
Speaking the command word again causes the tent to transform back into a shield, provided that no creatures are inside. Any objects inside the tent when it collapses are ejected and remain outside the tent as it folds.
The earliest [[Xen'drik]] explorers brought back tales of these terrifying creatures. Scholars have since determined more about the true nature of these creatures, but the initial moniker of “tentacle spider” has stuck.
Despite its name, this [[monstrosity]] is not truly a spider. Its long (three to five feet), black torso is covered with thin chitinous plating and wiry gray hair, and it is segmented in the middle. The creature has eight red, bulbous eyes and six many-jointed legs. Instead of fangs, the creature has four tentacles as long as a human forearm surrounding its mouth. Each slimy, pink tentacle secretes a contact poison that renders foes clumsy and helpless.
Tentacle spiders favor both warm and temperate forests, gathering in sheltered trees. The
remnants of their writhing webs in an area hint at the
presence of a colony, but lone tentacle spiders typically
nest away from their hunting grounds.
The writhing webs of the tentacle spiders are named for their disturbing tendency to act like tentacles themselves. Exposure to air causes the sticky strands to coil and twist, writhing around an enemy as if they were alive. This has caused heart-stopping
panic in any number of Xen’drik explorers, as the writhing webs seem to grow tighter and tighter around them.
The Tents of Rushemé stand a short distance from the
mutually agreed-upon border of [[Stormreach]]. Amid the
tents, nomadic tribes of [[giant]]s (together known as the [[Guardians of Rushemé]]) come together to trade with one another and the people of Stormreach, to be
close to their ancestral city, to perform their rites, and to hire on as guides into the continent’s interior. [[Gaulronak]] is the oldest and most respected [[giant]] residing in the encampment.
Although [[Hular]] and the other [[eneko]] at [[Black Iron]] have some of the closest relationships with the [[giant]]s, others have managed to forge relationships
with them. The giants make the rules among the tents,
but the [[Stormreach Guard]] keeps a close watch on them;
Rushemé is largely peaceful, but the physical might of the
giants is enough to make the [[Storm Lords]] nervous.
The agents of [[Teraza|Sora Teraza]]'s Eye are sages, versed in [[Droaam]]'s
history and diverse customs. They survey ancient ruins
and identify [[manifest zone]]s and planar conjunctions. They
often offer unsolicited advice to local warlords. Though smaller than [[Katra's Voice]] and [[Maenya's Fist]], some believe that those Eyes
that are seen are merely the tip of the [[ankheg]]—that Teraza
is served by [[changeling]]s and other hidden agents who carry
news of all developments back to the [[Daughters|Daughters of Sora Kell]].
''District Type:'' Caravan district<br/>
''Buildings:'' Temple (2) ([[Olladra]], [[Silver Flame]]),
average lodging (20), poor lodging (60), average food
(38), poor food (120), average trades (40), poor trades
(60), average services (40), poor services (60)<br/>
''First Impression:'' This district is a buzzing hive of
activity. [[Orien]] [[lightning rail]] coaches arrive and depart
twice a day, and merchants and laborers are constantly loading and unloading crates of merchandise.
[[Skycoach|skycoach]]es and magic lifts are in constant motion,
carrying travelers up to the higher towers.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Wroann's Gate]] (east); [[Cogsgate]] (south); [[North Market]] (bridge, north); [[Blackbones]] (below); [[Tavick's Market]] (above)
Terminus is defined by [[Terminus Station]], the massive House [[Orien]] [[enclave]] that serves as an endpoint for the Orien [[lightning rail]] coach line. As a result,
most [[Brelish|Breland]] travelers come through [[Wroann's Gate]],
while most to the travelers from other nations arrive
at Terminus. It is a hotbed of activity, and despite the
presence of the [[Sharn Watch]] and the [[Guardians of the Gate]], pickpockets and other thieves operate freely.
After visitors pass inspection by the Guardians of
the Gate, they are free to leave the district, either on
foot or by taking one of the lifts or [[skycoach]]es to the
higher wards. Terminus itself offers a host of inns,
restaurants, taverns, and other basic services for the
traveler who doesn't want to enter greater [[Sharn]], but
none of these services are notable for quality or value.
House [[Sivis]] maintains a message station in Terminus, and there is a small [[Deneith]] outpost where visitors can arrange for bodyguards or laborers.
There is a larger House [[Lyrandar]] enclave; primarily this is used for negotiations between Lyrandar and [[Orien]], but this outpost also allows merchants to
arrange to have the goods brought in by coach transported elsewhere by air or sea. House [[Vadalis]] operates a large stable and hostelry, allowing visitors to secure
their mounts while wandering through the city.
An [[enclave]] of House [[Orien]], this site contains the [[lightning rail]] station. The administrators coordinate the many [[Orien]] caravans that come and go from [[Sharn]]. Many of the other [[dragonmarked house]]s have small outposts in or around Terminus Station, allowing travelers to immediately access the services of House [[Sivis]], House [[Deneith]], and others.
[[Io'lokar]]’s second tier is home to the city’s professional
warriors and scouts, and to lower-rank spellcasters.
Most of the guides and explorers that a PC party might
seek in the city can be found here. The spellcasters
of the Terrace are those whose talents keep the [[magic item]]s and imbued [[spell]]s of the city functioning. Magic crafters of all stripes can be found here, and the ward is
alive with artful illusions and magical entertainments
day and night.
!! Noteworthy Locations
<<list-links-article "[tag{!!title}category[location]sort[title]]">>
The Tese Hills in [[Syrkarn]] are a small chain of low mountains where the [[Qitha River]] has its headwaters. They form part of the border between [[Khunan]] and [[Lamecha]].
A creature that ingests this poison and cannot resist its effects is unable to cast any [[spell]]s for eight hours.
A large [[densewood]] building lies near the wall between the [[Harbor]] district and the [[Graystone]] ward. A leafy [[livewood]]
sign bears the image of a golden mask above a fountain,
along with the name Thaendyr’s Rest.
Combining the functions of consulate, inn, and temple, Thaendyr's Rest is a little piece of [[Aerenal]] in [[Stormreach]]. Located near the wall between the [[Harbor]] district and the [[Graystone]] ward, the Rest caters to [[Aereni]] and their companions and is run by the [[elf]] [[Thaera]]. [[Maeran Mendyrian]] is the resident [[Undying Court]] priest and de facto consul.
Under normal circumstances, only [[Aereni]] (and
their companions) are allowed into Thaendyr’s Rest.
This policy is enforced by the inn’s [[deathless]] guardian, [[Chyn Mendyrian]].
!! Adventure Hooks
* One of the [[Skullborn]] wants to decipher the methods being used to preserve [[Chyn|Chyn Mendyrian]] while he’s so far from Aerenal. The guardian of the Rest is kidnapped, and Maeran charges an Aereni adventurer to find the honored ancestor before his life force can be corrupted.
* [[Thaera]] approaches the adventurers when they are planning an expedition. The area they plan to pass through has an important role in the history of the [[line|Aereni noble line]] of Daelys, and she wishes to send Chyn with them to search for family relics.
* [[Maeran Mendyrian]] calls an [[Aereni]] adventurer to the Rest. It seems that the [[Shrouds]] are indeed the vanguard of an [[undead]] army lurking beneath the surface, and after decades of work, they are on the verge of completing an [[eldritch machine]]. There’s no time for Maeran to summon the [[Deathguard]], and the machine cannot be allowed to activate or to fall into untrustworthy hands. Can the adventurers defeat these ancient ghosts?
Thaera is the current keeper of [[Thaendyr's Rest]]. An elf of the [[Aereni noble line]]
of Daelys, she has served at the Rest since she was
thirty years old; now, at the age of 140, she has taken
the helm. Having spent much of her life in [[Stormreach]], she is more comfortable in the city than most of her kin. She devotes most of her life to the business of
the [[Aereni]], but she also finds the time to mingle with
the people of Stormreach and might attend feasts or
festivals. Since [[Maeran|Maeran Mendyrian]] rarely leaves the Rest, a chance
encounter with Thaera is the best opportunity for
non-Aereni adventurers to obtain an invitation into
the Rest.
Thal Eledar is an island in [[Aeren's Sound]] off the northeastern coast of [[Aerenal]].
Thal Othoril is an island in [[Aeren's Sound]] off the northeastern coast of [[Aerenal]].
Thal Taluna is an island off the southeastern shore of [[Aerenal]], forming one side of the [[Blackwood Bay]].
Thalann Gol is a small island in [[Aeren's Sound]] off the northeastern coast of [[Aerenal]].
Thalann Val is a small island in [[Aeren's Sound]] off the northeastern coast of [[Aerenal]].
Thalann Zar is a small island in [[Aeren's Sound]] off the northeastern coast of [[Aerenal]].
When King [[Jarot ir'Wynarn]], the last ruler of [[Galifar]], died in 894 YK, and the scions broke with tradition and entered the [[Last War]], Thalin of [[Thrane]] saw another
opportunity to spread the [[Silver Flame]] to the entire kingdom. While the other scions had more personal or philosophical reasons for refusing to honor the traditional rights of succession, Thalin believed that he had a divine right to the crown. This tendency on the part of Thrane to place itself above the rest of the shattered kingdom led to some of the most terrible battles of the [[Last War]].
In 914 YK, with the death of King Thalin, [[Thrane]]’s
people rejected Thalin’s heir (Daslin)’s claim to the throne and
turned to the Church of the [[Silver Flame]] for leadership.
Thrane became a theocracy under the rule of the [[Keeper of the Flame]], with a Wynarn "blood regent" serving merely as a symbolic advisor.
[[Thrane]]’s regents have always lived in this massive fortress in the center of the city. Thalingard is a great fortress with tall spires. Its balconies
offer a stunning view of the city unfolding below.
Thalingard takes its name from Thrane’s [[last king|Thalin ir'Wynarn]] since becoming a [[Silver Flame]] theocracy. Custom dictates that the castle’s name change with its ruler, but Thrane has not had a true king since Thalin, and so the old name remains. The castle houses the blood regent [[Diani ir'Wynarn]] and
a detachment of [[warforged]] sentries. Because the monarchy is no longer relevant, the castle is a much a symbol as the regent.
This ancient city was once the seat of a proud pre-[[Galifar]] kingdom that shared its name. From the founding of Galifar until it was seized by [[Thrane]] in 926 YK in the [[Last War]], Thaliost was part of [[Aundair]]. Thaliost was officially ceded to [[Thrane]] under the [[Treaty of Thronehold]] in 996 YK. Many of its people bitterly oppose the Thrane occupation, but it's also become a haven for Aundairian followers of the extremist [[Pure Flame]] sect; violence often breaks out between these two factions.
Thaliost is a unique city in [[Thrane]], its [[Aundair]]ian
heritage made manifest in its tower-filled skyline,
austere structures, and straight roads. Even after
decades of Thrane rule, more than a few citizens still
see themselves as Aundairians. They are profoundly
discouraged by their former homeland’s inability
or unwillingness to liberate them. The most bitter
of them remain restless, and uprisings, rebellions,
murders, and arson are common. Thrane has tried
everything it can to keep the people in line, including
cutting off food, employing secret police squadrons,
and placing entire armies inside the city. Thus far,
nothing has worked.
Thaliost is a powder keg—one spark, and the city could erupt in a conflagration of rebellion. The [[Council of Cardinals]] is well aware of the dangers the city poses, which is why it appointed an [[Aundair]]ian archbishop for its governor. Unfortunately, Archbishop [[Solgar Dariznu]] makes things worse with his brutal tactics, pushing
even those who might become resigned to living in
[[Thrane]] to join the rebels. Word has it that something
big is in the works, something nasty enough that the
rebels just might break Thrane’s stranglehold.
''Leader:'' The [[Triumvirate|Tharashk triumvirate]] ([[Maagrim Torrn]], [[Khandar'Aashta]], and [[Daric Velderan]]) <br/>
''Headquarters:'' [[Zarash'ak]], [[Shadow Marches]] <br/>
''Dragonmark:'' [[Mark of Finding]]
//My ancestors used their gift to track beasts in the swamps. I use mine to find fugitives in the slums of [[Sharn]]. I'm still a hunter. I always find my mark.//
<div align="right">—Hondar'Aashta, Tharashk bounty hunter</div>
House Tharashk traditionally licenses [[inquisitive]]s and
bounty hunters. Recently the house's [[Finders Guild]] has
expanded into [[dragonshard]] prospecting. As dragonshards are the lifeblood of the magical economy, the
house's talent has given them new wealth and influence.
Tharashk is the youngest of the [[dragonmarked house]]s
and hasn't embraced all the customs of the others. The
distinct clans that united to form the house remain important, and heirs of the family usually retain their family
names rather than adopting "d'Tharashk" as tradition
dictates. Each of the three major clans—the [[Aashta]], the
[[Torrn]], and the [[Velderan]]—has a representative on the [[Tharashk triumvirate]] that governs the house, and the city of [[Zarash'ak]]
in the [[Shadow Marches]]. Together, they stand as one under the emblem of the //dragonne// (a lion-dragon hybrid, also called a liondrake or gamelyon).
!! History of House {{!!title}}
The [[Mark of Finding]] manifested about 1,000 years
ago among three [[Shadow Marches]] clans—the [[Torrn]]s,
the [[Velderan]]s, and the [[Aashta]]s. The exploits of [[dragonmark]]ed hunters quickly became legendary. Three
hundred years ago, a team of [[Sivis]] [[gnome]]s came to
the Shadow Marches searching for this dragonmark.
Assisted by the gnomes, the clans bearing the [[Mark of Finding]] joined to form their own house. They named the house Tharashk—a Goblin word meaning “united.”
The newborn house quickly carved out a niche
for itself. The heirs of Tharashk have always been
survivors, and they quickly adapted to life in the [[Five Nations]]. The [[Shadow Marches]] have rich deposits of
[[dragonshard]]s, and upon learning the value of these
stones the clans of Tharashk used this mineral wealth
to craft a foundation for their house. Since then, their
power and influence has slowly grown. There are still
those in the [[Five Nations]] who distrust the “graybloods,”
but by and large House Tharashk has flourished.
!!! The Last War
Initially, the [[Last War]] had little impact
on House Tharashk; its prospecting work occurred in
the wilds of the [[Shadow Marches]] and [[Q'barra]], far from the battlefields. The house was often called upon for search-and-rescue work, but the profits
from this activity were minor compared to prospecting.
The aspect of the war that had the greatest
impact on the house was the rise of [[Droaam]]. House
Tharashk has formed strong ties with the [[Daughters of Sora Kell]]. The house is helping the Daughters locate and mine the resources of their lands, and brokering the services of monstrous mercenaries... and
profiting from both.
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
The [[House of Finding|Tharashk]] has a
great interest in [[Xen'drik]] and the mineral wealth
that can be found there, as well as an interest in the
other dark lands of [[Eberron]]—[[Q'barra]], the [[Demon Wastes]], [[Khyber]], and the [[Mournland]]. The [[Tharashk]] [[enclave]] in [[Clifftop]] is primarily concerned
with exploration and prospecting. The house sells
the services of guides, and many of its members
have firsthand experience in Xen'drik and Khyber. It is careful to retain only
guides who receive positive referrals from [[guild|Clifftop Adventurers' Guild]] members.
In addition to the powers of their [[dragonmark]]s,
these guides can provide invaluable information
about the threats lurking in these regions. When
the house plans expeditions to Xen'drik, these are
usually arranged at the Clifftop enclave. Due to
the rivalry with [[Tharashk]] and [[Deneith]], the house
often recruits adventurers to protect an expedition
instead of hiring Deneith mercenaries.
The sprawling complex of the [[Dragon Towers]] [[Tharashk]] [[Enclave|enclave]] occupies several levels of three towers
near the [[Sword Point]] district. A significant percentage of [[Sharn]]'s [[half-orc]] population lives in this complex. [[Yevgen Torrn]] leads the enclave, and
operates as a very expensive [[inquisitive]]-for-hire.
House [[Tharashk]] is governed by a council of three, one representative from each major clan. They meet in the [[Heart]] of [[Zarash'ak]].
* [[Maagrim Torrn]] (Clan [[Torrn]])
* [[Khandar'Aashta]] (Clan [[Aashta]])
* [[Daric Velderan]] (Clan [[Velderan]])
Tharkgun Dhak is a cliffside fortress located in the foothills of the northern [[Fangs of Argarak]], a ruined stronghold of the [[Age of Giants]]. A band of [[ogre]]s now controls this fortress, having renamed it Tharkgun Dhak—literally “Broken Giant Place” in their native tongue. Their chieftain, an individual named Khort, has found a way to control the skeletal [[undead]] [[giant]]s who guard the ruins.
Deep beneath the fortress is a gateway to the depths of [[Khyber]], and the ogres avoid the lower levels of Tharkgun Dhak where creatures of madness dwell.
Venerable Thatari is an aged [[kalashtar]] psionic preceptor associated with the elders
of [[Tashalatora]], to whom she usually speaks by using her
powers. She is one of the few [[psion]]s in [[Adar]] who can
manifest [[psychic chirurgy]] and [[reality revision]],
and thus she might be the only one who can save a PC from
a [[mind seed]] or similar psionic afflictions. Unfortunately
for seekers who want to speak with her, Thatari lives in the
mountains many miles from Tashalatora, alone within a
cave carved into a cliff face. Getting to her requires finding out where she is and traversing treacherous terrain inhabited by unfriendly creatures. What she might ask of
those seeking her aid is unknown, but such a request will
surely have little to do with wealth.
Every culture has faerie tales—stories that use exaggeration
and supernatural elements to warn children of the consequences of bad behavior or to demonstrate the virtues of society. [[Breland]] tells tales of the Sleeping Prince, cursed to slumber by a cruel [[hag]] until he's saved by the courage of the Woodcutter's Daughter. In the [[Mror Holds]], there's a tale older than [[Breland]] itself, in which Lady [[Narathun]] curses [[Doldarun]]'s son with eternal sleep, until he's
saved by humble [[Toldorath|Toldorath and Tordannon]]. And the [[Dhakaan]]i dar have an ancient story about how [[Hezhaal]]—a [[dirge singer]] who betrayed
the empire and studied sinister magic—cast the marhu's son
into a cursed slumber, until he was saved by a simple [[golin'dar|goblin]].
This is just one of many stories that appear over and over in
different cultures. The exact details may shift—is the sleeper a
prince? The marhu's son? Doldarun's heir?—while the thrust of
the tale and the lessons it teaches persist. But long before any
of these cultures arose, these stories existed somewhere else.
In a [[layer]] of Thelanis, the [[Lady in Shadow]] curses a prince with
eternal sleep. She tends a garden full of wonders, and keeps
her own daughter hidden in the heart of a labyrinth of thorns.
At the deepest level, that is what the [[fey]] are: stories. The [[dryad]]
isn't a natural spirit; it's the magic we //want// in the world when
we see a slender tree move in the wind and imagine it as a
beautiful person. Thelanis is built on iconic stories, but it's also
the Faerie Court; at its heart, [[satyr]]s and [[nymph]]s dance in the
shadows of the [[Palace of the Moon]], while the [[archfey]] engage
in [[immortal]] intrigues. It's a fantastic realm essentially built
around the idea of adventures, but it's a deadly place for those
who refuse to understand its rules.
Thelanis is one of the easiest planes for mortals to reach. Just
walk through a mushroom ring when [[Rhaan]] is full in the sky, or
follow the sound of distant music in the forest. It's not always
this easy, but it //can// be. One wrong step and you could find
yourself in Thelanis, retracing the steps of storybook heroes and
making dangerous bargains with the rulers of the Faerie Court.
!! Universal Properties
Thelanis is unpredictable, and its cardinal rule is that layers
follow their own stories. Consider the following properties.
* //''Enchanted Realm.''// [[Illusion|illusion]] and [[enchantment]] spells are more difficult to resist. The duration of these spells is doubled.
* //''Storybook Logic.''// No two layers of Thelanis are exactly alike. Each is driven by its story, and any rule can be overridden by a particular tale. Damage types could be swapped or rendered impotent; in the Valley of Stolen Fire, all fire damage becomes cold damage. Certain specific actions could have advantage or disadvantage. In one layer, spells that restore health might have no effect; in another, a glass of wine could act as a [[potion of healing]]. But while these effects vary from layer to layer, they are entirely reliable within that layer and should feel logical based on the nature of the local story.
* //''Words Have Power.''// In Thelanis, words—and particularly promises—have power. Creatures should be very careful about making formal agreements of any sort, especially with [[archfey]]; the more powerful the [[fey]], the graver the consequences of breaking a promise. The price varies, a slightly broken promise to a greater fey might simply result in a run of bad luck, with disadvantage on the next few rolls. On the other hand, a promise to an archfey could inherently carry the power of a [[geas]]. The fey themselves are bound by this restriction—though they are aware of it and are exceedingly careful with their promises.
* //''Chaotic Time.''// Time is entirely flexible in Thelanis, moving at different rates from layer to layer. It's possible for adventurers to spend a night in Thelanis, then discover that a year has passed in Eberron. But it's equally possible for a group of adventurers to find a layer where they save a kingdom and reign as kings and queens... only to stumble through a gate many years later and discover that only an hour has passed in their homes. Often time catches up with mortals when they return to Eberron—either swiftly aging them if more time has passed on the Material Plane, or potentially restoring their youth and erasing the decades of time spent in Thelanis.
!! Denizens
Thelanis is home to fey in all their forms. Sprites flit between
trees, singing to the dryads that dwell within them. There are
birds in the trees, and if you talk to them, one might answer—
either a bird or a tree, depending on the story. Most of the
denizens of Thelanis fall into one of four categories.
!!! Supporting Cast
The vast majority of the creatures of Thelanis—the [[sprite]]s
in the forest, the [[dryad]]s, the birds, and for that matter, the
trees themselves—are [[manifestation]]s. These members of the
supporting cast exist because the story needs them to exist,
and they have a specific role to play. While most supporting
cast are [[fey]], any creature can appear if the story requires it. A
pack of wolves? An angry [[giant]]? A white horse that appears
just when it's needed? Anything is possible.
Supporting cast generally use the standard stat blocks
for each creature, though they might be considered fey
instead of other creature types. These creatures don't think
of themselves as manifestations; it's simply that they have no
real depth, no desires other than the drives they need to fill
their role in the story, and no care for the passage of time.
The sprite never gets bored of its song, and it never stops to
question anything about its existence.
The supporting cast reflects the fact that the stories of
Thelanis don't change. The hungry giant will always be
guarding the well. If adventurers defeat the giant, they're
the heroes of the hour and it feels like a triumph; but if they
return to the barony at a later date, the giant will be back—or
at least, a remarkably similar giant—and it won't remember
them or acknowledge their previous victory. As a general rule,
supporting cast can't abandon their posts or leave their layers.
However, more than the manifestations of other planes, the
supporting cast of Thelanis can evolve. When an [[anchor baron|archfey]]
gives the white horse to an adventurer, it becomes a mortal
horse and they can ride it home. Supporting cast that drift into
[[manifest zone]]s become mortal fey, dwelling in the zone until
they die. A supporting cast member can also evolve by gaining a
greater role in the story. An individual [[sprite]] doesn't even have a name, but if the adventurers convince the sprite to help them,
and it plays a critical role in their defeat of the giant at the well,
it's no longer a nameless sprite; it's Clever Jack, or whatever
name they gave it. If a manifestation becomes mortal, it can
go anywhere it likes, even leaving its layer and following the
adventurers back to Eberron... but if it dies, it's gone forever. On
the other hand, a manifestation can evolve to become a greater
fey; if this happens, it remains [[immortal]], and it's still tied to its
story, just with a bigger role and more personality.
!!! Eladrin and Other Mortals
There are two types of mortals in Thelanis. The first are the
supporting cast that have become real and split off from their
original stories. The second are natural-born mortals who do
have their own cultures and cities; chief among these are the
[[eladrin]], who dwell in the [[feyspire]]s of the [[Moonlit Vale]]. Each
spire is ruled by an [[archfey]], and each has a distinct story that
shapes the personality of the local eladrin. The eladrin aren't
as bound by story as other fey, but the magic of the plane
encourages a deep devotion to their spire and their ruler. They
hunt, they hold revels, they serve their ruler in the intrigues of
the [[Moon Court]]; it rarely occurs to them that there could be
more to life. However, they're indeed mortals; they fall in love,
they have children, they are born, and they die. If an eladrin
leaves their spire—whether to roam across Thelanis or into
Eberron—they often gain a greater appreciation of the passage
of time. Living among mortals in a mundane world can be a
hard transition for an eladrin; compared to the wonders of
the Faerie Court, there is little fey beauty in [[Khorvaire]]. The
longer an eladrin lives in the mortal world, the more mortal it
becomes; this is why eladrin player characters are considered
humanoids (and elves) rather than fey.
The [[eladrin]] are the most common mortals in the layer, but
there are also a handful of mortals who have been drawn
in from Eberron—the [[gnome]]s of [[Pylas Pyrial]], wandering
[[Greensingers]], mortals personally chosen by one of the
[[archfey]], or creatures who accidentally wandered through
[[manifest zone]]s and are trying to find their way home.
!!! Greater Fey
Greater [[fey]] are tied to a [[barony]] or have a role in the [[Moonlit Vale]], but they have their own names, identities, and distinct personalities. They can have their own agendas and schemes within the grander story of the [[archfey]], seeking love or
revenge or other ambitions. Sometimes the protagonist of
the story appears as a greater fey; in the case of the Sleeping Prince, perhaps the adventurers can actually meet the clever Woodcutter's Daughter. However, often the role of protagonist is left for the adventurers to fill; in Thelanis, they are the ones
who must wake the Sleeping Prince.
Despite their individuality, these greater fey are still [[fey]]; they
remain attached to their [[layer]]s, and don't experience the passage
of time as mortals do. They want to achieve things within their
story, but few have any thoughts or desires that go beyond
Thelanis. However, it's possible for them to go wherever they
want. A greater fey could establish its own domain in a [[manifest zone]] tied to Thelanis, or be found selling strange trinkets in the
[[Immeasurable Market]] of [[Syrania]]. When greater fey do leave
Thelanis, they generally seek to create their own stories; they
still want to be part of a narrative that makes sense to them.
Any [[fey]] creature can be used as a basic foundation for a
greater fey, possibly with additional powers tied to the story
they tell. A greater [[dryad]] might be able to see through all of the
trees in the [[manifest zone]] she calls home, and to control its
beasts. This isn't represented by a spell, as she couldn't control
beasts in other places; it's simply part of the story.
As the story of a greater fey grows, its abilities can grow as
well... but these are often tied to storybook logic, and power
could be balanced by a weakness. A greater dryad could be
immune to fire unless someone knows her name, at which point
she is vulnerable to it. Or she might be immune to piercing
damage but vulnerable to slashing damage—arrows and
spears refuse to strike her, but axes hunger to cut her down.
!!! Archfey and Anchor Barons
The [[archfey]] are the foundation of Thelanis, the force that sets
a story in motion. Where greater fey may be tied to a single
story, most archfey have inspired countless tales—often as the
antagonist, though they can also be benevolent.
Many archfey dwell in the [[Moonlit Vale]]. Some rule over
[[feyspire]]s, while others dwell in the [[Palace of the Moon]]; the
intrigues of the Court are their defining stories. Archfey that rule
[[layer]]s are known as anchor barons, as each is the anchor that
defines the [[barony]]. They come to the Palace of the Moon for
revels or conclaves, but prefer to dwell in their own story.
!! Layers
Much like [[Kythri]], [[Dal Quor]], and [[Syrania]], Thelanis has a core
[[layer]] surrounded by lesser layers. The heart of Thelanis is the
[[Moonlit Vale]], where all [[archfey]] gather for their revels. This is
surrounded by endless [[baronies|barony]], each embodying the stories
of a particular archfey. While [[eladrin]] and [[fey]] can shift between
layers, it's more challenging for mortals to travel to a barony; this often requires a token from that realm, or for the mortals to act out some aspect of its story. Regardless of the specific identity of a layer, Thelanis always feels magical and otherworldy. Its environments are typically vibrant and beautiful, but if they are harsh and ugly, they are exceptionally so. It feels like a story, exaggerated and unreal.
* the [[Moonlit Vale]]
!!! Baronies
<<list-links-article "[tag{!!title}tag[barony]sort[title]]">>
!! Planar Manifestations
Here are a few ways Thelanis can affect the world.
!!! Manifest Zones
More than with any other plane, Thelanian [[manifest zone]]s
often allow travel between the [[plane]]s. [[Fey|fey]] creatures dwell
in such zones, and a greater fey may turn such a manifest
zone into its personal domain. Just as fey can cross over from
Thelanis, mortals can travel to the Faerie Court. Gateway
zones always share the general environment of the layer
they are connected to, though it's rarely obvious when this
passage occurs, and it may take time for travelers to realize
they have crossed over. However, there are always signs of a
gateway—circles of mushrooms, strange patterns of vegetation,
eerie lights, or faint, unearthly music the adventurers must
follow. Gateways typically only activate at certain times—
often when the moon [[Rhaan]] is full—and even then, there's
usually something that must be done that violates a known
superstition. If you stay on the path in the forest, you won't
stumble into the [[Endless Weald]]. But if you follow the ghostly
music, or chase the silvery deer? That's on you.
Other manifest zones reflect the properties and influence of
Thelanis without allowing passage between worlds. Zones with
the //Enchanted Realm// property are much sought after by House
[[Phiarlan]] and House [[Thuranni]]. Zones with //Storybook Logic//
break the rules of reality in specific ways; the ''Grove of Promises''
is a clearing that holds an old stone fountain. Stories from the nearby village say that if you make a promise to someone and then share a drink from the fountain, you must keep your word—and if you are false, you'll sicken and die. The people of
the town perform marriages in the Grove. Young lovers sneak
away to pledge their hearts. There are even merchants who like
to seal their deals in the Grove. The people of the town never
break a promise sworn in the Grove... will you?
A final form of [[manifest zone]] is the beachhead; this
phenomenon periodically draws a piece of Thelanis into
[[Eberron]]. The [[feyspire]]s are an example of
this, but a beachhead can be any unusual location—sure to be
a local legend, but rarely be found by those searching for it,
only uncovered by chance. There's a tale in the [[Mror Holds]] of
the Tomb of the Forgotten King, found when a traveler seeks
shelter in a cave and discovers deeper passages. Following
these tunnels, they find themselves in an ancient tomb. Jewels
are embedded in the walls. Coins are heaped on tables, spilling
onto the floor. In some versions of the story, guardians patrol
the tomb, spirits of stone and metal. In others, there are deadly
traps. But one detail remains the same throughout all the
tales: treasures taken from the tomb always bring misfortune,
bestowing curses that linger until the thief finds the tomb again
and returns what they have stolen... or until they die.
!!! Coterminous and Remote
When Thelanis is coterminous, new gateway zones spring
up. Mischievous or cruel [[fey]] may cross over, and it's far easier
for careless travelers to cross over. However, there are always
warning signs, and you generally must break some superstition
or taboo to be pulled through. Thus, when people know the
planes are coterminous, they are cautious to remember the
stories and avoid foolish behavior.
When Thelanis is remote, the effects of Thelanian [[manifest zone]]s are suppressed. Fey creatures may be temporarily drawn back to Thelanis, even those that normally dwell on Eberron. In general, the world feels less magical.
Traditionally, Thelanis becomes coterminous for a period
of 7 years every 225 years, and it is remote for 7 years
halfway between these cycles. However, there is evidence,
such as beachheads remaining in place longer than usual,
that something has disrupted this cycle. This may be a result
of the [[Mourning]]... or it could be that the Mourning is just an
easy excuse, and the true story is tied to the schemes of an
[[archfey]] or a mortal mastermind. Nonetheless, no one knows
when Thelanis will become coterminous again—or how long
the phase might last when it does.
!!! Thelanian Artifacts
Thelanis can be a source of wondrous [[magical items|magic item]]. The
simplest deal with [[illusion]] or [[enchantment]]: [[eyes of charming]]
or a [[hat of disguise]]. But any sort of magic item can come from
Thelanis—the catch is that Thelanian items invariably have a
story attached to them. The [[berserker axe]] that can't be released
until it kills someone you love. The [[dragon slayer]] that calls out
to [[dragon]]s, summoning [[wyvern]]s for you to fight and drawing
the attention of agents of the [[Chamber]]. The [[crystal ball]] that
occasionally shows glimpses of things you don't want to know.
Thelanian items can also hold curses that come with no
accompanying benefit. The //mithral falcon// is a statue that
amplifies existing greed. Generous people are unaffected by
its magic, but greedy folk feel a growing need to claim the
falcon from its current owner. The falcon can start a gang war
between [[criminal organization|crime syndicate]]s, or turn [[Aurum]] concordians
into the bitterest of enemies. The falcon has no beneficial
powers, but its curse can drive a story.
!! Thelanian Stories
Thelanian stories can start before a campaign begins. With the
DM's permission, any character or party could be connected to
an [[archfey]], for better or for worse. Here are a few examples.
//''The Patron.''// Whether serving as patron for a [[warlock]]
or an entire party, an [[archfey]] could work with adventurers,
providing magical benefits—perhaps spells from the [[artificer]]
or [[bard]] lists, or boons and [[magic item]]s—in exchange for the
character's services. It could be that the patron's goals are tied
to the intrigues of the [[Moon Court]] or to some element of its
story. It might want the characters to deal with the [[warlock]]
agents of another archfey. Or it could be that the archfey is
trying to get the adventurers to reenact its story in the present
day, to have a character serve as an avatar for the archfey—or as the avatar for one of its enemies.
//''Blessing or Curse?''// You don't have to be a [[warlock]] to draw
powers from an [[archfey]]. An [[artificer]] could have been blessed
by the [[Forge Maiden]]; their artifice isn't arcane science, they
simply create impossible, whimsical things. A barbarian's
rage could be a curse from the [[Lady in Shadow]], laid upon an
ancestor and handed down through generations. All other
members of the character's family have eventually been killed
by their fury; does the barbarian seek to break the curse, or
do they just want to live as wild a life as possible before it
consumes them?
//''Faerie Tales.''// The [[archfey]] and the [[baronies|barony]] are the source
of faerie tales. You can draw from beloved tales in our own
world to craft any adventure, adding an [[Eberron]] twist.
Using these tropes gives the players a sense of familiarity
with the story, just as the people of Eberron are familiar
with these archetypal tales, played out time and time again
across cultures and generations. So, the Sleeping Prince
clearly follows the same basic principles as Sleeping Beauty
or Snow White, but with an Eberron twist—it's [[Sora Katra]]
and the prince of [[Breland]]!
//''The Actual Changeling.''// As a child, any character could
have wandered through a [[manifest zone]], stumbled into a
[[feyspire]], or even caught the eye of an [[archfey]] and been carried
off to Thelanis. A [[bard]] could have learned their craft in [[Pylas Pyrial]]. A [[druid]]'s abilities might be tied less to nature and more to the magic of the [[fey]]. It might be that a [[warlock]] doesn't have a direct patron, but they're the adopted child of the [[Lady in Shadow]] and learned her tricks by watching her. If this is the
case, is the character welcome to one day return to Thelanis,
or were they cast out of it? Did the Lady in Shadow encourage
her child to leave, or did the adventurer escape from the maze
of thorns where they were held prisoner (for their own good,
of course)? Does the character have a fey lover or rival in
Thelanis? With the DM's permission, such a changeling—of
any race—could find a welcome with the fey. Such fey would be more likely to talk
with you, and might provide you with safe passage through
their territory or even share stories. Lesser fey are also hidden
across the world—minor spirits that dwell in cupboards and
clearings—and these spirits might emerge to offer you minor
aid or advice. Just don't forget that you're always expected to
offer payment for services you receive, even if it's just a gift of
food or a song.
''Color:'' Blue-gray<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Healing|Mark of Healing]]<br/>
''Associated Plane:'' [[Syrania]]
Therendor is the "brother moon" of [[Barrakas]], sharing a similar but narrower orbit with the Lantern Moon. The [[Seren]]s and [[druid]]s maintain that natural medicines concocted when Therendor is full and [[Barrakas]] is new are more potent. Those born in the month of Therendor are thought to be gentle and empathetic; priests, mediators, and healers often have Therendor as their ascendant moon.
The Seekers of the Divinity Within (the dominant sect of the [[Blood of Vol]]) value community, urging the faithful to stand together. But there are others who follow the
principles of the Blood of Vol who prefer to stand alone. The
hermits known as Thieves of Life are determined to unlock
their divinity within at any cost—not to help others, but solely to
further their own quest for power and immortality. Thieves of
Life are often master [[necromancers|necromancy]], but never become [[undead]]
themselves; instead, they specialize in magics that allow them
to drain the life from their foes.
As a player character devoted to the Blood of Vol, you could choose
the path of the Thief of Life. You are utterly devoted to the
pursuit of your personal divinity, and perhaps you have already discovered the path you must take. You might be a [[cleric]], a [[sorcerer]], or a [[warlock]] (with your
patron being your own nascent divinity within). What binds
you to your fellow adventurers, and why would they choose to
associate with you? You may be utterly devoted to your quest
for immortality—but what is your redeeming feature, your
anchor to humanity?
An unusual option for a Thief of Life hermit is to say that
you've actually been in a state of suspended animation for
decades or even centuries. You were once far more powerful than you are
today, but your powers have yet to return; as you gain strength,
you are actually regaining the power you once had. If this is
the case, it could be that one or more of your adventuring
companions are actually descendants of yours; while you're
obsessed with your quest for immortality, you also care about
your own bloodline.
While holding this dagger, you can speak its command
word to cause it to transform into a set of [[thieves' tools]], linked by a thin, silver chain. You can speak its command word again and cause it to transform back into a dagger.
This set of tools includes a small file, a set of lock picks, a small mirror mounted on a metal handle, a set of narrow-bladed scissors, and a pair of pliers. Gain an advantage to open locks or disarm traps using these tools.
The master of the [[Black Stage]] in [[Io'lokar]] is Thinrukidis. Though he is one of the highest-level arcanists in the city, Thinrukidis’s prowess with [[illusion]] conceals a newfound fascination for the forbidden arts of [[necromancy]]. As elsewhere in [[Argonnessen]], active practice of the dark art is prohibited in [[Io'lokar]], and the city [[Masters|Master's Hall]] have no desire to antagonize the [[Conclave]] on this matter. Thinrukidis has ties to the necromantic cabal of the [[Shadowmasters]], and much of their lore is hidden in the private libraries of the [[gnome]]’s [[Sunward]] apartments, out of sight
of draconic agents.
Thir is the draconic faith, practiced by the [[dragon]]s of [[Argonnessen]] and the [[dragonborn]] of [[Ka'rhashan]]. The draconic faith acknowledges three divine forces: the [[Progenitors|Progenitor Dragons]], the [[Dragon Gods]], and the [[Sovereigns|Sovereign Host]]. The faith is called Thir, Draconic for “Three”; this refers both to the three Progenitors and to the three ranks of divinity.
The names of the [[Progenitors|Progenitor Dragons]] are known in almost
every culture. [[Siberys]], the Dragon Above, source of
magic and father of the [[dragon]]s. [[Khyber]], the Dragon
Below, father of [[fiend]]s and corruptor of dragons. And
[[Eberron]], the world itself, mother of all that is natural.
The dragons believe that the Progenitors spawned all
creation. All dragons respect the Progenitors as the
source of reality, but few worship them directly. Siberys is dead, and Eberron and Khyber are simply too vast to hear the prayers of a single dragon. A dragon who reveres Eberron above all others becomes a [[druid]], while one [[beholden to Khyber|Cults of the Dragon Below]] venerates in secret, away from the harsh [[Eyes of Chronepsis]].
Most dragons direct their prayers to less remote deities—[[Io]], [[Aasterinian]], [[Astilabor]], [[Bahamut]], [[Chronepsis]], [[Falazure]], [[Garyx]], [[Hlal]], [[Lendys]], [[Tamara]], and [[Tiamat]]. Each of these deities is represented by a constellation in the night sky, and with the exception of Tiamat, it is believed that the [[Dragon Gods]] watch the world from a realm that stands beyond the thirteen [[plane]]s... a place that
cannot be reached by any mortal magic.
According to Thir, the [[Dragon Gods]] influence the affairs of dragons, but they have no time for lesser creatures. [[Human|human]]s, [[dwarves|dwarf]], and [[elves|elf]] would sully the Dragon Gods with their prayers. Watching over lesser creatures is the role of the [[Sovereigns|Sovereign Host]]. The dragon priests claim that dragons who embody primal concepts in life, [[Sovereign archetype]]s, ascend to become Sovereigns in death. Instead of falling to [[Dolurrh]], the spirit of an ascended dragon rises up, taking the place of one of the existing Sovereigns. The former Sovereign spirit then ascends farther, abandoning the thirteen planes and finding its final reward in the higher realm of the Dragon Gods. The common doctrine holds that there can be only fifteen ascended Sovereign spirits at one time, but many rogue dragons have challenged this theory and sought to find their own
paths to ascension. It bears noting that this doctrine shares much in common with the faith known as the [[Church of the Wyrm Ascendant]].
It is an easy matter to map the legends of the ascended dragons to the myths of the [[Sovereign Host]] and the [[Dark Six]]. A critical difference is that the dragons
don’t separate the two. [[Dulazurak|Mockery]] is the archetype of the dishonorable warrior, but to the [[dragon]]s, that’s still a [[Sovereign archetype]] and a valid path to immortality. The forces that the people of [[Khorvaire]] separate as Nine and Six are a single host in the eyes of the dragons; good or evil, they are all the Sovereigns who watch over the lesser beings.
The central doctrine of Thir is simple enough. The [[Progenitors|Progenitor Dragons]] created the world, and the [[Draconic Prophecy]] is the manifestation of their will and their plan for creation; it shifts and twists about because [[Khyber]] and
[[Eberron]] desire such different things. Eventually, the Draconic Prophecy will run its course, and this creation will come to an end. A new set of Progenitors will be chosen
from among the [[Dragon Gods]]... and the most worthy of the ascended [[Sovereigns|Sovereign Host]] will in turn rise to become the Dragon Gods of the next creation. A new Prophecy will unfold, and the cycle will begin once more.
Bear in mind that the faith of the [[dragon]]s is just
that. No absolute proof supports their beliefs any more
than those of any other religion. Perhaps dragons can ascend after death; perhaps this is simply myth, and [[commune]] and similar spells just draw on the faith of the dragons to generate responses. Most humans find the dragons’ view of the [[Sovereigns|Sovereign Host]] to be incredibly arrogant—the beings that other creatures see as gods are ascended dragons tasked with the tedious chore of caring for nondragons.
The [[dragon]]s guard their faith as if it were a precious jewel. Some students of draconic lore claim that, behind their disdain for the prayers of lesser creatures, another rationale exists. The dragons are actually afraid that if the lesser creatures turned to the worship of the true deities, they might be judged worthy of ascension... ultimately stealing the dragons’ sole claim to the heavens.
Although dragon priests and [[cleric]]s are respected for
their piety, religion is personal for dragons. Few public
rituals or grand holidays exist. Every dragon finds his
own path to faith. Many dragons take this a step farther,
pursuing one of the [[Sovereign archetype]]s in the hope of
ascending after death.
Occasionally, a [[dragon]] claims to be a true avatar
of a Sovereign; one example of this is a [[dracolich]]
that inhabits the [[Lair of the Keeper]] in the [[Demon Wastes]]. Regardless of the truth of this, it could be the source of many of the myths involving
the Sovereigns. Such an “avatar” is sometimes referred to as a "dragon ascendant", gaining new powers through celestial channeling. It’s up to the
DM to decide if these powers actually come from the
Sovereign, or perhaps some lesser [[planar|plane]] outsider playing games with
the world.
1: Pata Anka
2: Dal Olam
3: Tlelbek
4: Stone Wing Cliffs
5: Mesa Utanda
6: Canyon of Razor Rain
7: Nerepan
8: Scora Bael
9: Burnt Flower Plateau
10: Illandyano
11: Xatepec Ridge
12: Hakeb Eza
13: Fifteen Blunted Spearpoints
14: Palen dal Caten
15: Ammultun
16: Sentan Falt
17: Queltatir
18: Ek Lamyl
19: Caverns of Coatlapec
20: Crystal Tree Plaza
21: Yaoteco
22: Kalnak
23: Say-bekna
24: Quor'tan
25: Gallina dal Sop
26: Cairn of Stone Hearts
27: Maan Ulta
28: Zenzzir
29: Floating Leaf Lake
30: Xalxen Xuna
Thora Tavin has the ability to sense mystical energies—a gift that enables her to identify others with [[aberrant marks|aberrant dragonmark]]. She founded the House [[Tarkanan]]
and serves as its leader. While she uses the name Thora Tarkanan among her compatriots, she has established herself as Thora Tavin among the wealthy
elite of [[Sharn]] and has cultivated relationships with
many influential people.
Her residence can be found in [[Dragon Towers]], nestled between the [[enclave]]s of the [[dragonmarked house]]s. The spacious mansion serves as a secret headquarters for Tarkanan.
The Thornwood is a small forest in [[Thrane]], located on the shores of the [[Brey River]] overlooking the [[Mournland]].
The Thousand Flights of [[Argonnessen]]—more commonly called the Thousand—is the heart of the [[dragon]] homeland. The great wyrms of the Thousand inhabit
lairs hewn in the [[Age of Demons]], and the cries of soaring dragons fill the air. Dragons have lived here for hundreds of thousands of years; the territory is replete with monuments to wise wyrms and legendary prophets, shrines to the [[deities|Dragon Gods]] of [[Thir]], and wondrous locations created by the greatest flames of the forge. Crafted through pure magic by colossal artisans, these edifices tower over the landscape. Flying across the Thousand is a breathtaking experience, but one few nondragons ever experience; intruders find scant welcome in the land of the Thousand.
!! Industries
Some [[dragon]]s of the Thousand trade with the dominion lords of the [[Vast]], bartering for servants or treasures produced in that land. [[Flames of the forge|flame of the forge]] wander the land, using their skills as architects, [[artificer]]s, and
engineers in exchange for treasures or useful information. Beyond this, the dragons are self-sufficient and self-involved; few real industries exist within the Thousand.
!! Life and Society
The [[dragon]]s of the Thousand are organized into
extended family groups known as flights. Each flight
controls a large domain within the Thousand. Every
adult dragon has their own lair, which they share with their
mate and children. Some flights spread out across their
domain, with miles between lairs. Others prefer to live
in close proximity. These flights use [[legendary-tier|spell tier]] magic to
draw vast pillars of volcanic rock up from the earth, and
then carve tunnels into these massive monoliths; a single pillar can be over a mile in height, serving as a home for up to a dozen dragons.
The flights of the Thousand are grouped by color. Many flights are surrounded by neighbors of the same color, creating patchwork patterns across the land. Most
dragons of the Thousand prefer the company of their
own kind. A few flights still cling to the antichromatic
philosophies of [[Ourenilach]], and some tension arises
between [[white dragon]]s and other flights, largely based
around the argument that the less intelligent whites are
little better than [[wyvern]]s. Although this can result in
heated debate, violence between dragons is rare. Formal
duels or staged battles are accepted by some flights as a
way of settling disputes, but most insist that members go
to the [[Vast]] if they intend to do battle. Crimes between
dragons are handled by the servants of [[Lendys]], the
[[Dragon God|Dragon Gods]] of Justice.
!! Government and Politics
With a few exceptions, flights are ruled by the oldest [[dragon]] of the line. The clan might debate important issues, but the eldest has the final say. He decides who represents the flight in the [[Conclave]] of [[Argonnessen]], and who guards the great treasures of the flight. He appoints the servant of [[Lendys]], who investigates and punishes crimes committed by or against members of the flight; if necessary, a servant of Lendys can call upon the [[Eyes of Chronepsis]] for assistance. Beneath the elder, status within a flight is based on age and hoard.
The [[Conclave]] of [[Argonnessen]] is based in the Thousand. Dragons who speak in the Conclave are treated with great respect, regardless of their rank within a flight.
!! Nondragons in the Thousand
Most non[[dragon]]s in the Thousand are retainers attached
to a particular flight of dragons. Some have served their
flight for generations; others are recent acquisitions
brought over from the [[Vast]]. Nondragon retainers perform tasks that are difficult or demeaning for dragons, and are often called upon to entertain their masters.
Many [[dragon]]s dislike the presence of nondragons. Some of these dragons use [[construct]]s as retainers, typically favoring iron [[golem]]s. Others feel that nondragons
have no place in [[Argonnessen]], and any such creature who crosses the domain of such a dragon is killed on sight. Nondragons have no rights in the Thousand. Killing a nondragon bearing the mark of a friendly flight is an insult to the owner, but many dragons consider the life of a single lesser creature to be trivial and pay this no mind.
!! Important Sites
The Thousand is an enormous territory, filled with shrines, monuments, and magical locations. The land is studded with dragons’ lairs, and a dragon is almost always visible in the sky. Here are just a few of the important sites of the Thousand.
<<list-links-article "[tag{!!title}category[location]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>
!! Adventure Seeds
The Thousand is a dangerous place for adventurers. Nondragons are often killed on sight, and the area has the highest concentration of dragons in [[Argonnessen]]. Of course, lots of dragons means lots of treasure... although stealing from a dragon of the Thousand likely incurs the wrath of the entire flight.
''Seed of Vvaraak:'' After a deadly adventure, the PCs acquire a large golden seed, said to be one of the last treasures [[Vvaraak]] gave to the [[Gatekeepers]]. The seed radiates an overpowering aura of universal magic, but it will not bloom. A prophet tells them that the plant grows only if nourished with a handful of soil from the base of the [[Face of Eberron]]. Can the adventurers acquire this potent soil? And what will spring from the Seed of Vvaraak?
''Looming Threat:'' The adventurers’ patron—a [[dragonmarked house]], the [[King's Citadel]], or a similar organization—believes that the dragons of [[Argonnessen]] are preparing to launch a devastating attack. The PCs must penetrate the [[Great Aerie]] and eavesdrop on the next session of the [[Conclave]]. If the rumor is true, are they bold enough to speak for [[Khorvaire]] and prevent devastation?
To a [[Riedra]]n, no one in their right mind turns against the
Inspired. Those who do are clearly victims of //altavar// influence. Someone has to help these victims if possible, or do
whatever is necessary to ensure that they do not threaten
innocent souls. Those tasks fall to the Thousand Eyes.
The Thousand Eyes administers justice across
[[Riedra]] and maintains the reclamation centers. Public agents of the Thousand Eyes—easily identified by their
green uniforms and golden badges of office—can be
found throughout any bastion, and people take comfort
in knowing that these guardians are watching. Far more
dangerous, however, are the secret members of the Eyes.
Nearly anyone in Riedra could be an agent. Furthermore, even when no one is around, "remote viewing" ([[psionic|psionics]] [[scrying]]) allows the Eyes to see the deeds of malefactors.
Agents of the Thousand Eyes are typically [[human]],
[[Chosen]], or [[changeling]]. The bulk are simply observers, experts in disguise and information gathering, along with a craft or profession as a cover. More
capable agents specialize in observation and stealth. [[Chosen]] and especially honored
[[changeling]]s are trained in the [[psionic|psionics]] arts. When force is required,
the Thousand Eyes calls on [[Bastion Guard]]s or the [[Sleeping Sword]], but it also maintains a covert corps of changeling [[masquer]]s, [[psi warrior]]s, and [[soulknife]] assassins.
The city of [[Dul Zeer]] is the Thousand Eyes' greatest stronghold. Here, a network of remote viewing crystals allows agents to scry across the [[continent|Sarlona]], and [[teleportation circle]]s let them dispatch forces to any bastion or kintam (fortress). Agents in villages can
be alerted through dreams. In
an emergency, psionic dispatchers can
teleport forces to the site of
a disturbance.
The high minister of
the Thousand Eyes is Lady [[Sharadhuna]].
House [[Medani]] secured a contract from the governments of [[Breland]] and
[[Thrane]] to have its members patrol the periphery of the [[Mournland]] and provide early warning of monsters or strange magical phenomena crossing into
settled lands. House [[Medani]] gave the riders a typically circumspect name (the “Western Mournland Working Group”). But after the first patrols came back to civilization with a haunted look in their eyes, the Thrane locals started calling them the “Thousand Yard Stare,” and the name stuck. In the three years that the Thousand Yard Stare has been watching the border of the Mournland, its members have provided
early warning of everything from strangely twisted [[giant]]s on the march to [[living spell]]s spinning out of control. But the Thousand Yard Stare can’t be everywhere, so the dangers of the Mournland sometimes cross the [[Brey River]] or the [[dead-gray mists]].
The Thousand Yard Stare is led by [[Channara d'Medani]].
Similar to the Atrium,
Thovanic Hall is a former theater converted to use
as a recital hall. It is still very new (the renovation
was completed only two years ago), and is still trying
to build its reputation as a place for fine music
to compete with the [[Atrium]]. As a distinguishing
point, Thovanic presents a significant number of
non-[[Brelish|Breland]] and even nonhuman performers, who
bring diversity to the musical offerings that the
residents of [[Middle Menthis]] find sorely lacking in
the district's other offerings.
Thraalgrum is an old [[frost giant]] who serves the [[silver dragon]] [[Ketheptis]] in the [[Bluespine Peaks]] in [[Xen'drik]], and shares her goal of wiping out all [[drow]] on the continent. A century ago, the giant scoured the frozen citadels of [[Everice]] for clues to his ancestors’ downfall. His interpretation of the evidence tars the [[drow]] as
well-cared-for slaves who turned spitefully against their
benevolent masters. He leads a clan of other [[frost giant]]s who honor and obey the mighty [[Ketheptis]].
Thraalgrum is lithe and tall, with large oval eyes and
a smooth, hairless body. He has stood by Ketheptis’s side
for nearly a century but now grows decrepit with age, his
deep blue skin stretched tight over bone.
This village in [[Droaam]] is the seat of the fiefdom of the [[oni]] [[warlord]] [[Drul Kantar]].
Thrallherds use [[psionics]] to manipulate the minds of others as if they
were clay in the hands of a sculptor. Some creatures are
more susceptible than others to the thrallherd’s unconscious, but continual, call to service. And so they come,
eager to be led, happy to follow, and completely under the
thrallherd’s control. In this way, thrallherds keep a minor
menagerie of enthralled servants that are anxious to do
their will.
''Capital:'' [[Flamekeep]]<br/>
''Hallmarks:'' [[Divine magic|divine magic]], fine crafts, fruit, livestock, the [[Silver Flame]], textiles, wool
The modern Church of the [[Silver Flame]] was founded in
Thrane, and most of the people of the nation follow this
faith. During the [[Last War]], the people of Thrane chose
to set aside the rule of the monarchy and to embrace
the leadership of the church. For the last seventy years,
Thrane has been a theocracy. The head of the state is
11-year-old Jaela Daran, the divinely selected [[Keeper of the Flame]]. Jaela depends on the [[Council of Cardinals]] to
perform the practical work of running the nation.
The primary purpose of the Silver Flame is to defend
the innocent from supernatural evil. The church has
always had a militant aspect, with battalions of templars
and peasant militias prepared to face [[undead]], [[lycanthrope]]s, or other monstrous threats. But compassion
and charity are core values of the church, and the templars are tasked to defend all innocents. Even during the
Last War, if a [[fiend]]ish threat arose in a [[Brelish|Breland]] village,
Thrane templars would ally with the locals to bring an
end to the threat. Not all Thranes rise to this ideal. Zealous Thranes believe the church is destined to reunite [[Galifar]] under the Silver Flame, and corrupt priests are
interested only in power and wealth.
Not all priests are [[cleric]]s, and the typical templar is a
mundane warrior. However, due to the deep faith of its
people, Thrane produces more clerics and [[paladin]]s than
any other nation in [[Khorvaire]].
!! Interesting Things About {{!!title}}
* Faith is part of daily life in Thrane, and divine adepts provide important services. Magic is also common in Thrane. [[Everbright lantern|everbright lantern]]s light the streets while [[magewright]]s and [[wizard]]s practice their trades, though there are fewer of them than in other nations.
* Every town has a militia ready to deal with supernatural threats, and people stand together to fight darkness. Champions of the light find support and hospitality, but any character who dabbles with dark forces—[[necromancer|necromancy]]s, [[warlock]]s, and the like—finds Thrane a dangerous, unwelcoming place.
* The feudal system of nobility remains in place, but ultimate authority rests in the hands of the church. Queen [[Diani ir'Wynarn]] is the "blood regent," serving as a symbolic advisor to the [[Keeper of the Flame]]. A small fraction of the population would like to see the traditional monarchy restored to power.
!! Thrane Characters
As you develop a Thrane character, consider the following details:
* ''The Impact of Faith.'' If you want to reflect a close bond to the [[Silver Flame]], you could gain a few divine spells by taking the Magic Initiate feat. Archery is a devotional practice of the Silver Flame, so as a martial Thrane you might focus on archery-related combat styles or take the Sharpshooter feat. Any Thrane could take the acolyte background to reflect a strong connection to the church or the soldier background based on service with the templars.
* ''Church or Crown?'' Do you support the theocracy, or would you like to see power restored to the throne? Many people of faith believe that miring the church in politics distracts it and invites corruption.
* ''Dealing with Darkness.'' The [[Shadow in the Flame|Bel Shalor]] can tempt even the most virtuous soul. How do you react when you encounter corruption and greed? Are you a compassionate person who seeks to lead people to the light, or a zealot determined to crush all darkness?
!! Cities and Sites
The Church of the [[Silver Flame]] is a militant faith, and
Thrane communities are built around fortified churches
designed to serve as fortresses in times of trouble.
Larger towns maintain sturdy walls patrolled by skilled
archers. A Flamic architectural style appears throughout the region. Buildings incorporate light and soaring
spaces, and icons of the Silver Flame and images of the
martyr [[Tira Miron]] appear throughout the nation.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
The war is over, but deep rifts remain between Thrane
and its neighbors. [[Aundair]]ian war magic created a
blasted wasteland between the two nations. To the east,
the conflict with [[Karrnath]] left farms and cities such as
[[Shadukar]] devastated and abandoned, home only to the
lingering undead left behind after the Karrnathi retreat.
For most, these grim reminders of war strengthen
Thrane resolve. The common people are united by their
faith and sure of the righteousness of their cause. The
[[Silver Flame]] urges people to stand together in the face
of evil, and across the nation, villagers work together to
repair the damage inflicted during the war. People in
a Thrane village regularly cooperate to raise a barn or
practice archery in the fields.
The Silver Flame urges its followers to feel compassion for all people, which often proves a more difficult challenge. Thrane has never forgiven Karrnath for its
use of [[undead]] soldiers, and many Thranes are quick
to imagine all Karrns as agents of darkness. Likewise,
Thranes have bitter memories of the conflict with Aundair, and Aundairian wizards or eldritch knights receive a cold reception.
For most Thranes, the war strengthened their faith
and drew them together. However, some question the
validity of theocratic rule. Such doubt can be found
even among the most devout followers of the faith; such
people fear that the merging of temporal and spiritual
authority distracts the church from its proper mission.
If these doubts spread, a serious faction might seek
to restore Queen Diani to power.
[[Thaliost]] is another open wound. The [[Council of Cardinals]] is determined to hold onto
this prize, but it is a bitter point of contention with [[Aundair]] and a constant source
of tension and violence. In creating a Thrane character, consider how you feel about Thaliost. Would you like to see it returned to Aundair, or do you support Thrane's rule?
The lords of [[Thrane]] still hold Queen [[Wroann|Wroann ir'Wynarn]]
responsible for the [[Last War]], and relations between
the two countries have never been warm—though
this general distaste pales in comparison to the
hatred the people of Thrane have for the [[Karrn|Karrnath]]s.
Lady Anador ir’Laisha monitors events in the city on behalf of her nation, but rarely becomes actively involved in local affairs. She is devoted to the [[Silver Flame]] and attends services at the [[Cathedral of the Cleansing Flame]]. Blinded by her faith, Lady
ir’Laisha trusts the Archierophant implicitly and
angrily dismisses any suggestions that [[Ythana Morr]] might
be using the power of the Church for her own
benefit. Lady ir’Laisha’s devotion to the church is
greater then loyalty to her country, and she may be
manipulated into unknowingly assisting Ythana
with a nefarious scheme.
The Thrane River in [[Khorvaire]] flows past the [[Thrane]] city of [[Sigilstar]] into [[Scions Sound]].
Three Barrel Cove is the largest island in the [[Straits of Shargon]] and is a notorious pirate hideaway. The largest settlement on the island is known as [[Barrel's Bottom]].
Followers of the [[Pyrinean Creed]] honor the [[Sovereigns|Sovereign Host]] and are
encouraged to shun the [[Dark Six]]. The Six embody dark forces
that have no place in a virtuous society. However, over the
course of centuries, there have always been cults to challenge
this view. The Three Faces cults serve two purposes. On the
one hand, they honor particular groupings of the Sovereigns
and Six, asserting that there are members of the Six with
something valuable to offer worshippers. Beyond this, the cults
are also secret societies—a form of fraternal order that binds
people together even if they aren't truly invested in the religious
aspects of the cult. For example, the [[Three Faces of War]] can
be found in all of the armies of the [[Five Nations]].
<<list-links-article "[tag{!!title}sort[title]]">>
The Three Faces of Coin honors [[Kol Korran]], [[Onatar]], and Kol
Turrant (the [[Keeper]]). This cult operates in major cities, usually
recruiting merchants, smugglers, and captains of industry. It is
based on the idea that while honest trade and industry form the
core of commerce, there should always be a way for people to
get what they desire; thus, it is a neutral ground where criminals
and guild artisans can work together. The [[Aurum]] often recruits
members from the Three Faces of Coin.
The Three Faces of Love honors [[Boldrei]], [[Arawai]], and
Szorawai (the [[Fury]])—the Love that Binds, the Love that Brings
Life, and the Love that Burns. This cult embraces all who
believe in and wield the power of love, from actors to poets
to paid companions. Members gather to share stories and
change lives; the cult excels at matchmaking and at disrupting
important relationships they consider to be doomed.
The Three Faces of the Wild honors [[Arawai]], [[Balinor]], and
Shargon (the [[Devourer]]). Sects are usually found in rural
communities, and include farmers, hunters, and all manner of
wanderers. The Three Faces of the Wild supports agriculture
and hunting, but recognizes that the wild cannot be fully
tamed. Members sometimes engage in ritual sacrifices or the
burning of fields or other acts of destruction. They believe that
the Devourer must have his due—and by making their chosen
offerings, they keep him from striking elsewhere.
The Three Faces of War honors [[Dol Arrah]], [[Dol Dorn]], and
Dol Azur (the [[Mockery]]). It was part of the united armies of
[[Galifar]], and cult chapters can be found in all of the armies of
the [[Five Nations]]. Sect meetings provide a place for soldiers
and veterans to interact as friends and equals, regardless of
rank or nationality. The cult asserts that honor and courage
are to be valued, but there is also a time and place for cunning
and cruelty, even if it is never to be desired.
The Three Sisters are a trio of islands in the [[Lhazaar Principalities]]. They separate the [[Bitter Sea]] from the [[Straits of Orthoss]].
House [[Deneith]] maintains
this fortified [[enclave]] in [[Copper Arch]]. This includes
a garrison for the [[Blademark|Blademarks Guild]] soldiers who serve as
the private watch of [[Upper Tavick's Landing]]. A second tower is dedicated to house business and training. The third is private mansion accessible only to the [[Sharn]]
Deneith. If a Deneith heir from outside Sharn tries to enter the
facility, she is told that the enclave is restricted and
directed to the main enclave in [[Dragon Towers]].
!! The Dreaming Dark
While it seems like a typical [[Deneith]] [[enclave]]
to the casual observer, the [[Sharn]] household is
anything but ordinary. Almost a century ago the
Sharn enclave was compromised by the [[Dreaming Dark]], and today it is a stronghold of shadows. At the start of the [[Last War]], the [[Inspired]] dominator
[[Tirashana]] used [[mind seed]] to seize control of the lord
of the household, and through him she spread her
influence throughout the enclave. While the enclave
serves the Dreaming Dark, most of its members have
no idea that they are in league with the Inspired.
In the guise of the Deneith patriarch, Tirashana
began teaching [[psionic|psionics]] techniques to the defenders.
Over the course of a century of indoctrination, she
has taught the Sharn Deneith to see themselves as
the forerunners of a new race, superior to humans
because of their [[dragonmark]]s and raised above the
dragonmarked by their psychic abilities. Even those
who deal directly with the Inspired believe that they
are working together as equal partners. In fact, there
is little difference between the leaders of the house
and the Inspired. The heirs that show the greatest
promise are carefully indoctrinated and prepared
for the “ascension,” the ceremony that opens up their true potential. This ritual simply involves possession by a [[quori]] spirit, but the Deneith have been
trained to believe that this spirit is the manifestation
of their own psyche and thus individuals serve as
willing partners. There are fifteen members of the
Sharn Deneith who have been possessed by [[tsucora]]
spirits; the [[fiend]] that dominates the lord of the
house is of a greater order.
Under the tutelage of the [[Dreaming Dark]], the
[[Sharn]] [[Deneith]] have become masters of intrigue and
subtlety. They carefully conceal their [[psionic|psionics]] powers
from outsiders, and even visiting Deneith heirs
do not notice anything strange about the enclave.
The Sharn Deneith maintain a separate facility in
Copper Arch where they hone their psionic skills;
there is nothing about the [[Dragon Towers]] enclave
that suggests the strange alliance of the heirs.
The Sharn Deneith primarily serve the Dark
by gathering information. As the bodyguards and
guardians of the wealthy and elite citizens of Sharn,
the heirs of Deneith are privy to many of the secrets
of the city, and they hold the keys to the doors of the
great and powerful.
While they can occasionally allow a “failure in
security” to occur, the Sharn Deneith need to be
careful to preserve the reputation of the house and
avoid drawing suspicion upon the enclave. A Deneith
bodyguard protects his charge from all dangers—but
he also memorizes every conversation and every event
for the benefit of the Dark. And if the [[Inspired]]
ever did move openly against Sharn, the [[Blademarks|Blademarks Guild]]
and the [[Defenders Guild]] would be able to launch a
devastating first strike from within the city.
!! Prominent NPCs
The lord of the household
is Sadran d'Deneith.
A lean man with iron-gray hair and piercing gray
eyes, Sadran is the third lord of the house to carry a
[[quori]] spirit. His son Sadral is the heir to the enclave. Currently he is the host of a [[tsucora]] spirit, but he will
become the next host of Sadran's [[quori]] spirit when
his father dies.
The enclave includes nine [[Sentinel Marshals]].
The most accomplished of these are [[Lalia|Lalia d'Deneith]] and [[Tasra d'Deneith]],
identical twin sisters who both bear the Lesser [[Mark of Sentinel]] and carry [[tsucora]] spirits. Lalia specializes in tracking fugitives through the wilderness, while
Tasra knows the seedy areas of [[Sharn]] like the back of
her hand. The two sisters have a cruel sense of humor,
and enjoy toying with their quarry during a hunt.
A dark-haired [[dwarf]] who deals in weapons and armor, Three-Fingered Thad is missing more fingers than he has left. Bets are sometimes made in the more disreputable taverns about when he will lop off another one. Some believe he loses them in accidents with powerful magic weapons that come his way, but the wounds are self-inflicted. The dwarf
maims himself as punishment for some dark sin in
his past.
Three-Fingered Thad can be found throughout the
city of [[Stormreach]] but most often in the [[Harbor]] district, where
his somewhat clumsy smithing skills and crude
but serviceable weapons and armor are appreciated
for their inexpensiveness. He sells reclaimed and
repaired arms and armor from a stall, as well as
doing a little tinker work. He also secretly also works for the [[Night Tide]].
(Triceratops)
One of the most aggressive of the herbivorous [[dinosaur]]s, a threehorn has a skull that flares out to form a protective plate of bone. With its great horns and formidable speed, a threehorn gores and tramples would-be predators to death.
Thri-kreen are mantis-like [[humanoid]]s native to [[Xen'drik]]. Standing up to seven feet tall, thri-kreen have four arms that end in dextrous claws, and two powerful legs capable of incredible forward leaps. They are covered with a sandy yellow chitin that can shift lighter or darker in tone to match the creature's surroundings. A few thri-kreen manifest [[psionic|psionics]] abilities, using their powers to aid the hunt and communicate more easily with outsiders.
Thri-kreen employ a language without words. To show emotion and reaction, a thri-kreen clacks its mandibles and waves its antennae, giving other thri-kreen a sense of what it is thinking and feeling. Other creatures find this manner of communication difficult to interpret and impossible to duplicate. A few thri-kreen have developed the means to croak sounds that sound similar to the languages of other sapient species.
Thri-kreen don't require sleep and can rest while remaining alert and performing light tasks. Their inability to sleep is thought to be the reason why thri-kreen have such short lifespans, the average thri-kreen life expectancy being only thirty years.
A thriving thri-kreen civilization once inhabited the area that became [[Stormreach]], yet much about the mantisfolk remains a mystery to this day. Today, thri-kreen are few in number, but a handful make their homes in the tunnels beneath the city and occasionally make their way to the surface. It is difficult but worthwhile to negotiate with the thri-kreen, for they are among the best guides to the city’s dungeons.
Bands of nomadic thri-kreen can also be found in the [[Menechtarun Desert]].
!! Mantisfolk of the Shattered Land
Determined to learn all he could about them, the
[[gnome]] researcher Lohn Ender, from the [[Library of Korranberg]], traveled to [[Xen'drik]] and somehow managed to garner the favor of the thri-kreen, who allowed
him to study them from a respectful distance. This
research culminated in the publication of his findings, which immediately caused a stir within the academic community. In his report, titled "The Ender Disquisition: Mantisfolk of the Shattered Land", Ender presented the curious theory that the thri-kreen of Xen’drik exist simultaneously in [[Eberron]] and in [[Dal Quor]], the Region of Dreams. The disquisition claims that this dual existence is the source of the thri-kreen’s baffling immunity to the [[Traveler's Curse]], as well as their seemingly alien mindset and idiosyncratic relations with other [[humanoid]] races.
A longtime competitor of [[Havulak Prospecting]] in [[Grindstone]], the Thrifty Traveler is a clutter of tents, outfits, and odds and ends that might be handy in the wilderness. Located in [[Summerfield]], the shop's proprietor "Thrifty Thom" undercuts any of Havulak’s prices by a few copper pieces.
The greatest [[angel]]s of [[Syrania]] are the thrones. There's a
single throne for each [[domain|Syranian domain]], and they have a profound
knowledge of their entire domain. Unlike lesser angels,
thrones are known only by their domain, with no other
name—//the Throne of War//. They're bound to all the
[[dominion]]s whose studies lie within their domain, and they
know everything experienced by those dominions. They
largely remain in deep contemplation, acting only if Syrania
itself is threatened or if a dominion succumbs to [[corruption|radiant idol]].
A throne has powers equal to or greater than a [[solar]], though
when using spells such as [[commune]], it can only answer
questions tied to its domain. A throne can strip the benefits of Syrania's
//Unburdened// property for any number of creatures it can
see—so flightless creatures who cause trouble may find
themselves falling forever through the [[Open Sky]].
The thrones are the most powerful entities that can be
encountered by mortals, but many sages assume that they are
themselves tied to a greater force who knows everything that
they experience, and who shapes the [[plane]] itself.
The ruins of Throne Gate once served as a temple and arcane laboratory at the height of the [[Cul'sir Dominion|Cul'sir]]. Answers to the question of [[warforged]] sentience may lie here—secrets that the Order of the [[Emerald Claw]] and the [[Lord of Blades]] have recently taken an interest in uncovering.
''Hallmarks:'' Entertainers, international intrigue, spies
After forging a united kingdom, [[Galifar I|Galifar ir'Wynarn]] realized early
on that the crown could not rule from one of the existing
realms. To do so would be to put one of the [[Five Nations]]
above the others, and that would lead to breaks and fractures that would eventually destroy the kingdom. Thus,
he established his seat of power on an island in [[Scions Sound]]. There he built the great castle of Thronehold.
After [[Jarot ir'Wynarn]]'s death and the rejection of the line of succession that led to the [[Last War]], the island and castle
were largely abandoned. A special detachment of House
[[Deneith]] guards, the Throne Wardens, remained in
place to protect the castle, but all government functions
ceased with the collapse of the Kingdom of [[Galifar]].
[[Throneport]], a town in the shadow of the castle, became a place for dissidents, criminals, spies, and mercenaries, and the once safe port turned into a rough-and-tumble town without allegiance to any single nation.
!! Interesting Things About {{!!title}}
* Representatives (and spies) of the [[Five Nations]] gather in the town of Throneport, where it's impossible to tell friend from foe and alliances shift daily.
* Although [[Cyre]] no longer has a peacekeeping force on the island, many Cyrans find work here as spies and agents for other nations.
!! Thronehold Characters
As you develop a character or NPC from Thronehold,
consider the following:
* ''Cold Warriors.'' Thronehold is a gladiatorial arena for diplomats and spies, a dangerous playground for bored nobles, and a haven for treacherous double agents. Characters with the charlatan, spy, noble, or criminal background might all test their skills here.
* ''Play It Again.'' If diplomats and spies have one thing in common, it's a weakness for pleasant distractions. When not playing their games of deceit, they seek out the best entertainment and companionship the island has to offer. Characters with the entertainer background can make many untrustworthy friends here.
!! Aftermath of the Last War
By 975 YK, [[Throneport]] had grown into a small city in
which all of the nations and [[dragonmarked house]]s had
at least a small presence, turning it into a hotbed of international intrigue. The [[Treaty of Thronehold]] further
solidified Throneport as a multinational capital under
the control of small peacekeeping forces from [[Aundair]],
[[Breland]], [[Karrnath]], and [[Thrane]], with House [[Deneith]]
Throne Wardens in place to make sure the terms of
the treaty are honored. Today, the small city is neutral
ground, but the castle and its grounds remain off limits
and under the watchful protection of the wardens.
''Date: '' [[11 Aryth|Khorvaire calendar]]
This observance marks the day that the [[Treaty of Thronehold]] was signed, officially ending the Last War.
This year (998 YK) is only the second time the event has
been commemorated, and the [[Lord Mayor|Lord Mayor of Sharn]] of [[Sharn]] has
promised a truly epic festival.
See also [[Thronehold]].
Below the castle walls of [[Thronehold]] stands Throneport, a small
town that arose during the old [[kingdom|Galifar]]’s height. Since no one ruled Thronehold during the [[Last War]], the town was not subject to any nation’s laws—criminals, exiles, mercenaries, and other scum arrived and prospered. The town became a haven for the desperate and villainous. The end of the Last War checked its decline as the [[dragonmarked house]]s and citizens
and officials from each of the [[Five Nations]] returned
to the island. The criminal element remains, but
Throneport is becoming a functioning community
once more, one that all nations recognize as neutral
ground.
Bred by the [[daelkyr]] [[Valaara]], this bizarre [[symbiont]] burrows
into the palm of its host, secreting razor-sharp chitin blades
that can also be used as throwing weapons. When you attune
to the scarab, it fuses with one of your hands, visible only as an
iridescent, chitinous growth on your palm.
You can extrude a shard of razor-sharp chitin from
the symbiont into your empty hand, using it as a throwable dagger. The shard dissolves into acid once it hits a solid object.
Thrug is an island in the [[Lhazaar Principalities]].
Queen [[Aurala|Aurala ir'Wynarn]] commands the [[Royal Eyes]] of [[Aundair]],
as have her predecessors. To manage the day-to-day
affairs and sort through the incoming information,
the queen relies on her Spy Master. Currently, Thuel Racannoch holds that post. A mage who has a penchant for [[divination]] magic, the Spy
Master sifts through voluminous reports and delivers summaries to the queen. In addition, Racannoch manages the field agents, organizing and assigning missions, and vetting all new recruits.
Thuel has only held the position for the past two years; he replaced Nara ir'Galanatyr, who retired under mysterious circumstances to [[Wyr]] shortly after Aurala signed the [[Treaty of Thronehold]]. Thuel is completely loyal to Aurala, having worked his way up the ranks the hard way over many years, without the usual benefit of an easy start granted to those of noble birth.
The Thunder Sea lies between [[Khorvaire]], [[Aerenal]],
and [[Xen'drik]]. [[Shargon's Teeth]] mark its western extent,
and to the east it flows into the [[Dragonreach]] (via the [[Aerenal]] Channel) and the [[Dark Sea]]. It takes its name from the unnatural storms that rage over some
areas, never-ending tempests fueled by the elemental power of
[[Lamannia]]. As dangerous as these waters are, this is a crucial crossroads for trade, and there’s a constant stream of ships
flowing between [[Sharn]], [[Stormreach]], and [[Pylas Talaear]]. It’s here
that the [[sahuagin]] first arose, the seat of their greatest civilization.
Today, the sahuagin of the [[Eternal Dominion]] are spread far
and wide across the floor of the Thunder Sea. Their mightiest
cities are built around—and into—massive slumbering
creatures known as [[kar'lassa]], “great dreamers.” The [[merfolk]]
live in the upper waters above the sahuagin. Their permanent
settlements are tied to [[manifest zone]]s, and they perform
rituals to contain the threat posed by these zones. The other
major power in the Thunder Sea is the [[Valraean Protectorate]],
the domain of the [[sea elves|sea elf]]. These elves laid claim to the
waters around [[Aerenal]], conquering the local [[sahuagin]] and
other species, and bending them to their will. The [[Dominion|Eternal Dominion]]
[[sahuagin]] despise the Valraean elves, but thus far, the power
of the [[Undying Court]] has repelled every assault.
What will bring your adventurers to the Thunder Sea? Will
you delve into the depths to explore ruins built by long-dead
[[giant]]s? Will you negotiate with [[sahuagin]] and work to prevent a
war between land and sea? Or will you struggle to survive after
you’re pulled down by the [[aboleth]]s and the ancient evils that
lurk in the ultimate darkness?
!! Ports and Travel
The Thunder Sea is a critical path for trade. Any traffic with
[[Xen'drik]] crosses the Thunder Sea. In addition to the ships of
House [[Lyrandar]] (both elemental galleons with [[dragonmarked|Mark of Storm]] captains and mundane ships licensed by the house), the
Thunder Sea sees traffic from [[Aerenal]], [[Zilargo]], [[Breland]],
and [[Riedra]]. The most important ports include [[Pylas Maradal]]
([[Valenar]]), [[Pylas Talaear]] ([[Aerenal]]), [[Sharn]] ([[Breland]]), [[Stormreach]]
(Xen’drik), [[Trolanport]] ([[Zilargo]]), [[Wyvernskull]] ([[Darguun]]), and
[[Zarash'ak]] ([[Shadow Marches]]).
These major ports see both commercial, diplomatic,
and military traffic. [[Aereni]] merchants carry shipments of
exotic lumber, [[Riedra]]n vessels are laden with [[crysteel]] and
[[dragonshard]]s, [[Lyrandar]] ships carry all manner of trade goods,
and smugglers sneak barrels of [[kuryeva]] and [[tilxin blood]] into
hidden coves. While the standard map of [[Khorvaire]] focuses on
these major ports, there are also countless smaller ports and
fishing villages scattered along the coastline.
The masters of the Thunder Sea—the [[sahuagin]]—don’t
want dryskins blundering through their territory. Traveling
directly along the coastline is reasonably safe, and local
fisherfolk don’t need to negotiate with sahuagin every time
they set sail; the sahuagin don’t lay claim to the waters within
6 miles of [[Khorvaire]]’s coast, and permit fishing an additional
20 miles beyond that. But crossing the Thunder Sea is an
entirely different story. Setting aside the territorial claims of
the sahuagin, the sea is filled with deadly hazards—endless
storms, [[demonglass]] spires, and hungry [[monstrosities|monstrosity]].
The [[Eternal Dominion]] has established specific routes that
captains must follow, safe from hazards and monitored by
the Dominion. Captains who wish to use these routes must
obtain //beacons of passage//—[[common|rarity]] [[magic item]]s that tell the
[[sahuagin]] their travel is authorized, charged to last for a set
time. Even with a beacon, there are places—such as [[Shargon's Teeth]]—where a wise captain pays for the services of a [[sahuagin]]
or [[merfolk]] guide.
Some brave (or foolish) souls deviate from these approved
routes, whether desiring speed or avoiding the cost of local
customs and the price of a beacon. The Thunder Sea is nearly
the size of [[Khorvaire]] itself, and the [[sahuagin]] aren’t everywhere;
however, those regions shunned by the sahuagin and [[merfolk]]
are usually avoided with good reason, and smugglers may face
dangerous environmental hazards or hungry sea monsters.
!! The Power of Lamannia
The storms of the Thunder Sea are legendary. Beyond wind
and rain, tales speak of maelstroms that drag down even the
largest vessels and masses of vegetation that rise from the
water to entangle ships. All of these are very real threats,
even more so because these dangers don’t obey simple laws
of wind and water. The Thunder Sea is home to a wide range
of [[manifest zone]]s, but the most powerful and numerous are
those tied to [[Lamannia]]. The endless fury of the [[First Storm]]
lashes ships with lightning and storm winds, and great
maelstroms can pull a ship down into the [[Endless Ocean]].
The vast masses of vegetation are tied to the [[Twilight Forest]],
fueling unnatural growth that can latch onto a vessel and trap
it in the sargassum. Though the influence of Lamannia is
most strongly felt here, it’s also possible to find an unexpected
region of icebergs surrounding a [[manifest zone]] tied to [[Risia]],
boiling waters around a [[Fernia]]n zone, or a region tied to
[[Mabar]] where the shadows of sailors turn on the living.
As any skilled ocean navigator can tell you, [[manifest zone]]s
are stable, physical locations. While a manifest zone’s influence
extends beyond its focal point, the worst storms of the Thunder
Sea remain confined to specific areas. However, when the
plane linked to a manifest zone is coterminous, its impact is
dramatically enhanced, with storms extending beyond their
usual radius and becoming far more powerful. This is why
knowledge of the sea is vitally important for sailors; if you
venture off the approved trade routes, you need to chart a
course that will avoid the storms.
[[Lamannia]]n [[manifest zone]]s often release [[elemental]]s into
[[Eberron]]. An eternal storm may contain air elementals,
while water elementals can be found in the region around a
maelstrom. Such elementals aren’t intentionally cruel, but
they’re driven to express their elemental drives—which often
makes them dangerous to ships, which they perceive as alien
invaders. Manifest zones can also produce [[dire beast]]s—octopi,
sharks, and other creatures of remarkable size.
The [[merfolk]] of the Thunder Sea serve as planar shepherds, tending
[[manifest zone]]s and helping to contain and mitigate their
effects. This isn’t absolute; the merfolk can’t entirely disperse
the power of the [[First Storm]], or stop the growth of the [[Twilight Forest]]. But they seek to direct it, choosing to vent its power at times when there is minimal danger to innocents. Even when a region has especially bad storms due to a manifest zone,
those storms could be far, far worse if the merfolk stopped
performing their rituals or were driven away entirely.
!! Haunted Ruins and the Deepest Darkness
The Thunder Sea is vast and ancient. The [[sahuagin]] call their
civilization the [[Eternal Dominion]], but in truth, it’s risen and
fallen multiple times. The [[Lurker in Shadow]], as well, has nearly risen
several times, and [[aboleth]]s have set the sea devils against one
another in vicious civil wars. There are a handful of [[storm giant]]s
in the depths, but any nation they once possessed was destroyed
long ago. Remnants of these conflicts are spread across the
Thunder Sea. Explorers could find an ancient temple haunted
by the ghosts of the storm giants that built it, an overgrown
sahuagin fortress from a previous age of the Dominion, or the
tomb of a [[dragon]] sealed tens of thousands of years ago.
Most dangerous of all are the deepest abysses, strongholds of the surviving servants of the [[Lurker in Shadow]]. These cracks in the ocean floor might hold mighty artifacts forged during the [[Age of Demons]], but they’re home to [[aboleth]]s, [[fiend]]s, and even more terrifying creatures.
!! What Roams the Sea?
When dealing with the Thunder Sea, remember that it’s just as
civilized as the [[Five Nations]]. It does have wilderness regions
with feral beasts roaming at will, and you might find wild
plesiosaurs, a scheming [[sea hag]], or a hungry [[scrag|troll]]. But in
the areas above and around [[sahuagin]] city-states, such beasts
have been tamed or destroyed. All cultures of the Thunder
Sea farm fish like the people of the land farm sheep or cattle;
a pod of whales may be carefully managed and cultivated, and
their farmers will be quite angry with dryskins who poach their
ichthyic livestock. There are sharks—and giant sharks—in the
wild waters, but in the civilized zones, the sahuagin use them
much as humans use hounds. [[Dragon turtle|dragon turtle]]s serve different
roles depending where they’re found; in the [[Dominion|Eternal Dominion]], dragon
turtles are forced to serve as beasts of burden and living
engines of war, while the [[merfolk]] form alliances with dragon
turtles and consider them partners in a community.
!! Random Discoveries
What might a vessel find if it leaves the sanctioned trade routes
and ventures into forbidden territories? The table below provides a few possibilities.
| !<<dr d12>> |!Discovery |
| 1 |What seems to be a powerful storm is actually a [[Lamannia]]n [[manifest zone]] with air [[elemental]]s within its radius. The storm has strong winds and sporadic lightning strikes. |
| 2 |A [[Lyrandar]] [[elemental galleon]] is drifting on the water. There’s nobody visible on the deck, and no response to signals. |
| 3 |[[Demonglass|demonglass]] spikes in the water threaten to cripple the ship unless the acting captain succeeds on an attempt to avoid it. There’s a [[sahuagin]] outpost on a stone spire in the center of the field of teeth; they may be willing to assist stranded sailors. |
| 4 |What at first appears to be a small island is a mass of floating vegetation—sargassum and exotic plants flowing from a [[manifest zone]] tied to [[Lamannia]]. Vines grow at an unnatural rate to entangle a ship that gets too close. Other vessels can be seen trapped deeper in the mass; how long have they been there? Could there be any survivors? |
| 5 |A [[dragon turtle]] surfaces nearby. Is it patrolling on behalf of the [[Eternal Dominion]]? Is it supporting a [[merfolk]] community? Or is it just curious? |
| 6 |The waters are unnaturally cold, and chunks of ice can be seen ahead. This is a [[manifest zone]] tied to [[Risia]]; icebergs pose danger, but there could be ancient ships—and treasure—trapped in unnatural ice. |
| 7 |A [[Dominion|Eternal Dominion]] patrol—a [[sahuagin]] baron and a squad of sahuagin using a giant shark as a battle mount—surface and hail your ship. |
| 8 |A [[demonglass]] spire rises out of the water, but this is no simple spike; it seems to be a ruined temple dating back to the [[Age of Demons]]. |
| 9 |A ship is anchored at a small, uncharted island. Is this a smuggler’s outpost? Or are the sailors conducting secret negotiations with the local [[sahuagin]]? |
| 10 |Skeletal fish can be seen in the water around the ship. This is a [[manifest zone]] tied to [[Mabar]]; there may be stronger [[zombie]] beasts in the water, or a shipwreck infested with [[shadow]]s. |
| 11 |A sudden shift in currents starts pulling the ship towards an immense maelstrom generated by a [[manifest zone]] tied to [[Lamannia]], with water [[elemental]]s in the vicinity. If the ship is pulled in, it might be destroyed... or drawn into the [[Endless Ocean]]|
| 12 |The hand of a massive statue protrudes from the water, surely made by [[storm giant]]s. What remains below the surface? |
The Thunder Wyrm is a [[gold|gold dragon]] [[rogue dragon]] in [[Khorvaire]]. Years ago, this [[Chamber]] agent came to [[Khorvaire]] and fell in love with a [[human]] woman. He left the organization to marry his love and live with her in human form. When her days ran out, the dragon retreated to mourn in solitude, and so far has not rejoined [[dragon]] society. On stormy nights he emerges to fly through the rain and roar with the thunder.
These bracelets of leather have steel plates that cover the wearer's palms and fasten around the middle and index finger. When the wearer claps, the cuffs emit a hugely loud concussive blast strong enough to break glass within 15 feet.
Thuranne d'[[Velderan]] ([[half-orc]]), a scion of House [[Tharashk]], operates an
[[inquisitive]] agency in [[Warden Towers]]. Her greatest
asset is an extensive network of contacts within the
Warden Towers garrison, which gives her access to
resources beyond the reach of most inquisitives. She
specializes in criminal investigation, and frequently
consults for the [[Watch|Sharn Watch]] to repay the many favors her
contacts have performed for her. She is not particularly
favored in House Tharashk, since she prefers to run
her own business than take on jobs for the house.
''Leader:'' [[Elar d'Thuranni]] <br/>
''Headquarters:'' [[Regalport]] ([[Lhazaar Principalities]]) <br/>
''Dragonmark:'' [[Mark of Shadow]]
//Only from the shadows can one see clearly. Illumination waits for those who dare to step out of the light.//
<div align="right">—Taen d'Thuranni, bright phantasm of the [[Shadow Network]]</div>
Once part of House [[Phiarlan]], the [[elves|elf]] of House
Thuranni are now the rivals of their kin, competing in the fields of entertainment and espionage.
The Thuranni elves bear the [[Mark of Shadow]], and
they have the same skills and powers as their Phiarlan cousins. However, House Thuranni is smaller
than House Phiarlan and has fewer resources. This
discrepancy gives Phiarlan an edge when it comes
to entertainment and information-gathering. But
Thuranni is unmatched in one field: assassination.
Like the [[displacer beast]] they use as their emblem, House
Thuranni elves are deadly and all but untouchable.
Baron [[Elar d'Thuranni]] rules the house from an [[enclave]]
in [[Regalport]], and he is always accompanied by a shadowy
pair, rumored to be embodiments of shadow itself.
!! History of House {{!!title}}
Even though the agents of House [[Phiarlan]]’s [[Serpentine Table]] are spies and espionage experts, the
leaders of the house have always sought to be a force
for order and balance. On more than one occasion
they helped a rightful heir of [[Galifar]] defeat would-be
usurpers, and if Queen [[Mishann|Mishann ir'Wynarn]] had called on the
house for help, the [[Last War]] might have come to an
abrupt end. House Phiarlan did good business during
the war: Every nation needed intelligence. However,
this work put the house under tremendous pressure. Shadowmarked elves from different families often found themselves working at cross-purposes,
and some lost sight of their neutrality and developed
attachments to a particular nation.
This situation came to a head in 972 YK, when
Thuranni assassins turned on another family within
House [[Phiarlan]]—the [[Paelion]] line. The few Paelions
who survived this attempt at extermination went
into hiding. Baron [[Elvinor Elorrenthi d'Phiarlan]] condemned the action and called for the excoriation of
the entire Thuranni family. [[Elar Thuranni|Elar d'Thuranni]] refused to
accept this judgment, declaring his family to be a new
house. After years of argument, the [[Twelve]] agreed,
and House Thuranni was born.
This is the official story of the [[Shadow Schism]], but
many questions remain. What triggered the massacre of the [[Paelion]]s? [[Elar|Elar d'Thuranni]] claims to have uncovered a Paelion plot to assassinate kings and [[dragonmark]]ed barons. But there are those who say that both Elar and [[Elvinor|Elvinor Elorrenthi d'Phiarlan]] wanted the split, and used the Paelions as scapegoats. If this is true, what could be the reason?
!!! The Last War
For most of the [[Last War]], the
Thuranni were part of House [[Phiarlan]]. The Thuranni
line was concentrated in northwestern [[Khorvaire]]
and performed much of its work for [[Karrnath]]. It
worked closely with the Order of the [[Emerald Claw]],
and some say that House Thuranni continues to work
with the Emerald Claw today.
Since the Schism, the major [[enclave]]s of House Thuranni
are found in [[Karrnath]] and the [[Lhazaar Principalities]], but Thuranni has also been expanding its operations and has established small enclaves
in [[Q'barra]] and [[Droaam]].
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
To use this cloak's effect, you must have the [[Mark of Shadow]].
While you wear this cloak, it projects an illusion that makes you appear to be standing in a place near your actual location, much like a [[displacer beast]]. If you or the cloak take damage, the property ceases to function for 5-10 seconds. This property is suppressed while you are incapacitated, restrained, or otherwise unable to move.
(See also [[cloak of displacement]], the higher rarity version of this item that does not require a [[dragonmark]].)
Born and bred in [[Sharn]], Thurik Davandi ([[gnome]] councilor for [[Upper Menthis]]) is as cunning and deceptive as any [[Zilargo]] gnome. He gained his seat on the Council through
a clever combination of flattery and blackmail, and he has a hold over many of the more powerful merchants of [[Menthis|Menthis Plateau]]. He has strong ties with the
[[Boromar Clan]] and the Zilargo Embassy, and often
uses his influence to help these allies. But he is
always looking for ways to increase his own power at
the expense of his associates, and he may lure adventurers into his web of conspiracy and deception.
The Thurim Bay lies the coast of [[Zilargo]], and is the namesake of the city of [[Thurimbar]].
This port city draws musicians and artists from across
[[Khorvaire]]. It addition to its legendary clubs and schools
of music, Thurimbar is on the cutting edge of arcane
sound—the use of [[illusion]] magic to generate music. Entertainers flock to Thurimbar to share their music and
immerse themselves in its rich musical culture.
The //Thurimbar rod// is a magical instrument developed by the gnomes of [[Zilargo]] (See [[Thurimbar]]). While holding the rod, you can produce auditory illusions that unerringly replicate the sound of any instrument with which you're proficient. If you are proficient with the //Thurimbar rod// itself, you can produce unearthly music unlike any natural instrument.
Tiamat is one of the mightiest [[fiend]]s of the [[Age of Demons]], a true daughter of the [[Dragon Below|Khyber]]. Each of the [[overlord]]s has its own mystical dominion; for Tiamat, that province is [[dragon]]s. [[Khyber]] and [[Siberys]] were siblings, and the corruption of Khyber lies hidden in every dragon. Tiamat has the power to draw that out, corrupting and commanding the children of Eberron and Siberys.
The chromatic dragons are especially vulnerable to her
wiles, but even metallic dragons are at risk.
During the [[Age of Demons]], Tiamat was the most
feared of the [[overlord]]s, as she turned armies of [[dragon]]s
and her own twisted spawn against their kin. She was
finally defeated by the [[couatl]]s and bound in [[Argonnessen]]’s [[Pit of Five Sorrows]]. Her corrupted spawn were utterly destroyed. Still, so great was the fear she engendered that the [[dragon]]s placed her among the [[pantheon of dragon deities|Thir]] and traced her symbol in the stars. Perhaps they hoped that if Tiamat found a place in the heavens,
she might never return to Eberron.
Tiamat remains bound to this day, but her power
is still felt in the world. She has followers among the
[[Lords of Dust]], and she is served by an alliance of
[[dragon]]s and other creatures—the [[Talons of Tiamat]].
These cultists work to free the Daughter of Khyber,
and they have already succeeded at the first stage of
their plans, arranging for the reemergence of Tiamat’s
dreadful spawn. The [[Draconic Prophecy]] warns of the terrible
consequences of Tiamat’s return; now her cult works
to fulfill the conditions of the Prophecy, even as the
draconic [[Light of Siberys]] fights to keep this apocalypse
at bay.
Even though Tiamat isn’t a true goddess, [[cleric]]s who worship the Daughter of Khyber do receive spells, just as [[warforged]] devoted to the [[Lord of Blades]] do. Tiamat
herself does not grant this power, but faith and devotion to her dark ideals empowers the dedicated cleric.
Like all the [[overlord]]s of the [[Age of Demons]], Tiamat
is bound in her prison and can influence the world only
through her agents. In her true form, she has power
sufficient to threaten entire nations, and the ability to
corrupt and control dragons. It is possible that her followers will find a way to grant their dark lady the ability to manifest, at least partially, in the world. This cataclysmic
event would allow epic-level PCs to combat directly an
aspect of mighty Tiamat.
Tick is a member of the [[Fleas]] gang of children in [[Stormreach]]. He has developed the [[psionic|psionics]] talents of a [[wilder]], and his surprising physical and mental might
have proven the undoing of more than a few unsuspecting adults.
You conjure up a wave of water that crashes down on an area within 120 feet. The area can be up to 30 feet long, up to 10 feet wide, and up to 10 feet tall. Each creature in that area is struck by the wave and may be knocked prone. The water then spreads out across the ground in all directions, extinguishing unprotected flames in its area and within 30 feet of it, and then it vanishes.
<$list filter="[has[tooltip]]" variable="tid1">
<$list filter="[<tid1>get[tooltip]]" variable="tt">
<$list filter="[!<tid1>tooltip<tt>]">
<$link/><br/>
</$list>
</$list>
</$list>
//"The chieftain who leads them," Theul asked, "what do we know of him?"//
//"His name is Kathrik Mel. He inspires tremendous loyalty in the barbarians, an almost religious fervor."//
//"He's a [[demon]]?"//
//"I don't think so. The [[Ghaash'kala]] call him a sak'vanarrak—it translates as something like 'fiend-touched.' A [[Karrn|Karrnath]] scholar coined the word tiefling. I think he's some mixture of [[fiend]] and mortal, more like a savior than a god."//
//Thuel frowned. "Their savior, our damnation."//
<div align="right">—James Wyatt, //Dragon Forge//</div>
Tieflings are derived from [[human]] bloodlines, and in the
broadest possible sense, they still look human. However,
their infernal heritage has left a clear imprint on their
appearance. They have natural darkvision and resistance to fire, as well as an innate [[sorcerous|sorcerer]] magical ability.
!! Appearance and Longevity
Tieflings have large horns that take any
of a variety of shapes: some have curling horns like a
ram, others have straight and tall horns like a gazelle's,
and some spiral upward like an antelopes' horns. They
have thick tails, four to five feet long, which lash or coil
around their legs when they get upset or nervous. Their
canine teeth are sharply pointed, and their eyes are
solid colors—black, red, white, silver, or gold—with no
visible sclera or pupil. Their skin tones cover the full
range of human coloration, but also include various
shades of red. Their hair, cascading down from behind
their horns, is usually dark, from black or brown to dark
red, blue, or purple.
Tieflings mature at the same rate as humans but live a few years longer.
!! Tiefling Names
Tiefling names fall into three broad categories. Tieflings
born into another culture typically have names reflective
of that culture. Some have names derived from the
Infernal language, passed down through generations,
that reflect their fiendish heritage. And some younger
tieflings, striving to find a place in the world, adopt a
name that signifies a virtue or other concept and then
try to embody that concept. For some, the chosen name
is a noble quest. For others, it's a grim destiny.
//''Masculine Infernal Names:''// Akmenos, Amnon, Barakas,
Damakos, Ekemon, Iados, Kairon, Leucis, Melech,
Mordai, Morthos, Pelaios, Skamos, Therai
//''Feminine Infernal Names:''// Akta, Anakis, Bryseis, Criella,
Damaia, Ea, Kallista, Lerissa, Makaria, Nemeia,
Orianna, Phelaia, Rieta
//''"Virtue" Names:''// Art, Carrion, Chant, Creed, Despair,
Excellence, Fear, Glory, Hope, Ideal, Music, Nowhere,
Open, Poetry, Quest, Random, Reverence, Sorrow,
Temerity, Torment, Weary
!! Tieflings in Eberron
Tieflings rarely appear in the cities and towns of [[Khorvaire]], with most dwelling at the fringes of civilization.
Many tieflings are born to the [[Carrion Tribes]], the barbarians who live in the [[Demon Wastes]]. Such tieflings are touched by the fiendish forces bound beneath
the Wastes, and the tribes consider them to be blessed.
If you're playing such a tiefling, why have you left the
Wastes? It could be that you were destined for some evil
purpose—perhaps even serving as an avatar for an imprisoned [[overlord]]—and you are fleeing that destiny.
Other tieflings are shaped not by fiendish powers,
but by the influence of the [[fiend]]-tainted planes. Such
tieflings might be born in [[manifest zone]]s, where a plane
exerts influence over a region. Planar tieflings are oddities, often seen as strange but not necessarily evil.
Finally, the [[Venomous Demesne]]—a city-state hidden
on the far side of [[Droaam]]—is populated by tieflings.
These tieflings descend from [[Sarlona]]n mages of ancient [[Ohr Kaluun]] who
bargained with dark powers, with the Demesne's lords
being powerful [[warlock]]s and [[wizard]]s. The Venomous
Demesne has had no significant contact with the [[Five Nations]] and few know it exists. Your character could be an envoy or exile from it, or simply an adventurer driven
by a desire to see what lies beyond your homeland.
<$reveal type="match" state="!!category" text="creature">
<$reveal type="nomatch" state="!!tier" text="">
''[[Creature Tier|creature tier]]: ''''{{!!tier}}''
</$reveal>
</$reveal>
<$reveal type="match" state="!!category" text="spell">
<$reveal type="nomatch" state="!!tier" text="">
''[[Spell Tier|spell tier]]: ''''<$transclude tiddler="SpellTierNames" index={{!!tier}}/>''
</$reveal>
</$reveal>
<$reveal type="match" state="!!category" text="object">
<$reveal type="nomatch" state="!!rarity" text="">
''[[Rarity|rarity]]: ''''<$transclude tiddler="RarityNames" index={{!!rarity}}/>''
</$reveal>
</$reveal>
<$reveal type="match" state="!!category" text="location">
<$reveal type="nomatch" state="!!points" text="">
<$wikify name=locations text="{{!!points}} {{!!polylines}} {{!!polygons}}">
<$button><$action-setfield $tiddler="$:/FlyLocation" text=<<locations>>/><$action-setfield $tiddler="$:/state/tab/sidebar--595412856" text="Map"/><$action-setfield $tiddler="Map" $field="refresh"/>Find On Map</$button>
</$wikify>
</$reveal>
<$reveal type="match" state="!!points" text="">
<$reveal type="nomatch" state="!!polylines" text="">
<$wikify name=locations text="{{!!points}} {{!!polylines}} {{!!polygons}}">
<$button><$action-setfield $tiddler="$:/FlyLocation" text=<<locations>>/><$action-setfield $tiddler="$:/state/tab/sidebar--595412856" text="Map"/><$action-setfield $tiddler="Map" $field="refresh"/>Find On Map</$button>
</$wikify>
</$reveal>
<$reveal type="match" state="!!polylines" text="">
<$reveal type="nomatch" state="!!polygons" text="">
<$wikify name=locations text="{{!!points}} {{!!polylines}} {{!!polygons}}">
<$button><$action-setfield $tiddler="$:/FlyLocation" text=<<locations>>/><$action-setfield $tiddler="$:/state/tab/sidebar--595412856" text="Map"/><$action-setfield $tiddler="Map" $field="refresh"/>Find On Map</$button>
</$wikify>
</$reveal>
</$reveal>
</$reveal>
</$reveal>
Tig Boromar is an honorary professor of Economics at [[Morgrave University]] in [[Sharn]]. Although she is an heir to one of the [[Sixty Families|Sixty]] of [[Sharn]] and the daughter of a [[City Councilwoman|Ilyra Boromar]], Tig Boromar set aside her family’s wealth and power and received her education on the streets of [[Sharn]]. Her //Competition in Callestan// is a brilliant analysis of the market forces at play in the [[lower ward]]s. “Professor Tig” encourages her students to approach her with their own financial problems, as she has a range of optional assignments for those who want to earn more than extra credit.
The Tiiki River in the [[Tashana Tundra]] flows past the village of [[Whitetooth]] into the [[Winter Bay]].
This small, colorful hummingbird native to [[Xen'drik]] is astonishingly swift and capable of amazing feats of aerial acrobatics. It feeds on the nectar of various magical plants, which give it an unnatural metabolism. Its [[blood|tilxin blood]] is a highly-sought-after drug and ingredient for [[potions of speed|potion of speed]].
The [[tilxin]] bird of [[Xen'drik]] feeds on the nectar of magical plants, and its blood has potent properties.
The blood of an adult tilxin, when [[alchemically|alchemist]] processed into a potion (such as a [[potion of speed]]), can be a powerful magical stimulant, greatly accelerating the user's ability to think and act. House [[Cannith]] pays a high bounty for live [[tilxin]] birds; as a result, the creatures have been hunted ruthlessly and
are hard to find around [[Stormreach]].
The timeless fountain is a relic of legendary magic, long
sought by the old and the vain alike. The fountain was
a gift from the [[dragon]]s to the first [[giant]] king, meant
to unite the continent of [[Xen'drik]] under one rule. Although it saw
frequent use by giant leaders throughout the long years
of empire, it has since been lost, its location obscured by
powerful wards that prevent [[divination]].
Those who drink from the fountain age only a
single day over the following year. While this effect
is certainly powerful, the waters of the fountain have
another purpose. If the proper ritual is performed,
the water can be distilled, allowing one who drinks it
to stop time.
Crafted of white and blue marble,
the timeless fountain is beautifully carved with the images
of [[giant]]s and [[dragon]]s working side by side. Clean,
fresh water issues from a carved dragon’s maw atop
the fountain, flowing down from bowl to bowl held
aloft by giant hands before pooling at the base.
Long ago, a stone path led from a [[great giant city|Ker Marquan]] to
the fountain, flanked by processional statues of giants in prayer. Since the fall of the giant empire, this area has been reclaimed by the jungle. Those seeking the fountain must find the seat of the first giant king ([[Bazek Mohl]], perhaps) and begin their search from there.
The alchemical substance on the end of this small, wooden stick ignites when struck against a rough surface. Creating a flame with a tindertwig is much faster than creating a flame with flint and steel (or a magnifying glass) and tinder.
Usually sold in packs of 5 (0.5 crown) or 10 (1 crown).
Harkening back to the [[Cannith]]
family’s original profession, members of this [[trade guild]] go
from town to town, using magic to repair broken or
damaged items. Much of Cannith’s popularity among
those who do not have [[dragonmark]]s can be attributed to periodic visits from Cannith tinkers. House
elders maintain that the wandering life of a tinker
is a character-building exercise, and most of the
important dragonmarked heirs spend some of their
adolescence traveling among the tinkers.
The [[Silver Flame]] is an abstract, disembodied force closely associated with a once-human woman named Tira Miron. Herself now immortal, Tira Miron (now known as the Voice of the Silver Flame) serves as
the intermediary between the holy Silver Flame and the
mortals who can never attain sufficient purity to communicate with the Silver Flame directly.
In 299 YK, the event that started the religion of the
Silver Flame took place. In that year, a terrible eruption
split the ground near what is now [[Flamekeep]], [[Thrane]] and a great pillar of crimson fire emerged from the resulting chasm. No one understood the significance of the blazing column of flame, but most who dared approach it felt unrelenting malevolence in its
radiating heat.
Tira Miron, a [[paladin]] dedicated to [[Dol Arrah]], received
a powerful vision about this strange fire while exploring the western reaches of the realm. In her vision, a great [[rainbow-winged serpent|couatl]] warned her that a terrible
evil was emerging in the east, riding crimson fire from
the depths of [[Khyber]] itself. Tira rallied the forces of
[[Thrane]] and defeated the dark creatures that had come
to venerate the crimson fire and help free the [[malevolent entity|Bel Shalor]] trapped within its flames. With her great sword Kloinjer, its pommel capped with a Khyber [[dragonshard]], Tira turned to face the emerging [[demon]] just as the great
serpent with the rainbow-feathered wings of her vision
appeared and dove headfirst into the fire. Tira watched as
the serpent and the demon struggled in the flames. The
battle within the fire seemed to last for an eternity, and
as she watched the demon began to overcome the serpent.
Horrified, she saw the demon strike a crippling blow. The
serpent, calling on its last reserves of power, encircled the
demon and buried its fangs into the fiend's fiery throat.
At the same moment, it sent a mental plea to Tira, and the
paladin didn't hesitate. She leaped into the fire, plunging
Kloinjer through the writhing serpent and deep into the
demon's flesh.
Then, the legend says, a powerful explosion rocked
the entire kingdom of [[Galifar]]. The hot crimson fire
became a cool silver flame. Tira remained within, now
part of the divine fire that had replaced the evil conflagration. She became the Voice of the Silver Flame, and a new religion was born. [[Flamekeep]], a simple stone castle, was
erected around the everburning pillar of silver fire. Deep
within the chasm, at the point where the fire erupts from
the earth, it is said that mighty Kloinjer's blade is buried
almost to the hilt, binding demon, serpent, and paladin
together forever.
!! Listening to the Voice
The Voice of the Silver Flame whispers from the depths
of the everburning fire located in the [[Cathedral of the Silver Flame]] in [[Flamekeep]]. The Voice, said to belong to Tira Miron, usually communicates through the [[Keeper of the Flame]] (currently Jaela Daran). Others of the faith sometimes hear the crackling Voice, and many make pilgrimages to Flamekeep in hopes of participating in
just such a miracle. However, some scholars outside the
faith believe the Voice isn't Tira Miron, at least not solely.
Some believe that in rare instances the [[demonic entity|Bel Shalor]] that shares the flame with Tira and the rainbow-winged serpent can speak through the silver fire. In these rare
instances, these scholars believe, the demon lures people
on to acts of terrible evil by whispering to them that they
will accomplish good works. Some of the [[crusades|Silver Crusade]] and
inquisitions undertaken on behalf of the Silver Flame
may fall into this category.
The Church of the Silver Flame, naturally, rejects
this theory.
Tirashana is an [[Inspired]] dominator, the right hand of the [[Devourer of Dreams]], and the most influential member of the [[Circle of Night|Dreaming Dark]]. She has planted a network of [[mind seed]]s across [[Eberron]], at least three of which are in [[Sharn]]: [[Bestan ir'Tonn]], [[Maira ir'Talan]], and (DM's choice). She also may have mind seeded one of the [[Storm Lords]] of [[Stormreach]].
She has certain personality quirks that cause her mind seeds to stand out a little. For one, she uses turns of phrase not common to [[Breland]] or the rest of the [[Five Nations]]:
* "''do the needful''" = "do what needs to be done"
* "''timepass''" = something to kill time, frivolous, guilty pleasure
* "''kindly adjust''" = "sorry, please excuse the inconvenience I am causing you, but I can't do anything much about it right now"
* "''what is your good name''" = a polite "what is your name again". Also "Your good name, please?"
* "''do one thing''" = "take my advice"
* "''prepone''" = opposite of "postpone"; move something forward
She also holds her head high and shoulders back, and tends to squint when listening to someone she considers beneath her station (which is nearly everyone). These quirks might not be too noticeable among her Sharn mind seeds, considering she has taken control of upper-class people who might already be considered snooty.
[[Lamannia]] is filled with precious natural resources; it's
hardly surprising that an advanced civilization would try
to harvest them. During the [[Age of Giants]], the [[Group of Eleven]] set up a research station and mining camp in a [[layer]] of Lamannia. After a decade struggling against megafauna attacks and [[elemental]]-enhanced weather, the outpost was
finally overwhelmed and abandoned. It's a testament to the
arcane engineering of the [[giant]]s that anything remains of
this structure... although it may be that it remains because
the ruin itself has become a symbol of nature reclaiming
civilization. Vines and moss cover shattered walls, and the
bones of giants are scattered throughout the remnants of this
garrison. Valuable and powerful treasures may well be hidden
in the Folly, but explorers will have to contend with aggressive
elementals, dangerous beasts, and traps left by the long-dead
giants themselves.
The Titan's Teeth in [[Xen'drik]] form the southern boundary of the [[Skyfall Peninsula]]. A band of [[frost giant]]s dwell in a hidden valley high in these mountains known as Icefang Vale. These mountains are also home to the exotic avian race known as [[raptoran]]s.
''Leader:'' [[Jamraal Ridgebreak]]<br/>
''Turf:'' [[Southwatch]], [[Cross]], [[Harbor]] district<br/>
''Portfolio:'' Assault, extortion, hired muscle, robbery<br/>
''Tactics:'' Intimidation, violence
The Titans see themselves as the true children of [[Stormreach]], and all others as interlopers on their ancestral home (despite the fact that most half-[[giant]] [[eneko]] are descended from [[Sarlona]]n slaves brought to [[Xen'drik]] by the [[Inspired]]).
The Titans tower over their foes and revel in their physical and [[psionic|psionics]] might. Still, for all their advantages, they lack the savvy to navigate the twists and turns of
Stormreach’s treacherous underworld. More often than not, the Titans end up being used in other crew’s schemes and not seeing a big cut of the profits.
The [[eneko]] don’t walk softly, and they often attract far too much attention with their brutish tactics. The gang suffered badly at the hands of more than a few [[Guard|Stormreach Guard]] crackdowns recently, and their enemies far outnumber their friends.
A massive gatehouse connects the shining silver walls at
the southwest corner of [[Coasthold]] in [[Stormreach]], and all visitors from
[[Cross]] and [[Respite]] must pass beneath its stone archway.
Beyond this entryway lies a raised path, set between two
rows of mammoth statues. Local historians theorize that the gatehouse, called the Titanswalk (or simply the Walk
to locals), was once the site of pomp-filled processionals during the [[Age of Giants]].
The statues themselves are awe inspiring, rising just high
enough for their heads to be glimpsed over the high silver
walls. Each of the seven statues is believed to represent a
significant figure in the history of the [[giant]]s, though not
even giant historians know the figures’ names.
Tlalusks are massive and aggressive creatures found almost exclusively on the aptly-named [[Tlalusk Island]]. A tlalusk looks something like a muscular horse the size of an elephant, except the creature has six legs and is covered with white fur. The beast’s wide head sports a pair of huge horns and razor-sharp tusks.
Although the tlalusk is an herbivore that feeds on roots and
other tubers it digs out of the frozen ground with its tusks,
it is notoriously ill-tempered, and most carnivores give the
beast a wide berth.
Tlalusk Island lies in the [[Bitter Sea]], near [[Icewhite Island]]. It is named for its high concentration of [[tlalusk]]s, strange six-legged mammoth-like beasts which roam the island.
* creatures in [[Menechtarun Desert]]
* [[Map]]
** Colors: https://i.pinimg.com/originals/9d/20/5e/9d205e9fa8988711e313c8d926cf8120.png. All color is done in the style field. ''Make this apply to markers as well''. Also add a "party position" marker to map
** Also a map of [[Sharn]] (all layers; drop down menu decides which layer, which changes the filter)
* Add mechanics
** General rules
** Talent list
** Secrets from Eberron Confidential
* Items
** Trinkets!
** Arcane Artifacts and Curious Curios (includes some trinkets)
* Creatures: 3.5 monster manuals 1, 2, and 3. Weird but cool stuff in there like vasuthants etc.
* Languages
* Clean up older organizations, holidays, etc. The oldest tiddlers need updates
---
* Five Nations (the usable stuff)
* Backdrop [[Graywall]] (Make sure to add that the headquarters of [[Liondrake's Roar]] is the Graywall Tharashk enclave) and all other Dragon/Dungeon magazine articles
* Dragonshards archive http://archive.wizards.com/default.asp?x=dnd/archeb/ds
* Work on remaining [[Missing Tiddlers]].
Lord Toka Threefangs in [[Zarash'ak]] is the ambassador of the
[[Droaam]] [[warlord]] [[Kethelrax the Cunning]]. Threefangs
is gaining influence among the [[goblin]]s of the [[Webs]]
with his tales of the [[kobold]] king, and some among
the [[Liondrakes|Liondrake's Roar]] wonder how he plans to use his growing clout.
This [[Nulakesh]] bastion city of [[Riedra]] lies close to a [[wild zone]] linked to
[[Shavarath]]; the [[Inspired]] are studying the zone to find a
way to tap its energy and breed superior soldiers or war-beasts. If House [[Vadalis]] learns about this, PCs could be sent to see what the [[Riedrans]] have done. Alternatively,
a party of Riedran adventurers could be dispatched to
destroy an experiment gone horribly wrong.
Centered around [[Pylas Zirinth]], the [[line|Aereni noble line]] of Tolaen
drives [[Aerenal]]'s lumber industry, both harvesting wood for
trade and producing the finest architects and wood-masons on
the island. While they are devoted to the [[Undying Court]], the
Tolaen Aereni are more invested in perfecting physical crafts
than in contemplating metaphysical mysteries. The Tolaen
also produce many of Aerenal's soldiers and usually have good
relations with the [[Tairnadal]]. Tolaen Aereni prefer simple,
functional clothes with little adornment. Tolaen masks are
usually made from wood, and may be intricately carved; Tolaen
soldiers often wear half-masks covering their lower faces.
''Capital:'' [[Frosthaven]]<br/>
''Primary Resources:'' Copper, medicinal supplies, livestock<br/>
''Enemies:'' [[Droranath]], [[Narathun]]<br/>
''Celebrated Virtues: ''Empathy, generosity, loyalty. Always willing to help a friend in need, and always willing to make a new friend.
Like [[Lanarak and Londurak]], the mythic founders of Clans
Toldorath and Tordannon were siblings. Unlike their fellow
exiles, Toldorath and Tordannon never quarreled. They followed
the same path, shared the same labors, and even built their
holds adjacent to one another; the city of [[Frosthaven]] lies directly
between the two holds and serves as the capital for both.
Toldorath and Tordannon had many skills, though they were
masters of few. They were hunters and herders, warriors and
miners. But above all, they were the most gifted healers of
the exiles, ready to help anyone in need. Before the [[Great Sorrow|Mror History]],
Frosthaven healers were found across the holds. This changed
with the arrival of House [[Jorasco]]. Today the finest healers in
the [[Mror Holds]] are [[halfling]]s, but dwarves still serve in the
healing houses. More importantly, the farms of Toldorath and
Tordannon are a primary source of many medicinal herbs and
flowers that drive Jorasco operations across [[Khorvaire]].
At a glance, Toldorath and Tordannon have much in common.
They mine copper and herd mountain [[tribex]] and other beasts
on the fields surrounding [[Mirror Lake]]. They're stoic warriors
when they must fight, but they never start a quarrel unless
driven to it. In other ways, they are quite different. Tordannon
dwarves are devoted to the [[Sovereign Host]], while the Toldorath
are ambivalent about religion. Tordannon suffered grievous
losses in the War Below; they shun [[symbiont]]s, have sealed
off their deep passages, and live in fear of the next assault. In
contrast, the Toldorath are intrigued by symbionts and keen to delve deeper into [[Sol Udar|Realm Below]]. Despite these differences, they support one another. Loyalty is one of the prime virtues of these
clans—to family, clan, and the holds themselves.
But there is one thing that makes these two Frosthaven clans
stand out: their support for the [[Jhorash'tar]] [[orc]]s. A story says an
orc shaman taught the healing arts to Toldorath and Tordannon
in the first days of the Exile. This could be pure fantasy—the
modern Jhorash'tar aren't particularly adept healers—but
regardless, these two clans have always sought peace between
orc and [[dwarf]]. This has brought them into bitter conflict
with Clan [[Droranath]]. There have also been times when the
Frosthaven clans have themselves suffered at the hands of the
orcs, when a tribe has struck a Tordannon spire in retaliation
for perceived treachery. But the clan lords remain committed
to building a bridge between the two peoples. Over the last
century, they have promoted the concept of giving the [[orc]]s a
seat on the [[Iron Council]]. Toldorath has employed Jhorash'tar
mercenaries to help secure its colony in the [[Realm Below]], and
is seeking to expand this force to drive a new offensive.
Toldorath and Tordannon have no specialty that calls out
a specific style of adventurer, but this just means that any
character could come from Frosthaven. They have soldiers and
fighters, hunters and rangers. What drives these clans is loyalty
and kindness, their belief that it's always better to make a new
friend than to dismiss someone as an enemy.
This item is a small silver barbell, designed to be worn in the tongue. When worn, the user can lick objects to learn their past once per day. For example, the user could lick a coin and know who had the coin last, what it was used to buy, where it was made, and so on.
This small golden barbell is designed to be worn in the tongue. The wearer can exhale a 30-foot-cone of fire three times per day.
This spell grants the creature you touch the ability to understand any spoken language it hears for the next hour. Moreover, when the target speaks, any creature that knows at least one language and can hear the target understands what it says.
This coil of muscle terminates in a sharp barb. When you
attune to it, this [[daelkyr]]-bred tongueworm attaches to your
throat and nestles under your tongue.
You can make an unarmed strike using the tongueworm, piercing an enemy with the barb and potentially poisoning the target.
<<list-links-article "[tag{!!title}sort[title]]">>
This rough and tumble tavern
is run by a [[shifter]] named Boz. While it caters to the shifter community
of [[Tavick's Landing]], Boz welcomes customers of
all races, and anyone willing to discuss [[hrazhak]]
always finds a warm welcome. This is the best place
to come to bet on hrazhak matches or to find out
about the shifters of [[Sharn]].
Little more than a heavy stockade around a collection of homes, barracks, and a single fortified tower, Torch Keep began as a simple lighthouse to aid sailors
in navigating the Hilt. The isolated location required
the addition of homes and some services to maintain
the lighthouse. Attacks by wild creatures from the nearby [[Daggerwood]] forced the
construction of more elaborate defenses and the addition of a garrison. The garrison’s small magical arsenal prompted raids by brigands, forcing the keep to
enlarge yet again until the site has become something
between a lighthouse and a true fortress. Assignment
to the keep is viewed as a six-month sentence by most
posted there. The location is not far from [[Sharn]], but
leaves to visit the city are granted only rarely. The keep
is reputedly haunted, and the glare from the powerful beacon atop the keep’s only tower ensures that no night’s sleep is entirely restful.
''District Type: ''Theater district<br/>
''Buildings: ''Theaters (9), temple ([[Olladra]]), poor
lodging (40), poor food (75), poor trades (90), poor
services (115), poor residences (60)<br/>
''First Impression:'' Noisy crowds press into crowded
theaters, and the sounds of bawdy music and roaring
audiences fill the streets.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Center Bridge]] (southwest); [[Firelight]] (south); [[Granite Halls]] (bridge, northwest); [[Olladra's Kitchen]] (bridge, north); [[Cogsgate]] (bridge, northeast); [[High Walls]] (bridge, east); [[Smoky Towers]] (above)
Torchfire is the most notorious district in [[Menthis|Menthis Plateau]],
though its offerings are relatively tame compared
to those of [[Firelight]]. Its theaters, particularly the
[[Ten Torches]], are known for racy musical comedy
designed to appeal to rowdy audiences.
!! Noteworthy Locations
* [[Gailan's]]. This dinner theater provides food and performances that are a step above the lowbrow entertainment found in the rest of the district.
* [[Ten Torches]]. The cheapest ticket in [[Sharn]]'s theater scene, Ten Torches alternates between lowbrow comedy and bizarre shows that no respectable theater would stage.
The Torlaac Bay lies off the coast of [[Darguun]], and is fed by the [[Torlaac River]].
This expanse of blasted heath and stone runs along the eastern base of the [[Seawall Mountains]]. Ruins from the time of the [[Dhakaani Empire|Dhakaan]] are
believed to dot the moor, and subterranean dungeons hide
beneath the mire. Members of the [[Kech Volaar]] clan have
spent a great deal of time exploring the area, but the moors
are vast and hide their secrets well.
The Torlaac River in [[Khorvaire]] is a short river that flows from the [[Seawall Mountains]] in [[Darguun]] into [[Torlaac Bay]].
A creature that ingests this poison and can't resist its effects is poisoned for <<dr "4d6">> hours. The poisoned creature is incapacitated.
Torrn is one of the three clans of the [[dragonmarked house]] [[Tharashk]]. Although some Tharashk heirs follow the path of the [[Dragon Below|Cults of the Dragon Below]] (including many members of the [[Aashta]] clan), others respect the
teachings of the [[Gatekeeper|Gatekeepers]] [[druid]]s. This tradition is
especially strong in the Torrn clan; PCs who have ties
to the Gatekeepers might receive aid from Torrn heirs. Of the three clans, Torrn also has the highest percentage of full-blooded [[orc]]s.
!! Members of the Torrn clan
<<list-links-article "[tag{!!title}category[person]sort[title]]">>
The Torva River in [[Khorvaire]] flows from the [[Endworld Mountains]] into [[Stormwreck Bay]]. The river flows through [[Q'barra]] and bifurcates near the [[dragonborn]] settlement of [[Ka'rhashan]], forming the distributary [[Crimson River]].
Torval Enkiliost, [[dragonmark]]ed heir of an obscure branch of the [[Lyrandar]] family, leads a shadowy operation known as the Stormwalkers. Throughout the latter half of the [[Last War]], the Stormwalkers smuggled fugitives and spies to [[Stormhome]],
where they could attend clandestine meetings and engage in cloak-and-dagger activities on neutral ground. The intelligence that Torval gathered along the way kept House Lyrandar one step ahead of its rivals. Even though the war is over, many still pay handsomely for a secret voyage to Stormhome.
Massive idols are spread across the northwestern coast of [[Argonnessen]], carved to resemble the heads of mighty [[dragon]]s. The [[Seren]]s consider this sacred ground, and often gather along the beach to perform holy rites. Most of the Seren tribes have a patron (whom they consider to be a god) among the lords of the [[Vast]]. A few dominion lords have given their tribes' mightiest warriors, the [[Totem Guardians]], permission to settle along the beach and in the [[Great Barrier Mountains]], and these [[Seren]]s fiercely defend this territory from foreign invaders.
The Totem Guardians are not a [[Seren]] tribe. Rather, they are an alliance of elite soldiers drawn from many tribes. These are the defenders of [[Totem Beach]] and the [[Great Barrier|Great Barrier Mountains]] of [[Argonnessen]]. Their recruits are drawn from the dreams of dragonspeaker priests who receive dream-visions ordering particular warriors to Totem Beach to join the guardians. In a few special cases, [[dragon]]s have personally visited a tribe to call a [[Seren]] to the guardians.
Every week in the [[Harbor]] district in [[Stormreach]], the [[Wavecrest Tavern]] holds its famed arm wrestling tournament, drawing contestants from across
the city to test their strength. Winners receive 1 c
and free drinks for the rest of the evening.
!! Arm Wrestling at the Wavecrest
Arm wrestlers sit at a wooden table, their hands
strapped together (to prevent slipping). Before the
match begins, the arm wrestlers can attempt to intimidate their opponent while the referee, a grubby [[goblin]] named Granks, straps their hands. On Granks’s mark, the contest begins. The victor is the first one to slam their opponent’s hand down on the table.
Any PC entering the competition faces the following competitors in turn.
# ''Bredoln Laranak:'' This hulking [[dwarf]] is broader in the shoulders than he is tall. Hailing from the [[Mror Holds]], Bredoln finds the wild atmosphere of [[Stormreach]] more to his liking. He is a master of intimidating the opposition with a cold hard stare and a practiced facial twitch. After the match, his stony face immediately softens and he laughs heartily, even buying the PC a drink whether he won or lost.
# ''Quinton Debly:'' An unlikely competitor in the contest, Quinton, a [[gnome]], fools most of his opponents because of his short stature. He removes his robe before the match, revealing a heavily muscled frame that puts most [[human]]s to shame. His faith in [[Dol Dorn]] makes him especially skilled in contests of strength. Before the match, he prays, enhancing his strength using a burst of [[divine magic]]. If Quinton wins, he immediately leaps onto the table, flexing his biceps for the roaring crowd.
# ''Goragga:'' A laborer in [[Graystone]], Goragga is remarkably clever and charismatic for an [[ogre]]. She joined the [[Tharashk]] workforce out of a desire to see distant lands and enjoys meeting newcomers in taverns. She studies her opponents over the course of an evening; she can enter a barbarian rage only once per day, and wants to be sure to save it for her most able challenger.
This long-sleeved shirt is made of heavy cotton that constricts when it senses a bleeding wound, helping stabilize the wearer when they are injured.
The [[wizard]] Toven d'Cannith directed [[Cannith]] operations in [[Xen'drik]] for the last twenty years. However, in the wake of the Day of [[Mourning]], [[Merrix d'Cannith]] assumed control of the house’s southern
operations. Merrix dispatched one of his personal
protégés, an [[artificer]] named [[Channa|Channa Vown d'Cannith]] of the Vown
family, to take over the [[Stormreach]] facilities and
replace the majority of the staff with people loyal to
Cannith South. However, Toven d’Cannith holds an
independent position within the [[Twelve]] and continues to work at the [[citadel|Citadel of the Twelve]] in this capacity. Bitter tensions seethe in the citadel’s shadows.
Toven is a [[Seeker|Blood of Vol]], but practices his faith quietly due to its poor reputation, even in [[Stormreach]].
The [[Thousand Eyes]] of [[Riedra]] makes
no secret of its presence in the [[Jhodra]] of [[Dar Jin]]. The Tower of Eyes
is a spire of whorled black stone. Chunks of embedded
glowing green [[crysteel]] give the impression of gleaming
eyes gazing out across the foreign quarter. While the Eyes
have hundreds of hidden agents, the streets of the [[Jhodra]]
are patrolled by overt guardians dressed in distinctive
green-and-black uniforms. Any [[Riedran|Riedrans]] can come to
the tower to report criminal or suspicious activities, and
the [[Thousand Eyes]] will either respond alone or bring in
[[bastion guard|Bastion Guard]]s to deal with the problem.
The commanding officer of the Jhodra Thousand Eyes is Lady Malesha ([[usvapna]] [[Inspired]] telepath), who personally handles interrogation of prisoners.
Other important figures are Lord Tulkath ([[hashalaq]] [[Inspired]] kineticist), who can use [[trace teleport]] and [[psionic dimensional anchor]] to help apprehend criminals,
and Lady Dardhuna ([[hashalaq]] [[Inspired]] seer), a specialist in psionic [[scrying]].
A blocky stone tower in [[Wroat]] (capital of [[Breland]]) midway between [[Brokenblade Castle]] (King [[Boranel|Boranel ir'Wynarn]]’s palace) and [[Parliament Hall]], the Tower of
Inquisition is used for the interrogation of prisoners apprehended by House [[Medani]] or by King Boranel’s agents. It is also where Baron [[Trelib d'Medani]] manages the [[Warning Guild]]’s affairs. Those who visit as diplomats see only a few well-appointed pavilions near the top of the tower. Those who are subject to Medani interrogation in the warrens below rarely speak of what they’ve seen—and since they’re usually imprisoned by [[Breland]] or another authority afterward, they have few opportunities to describe their experiences.
If [[Coasthold]] can be likened to a fortress, then the
Tower of Kol Korran is the unbreachable keep within.
The tower is the most secure structure in the city of [[Stormreach]], and
House [[Kundarak]] has taken every precaution to ensure
that it stays that way. The [[dwarves|dwarf]] even removed the
tower from direct view, surrounding it with a massive
circular wall several feet thick. A lone gatehouse near
the [[Kundarak enclave|Kundarak Enclave (Stormreach)]] is the only means of entering
the tower’s courtyard, and the gatehouse and its doors
are covered in protective wards.
Nobody outside House [[Kundarak]] knows what goes
on inside the tower. Whatever it is, locals know it has
little to do with the god [[Kol Korran]]. In the months after
the tower’s construction, followers of Kol Korran would
approach the tower, seeking to offer prayers there, only
to be turned away by guards. When asked to clarify the
tower’s purpose, the guards confirmed that it was no house
of worship but an extension of the [[enclave]], where important matters of house policy and security could be tested. The agreement the house had made with the city forbade
any interference from the [[Storm Lords]], and the enclave’s presence in [[Stormreach]]—outside the reach of the [[Korth Edicts]]—forbade any interference from the other [[dragonmarked house]]s. Some burglars could not resist testing the tower’s security, but each one disappeared soon after, never to be seen or heard from again.
!! Secrets of the Dark Tower
Many residents see how protective and secretive the [[Kundarak]] [[dwarves|dwarf]] are about their mysterious inner keep, but that’s where it begins and ends. Even
the most curious trust the dwarves not to be involved in anything that could put the city in danger—and in that, they are mistaken.
In reality, the Tower of Kol Korran is little more
than a glorified tent existing primarily as concealment
for what lies beyond. When the [[Kundarak]] dwarves first
arrived in [[Stormreach]], they found a substantial tract of open land on
the eastern edge of the city, an area that had curiously
escaped modern development until their arrival. Not
one to look a gift horse in the mouth, the head of the
operation, an ambitious noble named [[Korbek Ghedin|Korbek Ghedin d'Kundarak]],
immediately staked a claim and began working on the
plan that would one day transfer ownership of the area
to his house.
Early in the process, [[Kundarak]] surveyors made a remarkable discovery. They unearthed a massive opening to a huge subterranean chamber. When Korbek saw what lay below, he could scarcely believe his eyes: a cavernous underground complex containing treasures untold from the [[days|Age of Giants]] when [[giant]]s ruled the city. His first act was to erect scaffolding around the site, both to hide the cavern entrance and to assist in the construction of a more permanent structure—a
secure tower, to be named in honor of the god of commerce and wealth.
Unknown to the dwarves, the ancient chamber
was as much prison as it was vault, and the shattering
of its borders and wards resulted in unseen chain
reactions. Among these unforeseen consequences
was the accidental release of what is now the area’s
oldest living resident, a giant imprisoned here
before the fall of its civilization—[[Antaegus]].
However, the greatest risk posed
by the operation is its proximity to the resting place of [[Sakinnirot]], the Scar that Abides. The deeper the dwarves dig, the more
they open the channel between the sleeping [[overlord]] and
the unsuspecting city above—and the stronger Sakinnirot grows.
Today, the tower serves two purposes beyond
concealing the existence of the underground complex. First, its spacious interior hosts the processing of all ores mined beneath it, as well as the study of all
relics from the [[Age of Giants]]. Second, the tower acts
as a massive focal point for all the warding magic
placed in and around it, precautions intended not
only to keep intruders out but also to keep the area
secure in the unlikely event of something wicked
crawling up from the depths. [[Korbek Ghedin|Korbek Ghedin d'Kundarak]] is, as
ever, confident in the strength of these measures, but even he has no idea just what waits in the dark heart of the [[Dragon Below|Khyber]].
!! Getting Involved
Any number of avenues can lead a party of characters into investigating House [[Kundarak]]’s affairs in [[Stormreach]]. The most direct of these might involve
the PCs being hired—or, in the case of certain [[dragonmark]]ed party members, commanded—to surreptitiously uncover the truth surrounding the [[dwarves|dwarf]]’
secret tower. Given the power dynamics at work in the city, the most logical candidate for such a brazen request would be [[Storm Lord|Storm Lords]] [[Paulo Omaren]], with or without the assistance of her dragonmarked paramour, [[Greigur d'Deneith]]. The [[Omaren family]] interests lie at odds with Storm Lord [[Amanatu|Yorrick Amanatu]]’s, and have for some generations now. If one of the PCs is a scion of
House [[Deneith]], they could scarcely refuse an offer from
its local leader. Alternatively, Omaren might use one
of her allies among the [[Iron Watch]] to persuade the
characters to get involved, especially if one of them is
a [[warforged]]. Either way, the DM has to decide whether
or not to make her and/or Greigur’s involvement
known from the start.
If a somewhat less risky setup is called for, consider
the following: [[Korbek Ghedin d'Kundarak]] owes the continued
privacy and prosperity of his operation to his own
mind—not merely for its quick thinking and shrewd
negotiating skills, but also for his gifts of manipulation and telepathy. He uses [[psionic|psionics]] charms the way
veteran diplomats use bribes, and he always makes sure
that all involved leave with clear consciences and fat
purses. In the course of these many manipulations, the
PCs could easily come across one of Korbek’s former
associates whose recollections of things don’t precisely
match those of the PCs, thanks to the [[dwarf]]’s application of [[modify memory]]. The most logical possibility
for such a role would be [[Amilene Santor d'Sivis]], the
head of the local House [[Sivis]] operation, who has been
psionically manipulated by Korbek more than any
other character in [[Stormreach]]. (Both her close proximity and her arcane knowledge are potential threats to him, and he has chosen to handle her directly and
aggressively, confi dent in his ability to blame any memory gaps or behavior incongruities on the old [[gnome]]’s eccentric good humor.)
It’s also possible for the PCs to find themselves investigating the tower as part of the unfolding of the larger story about [[Stormreach]]’s true origins and the
existence of [[Sakinnirot]]. Despite the many [[guards and wards]], a capable and determined researcher could eventually trace the rumors of the existence of the
Scar that Abides back to [[Coasthold]]. If you decide to
bring this metaplot to the fore in your campaign,
then it makes sense for the characters to eventually
find themselves at the entrance of the Tower of Kol Korran—the literal doorway to hell.
However you ultimately decide to reveal the story of the tower, it’s worth noting that any direct assault on the tower is probably doomed to fail. The wards
are exceedingly strong and complex, and [[Korbek|Korbek Ghedin d'Kundarak]]
is instantly aware of anything that happens to any of his many sentries. The PCs could target Korbek himself, but he is a truly terrifying opponent, and he’s never without his bodyguard [[Yarik|Yarik Ghedin d'Kundarak]]. Any physical
confrontation with Korbek would be a stiff challenge for even the mightiest of Eberron’s adventurers. Although he’s not eager to lose his primary advantage in [[Stormreach]], Korbek is not a stupid person. Given proof of the true threat, he might be persuaded to end his tower operation of his own accord, if you decide to allow the PCs to resolve the matter without combat.
This courthouse is where people need to go to acquire licenses to carry weapons or use magic within [[Upper Tavick's Landing]]. The primary clerk who deals with suspicious individuals is an old [[dwarf]] named Billan Tosh. Billan is an expert at spotting forgeries. He also has a pair of spectacles that provide
him with the benefits of [[arcane sight]], and if he detects any
use of magic he triggers an alarm summoning guards—
so the use of magical charms might backfire. Billan is a
low-level member of the [[Aurum]], and the character's
relationship with the Aurum may affect their ability
to acquire licenses; alternatively, he can offer to grant
a request if the characters perform a service for the
Aurum. Because of his Aurum connections, he proves
difficult to bribe; he is well paid for his services.
The spymaster of the [[Zilargo]] embassy has an agent in the records department: Janesta Banton, a [[gnome]] scribe and clerk. As a result, the gnomes can easily gain access to the many details people must provide to obtain a license.
The heart [[demiplane]] of [[Sul Khatesh]] is a tower built from black stone traced
with silver. It glitters in the light of three unfamiliar crescent
moons. Here, it's always night, and the servants of the Keeper
of Secrets sing paeans to the moons as they perform bloody
sacrifices and trace eldritch symbols in the soil. The tower holds
a library of dark secrets, and beside it, a scriptorium where
[[fiend]]s scribe the books of shadows that may be given to mortal
warlocks. Beneath the city of [[Ashtakala]] in the [[Demon Wastes]]
lies a portal to the Tower of Shadows, and the [[rakshasa]] [[Hektula]]
dwells here when she's not tending to the library of Ashtakala.
The Tower of Shadows has the //Universal Understanding// property of [[Syrania]] and the //Eternal Shadows// property of [[Mabar]].
The Tower of the Eyes is the headquarters of the [[Royal Eyes]] of [[Aundair]], and stands inside the compound of
[[Fairhold]] in [[Fairhaven]], a slender white tower adorned with a carving
of a pair of heavy-lidded eyes—the sole suggestion of
its purpose. The tower contains the organization's collected lore, which includes information on the various
powers and personages in the [[Five Nations]]. Dossiers
on spies, nobles, heirs, politicians, and other important
personnel occupy rooms deep down in the structure,
each protected by magic wards. Training facilities,
offices, and armories containing ritual scrolls, [[magic item]]s, and coin fill out the remainder of the tower.
The Towering Wood is the massive primeval forest that covers most of the area of the [[Eldeen Reaches]]. It is vast and untamed. The [[Wardens of the Wood]] seek to protect travelers, but swathes of forest remain entirely untouched by [[human]] or [[shifter]]. Such areas could hold giant beasts never seen in the outside world, or relics from a previous age—artifacts or ruins created by [[demon]]s or the terrifying [[daelkyr]].
The Towering Wood includes the [[Gloaming]] and the [[Twilight Demesne]].
Four great fortresses essentially define the border
between [[Aundair]] and [[Thrane]] to the west and
[[Breland]] to the south. [[Wrogar Keep]], [[Tower Valiant]],
and [[Tower Vigilant]] stand along the Thrane border,
while [[Vanguard Keep]] guards the plains between the
[[Blackcaps|Blackcap Mountains]] and the [[Eldritch Groves]], near the border
with Breland. Each fortress has a high watch tower
surrounded by magically fortified walls and less obvious magical defenses.
A brigade of about 700 soldiers garrisons each
keep, with the equivalent of a tiny village helping to
supply the soldiers with food, arms, and repairs. The
soldiers include standard infantry, archers and [[wand-wielding specialists|wandslinger]], and at least one unit of cavalry or dragoons (mounted infantry).
The great [[dragonmarked house]]s are the barons of industry and commerce
throughout [[Khorvaire]] and beyond. These dynastic
houses of commerce derive their power partly from their [[dragonmark]]s, but each house has economic as well as magical dominance in its area of influence. House [[Cannith]]’s [[Mark of Making]] makes its dragonmarked heirs the best [[artificer]]s and artisans in
[[Khorvaire]]. But House Cannith also operates crafting guilds whose unmarked [[magewright]]s and crafters benefit from the best training possible.
!! Trade Guilds of Khorvaire
<ul>
<$list filter="[tag[dragonmarked house]sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag[trade guild]tag<currentTiddler>sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
''District Type:'' Marketplace<br/>
''Buildings:'' Open-air market, temple ([[Kol Korran]]),
average lodging (9), average food (45), exotic trades
(15), upscale trades (50), average trades (140), poor
trades (40), upscale services (20), average services
(60), poor services (20)<br/>
''First Impression:'' This district is awash in colorful
signs and tents. The shouts of barkers rise above the
noise of shoppers, and a dozen scents—from sweet
perfumes to sizzling meats—fill the air.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Ambassador Towers]] (southwest); [[Sovereign Towers]] (southeast); [[Oakbridge]] (bridge, northeast); [[North Towers]] (below); [[Platinum Heights]] (above)
Tradefair, the mercantile hub of the [[Central Plateau]],
boasts the quarter's only [[open-air marketplace|Tradefair Market]], along
with a thriving collection of trades and services.
Tradefair Market, the open-air marketplace, operates daily during daylight
hours. In contrast to other marketplaces in the city,
Tradefair has regulations about stall spacing that
ensure relatively straight, wide, and open (though
crowded) aisles for customers to walk through. The
goods available in Tradefair are generally of high
quality, and an abundant number of House [[Cannith]] tinkers can be found to make repairs through
mundane or magical means. A permit to sell in
Tradefair Market for one day costs 0.5c, which certainly guarantees a certain level of quality among the merchants present, and keeps the market from
becoming overcrowded.
Traglorn Isle is an island in the [[Lhazaar Principalities]]. The rainforest of Traglorn is inhabited by a small number of [[shifter]] tribes, including the Sun-Kin tribe.
Someone needs to lay the [[lightning rail]]'s [[conductor stone]]s and plant the
[[trade road|Orien trade roads]] runic anchors. The Trailblazers of House [[Orien]] are
the scouts who explore new routes and lay the first stones. A player character who has ties to the house could easily be called in to work with the Trailblazers.
Followers of the Transcendent Flesh walk the paths of the Foul Labyrinth in a quest to evolve beyond the bodies they were born in. They work with [[mind flayer]]s and other minions of [[Dyrrn]] the Corruptor, receiving their payment in [[symbiont]]s, [[warlock]] powers, or other forms of physical or mental transformation.
This small, fragile glass ball is imbued with a [[teleport]] spell. When broken, it takes up to 9 willing creatures within 10 feet of it to a predetermined location (determined when creating the orb, and not necessarily known to the user). It has no effect on unwilling creatures.
Transmutation is the most prominent
beauty salon in [[Sharn]]. The salon employs both magical and mundane cosmetic techniques. See [[cosmetic transmutation]].
A student of transmutation casts spells that modify energy and matter.
To them, the world is not a fixed thing, but eminently
mutable. They wield the raw stuff of creation and learn to alter both
physical forms and mental qualities. Their magic gives
them the tools to become a smith on reality's forge.
Some transmuters are tinkerers and pranksters,
turning people into toads and transforming copper into
silver for fun and occasional profit. Others pursue their
magical studies with deadly seriousness, seeking the
power of the gods to make and destroy worlds.
See also [[cosmetic transmutation]].
!!! <<showspells-school {{!!title}}>>
Perhaps the largest of all the [[dragonmarked guild|trade guild]]s, the Transportation
Guild of House [[Orien]] deals with both cargo and passengers. Tens of thousands of people work for the guild, preparing goods for shipment, running the [[lightning rail]], maintaining the [[trade roads|Orien trade roads]], and performing the many unseen jobs that keep people and goods moving across
[[Khorvaire]].
The Traveler touches the domains of many other [[Sovereigns|Sovereign Host]].
Like [[Aureon]] and the [[Shadow]], the Traveler is a source of
knowledge. Along with [[Olladra]] and the [[Mockery]], it is a patron
of those who rely on deception and cunning. Like [[Onatar]] and
the [[Fury]], it can provide inspiration to the artisan. Both those
who fear the Traveler and those who revere it agree on one
thing: whatever gifts the Traveler gives, they always lead to
chaos. If the Traveler gives you knowledge, it's because the revelation will force you to reevaluate everything you have
known. If it helps you deceive, it's because your actions will
introduce chaos and crisis—whether into your life or the lives of
others. [[Onatar]] will teach a swordsmith to make a better sword;
the Traveler might show them how to make a bomb, changing
the face of warfare. The Traveler isn't here to satisfy your greed
or to grant your ambitions. Instead, it will set you on paths
you never thought to try. This may sometimes grant you good
fortune, but when you call on the Traveler, you're inviting the
unexpected into your life.
One of the more infamous Traveler cults within the [[Five Nations]] is hidden within House [[Cannith]]. While Onatar is the acknowledged patron of House Cannith, some believe that the Traveler is the source of dramatic inspiration,
helping [[artificer]]s make unforeseen breakthroughs. Those
who invoke the Traveler know that its gifts will surely have
a cost and could shake the foundations of civilization, but
they still yearn for that grand discovery. Many in House
Cannith believe that [[Aaren d'Cannith]]—the inventor of the
sapient [[warforged]]—was a Traveler cultist; others assume that
the [[Mourning]] may have been the work of a Cannith heir
following the path of the Traveler.
Some who follow the Traveler are tricksters, causing chaos with no clear agenda. But others see themselves as guides, playing tricks on people in order to teach them lessons. Guides seek to challenge established traditions, laws, or institutions—not necessarily to destroy them, but to ensure that they haven't outlived their usefulness. Still others are wanderers, embracing a life of constant change. The [[changeling]] travelers fall into this category, believing that as long as they remain in motion, the Traveler will guide and protect them. Ultimately, the Traveler will throw your life into chaos—for it's by adapting to this chaos that people grow.
The Traveler's symbol is four crossed, rune inscribed bones.
The [[shifting zone]]s of [[Xen'drik]] make it a wildly unpredictable
realm, but they are not the only challenge facing travelers and cartographers. A force is at work in Xen’drik
that defies even magical explanation—an effect that
seems to encompass the entire continent and yet does
not behave in any predictable fashion. The consensus of
the [[Morgrave|Morgrave University]] scholars is that this is a lingering effect of
the ancient cataclysm that ended the [[quori]] [[invasion|Age of Giants]], but
the first [[human]] explorers of this land had a different
explanation. They called it the [[Traveler]]’s Curse, blaming
the capricious deity of the [[Dark Six]] for the unpredictable
nature of exploration in Xen’drik.
The Traveler’s Curse twists time and distance, both
in perception and reality. Two parties of explorers set out
from [[Stormreach]] in search of a specific ruin, but though
both follow the same path, it might take the first group one
week and the second group three weeks to make the journey. No logical explanation exists. The first group might find that it has covered the distance in an impossibly short
time. The second might perceive a reasonable length for the
journey, only to find on their return to Stormreach that
far more time has passed. Under some circumstances, this
effect can be a blessing, speeding a party through dangerous terrain. However, the Traveler’s Curse can just as easily
lead explorers into unexpected danger or cause them to
arrive at a different destination than the one they sought.
This phenomenon is one reason why no reliable maps of
[[Xen'drik]] exist, and why it is always possible to stumble into
new ruins within striking distance of a settlement or in
areas the party has explored before.
The Traveler’s Curse ebbs and flows, but it seems to
have the strongest effect on those not native to the land.
Parties led by a [[drow]] or [[giant]] guide are more likely to reach
their intended destinations. Scholars have also noticed
that the effects are weaker on the few established roads in
[[Xen'drik]]—the paths connecting [[Stormreach]] to the closest
trading outposts. Some believe that aspects of //intent// are at
work: Knowledge of a destination holds back the effect, and
a strong-willed individual might resist or even control it.
The curse has no specific game mechanics associated
with it. It is an optional effect left entirely to the DM’s discretion and could change from adventure to adventure. If the PCs know their exact destination, perhaps they’ll
make it there without difficulty. Simply remember that [[Xen'drik]] is a land of mystery—and that when explorers stumble onto a hidden city that has remained undiscovered only miles from [[Stormreach]] itself, the Traveler’s Curse is what makes it possible.
Treants are awakened trees that dwell in ancient forests. Although treants prefer to while away the days, months, and years in quiet contemplation, they fiercely protect their woodland demesnes from outside threats.
A tree destined to become a treant meditates through a long cycle of seasons, living normally for decades or centuries before realizing its potential. Trees that awaken do so only under special circumstances and in places steeped with the magic of [[Lamannia]]. Treants and powerful [[druid]]s can sense when a tree has the spark of potential, and they protect such trees in secret groves as they draw near the moment of their awakening. During the long process of awakening, a tree acquires face-like features in its bark, a division of the lower trunk into legs, and long branches bending downward to serve as its arms. When it is ready, the tree pulls its legs free from the clutching earth and joins its fellows in protecting its woodland home.
After a treant awakens, it continues to grow exactly as it did when it was a tree. Treants created from the mightiest trees can reach great sizes while developing an innate magical power over plants and animals. Such treants can animate plants, using them to ensnare and trap intruders. They can call wild creatures to aid them or carry messages across great distances.
Even after awakening, a treant spends much of its time living as a tree. While rooted in place, a treant remains aware of its surroundings, and can perceive the effects of events taking place miles away based on subtle changes nearby.
Woodcutters who avoid culling healthy living trees and hunters who take only what they need of the forest's bounty are unlikely to arouse a treant's ire. Creatures careless with fire, those who poison the forest, and those who destroy great trees, especially a tree close to awakening, face the treant's wrath.
The Treaty of Thronehold is the treaty initiated by King [[Kaius III|Kaius ir'Wynarn III]], signed in the former Galifaran capital of [[Thronehold]] on 11 Aryth 996 YK (now commemorated as [[Thronehold Day]]), between the surviving four of the [[Five Nations]], formally ending the [[Last War]].
The treaty recognized the nations of [[Aundair]], [[Breland]], [[Thrane]], [[Karrnath]], the [[Talenta Plains]], [[Zilargo]], [[Q'barra]], the [[Lhazaar Principalities]], the [[Mror Holds]], the [[Eldeen Reaches]], [[Darguun]], and [[Valenar]].
The former nation of [[Cyre]], the renegade territory of [[Droaam]], the wild lands of the [[Shadow Marches]], and the [[Demon Wastes]] were not represented in the Treaty. The [[Mournland]] is unclaimed.
!! Provisions
Amongst the provisions of the Treaty of Thronehold were:
* [[Warforged|warforged]] were emancipated, the creation of any new warforged was banned, and [[Cannith]] was ordered to dismantle their [[creation forge]]s.
* [[Thaliost]], a contested state between [[Aundair]] and [[Thrane]], was formally ceded to Thrane.
* Certain acts were forbidden; for example, duels to the death in Aundair were outlawed.
* A multi-national military court was established for military criminals, which generally end in [[Dreadhold]] Prison.
* The boundaries of the remaining [[Five Nations]] were clearly established, according to their state at the end of the Last War.
This uninhabited island supposedly
hides the loot of two thousand years’ worth of pirate raids,
and tombs even older than that, dating back to the original
human settlement of [[Khorvaire]]. Legends claim that
the island was used as a hiding place for every kind of
treasure—pieces of gold, dragonshards, relics—ever gathered in a pirate raid by the ancient Lhazaarite sea princes, including the legendary pirate queen [[Lhazaar]] herself.
Unfortunately, the island is surrounded by treacherous
reefs and is home to all manner of terrible monsters and
curses, making landings difficult and prolonged searches
dangerous at best and fatal in most cases.
A longtime friend of King [[Boranel ir'Wynarn]] of [[Breland]], Baron Trelib d'[[Medani]] knows exactly what this friendship costs him: anti-Medani suspicion among the other [[dragonmarked house]]s and diplomatic difficulties for Boranel. Yet he remains at the king’s side.
Some suspect darker motives for Trelib’s close connection to the Brelish crown, and wonder just how many Medani agents and sympathizers live and work in [[Brokenblade Castle]]. But most court observers say there’s a simpler reason for Trelib’s omnipresence. King [[Boranel|Boranel ir'Wynarn]] has charged Trelib with figuring out who murdered Boranel’s first wife, Queen Chaseva. House [[Medani]] elders know that Trelib is consumed with finding the killer, even to the point of neglecting house business.
A tressym is an intelligent winged cat as big as a house cat, with a wingspan of three feet. The tressym's loyalty to its owner, as well as its ability to detect poison and invisibility, make it a valuable [[familiar]] for [[inquisitive]]s or adventuring [[wizard]]s.
Tressym were [[magebred|magebreeding]] by House [[Vadalis]] in a collaboration with House [[Medani]] and the [[Twelve]] just twenty-four years ago.
<ul>
<$list filter="[tag[tribe]] -[tag[tribe]tagging[]] +[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[tribe]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[tribe]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[tribe]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
<ul>
<$list filter="[tag<currentTiddler>tag[tribe]] -[tag<currentTiddler>tagging[]]+[sort[title]]">
<li>{{!!article}}<$link/></li>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
</$list>
</ul>
A tribex is a deer-like mammal native to [[Khorvaire]]. Tribex have three horns, a bony headplate, and a lion-like tail. The animal most commonly referred to as a "tribex" could more accurately be described as a "plains tribex", found in large numbers in the [[Talenta Plains]] and used as livestock. But the tribex has relatives in a range of environments, as varied as moose, elk, and deer.
For thousands of years, the plains tribex has been bred as a beast of burden and source of food. The [[magebred|magebreeding]] //riding tribex// is smaller and faster—sturdier than a horse and capable of enduring long, sustained trips.
When you or another creature draws a card from this deck of standard playing cards, you can control which card is drawn.
This trident is a magic weapon. While you carry it, you can cast [[dominate]] from it on an aquatic beast. You can use this magic up to three times per day.
The Triumvirate rules [[Zilargo]]. This council, composed of a
representative from each of the major cities of [[Korranberg]],
[[Trolanport]], and [[Zolanberg]], was founded as an oversight
committee to monitor the behavior of students and patrons
of the [[Library of Korranberg]]. The powers and duties of the
Triumvirate slowly expanded to cover the entire nation.
Each of the three cities has its own Council of Nine, [[gnome]]s
drawn from wealthy families who manage local civic concerns. In theory, the city’s representative to the Triumvirate
is democratically selected from its council. In practice, the
process is anything but democratic, as secret wars of words
and blackmail determine power within each council.
The [[Trust]], the secret order that protects [[Zil|Zilargo]] society, reports directly to the Triumvirate. It has a coordinator in each city who works with the local council. Few realize that the Triumvirate possesses an impressive vault of information concerning political, military, and economic activities that rivals that of the [[Library|Library of Korranberg]], thanks to the work of the Trust.
The savage, degenerate troglodytes squat in the shallows of [[Khyber]], marking the borders of their territories with cracked bones and skulls, or with pictographs painted in blood or dung.
Perhaps the most loathsome of all humanoids, the reptilian troglodytes eat anything they can stomach. They dwell in filth. The walls of their cavern homes are smeared with grime, oily secretions, and the debris of their foul feasting. The odor excreted by troglodytes is so revolting that it is poisonous to non-troglodytes when inhaled at close range.
Many troglodytes live in caverns under the jungles of [[Q'barra]], and serve the [[Poison Dusk]]. Others worship aspects of the [[Devourer]] and the [[Mockery]], or whichever [[overlord]] is bound in the [[Age of Demons]] ruin they might dwell within.
The Trolan River in [[Zilargo]] flows past the capital city of [[Trolanport]] into the [[Thunder Sea]].
With its crisscrossing canals and flooded streets, the
capital of [[Zilargo]] serves as the center of the [[gnome]] shipbuilding industry and a nexus for trade. Scores of ships
make port here daily. Among the many beautiful things
the city is known for are its spectacular coastal thunderstorms. Crowds gather on balconies and verandas to
watch these awesome displays.
The Tower of the [[Triumvirate]] rises over the central
portion of the city. House [[Kundarak]], House [[Sivis]], and
House [[Cannith]] maintain outposts in the city, and the
other [[dragonmarked house]]s station agents here as well. Trolanport is also home to the great [[elemental binding]] guilds.
A troll eats anything that moves, from grubs to [[human]]s, and is rightly feared fro its ravenous appetite, feral cunning, and remarkable regenerative power.
Trolls stand about 9 feet tall and weigh between 400 and 500 lbs. Their skin is usually shades of moss green, putrid gray, or some mottled combination of the two, and their long ropy hair is black, gray, or dark green. Their long, ungainly arms end in massive clawed hands, and they possess darkvision and an enhanced sense of smell.
Smashing a troll's bones and slashing through its rubbery hide only makes it angry. A troll's wounds close quickly. If the monster loses an arm, a leg, or even its head, those dismembered parts can sometimes act with a life of their own. A troll can even reattach severed body parts, untroubled by its momentary disability. Only acid and fire can arrest the regenerative properties of a troll's flesh. The trolls, enraged, will attack individuals making acid and fire attacks against them above all other prey.
Their regenerative capabilities make trolls especially susceptible to mutation. A decapitated troll might grow two heads from the stump of its neck, while a troll that eats a fey creature might gain one or more of that creature's traits.
Trolls are proud of their strength, and enjoy engaging in
tests of strength, like tug of war or lifting, with other trolls or
[[ogre]]s. While they generally dismiss smaller creatures, a troll is
impressed by anyone that performs remarkable feats of strength;
they generally respond better to intimidation than to diplomacy.
An aquatic variety of troll, known as a ''scrag'', is known to inhabit bodies of water off the southern coast of [[Khorvaire]], especially in the waters around [[Tempest Isle]].
!! Trolls of Droaam
Trolls are native to all four major continents of Eberron, but most of the trolls on [[Khorvaire]] have fled to [[Droaam]]. There, many of them serve as elite guards of the [[Daughters of Sora Kell]]. Others serve the daughters in a different way: in grist mills, the flesh of living trolls is carved off and formed into sausage to sustain the burgeoning population of the nation; the trolls regenerate and the process begins again. This "[[grist]]" would normally be completely inedible, but the Daughters have a secret alchemical process that makes the sausage palatable, if not exactly delicious.
Like skullcrusher [[ogre]]s, the war trolls of [[Maenya's Fist]] ([[creature tier]] ''3'') are
a unique subspecies that may be the result of [[magebreeding]].
They are utterly devoted to [[Sora Maenya]] and to [[Droaam]]. War trolls are stronger, smarter, and more skilled than their ordinary counterparts, and typically wear plate armor and wield sophisticated weapons.
Mutated [[kuo-toa]]s and other [[aberrant|aberration]] creatures
occupy this abandoned city in the [[Mournland]], which was once a major
stop on the [[lightning rail]]. The cityscape has been
warped beyond recognition. Its inhabitants raid the
[[Talenta Plains]] from their twisted homes in Tronish,
or from holds near [[Lake Cyre]] or the [[Crimson Water]].
The [[halfling]]s of [[Gatherhold]] whisper that some
nameless horror directs the activity in Tronish from
the depths of one of those bodies of water. They
note the weird lights that flash and glow in western
Lake Cyre.
The Tropic of Lharvion is the northernmost latitude at which the sun can be seen directly overhead during the [[Lharvion|Khorvaire calendar]] equinox.
The Tropic of Zarantyr is the southernmost latitude at which the sun can be seen directly overhead during the [[Zarantyr|Khorvaire calendar]] equinox.
While you wear these black pinstripe trousers, you become up to five inches taller or shorter, depending on your preference. This is a temporary [[cosmetic transmutation]] effect and not an [[illusion]].
While you wear these trousers, you can run twice as fast for up to 10 minutes per day.
This spell requires a one-hour ritual and 2500c worth of ritual components, which are expended.
You touch a creature that has been dead for no longer than 200 years and that died for any reason except old age. If the creature's soul is free and willing, the creature is restored to life.
This spell closes all wounds, neutralizes any poison, cures all diseases, and lifts any curses affecting the creature when it died. The spell replaces damaged or missing organs and limbs. If the creature was [[undead]], it is restored to its non-undead form.
The spell can even provide a new body if the original no longer exists, in which case you must speak the creature's name. The creature then appears in an unoccupied space you choose within 10 feet of you.
Performing this spell is risky; drawing a spirit back from [[Dolurrh]] might catch the attention of a Dolurrhi [[marut]], or even bring back the wrong spirit, causing a ghost to manifest or ending up with a hostile personality in your friend's body. This is why [[Jorasco]] healers capable of resurrection typically cast [[augury]] first, and will refuse service if the result is "woe". For more information, see the "Concerning Resurrection" section of [[Dolurrh]].
When the
[[Thuranni]] were part of House [[Phiarlan]], they oversaw the [[Demesne of Shape]], home to the material arts.
Following the [[Shadow Schism]],
House Thuranni retained possession of the demesne, located
in [[Atur]] in [[Karrnath]]. When
House Phiarlan established a new
Demesne of Shape in [[Thaliost]],
House Thuranni renamed its
enclave the True Shapers. It is home
to some of the finest masters of
architecture, costuming, sculpture,
and painting; students come from
across [[Khorvaire]] to learn from them.
A creature with truesight can, out to a specific range, see in normal and magical darkness, see invisible creatures and objects, automatically detect visual illusions, and perceives the original form of a shapechanger or a creature that is transformed by magic.
The rolling Trumpet Mountains in northern [[Thrane]] are the region of highest elevation in that nation. They are considered an extension of the [[Starpeaks]] in [[Aundair]].
If the peaceful streets of [[Zilargo]] seem too good to be
true, it’s because they are. The security enjoyed by
the [[gnome]]s of this land comes at a price. The nation
is patrolled by an order of secret police—spies and
assassins who answer only to the [[Triumvirate]], and
who are authorized to preserve the peace by any
means necessary.
A foreigner who finds himself on the wrong side of
a first offense in [[Zilargo]] is likely to be given a second
chance. Perhaps he’ll find a mild poison in his drink,
along with a warning to watch his step. A thief might
have her ill-gotten gains stolen back before she can
fence them, replaced with a note ordering her to flee
the country at once. Targets who do not listen, or who
go too far, are simply eliminated.
Agents of the Trust do their best to perform assassinations quietly. Poison is a favorite tool, but not the
only one at their disposal. However, the Trust seeks
to act before a crime has been committed whenever possible. Characters planning sedition or a heist are
likely to receive a whispered illusory warning from
unseen agents—a warning they would be wise to heed.
It is possible to outwit the Trust, since its agents
can’t be everywhere at once. However, the air of omnipresence and omniscience generated by the order is
enough to keep most would-be criminals in line.
Few realize that this web of spies is also active in nations across [[Khorvaire]]. The [[gnome]]s believe knowledge is the greatest weapon of all, and
Trust agents endlessly search for secrets that could
prove useful to their nation.
The Trust began as an oversight force within the [[Library of Korranberg]], eventually
expanded to encompass the entire nation. Over the last two centuries, it has spread beyond [[Zilargo]], becoming one of the most efficient intelligence-gathering agencies in [[Khorvaire]]. The Trust intervenes only in matters that threaten the public peace or the
security of the nation. As a result, private intrigues
abound in Zilargo, but their perpetrators must be
careful to keep their schemes and conflicts from
escalating from private to public.
!! Known Members
<<list-links-article "[tag{!!title}sort[title]]">>
A creature that ingests this poison and can't resist its effects is poisoned for up to 1 hour. The poisoned creature can't knowingly speak a lie, as if under the effect of a [[zone of truth]] spell.
Tsoreva [[quori]] serve as expendable troops in any battle on [[Dal Quor]] or as [[Inspired]] shock troopers on [[Eberron]]. These quori relish battle. They serve as the infantry under a [[du'ulora]]'s command. Every tsoreva wants only to die well, returning as an honored soldier to the [[Dreaming Dark]].
Tsucora [[quori]] are nightmarish creatures. Their headless torsos are covered with eyes and twitching limbs, including two massive arms that end in powerful pincers, and a serpentine tail tipped with a vicious stinger. They are cruel and calculating, enjoying the power they wield over others as they concoct elaborate schemes to advance their own positions and discredit their rivals.
//''Relentless Schemers.''// Constantly jockeying for position, each tsucora hopes to be reincarnated as a more powerful servant of the [[Dreaming Dark]]. As such, their plans are as often focused on the ruination of competitors as they are on the furthering of [[il-Lashtavar]]'s plans. When they aren't serving in the cities of their nightmare realm, they hunt the dreaming spirits of mortals.
//''Fearmongers.''// Their ability to manipulate the fears of mortals sees tsucoras often sent to [[Eberron]] as [[Inspired]]. Nothing keeps [[humanoid]] chattel in line like fear, and the tsucoras are the masters of manipulating the uncertainty of mobs and high-ranking officials alike. The effectiveness of tsucora Inspired keeps the members of this order in the good graces of the [[kalaraq]] quori.
!! Tsucora Dreamblades
Some tsucora [[Inspired]] follow the path of the dreamblade. Although these assassins are primarily tools of the [[Dreaming Dark]], the [[Thousand Eyes]] has a few of them.
This dreamblade is a nightmare warrior who fights with blades formed of pure darkness. The blades are lethal on their own, but their attacks also [[psionically|psionics]] force the victim to recall the most agonizing moments of their life. Dreamblades rely on stealth and surprise, seeking to overwhelm their target with a devastating first attack. Should this initial attack fail, they often attempt to flee via short-range teleportation.
The captain of Lady [[Tureya]]'s [[Taskaan|Taskaan Legion]] guards spent her youth fighting in the mountains of [[Adar]] and has a bitter hatred of [[kalashtar]]. When
she is not stationed in the sanctum, Tulaar patrols the [[Jhodra]], searching for suspicious individuals and memorizing their scents. She might antagonize PCs to see if
they can be provoked into unlawful behavior, but she will not start a fight without reason.
Lord [[Jonas Wylkes]]’s mother, Tulea Wylkes, is horrified by
what has become of her [[family|Wylkes family]], but she cannot bring
herself to turn on her son. And the next suitable heir
is a boy of sixteen. Tulea might ask adventurers to
help straighten out her son. She could manipulate
the characters into a conflict with House [[Lyrandar]]
or the [[Aurum]], drawing their attention elsewhere. Or
she might ask them to help arrange an “accident” for
Lord Jonas.
''District Type:'' Tenement district<br/>
''Buildings:'' Poor residences (240)<br/>
''First Impression:'' The walls of Tumbledown are
honeycombed with tiny chambers, and massive tenements occupy the center of the towers. Large or small,
these townhouses are in terrible condition; walls are
chipped and cracked, and mold and mildew covers
everything. The people crammed into Tumbledown
are poor and miserable.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Broken Arch]] (southwest); [[Hareth's Folly]] (south); [[Malleon's Gate]] (below); [[Clifftop]] (above)
Tumbledown is a wretched residential district, home
to the poorest inhabitants of [[Middle Dura]]. While it
has little to offer, it is at least occasionally patrolled
by the [[Sharn Watch]], which provides the inhabitants
with a limited sense of security.
[[Daask]] has recently established a [[dreamlily]] den
in one of the tenements of Tumbledown, run by a
[[gnoll]] named Caasht. A
small band of gnolls provides security for the den.
This is a direct challenge to the [[Boromar Clan]]'s
control of dreamlily distribution, but so far the
Boromars have not struck back.
The fortress of Turakbar's Fist in [[Droaam]] is set upon an imposing mound of volcanic rock in the center of a sprawling plain. The [[minotaur]] [[warlord]] [[Rhesh Turakbar]] and his [[demon]]-worshiping clan rule here, the fortress’s outer walls painted with the blood of their foes as a grim warning.
Lady Tureya, a powerful [[usvapna]] [[Inspired]] telepath, the Jewel of [[Corvagura]], is the Eidolon of the [[Riedra]]n city of [[Dar Jin]], and the high minister of the [[Iron Gate]]. She is a brilliant strategist who has steered [[Riedra]]'s foreign policy for centuries.
She keeps a close watch on events in the [[Jhodra]]. Should
a group of powerful adventurers stir up trouble in her
city, she will be quick to notice—the question is what she
chooses to do about it. She is a master diplomat with a
talent for finding people's weaknesses and making offers
that are simply too good to pass up.
While Tureya is loyal to [[il-Lashtavar]], she is an administrator of Riedra, not an agent of the [[Dreaming Dark]]. She wants what is best for the [[quori]], and so far she has
taken no side in the building struggle between the [[Thousand Eyes]] and the Dreaming Dark. It's up to the DM to decide which path she'll take—and how this choice might
affect PCs who come to her city.
!! The Sanctum of Eidolon Tureya
This massive keep is a district in its own right, filling the space where
the five wards of [[Dar Jin]] come together. The heart of the sanctum
is an ovoid tower built from stone, [[crysteel]], and [[sentira]]. Almost eight hundred feet in height, it can be seen across the length of the city. The outer foundation is a
fortress in its own right, housing the Eidolon's personal
troops: over a thousand [[Taskaan|Taskaan Legion]] [[shifter]]s led by captain [[Tulaar]], along with [[Inspired]] shock troopers and members of the [[Horned Guard]]. Farther in lie the quarters of the [[Chosen]], where young Chosen train in the [[psionic|psionics]] arts and prepare to take their places in [[Riedran society|Riedrans]]. The central tower is
the heart of the [[Iron Gate]], and Tureya and her subordinates analyze Riedran trade and diplomacy and discuss
plans for the future. If someone was looking to recover
a manifest of Riedran shipping imports for the last year,
or to determine if the Iron Gate was supporting the
[[dreamlily]] trade, odds are the knowledge is locked away
in the great tower.
Turnaway is an island in the [[Lhazaar Principalities]], located in [[Turnaway Sound]].
Turnaway Sound lies between the island of [[Turnaway]] and its neighbors in the [[Lhazaar Principalities]]. It connects the [[Lhazaar Sea]] to the [[Eel Bay]].
The Tusk and Talon Lodge, a nondescript building
facing [[Coldwake Pond]] in [[Respite]], is the den of the [[Lords of the Hunt]]. Here, the cabal of trophy hunters swap stories, show off their kills, and sharpen
their weapons. The greatest hunters in [[Xen'drik]]
gather at the Lodge, and nonmembers of the Lords are not
granted admittance lightly. PCs who wish to petition
for membership must prove their worth. The Lords judge candidates for
membership on their skills, their kills, and their zeal
for the hunt. Every Lord lives for the Hunt and little
else. Outside interests, whether religious, political, or
business-related, that overshadow any hunter’s commitment to the constant search for ferocious specimens might earn excommunication from the Lords.
Rumors suggest that an ancient shrine to [[Banor the Bloody Spear|Rushemé]] rests beneath the Tusk and Talon Lodge, and that the Lords hold secret services on the eve of
hunts and offer up trophies to the [[giant]] deity upon their return. The Lords dismiss this as nothing more than inane conjecture.
An arcane institution funded by the [[dragonmarked house]]s,
the Twelve operates out of a [[thirteen-tiered keep|Ziggurat of the Twelve]] that floats
above the city of [[Korth]] in [[Karrnath]]. As part of the agreements that ended the [[War of the Mark]], [[Hadran d'Cannith]] suggested that the houses work together to create an institute for the application of magic—a foundation that would study
[[dragonmark]]s and the more traditional forms of arcane magic. The keep was built by Alder d'Cannith, a visionary [[wizard]] and master fabricator who used his studies of the sky to determine that the keep should possess thirteen towers.
“The moons suggest that the perfect number of dragonmarks is thirteen,” Alder cryptically explained, “but we shall call the institution the Twelve, for the thirteenth mark was cast off long ago.” No one argued with him. (While the [[elves|elf]]
remember the [[Mark of Death]], it is a topic they wish to forget.
Aside from the elf leaders, few know the truth behind the
lost [[dragonmark]].)
Over the centuries, the institute has been responsible for many arcane advances. The [[artificer]]s of the
Twelve helped develop the [[airship]]s operated by House
[[Lyrandar]], for example, as well as the [[message stations|speaking stone]]
of House [[Sivis]].
As an arm of the [[dragonmarked house]]s, the Twelve
attempted to remain neutral during the [[Last War]]. However, many of the [[wizard]]s and [[artificer]]s of the Twelve had national loyalties that were stronger than their ties to
the institute, and they chose to leave to fight in the war.
Quite a few fell in battle. Now that the Twelve has resumed
normal operations, it seeks to replace its fallen members
and make sure that each house is represented.
The Committee of Twelve oversees the institute.
The committee actually has more than twelve members;
there are twelve dragonmarks, but the split of House [[Phiarlan]] and House [[Thuranni]] and the current troubles within House [[Cannith]] have caused the membership
to fluctuate.
The Twelve has access to a tremendous array of mystical supplies and funding, and the greatest wizards and [[magewright]]s of the land fight for workshop privileges at the
institute. Advances made at the institute are shared equally
among the houses, although there are always rumors of
one or more of the houses diverting funds for secret projects or attempting to conceal valuable discoveries.
As an institution, the Twelve seeks to advance the mystical arts. In particular, the Committee of Twelve looks for
magical developments that have practical value to society
and a potential for profit. The Twelve has a great deal to
offer arcane adventurers. It has access to considerable stores
of rare mystical components and a vast library of spells.
Even the mundane can find the Twelve to be an invaluable
asset, because the sages at the institute can quickly identify
unusual [[magic item]]s or artifacts. However, being a prestigious organization, the Twelve will not deal with adventurers until they have developed a positive reputation.
King [[Galifar I|Galifar ir'Wynarn]], not completely convinced of the [[dragonmarked house]]s' neutrality and altruistic outlook, established the [[Arcane Congress]] as direct competition for the
Twelve. Today, the two institutes of magical studies engage
in a more or less friendly rivalry for resources, students,
and arcane discoveries.
!! The Twelve in Xen'drik
The only official outpost of the Twelve in the continent of [[Xen'drik]] is the [[Citadel of the Twelve]] in [[Stormreach]]. The Twelve advances and protects their interests in Xen'drik with the help of the [[Blackwheel Company]].
!! The Wyrmwatch Council
Over the course of centuries, the leaders of the [[dragonmarked house]]s realized that the [[dragon]]s of [[Argonnessen]] were watching them. Eventually, the lords of the Twelve learned of the connection between the [[dragonmark]]s and the [[Draconic Prophecy]], and discovered that many dragons believed the dragonmarked
should all be destroyed, eradicated as thoroughly as the line of [[Vol]] and the [[Mark of Death]]. They knew that it might be only a matter of time before the dragons took action.
The barons chose not to share this terrifying discovery with the rank and file of their houses. Two centuries ago, they created a secret division of the Twelve dedicated to draconic affairs. This Wyrmwatch Council pursued a number of paths. Some members focused on the [[Draconic Prophecy]], trying to discern if their
[[dragonmark]]s could directly influence the Prophecy.
Others were dedicated to studying dragons and locating or developing spells, tools, or strategies that could give the houses a fighting chance in a war with [[Argonnessen]]. Ironically, these efforts to interfere with the Prophecy are the very acts that could start such a war.
With the onset of the [[Last War]], resources were redirected to take advantage of the conflict. The work of the Council lay idle for almost a century. But now, as peace
returns to [[Khorvaire]], the lords of the Twelve have reactivated this unit. Time will tell if this decision was a wise precaution or the prelude to disaster.
''District Type: ''Professionals<br/>
''Buildings:'' Temple ([[Sovereign Host]]), shrine ([[Silver Flame]], [[Kol Korran]]), average lodging (15), upscale food (11), average food (25), exotic trades (11),
upscale trades (15), average trades (40), upscale services (40), average services (80), upscale residences
(40), average residences (80), other (2)<br/>
''First Impression:'' A host of small businesses are
interspersed with pleasant houses and a few manor
towers. Barristers, architects, scribes, translators,
and members of other skilled professions offer their
services here, along with a few more exotic—and
expensive—trades. <br/>
''Social Class: '' Middle class<br/>
''Neighbors:'' [[Silvergate]] (northwest); [[Pinnacle]] (northeast); [[Copper Arch]] (south); [[Den'iyas]] (bridge, southwest); [[Grawand]] (below)
All work and no play means you have come to Twelve Pillars. The inhabitants of this district are serious about what they do, and are generally quite good at their
trades. The exotic trades include a calligrapher; an importer of (legal) [[Riedra]]n goods, notably sculptures; and a dealer in exotic cheeses. The district derives its name from the [[courthouse|Tower of Law]] at its center, a structure surrounded by twelve massive pillars, each made from a different type of stone. Each pillar is topped with a statue of one of the [[Lord Mayors of Sharn|Lord Mayor of Sharn]]. As the pillars are all filled, there has been some discussion as to how to honor the more recent mayors.
The people of [[Karrnath]] value military discipline and courage, and have
no love for those who skulk in the shadows and fear a fair fight. However, over the course of the [[Last War]], Karrnath established the Twilight Brigade as a counterintelligence agency. The agents of the Brigade mission were to identify
and eliminate enemy spies. The Twilight Brigade has always been a small but
deeply devoted agency.
The sylvan grove known
as the Twilight Demesne has long been a sacred site
for the [[fey]] and [[Greensingers]] of the [[Towering Wood]], for the boundaries between the Faerie Court of [[Thelanis]] and Eberron are thin here.
The Twilight Demesne is home to great revels, and those who wander within may stumble upon the [[City of Rose and Thorn|Shae Loralyndar]], the domain of a powerful [[archfey]] called the King of Summer. If you're playing a character with ties to the
[[fey]], the Twilight Demesne could be your home.
The sky is hidden by the dense canopy of this vast rainforest,
leaving the forest floor in an endless twilight. The Twilight Forest of [[Lamannia]] is the most well-known [[layer]] of the [[plane]] of primordial nature, with by far the most direct connections to [[Eberron]] than any other layer.
The trees are over a hundred feet in height—impressive, certainly, though not
as tall as the greatpines of the Towering Wood in the [[Eldeen Reaches]]. But as people further explore the Twilight Forest, they come upon strange ridges and walls of wood, some forming twisted wooden canyons. Following these, explorers discover
they're the roots of unimaginably colossal trees, vast titans
wider and taller than the towers of [[Sharn]]. The Twilight Forest
as mortals experience it lies in the shadow of the grander canopy that rises far above it, and these enormous trees are
home to megafauna and mightier beings.
Though the Twilight Forest is wild and untamed, explorers
can find wide cleared paths through the lower forest. Survival
experts may recognize that these aren't trails created by
[[humanoid]] hands; rather, they're the paths of totems, who
have crushed the lesser forest beneath their colossal feet. The
forest is filled with beasts—mundane and [[dire|dire beast]] creatures in the
lower forests, megafauna in the grand canopy above it, and the
occasional passage of totems. There are multiple communities
of [[lycanthrope]]s scattered throughout the lower forest. A clan
of wererats have carved out a warren in the roots of a colossal
tree, while a pack of wild wereboars feuds with werewolves
descended from exiled templars. An ancient [[elf]] [[druid]] named
Haral, who spends most of her time in the form of an owl,
does her best to maintain order; she is assisted in this by a
megafauna owl she calls Ruark.
The forest has many other inhabitants, and a few minor
[[elemental]]s can be found in this layer. A gust of wind, a pool
of water, a rolling stone—in [[Lamannia]], any of these things
could be //alive//.
These earrings, a pair of long canine teeth dangling from hooks, greatly improve the wearer's sense of smell.
Tym Bessel, professor of [[Arcane Theory|arcane theory]] at [[Morgrave University]] in [[Sharn]], is one of the predominant scholars in the [[Consensualist Theory|Dominion Theory]] of [[arcane magic]]. Born a [[changeling]] in the [[Dragoneyes]] district of Sharn, Bessel maintains that identity and magic are both things that can be shaped by cultural belief and personal will.
Most [[devil]]s of Shavarath serve the Legion of Tyranny. They seek to crush hope, and no form of treachery or dishonorable conduct is too low for a devil.
However, they're far more disciplined than the savage hordes of the Legion of [[Cruelty]], working with precision and careful plans. The Century of Chains forces enemy [[conscript|manifestation]]s (and unlucky adventurers) to fight for them, and uses civilian conscripts as living shields. The Century of the Serpent is always willing to
negotiate and makes many pleasing offers, but any agreement
inevitably leads to betrayal.
All forms of [[devil]]s can be found in the Legion of Tyranny.
Their sole focus is war; they dominate and corrupt conscripts,
but don't seek mortal souls from the Material Plane. [[Bearded|bearded devil]] and [[spined devil]]s serve as basic troops, while elite squads of
[[erinyes]] descend from the sky. [[Amnizu|amnizu]] command
centuries, and beings with the power of [[overlord]]s lead cohorts.
The devils of the Cohort of Misery say that the [[Mockery]] is
part of Tyranny Command, a belief that fuels a bitter enmity
with the [[demon]]s of the Century of Terror. Curiously, the Cohort
of the Iron Hand maintains that the [[Sovereign|Sovereign Host]] [[Aureon]] leads
Tyranny Command, and that they are simply enacting his vision
for universal order.
No criminal guild in [[Sharn]] is more shrouded in mystery than the Tyrants. This organization of [[changeling]]s deals in secrets and lies, selling forgeries, running long cons, and treating identities as a commodity. The Tyrants have spies throughout the city, even in places where they have no current plans or contracts. The organization gathers as many secrets as possible, then sells that information to the highest bidder, uses it for blackmail, or stores it for a time when it becomes useful.
The Tyrants have been operating in [[Sharn]] for over three hundred years from a base of operations in the [[Dragoneyes]] district, in [[Lower Tavick's Landing]]. They
have agents spread across the city. A beggar, a bartender, or a courtier could actually be a persona crafted by a Tyrant [[changeling]]. The Tyrants have a long-standing truce with the [[Boromar Clan]] and don't take a side in the halfling family's conflict with [[Daask]].
!! Tyrants Operations
The Tyrants are master grifters, conducting a host of short and long cons throughout the city. Much like the [[Boromar Clan]], they have a general live-and-let-live relationship with the [[Sharn Watch]]. As long as the Tyrants focus their crimes on foreigners and tourists—and donate generously to the local Watch—the officers will look the other way. In addition to pursuing their own schemes for gold, Tyrant charlatans offer a host of services to their clients; they can help to frame innocents for crimes, or make it possible for a criminal to seem to be in two places at once, providing an ironclad alibi.
The finest forgers in the city are in the ranks of the Tyrants, capable of duplicating anything from identification papers to works of art. [[Magewright|magewright]]s among the Tyrants have the ability to permanently [[alter someone's appearance|cosmetic transmutation]], providing a fugitive a chance at a new life.
First and foremost, the Tyrants deal in information. They hoard secrets, and for the right price they can be persuaded to share what they know. Occasionally a Tyrant approaches someone with an offer of information in exchange for gold.
!! Tyrants NPCs
Members of the Tyrants have a loose definition of identity. The majority of the members are [[changeling]]s. They often maintain multiple identities, and a particular identity might be shared among a group of changelings.
A captain in the [[Sharn Watch]] who is actually an agent
of the Tyrants might be portrayed by a member of the
Tyrants' inner circle in the morning, when he has to interact with a wide range of people. But when he goes off-duty in the evening and keeping up the identity is an easier task, the role might be taken over by a young recruit.
The following individuals are some of the Tyrant's
most important identities:
* [[Ek]], often called Tyrant One, guides the inner circle of changelings that leads the organization.
* [[Kilk]] is the [[city councilor|Sharn Council]] for [[Lower Tavick's Landing]] and is a fictional persona created by the Tyrants, played by a variety of changelings at different times.
* The [[Spider]] is a [[changeling]] information broker who owns a cosmetics store called Honest Faces in the [[Dragoneyes]] district. This location is a common destination for people who want to purchase secrets from the Tyrants. Though the Spider often sells secrets for gold, sometimes it will trade its knowledge only for services or other secrets.
!!! Tyrants Contacts
| !<<dr d4>> |!Contact |
| 1 |[[Korryn]] ([[elf]]) maintains Korryn's Quill, a shop in the [[Bazaar]] of [[Dura]] that sells supplies for artists and scribes. In addition to being a remarkable calligrapher, Korryn is an expert forger. |
| 2 |[[Loz]] ([[changeling]]) is a bartender at the [[Crooked Mirror]] in [[Callestan]] and is an information broker, with access to a wide array of rumors. |
| 3 |[[Chaela Tas]] ([[half-elf]]) is a grifter with dozens of plots afoot at any given time. Though this identity is the face they wear with you, they maintain many different personas tied to their schemes. |
| 4 |[[Weave]] (changeling) is a body artist who runs a salon in the [[Dragoneyes]] district. |
!! Tyrants Villains
The Tyrants are a covert force. They operate in the shadows, trade identities, and like to manipulate their enemies into fighting each other. Tyrant villains rarely show
their true faces. Examples of Tyrants villains appear on
the table below.
| !<<dr d6>> |!Tyrants Villain |
| 1 |A [[changeling]] rogue infiltrates adventuring parties to steal their [[magic item]]s. |
| 2 |A cabal of changelings shares an identity as a [[Sharn Watch]] captain. They use the disguise to free criminals from prison. |
| 3 |A changeling assassin murders members of the [[Boromar Clan]], [[Daask]], and House [[Tarkanan]], then takes on the identities of its victims. |
| 4 |A changeling [[bard]] gathers incriminating information about members of the [[King's Dark Lanterns]], then blackmails them. |
| 5 |A [[Brelish|Breland]] changeling veteran of the [[Last War]] was distrusted by fellow soldiers because of the shapechanger's heritage. The veteran now exposes those soldiers' darkest secrets to their friends, families, and employers. |
| 6 |A changeling mage masquerades as a priest of the [[Silver Flame]] and uses spells to send the religion's faithful "signs" from [[Tira Miron]] that encourage them to spy, steal, and kill for the Tyrants. |
!! Tyrants Campaign Themes
The primary theme of the Tyrants is mystery. In dealing with the Tyrants, there is always a question of what is real and what the true objective actually is. With the Tyrants, anything could be a long con, and both allies and enemies may not be who they appear to be.
The Tyrants have three objectives: acquiring gold, gathering secrets, and protecting the [[changeling]]s of [[Sharn]]. In working the Tyrants into a campaign, the first
question is which of these objectives will take precedence. Are they primarily grifters, trying to squeeze as much profit as possible out of the situation? Are they mainly working to gather secrets, and to use those secrets to manipulate others? Or are they most concerned
with helping other changelings, who are often with the
objects of fear and suspicion?
The Tyrants offer an easy way to provide adventurers
with information. The [[Spider]] can be a strong ally for
adventurers, and you can always arrange for an agent of
the Tyrants to step out of the shadows with and offer to
sell a secret.
The Tyrants could also have a long-term sinister
agenda—something they've been working on for generations, which is only coming to fruition now. Do they want to replace the entire [[city council|Sharn Council]] of [[Sharn]], or are their aspirations even higher than that? In a campaign that examines this idea, the Tyrants might impersonate the patrons and allies of the adventurers, thereby tricking them into carrying out questionable tasks.
The Tyrants can also serve as a group patron for a party of adventurers, especially if the party includes one or more changelings. The table below provides hooks for adventurers working with the organization.
| !<<dr d6>> |!Tyrants Assignment |
| 1 |Kill an important figure without leaving evidence behind so a member of the Tyrants can replace the target. |
| 2 |Steal a formal badge of office or uniform for a member of the Tyrants to use as part of an assumed identity. |
| 3 |Act as bodyguards for a member of the Tyrants who is pretending to be an important figure. |
| 4 |Assume new identities to infiltrate the [[Sharn Watch]] and steal criminal records. |
| 5 |Use incriminating information to blackmail a member of the [[city council|Sharn Council]]. |
| 6 |Find evidence that can be used to blackmail a member of a [[dragonmarked house]]. |
!! Tyrants Adventure Hooks
The table below presents ideas for additional adventures themed around the Tyrants.
| !<<dr d6>> |!Tyrants Adventure Hook |
| 1 |A friendly NPC dies in combat. The corpse reveals its true form to be that of a [[changeling]]. |
| 2 |A list of Tyrants agents and their identities exists somewhere in [[Sharn]]. Every legitimate and criminal organization in the city competes to find it. |
| 3 |The [[Sharn Inquisitive]] publishes an anonymous article accusing several members of the [[Sharn Watch]], the [[city council|Sharn Council]], and the [[dragonmarked house]]s of being [[changeling]] members of the Tyrants. The accused individuals vehemently deny the claims. |
| 4 |A shamed [[Brelish|Breland]] general of the [[Last War]] goes on a killing spree against changelings, claiming the Tyrants ruined his life by exposing his extramarital affair. |
| 5 |A [[Sharn Watch]] captain being blackmailed by the Tyrants has had enough. He publicly exposes his incriminating secrets, then offers a reward for information concerning the organization. |
| 6 |Roll on another organization's Adventure Hooks table; the Tyrants are secretly involved in the situation. |
The House [[Vadalis]] [[enclave]] of [[Blackbriar]] outside of [[Stormreach]] was established by a highly regarded [[druid]] named Mundir d'Vadalis, an avid naturalist who oversaw the house’s interests in [[Xen'drik]] during
the [[Last War]]. In the final year of the war, Mundir
received a new apprentice breedmaster named Tyris,
a young man who had gotten into trouble for allegedly conducting unauthorized breeding experiments in and around his native town of [[Erlaskar]]. (Rather
than ruin Tyris’s life, the head of the Erlaskar enclave
opted to send the young man off to Xen’drik.)
Mundir was trampled to death in an accident shortly after the [[Treaty of Thronehold]], leaving the fate of the [[Xen'drik]] enclave in doubt. Mundir’s daughter Khepra pled valiantly for the right to head the operation, but her lack of experience in [[magebreeding]] ultimately resulted in that critical responsibility falling to Tyris.
Since taking over, Tyris has continued his former master’s policies for the most part, but he seems to be taking pains to make the house even more removed from [[Stormreach]] affairs than before. It takes a rare occurrence to draw him out of [[Blackbriar]], and one of his first acts as house leader was to instruct Rhomas d’Vadalis, his agent in the [[Citadel of the Twelve]], to assume oversight of [[Tooth and Nail|Stormreach Bazaar]], the one business in Stormreach that House [[Vadalis]] has a direct
interest in. Today, Rhomas deals almost exclusively with explorers and other visitors to [[Xen'drik]] (such as PCs). All who work for Tyris are sworn to secrecy about their activities, but some have implied that they were hired to capture exotic animals from the wilds of the continent’s interior on his behalf.
A bespectacled gnome who runs the [[Pestle]], what appears to be a simple apothecary shop in the [[Marketplace]] of [[Stormreach]], Tyrl deals in some of the foulest substances known to Eberron—mainly [[poison]]s and disease-causing agents. He also maintains an impressive collection of potions, though who knows when he’ll poison one just for fun.
Tyrosian-Baed is a [[black|black dragon]] [[rogue dragon]] in [[Xen'drik]]. Born in the steamy swamps of Xen'drik’s interior, Tyrosian-Baed carved out a small kingdom for himself, subjugating several tribes of [[lizardfolk]].
The massive, crouching fortress of Tzaryan Keep is the seat of power of the [[oni]] [[warlord]] [[Tzaryan Rrac]].
Tzaryan Rrac was the first [[warlord]] of [[Droaam]] to embrace the rule of the [[Daughters of Sora Kell]]. As a reward for his fealty, the hags
granted the oni mage control of the [[Watching Wood]]’s
southern reaches and the land ranging from south of
the forest to the [[Thunder Sea]]. Tzaryan dwells there in the massive [[Tzaryan Keep]].
Arcane research and foul rituals occupy much of Tzaryan’s time. The [[oni]] mage
lusts after relics of the [[Dhakaani Empire|Dhakaan]], as well as
items from the war against the [[daelkyr]] and the [[Age of Demons]]. To this end, he sends his agents across
[[Khorvaire]], pursuing mysteries that he has uncovered
in his studies.
Tzaryan has a number of well-placed agents within the [[Sharn]] branch of the
criminal gang known as [[Daask]]. He uses these followers to keep tabs on prominent explorers in Sharn and to manipulate the resources of [[Morgrave University]]
for his own ends.
Like all of [[Droaam]]’s other
[[warlord]]s, Tzaryan lusts for power. Though he does
not openly oppose the [[Daughters of Sora Kell]], he puts
his own well-being firmly ahead of the interest of
the kingdom of monsters. The [[oni]] might well
betray the hags if the price were right.
Ulaash is a [[ghaal’dar|hobgoblin]] blademaster of the [[Kech Shaarat]]. He’s
joined the [[Deathsgate Guild]] to test the skills of chaat’oor
warriors; he may challenge martial adventurers to a duel.
He respects those who show courage and skill.
Baron Ulara d'[[Jorasco]] is beloved by the rest of her house—and indeed, by many in
western [[Khorvaire]]. Ulara is a scholar first and foremost, and her expertise in ancient plagues proved instrumental in combating an epidemic that ran
rampant through northwest [[Khorvaire]] a decade ago.
But she has less appetite for politics and diplomacy
than most of the other leaders of the [[dragonmarked house]]s, so she prefers to remain among her tomes and grimoires at her [[Vedykar]] [[villa|Vedykar Enclave]], directing house
business through intermediaries and delegates.
Uldras are small [[fey]] that dwell in the cold wilderness of [[Icegaunt Island]] and in a few other scattered locations in the [[Frostfell]]. They are about the size of thin [[halfling]]s, but with [[elvish|elf]] features, pale blue skin, and three fingers on each hand. Uldras follow a faith that reveres versions of [[Olladra]] and the [[Keeper]].
Very rarely, a tadpole from an [[elder brain]]'s brine pool transforms an individual into an ulitharid, a larger and more potent [[mind flayer]] that boasts six tentacles.
Illithids innately recognize that an ulitharid's survival is more important than their own. An [[elder brain]]'s reaction to the rise of an ulitharid varies. In most colonies, the ulitharid becomes an elder brain's most favored servant, invested with power and authority. In others, the elder brain perceives an ulitharid as a potential rival for power, and it manipulates or quashes the ulitharid's ambitions accordingly.
//''Birth of a Colony.''// When an ulitharid finds sharing leadership with an elder brain to be insufferable, it breaks off from the colony, taking a group of [[mind flayer]]s with it, and moves to another location to form a new colony. After the death of the ulitharid's body, mind flayers take its brain and place it in a brine pool, where it grows into an [[elder brain]] over a few days. This process doesn't work on the brain of an ulitharid that dies a natural death, as a brain that succumbs to old age is too decrepit to be used in the creation of an elder brain.
//''Extractor Staff.''// Each ulitharid carries a psionically enhanced staff made of black metal. When the ulitharid is ready to give up its life, it attaches the staff to the back of its head, and the staff cracks open its skull and peels it apart, enabling its brain to be extracted. The brain and the staff are then planted in the ulitharid's corpse, causing it to dissolve into ichor. This psionically potent slime helps to fuel the transformation of the area into a brine pool that surrounds an embryonic elder brain.
Umber hulks are hulking monstrosities (or possibly true [[aberration]]s) found in [[Khyber]] that resemble a beetle with the proportions of a gorilla. They can burrow through solid rock, forming new tunnels in their wake. The steel-hard chitin of its body can withstand the cave-ins, tunnel collapses, and rock falls that commonly follow it.
Burrowing into the wall of a cavern or passageway, an umber hulk lies in wait for creatures to pass by on the other side, its hair-like feelers sensing any movement around it. When it explodes out in a shower of earth and rock, its unsuspecting quarry turns to face the oncoming threat—and is entranced by the umber hulk's bewildering eyes, forced to stand helpless as its mandibles snap shut.
Many survivors of an umber hulk encounter recollect little about the attack, because the monster's confusing gaze scrambles their memory of the event. Those who have fought and killed umber hulks recognize the signs. For other denizens of [[Khyber]], grisly tales of vanished explorers and wanton destruction speak of an unknown foe. Umber hulks take on supernatural status in these harrowing stories, many of which convey the same warning: once an umber hulk has been spotted, it is already too late to escape it.
When doom fell upon [[Xen'drik]] at the end of the [[Age of Giants]], the ancestors of the
Umbragen fled into the depths of the earth. The underworld was filled with its own terrors, but nothing so deadly as the conflict between [[dragon]]s and [[giant]]s. After a
long and dangerous journey, these [[drow]] refugees settled deep below the region known as the [[Ring of Storms]], the legendary home of the [[Qabalrin]]. In their struggle for survival, the dark elves uncovered ancient lore of the Qabalrin and the path to a dark well of mystical energy—a force they named the Umbra. Over the course of generations, the elves performed terrible arcane rituals that bound body and soul to the Umbra, blending this shadowy force with elven flesh.
For thousands of years the Umbragen held their own
in the depths of [[Khyber]], defending their realm against all manner of monsters. Then in 997 YK, the balance of power changed. A [[daelkyr]], [[Belashyrra]], stirred in the dark, and an army of [[beholder]]kin and other [[aberration]]s rose from the shadows. The doom of the Umbragen was at hand.
Today the citadels of the Umbragen remain under siege, and the dark elves are losing the battle. They have dispatched forces to the surface in search of anything that could be used as a weapon against the armies of Khyber.
This simple axe looks no different from a standard forester's tool. A single-edged head is set into a slot in the haft and bound with strong cord. The axe was found by a timber-hauling crew who disappeared into the shadows of a cave deep in an old forest. Retrieved in the dark of the cave, the axe was found to possess disturbing magical properties.
This weapon deals extra necrotic damage to anything it hits. When you hit a [[plant creature]] with it, the target takes double damage. While you carry this axe, you may cast [[darkness]] once per day.
This arrow can't be broken, except when it is within an [[antimagic field]].
This delicate porcelain teapot is painted with intricate
flowers and gold leafing. If the teapot is broken, you can
speak its command word to cause the teapot
to magically repair itself. If any pieces are missing, the
teapot is repaired with a hole where the piece used to be.
The Unchained practice one of the most subtle and powerful forms of rebellion in [[Riedra]]. They dream. The founder of
the movement was a human named ''Sulaan'', a merchant
who was fascinated by the free dreams he experienced in
other lands. Sulaan eventually learned about the [[dreamspace]]. He decided to spread free dreams to the people of [[Riedra]], believing that doing this was the key to change
in the world.
Sulaan disappeared five years ago, and many assume
that he was taken by the [[Thousand Eyes]]. However,
some of the Unchained have received dreams of contact from Sulaan. None can say if these are truly the work of the enigmatic founder, or if the [[quori]] are masquerading as Sulaan and using this guise to manipulate his followers.
The Unchained are loosely organized, and most members know only others in their own communities. A few gifted dreamers use a [[dream of contact]] to maintain communication between distant villages, but the Unchained have no grand scheme. Members work to identify others who share their ideas and to teach the ways of the [[dreamtouched]]. In the eyes of the Unchained, dreams alone can win the battle.
''Getting the PCs Involved:'' The Unchained can be
useful allies for the PCs precisely because of their passive
stance. They can be hidden anywhere in [[Riedra]], and as
free thinkers, they can choose to help persecuted characters. They aren't willing to use violence and have limited
resources, but they can provide advice and shelter, and
potentially a [[dream of contact]].
See also [[Ilaan]].
Undead are once-living creatures that have been magically animated. Through the use of [[necromancy]], undead must be infused with the essence of either the plane of [[Mabar]] or the plane of [[Irian]].
Mabaran necromancy can create walking corpses such as [[zombie]]s and skeletons, as well as powerful creatures such as [[vampire]]s and [[lich]]es. This form of undead is commonly used as a tool by the followers of the [[Blood of Vol]] and members of the Order of the [[Emerald Claw]], and the nation of [[Karrnath]] even used animated corpses as soldiers in the [[Last War]] in order to protect their living combatants from the perilous front lines. Undead created by [[Mabar]]an [[necromancy]] must be sustained by feeding off of the living, a process which some say could potentially siphon away the very life force of Eberron.
[[Irian]] [[necromancy]] can create undead known as [[deathless]], such as the members of the [[Undying Court]], the honored ancestors of [[Aerenal]] who rule the [[elven|elf]] nation and shape their people's destiny. These undead are sustained by the devotion of their descendents, and have no need for blood or life energy as other undead do.
!! Types of Undead
<<list-links-article "[tag{!!title}category[creature]] -[tag{!!title}tagging[]category[creature]] +[sort[title]]">>
[[Stormreach]]’s ruins reach miles into the earth. Sewer
tunnels filled with vermin, discarded murder victims
risen from the dead, prowling [[carrion crawler]]s, and
moaning [[cloaker]]s crisscross below the city’s streets.
These dark mazes are home to [[thri-kreen]] tribes,
[[kobold]] clans, and other creatures of darkness that do
not suffer trespass lightly.
Any of these sewers might suddenly open into a
yawning lost city, a shattered remnant of a bygone civilization of [[giant]]s, [[drow]], or any other of the races that called the ruins home ages ago. Traps and treasures dot these ruins, and [[monstrosities|monstrosity]] replace the original inhabitants. Only vestiges
of these ancient civilizations survived whatever
cataclysm claimed them. The twisted mockeries of
their former inhabitants gibber and cavort in the
lightless reaches of their people’s ruins, worshiping
broken idols and gods who long ago turned their
backs on them.
Necropolises teeming with the dead and [[undead]] riddle the
subterranean levels as well. Their decaying residents
are restless, ever on the lookout for trespassers to feed
their eternal hunger. Other more sinister powers use
interlopers as pawns in some foul scheme to retake
the city’s surface.
Finally, there remain potent magical prisons dating back to the [[age|Age of Giants]] of the titan kings, buried below the buzzing streets of the city.
Any number of terrors could be bound in these depths: a [[vampire]] lord of the [[Qabalrin]] [[elves|elf]], a titan king who sought to ascend to godhood,
or a giant [[wizard]] trapped with the [[fiend]]s he
summoned to do his bidding. These horrors
and more await brave heroes in the dark below
the city.
Sloping out beneath the waves of the [[Harbor]] of [[Stormreach]] lie just as many ancient ruins as in the city proper. Obscured by seaweed and covered in mussels and barnacles, these ruined arches and buildings provide homes for [[sahuagin]] and other creatures of the deep. This makes many citizens nervous and leads the [[dragonmarked house]]s and the [[Stormreach Guard]] to keep a wary eye on the harbor.
''District Type:'' Inn district<br/>
''Buildings:'' Temples ([[Silver Flame]], [[Sovereign Host]]), upscale lodging (1), average lodging (35), poor lodging (100), average food (20), poor food (80),
average trades (20), poor trades (60), average services
(20), poor services (60), poor residences (20)<br/>
''First Impression:'' The Underlook district has seen
better days. Dingy inns and restaurants line the
streets, but many old businesses have closed and
been transformed into wretched tenements. Nonetheless, cheap lodging is plentiful and travelers from across [[Khorvaire]] walk the streets.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Broken Arch]] (northeast); the [[Bazaar]] (east); [[Stormhold]] (south); [[Precarious]] (below); [[Overlook]] (above)
Before [[Menthis Plateau]], Underlook was the center
for [[Sharn]]'s nightlife. The district was filled with fine
restaurants, inns, and other forms of entertainment.
But over the centuries the finest establishments have
moved to other towers, leaving Underlook to decay in
the shadows. Honest sailors and merchants who arrive
at [[Cliffside]] often choose to stay in Underlook instead
of risking life and limb in the [[lower ward]]s.
In addition to the inns and taverns of Underlook,
there are a wide number of businesses that are, while
not illegal, often held in low regard. In particular,
Underlook is an excellent place to hire [[inquisitive]]s.
While the heirs of [[Tharashk]] are generally considered
to be the best inquisitives in [[Khorvaire]], there are
a number of capable non-house operatives in the
district who can do the job if the price is right.
!! Noteworthy Locations
* [[Ghallanda Hall]]. This proud [[Ghallanda]] [[enclave]] continues to operate amid the fading squalor of [[Middle Dura]], and has become a tourist attraction. It offers a range of services, with food and lodging of poor to comfortable quality.
* [[Information Acquisition]]. An inquisitive agency run by members of House [[Tharashk]].
* Our greatest champions and sages will never be lost to us. Their wisdom guides us, and their power protects us all.
* Honor our past. Respect our traditions. Perfect your skills and you may earn your place among the [[deathless]].
* Destroy those foul creatures that channel the power of [[Mabar]], for they consume the essence of our world.
The [[elves|elf]] of [[Aerenal]] refuse to let their greatest souls be
lost to the oblivion that is [[Dolurrh]]. The wisest and most
accomplished elves are preserved after death, being held in [[spirit idol]]s or becoming
members of the Undying Court. The devotion of the
living elves sustains the Undying Court, and the Court
generates a well of mystic energy that empowers their
clerics. As an [[Aereni]] [[cleric]], your spells aren't personally
granted to you by a specific Undying Councilor. Your
powers flow from the Court itself, allowing you to serve
its will and to protect your people.
Of all the religions of Eberron, the Undying Court is
most grounded in the world. The Court stands in the
city of [[Shae Mordai]], and as an [[Aerenal]] [[elf]], you could
seek an audience with one of your [[deathless]] ancestors.
As a devotee of the Undying Court, you recognize it as
the power that sustains your civilization and as an assembly of your greatest sages and leaders. Should you accomplish great achievements in your life, you can aspire to join the Court.
As a [[cleric]] or [[paladin]] of the Undying Court, you have
a concrete relationship with your deity. In creating your
character, consider why you've traveled so far from
home. Are you on a specific mission? Are you serving
the Court as a whole, or are you acting as an agent of a
specific councilor—perhaps your own ancestor? The Undying Court despises [[undead]] creatures that prey on the
living, so if you don't have a concrete mission, you can
always hunt down undead and evil [[necromancers|necromancy]].
!! Symbol
The symbol of the Undying Court is a golden mask with
luminous eyes, worn over the face while a priest is carrying out their duties. Devotees wear a smaller mask as
a brooch or amulet.
!! Rites
The most sacred rite of the Undying Court is trance
communion. While in trance, an [[Aereni]] [[elf]] engages in
meditation that connects them to the gestalt consciousness of the Court. This experience affirms the place of
the individual as part of the greater whole.
Since trance communion is a personal experience,
the role of the priest is to provide spiritual and practical
guidance to their congregation. A masked priest serves
as the face of the Court, and any elf can approach them
seeking an ease to their burdens.
!! Temples
In [[Aerenal]], the temples of the Undying Court are step
pyramids built from stone. In [[Khorvaire]], shrines to the
Court use imported Aereni [[densewood]], a particularly
tough lumber that grows only on the island. Regardless
of form, the walls are engraved with stories about the
Undying Councilors that serve as the particular patrons
of the temple, usually those related to the local priests.
This item is a common leather belt with a circular buckle. When activated, the belt grows and expands, magically unfolding over the user's body until they are clad in a full suit of burnished leather armor. The whole process takes less than twenty seconds. After unfolding, the armor becomes nonmagical.
Unicorns dwell in enchanted forests. Unrelated to the horses it resembles, a unicorn is a celestial creature that wanders the realms of [[Thelanis]], its white form glimmering like starlight.
A unicorn's brow sports a single spiraling horn of ivory whose magical touch can heal the sick and the injured. Its ears catch the words and whispers of the creatures that share its domain, and it knows the tongues of [[elves|elf]] and [[sylvan|fey]] folk. Unicorns allow good-hearted creatures to enter their woods to hunt or gather food, but they hold evil ever at bay. Foul-hearted creatures seldom leave a unicorn's domain alive.
Unicorns are sometimes ridden as mounts by blessed champions chosen by the majestic creature. They make trusty steeds, able to run as fast as a warhorse, and they possess limited teleportation ability as well.
Even though House [[Orien]] employs [[Deneith]] mercenaries for general security, the house maintains this elite force to deal with high-risk situations. Among the members of
the Unicorn’s Horn are the //Hands of Orien//, [[dragonmark]]ed heirs who have learned to use their [[Mark of Passage]] to warp time and space.
This three-story fortress of polished marble in the [[Terrace]] ward marks the headquarters of the military order charged with the defense of the city of [[Io'lokar]]. Unlike its counterpart [[Union of the Spear]], the Shield is not an order of full-time troops but a citizen militia under the command of some two hundred career officers. In the absence of a soldier class or a standing army, the people of Io’lokar are an army unto themselves. The [[Vast]] is full of [[dragon]]s who would be pleased to see [[Io'lokar]] join [[Io'vakas]] in ruin. As a result, the [[Io'lokari]] begin military training at a young age.
Though crime within Io’lokar is all but unheard of, officers of the Shield keep the peace alongside the [[Arnaaracaex]]. Mostly this means monitoring unauthorized use of the high-level magic that suffuses the city, from adolescent casters summoning epic monsters to
accidental arcane conflagrations tearing through upscale neighborhoods. In emergencies, citizens and visitors to the city alike are called to service.
This citadel of brass-edged stone is the home of [[Io'lokar]]’s far-ranging [[wyvern]] riders. Spear squadrons spend their time performing aerial reconnaissance in territories that magical observation cannot reach. Members of the order also hunt monsters that threaten non[[dragon]] settlements, though they are forced to grudgingly ignore the [[rogue dragon]]s who too often do the same. Tensions between the dominion lords
and [[Io'lokar]] run high at all times, and the [[Io'lokari]] tread
carefully in the [[Vast]].
Service in the Spear is a worthwhile option for combat-oriented characters seeking a place in [[Io'lokar]]. PCs who are skilled in riding flying mounts can ask to join a Spear hunting flight as auxiliary troops. Those taking a lead role in slaying a powerful threat will
be invited to join the order.
PCs adventuring in [[Argonnessen]] might find themselves befriended (or even saved) by a flight of [[wyvern]] riders from the city. Such an encounter is one way to bring a PC party into [[Io'lokar]] for the first time.
The Unity forms the foundation of [[Riedra]]n government, and the
majority of the population serves one of its branches.
While each branch of the Unity has its own ministers,
the seven arms work together in the service of the nation
and answer to the local bastion lords. This arrangement
separates the Unity from the [[Thousand Eyes]] and [[Harmonious Shield]], which follow different chains of command.
All branch high ministers are skilled [[psion]]s.
!! Branches of the Unity of Riedra
<<list-links-article "[tag{!!title}sort[title]]">>
This tube holds milky liquid with a strong alcohol smell. The liquid instantly dissolves up to 1 square foot of adhesive it touches, including [[sovereign glue]].
The pursuit of knowledge and education are things that
flourish in times of peace. While most [[dominion]]s are
devoted to their own personal contemplation, the [[Throne|throne]] of
Knowledge maintains the University of [[Syrania]], where chosen
students can study an astonishing array of subjects with
[[virtue]]s of knowledge and the occasional guest dominion. The
catch is that students need to be admitted... and there isn't
actually a process for applying. At the moment, the University
only has twenty students, chosen from across the [[plane]]s by
roaming virtues.
For planar travelers who come to Syrania, the University is
a good repository of general knowledge; if the scholarly virtues
can't help, they'll likely know the way to a dominion that can.
It's also an unusual background for a player character; perhaps
a [[sorcerer]] unlocked their powers at the University,
or perhaps a [[warlock]]'s [[celestial]] patron is their thesis advisor.
''District Type:'' University<br/>
''Buildings:'' University buildings—instruction and
faculty offices (15), library (5), temple ([[Aureon]]),
shrine ([[Path of Light]]), upscale lodging (20), upscale
food (30), upscale (literary) trades—booksellers,
stationers, mapsellers, seal makers, etc. (50),
upscale (literary) services—scribe, sage, translator,
cartographer, etc. (38), dormitories (20), upscale
residences (100)<br/>
''First Impression:'' Students carrying armloads of
scrolls and books hustle to classes, while others sit or
stand in circles, discussing the day's lessons.<br/>
''Social Class:'' Upper class<br/>
''Neighbors:'' [[Ivy Towers]] (northwest); [[Den'iyas]] (northeast); [[Platinate]] (southeast); [[Seventh Tower]] (southwest); [[Highest Towers]] (bridge, north); [[Sunrise]] (bridge, south); [[Everbright]] (below)
The home of [[Morgrave University]], the University
District is dedicated to the pursuit of knowledge—while making as much profit as possible. From Morgrave itself to the businesses that have sprung
up around it, love of learning coexists with love of
earning and the two feed happily off each other. If
scholarly interest can lead to great profit, or thirst
for gold to historical discovery, then the residents of
the University District are doubly satisfied.
!! Noteworthy Locations
* [[Morgrave University]]. Perhaps not the most respectable institution of higher learning in [[Khorvaire]], Morgrave boasts an unparalleled collection of artifacts and scholarly works about ancient [[Xen'drik]] and the [[Dhakaan]] Empire, and is a major patron of adventurers and explorers.<br/><br/>
* [[Art Temple]]. This theater is renowned for its avant-garde techniques and subjects.
* [[Golden Horn]]. This wealthy inn includes a library, a few large meeting rooms, and a small concert hall. Performing at the Horn is an excellent opportunity for aspiring [[bard]]s.
* [[Grand Stage]]. This stage hosts grand performances of the beloved classics of [[Galifar]], along with more modern works that follow classical traditions.
* [[Kavarrah Concert Hall]]. The grand auditorium near the University, Kavarrah Concert Hall hosts the finest musical performances in Sharn.
* [[Haftak's Books and Binding]]. The [[Sharn Inquisitive]], the city's local chronicle, is printed at this bookstore and bindery.
* [[Sharn Opera House]]. Performances at the Sharn Opera are one of the most highbrow forms of entertainment in the city.
* [[Stargazer Theater]]. This open-air theater focuses on popular entertainment with family appeal.
[[Morgrave University]] might be better known, but [[Fairhaven]]'s University of Wynarn—the first institution of higher learning in the [[Five Nations]]—is better respected. The campus outgrew
its initial building long ago and now encompasses
six sprawling structures equipped with dormitories,
apartments, libraries, restaurants, coffee houses, theaters, classrooms, laboratories, and museums. Though not quite as impressive as the great
[[Library of Korranberg]], the Royal Collection of [[Aundair]]
stacks up as the second-best repository of tomes and scrolls
in all of [[Khorvaire]].
The university remained open throughout the [[Last War]], but fewer and fewer enrollees arrived. By the
war’s end, the professors outnumbered the students.
To increase enrollment, the university relaxed its
restrictions on attendees and invited new students
from all nations. The new policy created a cosmopolitan mix of scholars including [[orc]]s, [[goblin]]s, [[shifter]]s,
and even a few [[warforged]]. This diversity has resulted
in increased tensions among the student body, and
strident calls for more representation of minority races
among the teaching staff. Still, the university is committed to educate as it has over the centuries and has
taken steps to accommodate its diverse population.
This is the [[Xoriat]] stronghold and birthplace of the [[daelkyr]] [[Belashyrra]].
The Lord of Eyes imagined the [[beholder]]s and brought that
vision to life, and the Citadel is home to a host of beholderkin.
Tiny floating eyes buzz about like insects. Millipede-like
creatures have rows of eyes running down their backs. The true
beholders are mostly focused in deep contemplation of specific
things, and don't pay attention to outsiders unless they're
disturbed. Some study strange paintings. Others watch scrying
pools reflecting images of [[Eberron]] or other planes. And some
examine seemingly mundane objects, such as a rusty iron key,
a dead rabbit, or an expensive hat. However, there are a few
that patrol the Citadel, watchful for intruders.
The surfaces of the Citadel are made from an iridescent
material that your eyes can't quite focus on, as if the walls and
floor are blurred. There are mirrors spread around the halls.
Some run slow and show you younger than you are; others
show glimpses of the future. Scrying pools reveal secrets you
don't want to know—current events on Eberron, scenes from
the past, or the possible future.
This spell creates an invisible, mindless, shapeless, human-sized force that performs simple tasks at your command until the spell ends up to 1 hour after casting. The servant springs into existence in an unoccupied space on the ground within 60 feet.
You can mentally command the servant to move around and interact with objects. The servant can perform simple tasks that a human servant could do, such as fetching things, cleaning, mending, folding clothes, lighting fires, serving food, and pouring wine. Once you give the command, the servant performs the task to the best of its ability until it completes the task, then waits for your next command. It struggles to pick up anything heavier than 30 lbs, and it can't attack. If it ever suffers harm, the spell ends.
If you command the servant to perform a task that would move it more than 60 feet away from you, the spell ends.
The Unspoken Word is an [[arcane order]] devoted to the pursuit of ultimate arcane power. Members believe that laws and moral concerns should never stand in the way of knowledge. Just as the [[Guild of Moonlight and Whispers]] seeks to unlock the mysteries of the [[fey]], the Unspoken Word strives to master the powers of [[dragon]]s, [[overlord]]s, and [[daelkyr]]. Its members are determined to unravel the secrets of the [[Du'rashka Tul]], the [[moon|Crya]]-shattering magics of the [[giants|Age of Giants]], and more. What has allowed this order to survive when similar groups—such as the [[Closed Circle]] of [[Breland]]—were destroyed is the absolute insistence that //such magic should never be used//: that these words will forever remain //unspoken//. An Unspoken [[wizard]] pursuing the moon-breaking magic of the giants will insist that they have no desire to shatter moons; but if such powers can be understood, could we use them in positive ways? Should fear ever stand in the way of progress?
Members of the Unspoken Word are often viewed with fear, and most enjoy this infamy. They like to imply that they have dreadful secrets locked away in their vaults, fell powers they could unleash if they choose to. But again, they continue to exist because they never have caused disasters… and because their members are mages of considerable skill. While most are [[wizard]]s, they accept [[warlock]]s of [[fiend]]ish or [[aberrant|daelkyr]] patrons, provided they are devoted to the pursuit of arcane science.
[[Mordain the Fleshweaver]] is said to have been part of the Unspoken Word before his fall from grace, though other accounts say that he began as a member but ultimately severed ties with the order in part because he believed such knowledge should in fact be used. However, the order may still have relics from his time as a member, and it’s possible Mordain still sends them little “gifts” — some of which could be very dangerous.
Gold and power flow down from Upper Central. The
district of [[Highest Towers]] is the seat of government,
where city hall and the municipal archives are located.
The [[Korranath]] is the name of both the central financial
district and the grand temple of [[Kol Korran]] that dominates it. This district also houses the [[Kundarak Bank of Sharn]] and the [[Vaults]], House [[Kundarak]]'s ostensibly
impenetrable storage facility.
Some of Sharn's wealthiest citizens live in the [[Mithral Tower]] district, and [[Platinum Heights]] is the most expensive market district in Sharn. It has fewer shops than
the [[Bazaar]] of [[Dura]], but if you're looking for top-quality
goods or services, there's no finer—or more expensive—source to be found.
If you maintain no better than a poor lifestyle, many
people in Upper Central will assume you're a servant or
vagrant; this could cause you to have disadvantage on
Charisma checks involving residents.
!! Districts and Noteworthy Locations
* [[Highest Towers]]. The seat of city government, this district is also where [[airship]]s arrive and depart.
** [[City Archive]]. This enormous edifice holds the historical and legal records of Sharn and the surrounding regions.
** [[Council Hall]]. The seat of city government and the site of [[City Council|Sharn Council]] meetings. The council meets weekly, and visitors can watch from the gallery.
** [[Lyrandar Tower]]. All [[airship]] travel to and from Sharn passes through the docking spires of Lyrandar Tower, the [[house|Lyrandar]]'s primary [[enclave]] in Sharn.
* [[Korranath]]. Named for the great temple of Kol Korran that lies at its center, this district is dedicated to wealth and finance. Moneychangers, banks, and grand vaults are found here, in addition to the estates of powerful merchants.
** [[The Korranath|Korranath (temple)]]. The temple of Kol Korran is an ostentatious display of wealth and a popular tourist attraction, since many believe praying at the Korranath ensures success in business.
** [[Kundarak Bank of Sharn]]. This is the largest bank in Sharn and the center of House [[Kundarak]] urban operations in the city.
** The [[Vaults]]. Located below the Kundarak Bank, the Vaults are Kundarak's heavily guarded storage facility.
** [[Wayfinder Foundation|Wayfinder Foundation (Sharn office)]]. The guildhall for this legendary [[association of explorers|Wayfinder Foundation]].
* [[Mithral Tower]]. Mithral Tower is Sharn's most desirable downtown residential district, comparable to the more suburban [[Oak Towers]] and [[Crystal Bridge]] districts in [[Upper Northedge]].
** [[Tomollan Estate|Javan Tomollan]]. Mithral Tower's most noteworthy resident is its representative on the city council, Javan Tomollan.
* [[Platinum Heights]]. Catering to Sharn's elite, this district provides a wide range of shops and services of wealthy Upper Central to aristocratic quality.
** [[Aurora Gallery]]. The most prestigious auction house in Sharn, Aurora deals in magic items, exotic finds from [[Xen'drik]], and other wonders.
** [[Gray Dragon Inn]]. This inn provides aristocratic and wealthy lodging for those who can afford it.
** [[Sannid's]]. One of Sharn's most celebrated restaurants, Sannid's serves Brelish cuisine of wealthy quality and has a legendary wine cellar.
* [[Skysedge Park]]. Home to three sprawling rooftop parks, this district provides a touch of wilderness in the Upper Central heart of the city. A small community of immigrants from the [[Eldeen Reaches]] maintains these groves and gardens.
** [[Skysedge Park (park)]]. The largest of the three parks in this district gave its name to the whole district.
** [[The Gatehouse|Gatehouse]]. This small stone building is a sacred site to the sect of [[druid]]s known as the [[Gatekeepers]].
This ward is full of activity. Its people are prospering,
but there's an edge of desperation about them; many
folk are on the lookout for opportunities to better themselves. Upper Dura has the general properties of a middle ward, with most goods and services priced for a
modest or comfortable lifestyle. The merchants and artisans are accustomed to dealing with unusual individuals, and adventurers receive a warm welcome here.
[[Clifftop]] is a home away from home for explorers and
mercenaries. [[Daggerwatch]] is a fortress district, containing garrisons for the [[Sharn Watch]] and the Brelish army. The [[Gold & White]] is a Daggerwatch tavern that caters
to Brelish soldiers; those who hold a Brelish military
rank will receive a warm welcome, while those who
served other nations would be wise to take their business elsewhere.
In the [[dwarven|dwarf]] district of [[Highhold]], a center of activity is [[Moraggan's]], which serves the strongest spirits in
Sharn, but it's no mere tavern; often patronized by [[Mror|Mror Holds]] merchants and [[Kundarak]] agents, it maintains the highest of standards (with prices to match).
The [[Highwater]] district is home to the wealthiest inhabitants of Dura and is the site of [[Pegasus Spire]], the [[enclave]] of House [[Vadalis]]. The temple district of [[Hope's Peak]] features the [[Citadel of the Sun]], a grand temple of [[Dol Arrah]] and a bastion for the virtuous. The [[Overlook]]
district is home to Sharn's [[kalashtar]] community and
includes the only temple of the [[Path of Light]] in [[Breland]].
!! Districts and Noteworthy Locations
* [[Clifftop]]. This district caters to adventurers, with a wide array of businesses aimed at explorers and fortune hunters.
** The [[Clifftop Adventurers' Guild]]. An institution that provides adventurers with camaraderie and profitable work.
** The [[Drunken Dragon]]. A tavern frequented by members of the Clifftop Adventurers' Guild. The food is modest, but it has the widest selection of exotic alcohol in [[Sharn]].
** The [[Esoteric Order of Aureon]]. The guildhall of one of Sharn's most prestigious arcane orders. A reliable source for arcane spellcasting services.
** The [[Mystic Market]]. A collection of shops specializing in different categories of [[magic item]]s. Most merchandise is common or uncommon, but rare items are occasionally available.
* [[Daggerwatch]]. Daggerwatch holds garrisons for both the [[Sharn Watch]] and the Brelish army, along with business and residences for those who support the garrisons.
** The [[Gold & White]]. This tavern offers fare of comfortable quality at modest prices. It caters to members of the Sharn Watch and Brelish veterans, but others will receive a cold welcome.
* [[Highhold]]. A district built by dwarves for dwarves, Highhold has strong [[Mror|Mror Holds]] influences in its architecture. It's a good place to find Mror goods and is home to talented smiths and brewers.
** [[Moraggan's]]. A posh tavern specializing in strong Mror spirits. Food and drink are wealthy in quality and cost.
* [[Highwater]]. The finest residential district in Dura and the seat of House [[Vadalis]], Highwater is largely comfortable in quality with a few wealthy estates.
** [[Pegasus Spire]]. The seat of House Vadalis in Sharn is one of the few enclaves where [[pegasi|pegasus]] are raised and trained. Native to [[Syrania]], these celestial beasts can become stranded in Sharn; Vadalis heirs care for them and match them with virtuous companions.
* [[Hope's Peak]]. A relatively new temple district, with shrines and churches that have relocated from [[Fallen]] in [[Lower Dura]]. Hope's Peak includes several monasteries and a sacred grove.
** The [[Citadel of the Sun]]. A temple devoted to [[Dol Arrah]], noteworthy for the three blessed [[griffon]]s that reside there.
* [[Overlook]]. Overlook is noteworthy for its [[kalashtar]] community, which maintains a community center, a shrine devoted to the [[Path of Light]], and a few restaurants serving [[Sarlonan|Sarlona]] cuisine.
* [[Redstone]]. A relatively new district, Redstone has grown into one of the largest centers for commerce in the city, nearly twice the size of [[Granite Halls]].
Elegant and civilized, Upper Menthis is home to four of
the finest theaters in [[Breland]]: the cutting-edge [[Art Temple]], the colorful [[Khavish Theater]], the traditional [[Grand Stage]], and the open-air [[Stargazer Theater]], as well as
the [[Kavarrah Concert Hall]].
The shops in Upper Menthis deal mainly in fine food,
fashion, and exotic goods. For instance, in the [[Seventh Tower]] district, Window on Yesterday, Echoes of the Past, the Mekdall Gallery, and Cloud Antiquities all
buy and sell interesting antiques and trinkets from distant lands (see [[Little Xen'drik]]).
The district of [[Den'iyas]] is a [[gnome]] neighborhood
that provides a glimpse into the culture of [[Zilargo]]. [[Davandi Fine Tailoring]] is the source of some of the finest
[[glamerweave]] clothing in [[Khorvaire]], and the district also hosts a number of businesses that specialize in [[alchemy|alchemist]],
[[illusion]], or [[divination]]. Visitors should be aware that intrigue is the primary pastime in Den'iyas, and that hapless adventures can easily find themselves pulled into
intricate schemes or feuds.
Upper Menthis also contains the [[University District]],
home to Breland's finest institutions of learning.
!! Districts and Noteworthy Locations
* [[Den'iyas]]. Founded by [[gnome]] immigrants from [[Zilargo]], Den'iyas is a haven for those interested in Zil culture. It's home to many sages and artisans, and a hotbed of schemes and intrigue.
** [[Davandi Fine Tailoring]]. In addition to being the city councilor representing Upper Menthis, the gnome [[Thurik Davandi]] is an accomplished tailor and [[magewright]] who produces the finest glamerweave clothing available in Sharn.
** [[Khavish Theater]]. Established by and for [[gnome]]s, the Khavish has ample seating for small creatures, and its shows make extensive use of illusions.
* [[Ivy Towers]]. This residential district includes comfortable homes and modest apartments. Many of the students and faculty of [[Morgrave University]] live in Ivy Towers.
* [[Platinate]]. A high-end residential district, home to several retired explorers and adventurers.
* [[Seventh Tower]]. A shopping district, with restaurants and goods of comfortable to wealthy quality. Seventh Tower is especially noteworthy for [[Little Xen'drik]], a collection of galleries whose owners buy and sell goods from [[Xen'drik]].
** [[Little Xen'drik]]. This area of small shops deals in antiquities and relics recovered from [[Xen'drik]] and the ruins below Sharn.
* The [[University District]]. This district is dominated by [[Morgrave University]]. It's also a nexus for sophisticated entertainment, including the Art Temple, the Grand Stage, and the Great Hall of Aureon.
** [[Art Temple]]. This theater is renowned for its avant-garde techniques and subjects.
** [[Dezina Museum of Antiquities]]. Attached to Morgrave University, this building displays the relics recovered on the university's many expeditions.
** [[Golden Horn]]. This wealthy inn includes a library, a few large meeting rooms, and a small concert hall. Performing at the Horn is an excellent opportunity for aspiring [[bard]]s.
** [[Grand Stage]]. This stage hosts grand performances of the beloved classics of [[Galifar]], along with more modern works that follow classical traditions.
** [[Great Hall of Aureon]]. Sharn's largest temple to the [[Sovereign|Sovereign Host]] [[Aureon]], the Great Hall celebrates knowledge and learning. The clergy are sages and savants in a wide variety of fields.
** [[Kavarrah Concert Hall]]. The grand auditorium near the University, Kavarrah Concert Hall hosts the finest musical performances in Sharn.
** [[Sharn Opera House]]. Performances at the Sharn Opera are one of the most highbrow forms of entertainment in the city.
** [[Stargazer Theater]]. This open-air theater focuses on popular entertainment with family appeal.
Upper Northedge is the perfect place for the noble who
can afford a manor in the clouds but wants to avoid the
bustle of [[Upper Central]]. The districts of [[Crystal Bridge]]
and [[Oak Towers]] are filled with spire-topped manors and
grand estates. A host of rooftop parks and gardens provide lovely spaces to sit and reflect.
[[Shae Lias]] is arguably the most remarkable district of
Upper Northedge. Its population is largely composed of
[[elves|elf]], and it is a bastion of [[Aereni]] culture and traditions.
The heart of Shae Lias is the [[Gates of Passage]], a grand
structure that is both the Aereni embassy and a temple
to the [[Undying Court]]. The priests of the Undying Court
don't share this information with outsiders, but many
residents believe that an actual member of the Court—an ancient [[undead]] elf possessing vast knowledge and
divine power—resides in the temple.
Other points of interest in Shae Lias include the [[Oaks]],
one of the finest restaurants in Sharn, which serves
food of the highest quality (and priced accordingly).
The [[Veil of Flesh]] specializes in Aereni body art, in the
form of both traditional tattoos and temporary illusions
woven directly into the skin. The business known as
[[Nightshade]] might be the most unusual watering hole
in Sharn, doubling as apothecary and tavern; the house
specialty is beverages tainted with weak poisons, designed to take the imbiber to the very edge of death.
!! Districts and Noteworthy Locations
* [[Crystal Bridge]]. A peaceful residential district with many wealthy and aristocratic estates.
* [[Oak Towers]]. A residential district where housing ranges from comfortable to aristocratic. Construction in Oak Towers uses materials and styles drawn from [[Aerenal]], and the district is home to many of Sharn's established [[elf]] and [[half-elf]] families.
* [[Shae Lias]]. This district is a bastion for the culture and traditions of the elves of [[Aerenal]]. It includes a variety of businesses specializing in Aereni goods, as well as a temple of the [[Undying Court]].
** [[Gates of Passage]]. Built from Aereni [[densewood]], this spire serves both as the embassy of [[Aerenal]] and a temple of the Undying Court. Aereni citizens who die in Sharn are interred in the temple crypts until their remains can be transported to Aerenal.
** [[Nightshade]]. An apothecary dealing in exotic herbs and salves, Nightshade is also a tavern specializing in lightly poisoned beverages.
** The [[Oaks]]. A legendary restaurant that serves Aereni and Brelish cuisine. The quality is unmatched, as are the aristocratic prices. Head chef [[Maza Thadian]] has maintained the Oaks for over three hundred years, but after her recent appointment as [[city councilor|Sharn Council]] for Upper Northedge she is often occupied with other matters.
** The [[Silver Bough]]. This establishment deals in arms crafted in the Aereni tradition. This merchandise includes [[magic item]]s, but woodshaper Tanar Mendyrian takes time to produce his wonders, and only a limited selection is available at any given time.
** The [[Winding Root]]. A marketplace and gallery that showcases the work of elven artisans, including sculptures, textiles, and fine clothing.
** The [[Veil of Flesh]]. This studio deals in Aereni body art and alteration, such as tattoos and cosmetic [[transmutation]].
This ward is effectively a self-contained city catering to
the nobles that live there. It has fine housing, skilled services, a luxurious mercantile district, and even an entire
district—[[Sunrise]]—designed for the servants of the nobles. The services and lodging in Sunrise accommodate
those with poor or modest lifestyles, as opposed to the
higher-priced goods found elsewhere in the ward.
For those willing to put up with its restrictive laws,
Upper Tavick's Landing has many fine features.
[[Wyredd's Spirits]] is the best source for wine in Sharn.
The shop [[Crystals of Denion]] buys and sells rare [[magic item]]s, though it only has a handful of such items at any
given time. [[Transmutation]] is a renowned beauty salon
providing both mundane and arcane services. House
[[Deneith]] maintains a fortified garrison and training facility in the [[Copper Arch]] district.
!! The Laws of Upper Tavick's Landing
During the war, fears of attacks by foreign agents resulted in the establishment of a number of laws here
that affect visitors, including adventurers, to this day.
The soldiers of House [[Deneith]] have full authority
to act as agents of the [[Sharn Watch]] in Upper Tavick's
Landing, and staff of Deneith's elite [[Blademark|Blademarks Guild]] mercenaries maintain checkpoints at the district's edges.
You need a license to carry a weapon in Upper Tavick's Landing. It costs only 1c, but you have to plead
your case to a clerk. Any Blademark or member of the
watch can demand to see your license and might confiscate unauthorized weapons. You also need a license
to cast spells in the ward. It costs 2c, and you must
specify the spells you intend to cast. A fine can be levied
for any unauthorized use of magic. To get licenses for
weapons or spellcasting, you'll have to go to the courthouse in the [[Twelve Pillars]] district.
Another law requires inhabitants to dress "in a manner that upholds the solemn dignity of this proud ward."
[[Blademarks|Blademarks Guild]] and officers of the watch can choose how
they interpret this. Typically, armor is considered inappropriate unless you're tied to House [[Deneith]] or the
[[Sharn Watch]], or you've served with the Brelish military.
Anyone in contempt of this law is escorted out.
Any sort of unruly behavior—fighting, shouting in the
streets, and the like—brings a fine of up to 1c and temporary expulsion from the ward.
!! Districts and Noteworthy Locations
* [[Copper Arch]]. This district is built around the [[Deneith]] garrison that polices the upper ward. It contains shops and services catering to the wealthy elite.
** The [[Three Towers]]. A fortress [[enclave]] of House [[Deneith]]. One tower is a garrison for the [[Blademark|Blademarks Guild]] mercenary forces that police Upper Tavick's Landing. The second is dedicated to house business and training. The third is a private mansion for Deneith heirs.
** [[Transmutation]]. A beauty salon that employs both magical and mundane cosmetic techniques.
** [[Wyredd's Spirits]]. Wyredd deals in fine wines and exotic spirits. Wyredd's has the finest selection in Sharn, but his prices are high.
* [[Dalan's Refuge]]. An opulent residential district replete with monuments of prominent Sharn citizens.
* [[Ocean View]]. This residential district is home to some of the most influential citizens of Sharn. It has a mix of wealthy mansions and aristocratic estates.
* [[Pinnacle]]. This temple district seems to hold the social aspect of religion at a higher importance than practicing the faith.
* [[Silvergate]]. This shopping district is patronized by those with gold to spare. All manner of fine jewelry and expensive clothing can be found here, along with aristocratic food and lodging.
** [[Crystals of Denion]]. This gallery deals in rare and expensive [[magic item]]s. The selection is limited, and Denion looks for items that are both beautiful and powerful.
* [[Sunrise]]. This district provides housing for the shopkeepers and servants who keep Upper Tavick's Landing running. Housing is largely modest in quality, with a few comfortable towers.
* [[Twelve Pillars]]. This is the civic heart of Upper Tavick's Landing. The twelve pillars it's named for surround a courthouse, the [[Tower of Law]], where visitors can get licenses to carry weapons in the ward.
The upper city of [[Sharn]] sees the most light and enjoys the freshest air,
and consequently the most well-to-do members of
society live and work among the skybridges and
platforms and balconies that extend from the
uppermost towers.
<<list-links "[tag{!!title}sort[title]]">>
See also: [[middle ward]], [[lower ward]].
1: A group of adventurers approaches, telling you to move along and stop trying to steal their business. (If the characters belong to the [[Deathsgate Guild]] or the [[Clifftop Adventurers' Guild]], these could be members of the rival guild.)
2: Outside a House [[Kundarak]] bank, a [[human]] noble screams at a [[dragonmark]]ed [[dwarf]], "What do you mean it's lost?"
3: A priest of [[Kol Korran]] preaches to a crowd, saying, "The best way to invest in yourself is to invest in your gods."
4: An [[elf]] riding a [[pegasus]] with bulging saddlebags asks you for directions to the [[Aurora Gallery]].
5: Two drunk [[dwarves|dwarf]] pass a bottle of spirits back and forth and sing a bawdy song. Passersby are mortified.
6: Two [[kalashtar]] play dragonchess at an outdoor table. They move pieces without touching them.
7: A [[halfling]] chef stands in a large [[skycoach]] that is equipped with a stove, oven, and washbasin. Several spectral hands prepare and plate food as the chef serves a party of smiling customers.
8: A [[harpy]] decked out in colorful ribbons flies overhead, calling, "Get the best deals on adventuring gear at Old Claggin's in [[Clifftop]]."
9: Some [[Morgrave|Morgrave University]] students follow their [[dwarf]] professor onto a lift as she says, "Next stop: the [[Cogs]]!"
10: An out-of-breath [[gnome]] carrying bagpipes asks you for directions to [[Kavarrah Concert Hall]].
11: A flustered [[gnome]] carries a stack of papers taller than he is—unaware of the plume of smoke coming from inside a scroll case slung on his back.
12: You walk by a shirtless [[elf]] tattooed from head to waist with images of [[dragon]]s battling each other.
13: A groomed [[hobgoblin]] wearing a jeweled vest approaches you and says, "Ah! Adventurers. Any interest in securing some [[Dhakaan]]i relics for me?"
14: Someone has painted, "The crown dies with [[Boranel|Boranel ir'Wynarn]]!" across the gates of a noble's mansion. A member of the [[Sharn Watch]] is talking to the household staff.
15: A [[magewright]] offers to shine your shoes instantly with magic for 2 gold galifars, saying, "You can't be seen with those dirty things up here."
16: A [[human]] wearing the livery of House [[Vadalis]] struggles to carry a 3-foot-tall speckled blue egg down the street.
17: An [[aasimar]] oracle approaches and promises to give you the answer to all the problems that ever existed for 42 gold galifars.
18: A [[shifter]] with flowers in her hair and a wand in her hand offers to magically gild any item of clothing you wear for 20 gold galifars.
19: Four [[warforged]] work together to operate an enormous tarrasque puppet as publicity for a new play at the [[Art Temple]].
20: A horrified crowd is gathered around a burning effigy of King [[Boranel|Boranel ir'Wynarn]]. No one claims responsibility for the act.
21: A [[human]] noble is berating a [[warforged]] servant for losing her invitation to the next [[Tain Gala]].
22: A young noble proposes to his boyfriend in a beautiful garden on a tower balcony. Nearby, a [[changeling]] looks on in tears.
23: You walk down a path lined with trees on which are growing candy-coated apples.
24: Three children sparring with wooden swords play dangerously close to the edge of a bridge.
25: A [[kalashtar]] on the street approaches you, saying, "I can help you talk with the dead. Is there anyone you miss?"
26: An artist offers to draw caricatures of everyone in your group at the same time by using several magically animated quills.
27: You approach a fresco painted on the ground that depicts King [[Boranel ir'Wynarn]]. As you get closer, the fresco speaks, delivering an inspiring line taken from one of the king's speeches.
28: A [[dragonborn]] standing near several [[soarsled]]s offers you a tour of upper Sharn's most impressive mansions.
29: Two nobles, one [[Aundair]]ian and one [[Brelish|Breland]], heatedly debate which of their countries would have won the [[war|Last War]] had it been fought to a conclusion.
30: A gilded [[warforged]] plays a sad song on a trumpet, honoring those who fell during the [[Last War]].
31: A group of well-outfitted adventurers snicker and whisper to each other as you pass.
32: You turn a corner and notice a [[shifter]] who immediately puts her hands in her pockets and starts whistling, obviously trying to act inconspicuous.
33: A [[pseudodragon]] flies out of a nearby bush. As the playful creature licks your faces, you notice it wears a collar engraved with the letter M.
34: You walk past a placid pond in a small park filled with colorful fish. An attendant removes dead fish from the water with a net.
35: You come near a mansion, and an illusion of an old man dressed in noble finery appears. "Get off my lawn!" the figure gripes.
36: An [[elf]] child with a faerie dragon on a leash walks toward you and asks if you'd like to touch the exotic pet.
37: You find a small brass key on the ground that glows blue whenever it is touched.
Uruvai is the least politically active of the six families of House
[[Thuranni]]. Led by Lady [[Miravella|Miravella Uruvai d'Thuranni]], they own the brothel and hidden [[enclave]] of [[Shadows]] in [[Stormreach]], which serves as a front for much darker schemes. In truth, the Uruvai family is in league with [[Lady Illmarrow]], the [[lich]] Queen of Death, who provided the funding and political cover the family required to set up shop in [[Stormreach]]. Their alliance is one of both
blood and convenience—one that has already yielded
spectacular results.
The Uruvai is a family of [[necromancers|necromancy]], [[elves|elf]]
who revere the old ways left behind when their ancestors
departed [[Xen'drik]] for [[Aerenal]] nearly forty thousand years ago. The Uruvai family claims to trace its lineage back to the [[Qabalrin]], the oldest and
mightiest necromancers the world has ever known. The Uruvai shares this tradition and perspective with [[Illmarrow|Lady Illmarrow]] herself, who uses the Uruvai to do her will
in [[Xen'drik]].
!! The Quest for the Last First Vampire
With help provided by a skilled archaeologist of the [[Emerald Claw]] known as the [[White Raven]], the Uruvai family discovered the location of a long-lost tomb buried in the former location of the ancient [[Qabalrin]] city near the [[Ring of Storms]]. From [[Stormreach]], the Uruvai oversaw the White Raven’s expedition to that sacred site, where the archaeologist recovered a sarcophagus containing an ancient [[vampire]]—the last one created during the height of the Qabalrin civilization, if the word of Illmarrow is to
be believed.
Once among the mightiest of the ancient [[Qabalrin]] necromancers, this [[vampire]] might be the key to releasing [[Lady Illmarrow]] from her endless torment and resurrecting the power of the [[Mark of Death]]. Although Illmarrow is herself a mighty spellweaver, she is less experienced in the [[Qabalrin]] techniques than the [[vampire]]
and lacks any blood (the key component to Qabalrin necromancy) herself. Vol’s ultimate goal is to awaken the ancient necromancer and return him to his full strength, whereafter he will teach her (or give her) the means by which she can change the course
of history.
In the interim, Illmarrow continues to use the Uruvai family of the [[Thuranni]] to further her schemes. With data she has been collecting for centuries, she is slowly but surely tracking down her own mortal descendants—those who would today have good claim
to nobility in a [[dragonmarked house]], had their own house not been betrayed—and bringing them into House [[Thuranni]] under the Uruvai banner. House [[Vol]]
is returning to Eberron, and it hides behind a mask called the Uruvai.
House [[Orien]] operates in [[Stormreach]] out of quarters in the [[Citadel of the Twelve]], under the capable hand of Uskal d’Orien. Uskal plays many roles; he makes reservations for travelers, sees to the needs of [[Transportation Guild]] members when they are in Stormreach, and represents Orien in diplomatic affairs. Though the years are taking their toll on him, Uskal is a jovial and energetic man, with streaks of red remaining in his white beard and smile lines worn into his cheeks. Uskal has no [[dragonmark]], but he is a capable administrator.
In addition to his work as a travel agent, Uskal oversees four members of the [[Couriers Guild]]. Three of them make deliveries only within the city. [[Rain d'Orien]] is the exception.
Ustah is a potent [[Syrk|Syrkarn]] liquor brewed from honey and wild berries, reportedly from an ancient [[ogre]] recipe.
Usvapna quori, also known as dream masters, are the assassins and spies of [[Dal Quor]]. They serve the [[hashalaq]]s, and they revel in destroying any threat to the [[Dreaming Dark]]'s plans. The dream masters also sow discontent and worse in mortal minds.
To unite the Six Kings, [[Jhazaal Dhakaan]] created a dream they
could share—a vision that bound them all together. However,
this isn't just a metaphor. When mortals sleep, their spirits touch
[[Dal Quor]] and create temporary dreamscapes. Jhazaal Dhakaan
bound the spirits of the dar together, creating a vast, permanent
dreamscape within Dal Quor—a vision of the ideal [[empire|Dhakaan]].
With the spirit of every [[dar|Heirs of Dhakaan]] tied to this place, when one of them
sleeps, they dream of the empire and their place within it.
The Uul Dhakaan isn't oppressive. Each dreaming dar
has their own unique dreams within the Uul, and just like
normal dreams, these are a place to process recent events and
experiences. But the Uul Dhakaan provides a foundation that
shapes and flavors those dreams, teaching and inspiring even
while allowing the dar to process their own experiences. The
Uul Dhakaan also retains the memories of all those who have
gone before. While dreaming in the Uul Dhakaan, a warrior
could experience a battle against the [[daelkyr]] that occurred
thousands of years ago, fighting alongside one of the greatest
heroes of that age. A smith could forge a blade alongside a
legendary [[daashor|artificer]]. These things aren't real; both the hero and
the smith are dreams, pieced together through memory. And
as with any dream, the dreamer likely won't remember most
of it after they wake up. But it remains in their subconscious
as a source of inspiration and instinct. The dar know what
the empire could and should be. They know the role they are
supposed to play, the meaning of //muut// (duty, honor of the empire, what is expected of you) and //atcha// (personal honor, glory, the opportunity to exceed what is required of you). And they feel the connection to the dar around them, understanding they all
share that common vision. This reinforces the other aspects of the Dhakaani psyche,
strengthens their martial discipline, and underlies their
adherence to caste roles.
The Uul Dhakaan is a dream, and for most dar, it's nothing
more than that. It's not something they discuss with outsiders,
nor something they give much thought to from day to day;
dreaming of the empire is just a part of life. But there are a few
people within each kech who deal with the Uul Dhakaan in a
more concrete fashion:
* ''Chot'uul.'' The “dream watchers” are an order of monks who monitor the Uul Dhakaan and protect it from corruption. In addition to specialized training and mental discipline, the chot'uul employ tools to retain their full consciousness and memories while dreaming, even allowing them to bring prized possessions into the dream (see [[uul'kur|dream key]] and [[kra'uul]]). The chot'uul protect the Uul Dhakaan from [[quori]] manipulation, the corruption of the [[daelkyr]], and other spiritual threats.
* ''Duur'kala.'' A [[dirge singer]]'s training often includes time within the Uul Dhakaan. An [[uul'kur|dream key]] allows the novice duur'kala to experience historical events within the dream or to study with the memory-shades of duur'kala masters.
* ''Uul'kala.'' The “dream singers” are [[dirge singer]]s who specialize in walking in dreams. The deep vaults of the [[Kech Dhakaan|Heirs of Dhakaan]] are spread across [[Khorvaire]], and the uul'kala act as their ambassadors and emissaries, maintaining communication between each kech and planning strategies. This serves a similar role to the [[speaking stone]]s of House [[Sivis]], for a duur'kala equipped with an uul'kur can report back to superiors in their dreams. While useful, this practice isn't as widespread as the speaking stones of the [[Five Nations]]. Uul'kur are a limited resource, and even with one, it takes skill to navigate within the dream. There are kech vaults that lost their last uul'kala over the centuries in isolation, and as a result, that clan's fate remains unknown to the present day.
The Uul Dhakaan serves as a foundation for the Dhakaani
psyche, reinforcing their beliefs and traditions. But it's not an
oppressive force, and for most Dhakaani, it's simply a source of
instinct and inspiration. In creating a Dhakaani character,
consider whether the Uul Dhakaan holds any special
importance for you.
If adventurers want to experience what the Dhakaani Empire was at its height—and what it could be again—they can find it here. Chot'uul
guardians maintain outposts throughout the dream, along with
a great monastery in the capital city. The magic woven into the
dream ensures that the throne in the imperial palace remains
empty—for now. But when a new emperor is chosen and has
the support of the majority of the dar, they'll hold the throne in
the Uul Dhakaan as well as in the Material Plane.
Although [[Adar]] has more than a few [[Kythri]] [[manifest zone]]s, Uutkleza is a particularly dark scar on the mountains near which only bedlam dwells. Getting to Uutkleza requires a treacherous climb from 4,000 to 10,000 feet,
then a descent into a crater like that of an inactive volcano.
No volcano sleeps here, though. Within the ringing peaks,
Uutkleza's landscape roils and shifts, sometimes even with
the thoughts of a traveler. Openings to [[Kythri]] pop in and
out at random intervals, defying the [[Shroud]] and sometimes
trapping denizens from the Churning Chaos in Adar. [[Chaos pool|chaos pool]]s also dot the landscape.
Uutkleza is home to any creature found on [[Kythri]],
and within it at least one [[roc]] is known to reside. The entropic atmosphere of Uutkleza shares all of Kythri's traits, except that gravity is normal. In the expanse of Uutkleza, a small order of [[githzerai|gith]] have an enclave they
call ''Sudakha''. Though they know and admire some of the
values expressed within [[Adar]], the githzerai interact little
with those outside Uutkleza, spending much of their
time honing their skills by keeping whatever comes from
[[Kythri]] within Uutkleza. Recently, an [[Endseeker|Endseekers]] sect has
moved near the crater, apparently having designs on the
githzerai monastery and the [[chaos pool]]s.
''Leader:'' [[Dalin d'Vadalis]]<br/>
''Headquarters:'' [[Foalswood]] (near [[Varna]], [[Eldeen Reaches]])<br/>
''Dragonmark:'' [[Mark of Handling]]
//Don't get sentimental. A beast is a tool. Our role is to find the right tool for the task and to make sure they're of the finest quality. Nature is our kingdom; never forget that we were born to rule it.//
<div align="right">—Dalin d'Vadalis</div>
Represented by the [[hippogriff]], House Vadalis plays an
important role in daily life, offering meat, mounts, and
more. Vadalis isn't one of the most powerful houses, but
its barons are generally content; they're more interested
in discovering new monstrosities than engaging in politics. The current head of the house, Dalin d'Vadalis, disdains the use of a title and has no aspirations to nobility
or greatness for himself or his house.
House Vadalis breeds and trains beasts for a wide
range of purposes. While the house maintains vast cattle ranches and trains horses and hounds, the [[Mark of Handling]] allows Vadalis to work with more exotic creatures as well. [[Griffon|griffon]]s, [[hippogriff]]s, and even [[bulette]]s can be bred and trained. Even with the Mark of Handling, this is dangerous work; there's a lot of turnover at the bulette ranch. But these exotic creatures aren't enough to satisfy the most innovative members of the house, leading to the practice of magebreeding. Using [[dragonshard]] [[focus item|dragonmark focus item]]s, Vadalis has found ways to weave magic into natural bloodlines, binding new strengths into mundane creatures. Typically, this results in a superior version of a creature—an animal that is stronger,
faster, and smarter. But rumors claim that Vadalis has
crafted monsters of its own. Some rumors even insist
that Vadalis is trying to magebreed better humans.
House Vadalis has a smaller footprint than most of
the other [[dragonmarked house]]s. A city might have
a small outpost where Vadalis breeders come to
sell their stock, but the house has only a few major
[[enclave]]s—the ranches where breeding occurs.
!! History of House {{!!title}}
Around 2,000 years ago, a few human families traveled west to settle in what is now the [[Eldeen Reaches]]. It was a hard land, but they endured—and two centuries later, the [[Mark of Handling]] appeared on their children. This event was seen as a gift from the [[Sovereign Host]], a way to help the Vadalis families survive and prosper in the hard lands.
Today House Vadalis is seen as fairly benevolent,
but there are dark secrets in its past. The Seryan line
of the house has always been interested in the dark
power of the natural world. While others focused on
breeding better livestock, the Seryans studied the [[displacer beast]] and the [[dire wolf]]. Their research came to
the fore during the [[War of the Mark]]. House Vadalis
takes bloodlines seriously, and it was quick to join
the other houses in the effort to eliminate
bearers of [[aberrant dragonmark]]s.
During that war, the Seryans revealed
the fruits of their labors: horrific living
weapons. Much of their work was so
terrible that records of it have been
suppressed. Following the war, their
creations were destroyed and their
practices outlawed by the new Council
of the [[Twelve]].
Following the [[War of the Mark]],
the heirs of House Vadalis settled
into their work, [[magebreeding]] mounts and
livestock and wandering the world.
House Vadalis has never been one of the
most powerful or profitable houses, and it has never
tried to be. The Vadalis heirs are a family, and they do
what they love.
!!! The Last War
The [[Last War]] was good for house
business. House Vadalis produced [[magebred|magebreeding]] bears
for the [[Brelish|Breland]] special forces, [[dragonhawk]]s for [[Aundair]], and all manner of mounts and warbeasts. It was during the war that the organization known as the [[Feral Heart]] rose within the house—a group that sought to re-create and improve upon the forbidden techniques of the Seryan line, including the practice
of [[magebreeding]] humans.
During the [[Last War]], the [[Eldeen Reaches]] seceded
from [[Aundair]]. Even though its seat of power lay within
the newly independent Eldeen Reaches, House Vadalis remained neutral in this struggle and still takes no
side in the clash between the two nations.
Toward the end of the war, the hunters of [[Balinor's Blessed]] ignited a bitter feud between House Vadalis and the [[Valenar]] [[elves|elf]] when they sought to steal a
herd of [[Valenar horses|Valenar beast]]. House Vadalis is fascinated by
these animals, and is always interested in acquiring a
Valenar steed; however, to date it has not managed to
breed one of the fey horses.
!! Guilds and Organizations
<<list-links-article "[tag{!!title}tag[trade guild]sort[title]]">>
!! Enclaves
<<list-links-article "[tag{!!title}tag[enclave]sort[title]]">>
To use this ring's effect, you must have the [[Mark of Handling]].
While wearing this ring, you can expend some of its stored magical power to comprehend and verbally communicate with beasts for 5-15 minutes. You can also expend a charge to gain advantage on a Persuade roll against the beast. The ring can be used 2-5 times per day before its power is expended and must recharge overnight.
Vaedin [[Uruvai|Uruvai family]] d'[[Thuranni]] is Lady [[Miravella|Miravella Uruvai d'Thuranni]]’s nephew and one of the most accomplished assassins in [[Xen'drik]]. He is a wielder of [[psionics]], a [[soulknife]], and never leaves a trace. Longtime residents have seen the results of his work, however, and he is among the most feared individuals in town, though few even know what he looks like.
//Individuality is a curse. Every day, it fills you with disappointment and doubt. But within the Hive, you will always know your place, always know your purpose. Join us. Forget your past. Forget your pain. And help us build a better world.//
<div align="right">—A cultist of Valaara</div>
Valaara is known as the Crawling Queen, the Watcher in the
Walls, and the Keeper of Worms. It’s said that you can hear
Valaara’s voice in the rustling of roaches and the keening
of locusts. In some tales, Valaara crafts worms that crawl
through the ear and consume a creature’s brain; in others,
when its maggots devour a corpse, Valaara can recreate the
victim in its [[Deepest Hive]]. She is thought to be the creator of the [[carrion crawler]] and the [[purple worm]], among other vermicular monstrosities. No one knows what Valaara wants, but its minions could be all around you even now, crawling in
your walls and moving beneath your feet.
Valaara embodies the alien nature of
insects in all aspects. Those touched by Valaara may
undergo a physical metamorphosis and manifest insect traits,
but Valaara’s touch can also transform the mind. Some who
hear the whispers of the Crawling Queen become fascinated
by insects, while others suffer more dramatic transformations.
Valaara’s most persistent cults spread by forming a hive; one
creature becomes the queen, and others touched by this cultist
find their original personality and desires fading, consumed by
the need to fulfill their purpose in the hive. Usually this effect
is limited, a psychic connection that only binds a few people;
but in a few cases, this psychic contagion has been virulent
and contagious, consuming entire towns.
!! Cults of Valaara
Valaara's most widespread cult calls itself the Hive;
members of this sect surrender their individuality to serve
the collective, with mammals acting as if they're insects. The
question when dealing with the Hive is whether it's solely a
delusion and the victims can be saved, or whether the cultists
truly have been consumed from within by Valaara's children,
and are simply wearing human shells.
Beyond the Hive, Valaara's cults invariably interact with
insects in some way. Some believe they are receiving divine
messages hidden in the buzzing of insects. Others cultivate
massive hives of telepathic insects or create charnel pits as
a breeding ground for maggots.
Cultists of Valaara may wield [[symbiont]]s such as [[throwing scarab]]s and [[spellburrow]]s.
Valaara's cults often spring up in the sewers and middens of major cities. They prosper in
places where insects and humans both thrive. Despite their shared affinity for vermin, the [[Children of Winter]] [[druid]]s despise Valaara and its cults; they seek to preserve the natural order, whereas Valaara's creations are anything but natural.
The Valaes Tairn are the largest sect of the [[Tairnadal]] elves. They believe that glory in battle is the highest goal, regardless of the nature of that foe. They honor their patron ancestors by acting as their ancestor would act in their place, rather than literally attempting to relive their ancestor's actions; in this sense, the Valaes Tairn are actually the most moderate sect of the [[Tairnadal]].
Most of the Valaes Tairn left [[North Aerenal]] for [[Khorvaire]] during the [[Last War]], and now claim the beachhead nation of [[Valenar]].
Both sides suffered innumerable casualties in the [[ancient war|Age of Demons]] of the [[couatl]]s and [[dragon]]s against the fiendish [[overlord]]s. In one epic battle, a colossal two-headed tiger-[[fiend]] named Yad-Raghesh was laid low south of the [[Dragon Spine]]. The overlord assaulted [[Argonnessen]] on a seemingly pointless rampage, leaving a swath of destruction in its wake. It took an entire battalion of the [[Light|Light of Siberys]] to fell it. Yad-Raghesh was the first overlord slain in the great war, and its destruction was hailed as a grand victory. But elder [[Eyes of Chronepsis]] pondered the rajah’s suicidal attack uneasily, and their momentary surprise at its death was followed with wary concern. Their fears came home to roost centuries later when the land where Yad-Raghesh fell rotted away and a host of [[fiend]]s spawned from the desolate stretch of corrupted earth. Since then, the Vale of the Fallen Rajah has been a thorn in the [[dragon]]s’ side, where malignancy grows from foul roots and taints the earth and sky with evil.
At present, the Vale is lair to the [[Talons of Tiamat]] and the countless [[fiend]]s huddling in their fallen rajah’s dark shadow. The [[Light of Siberys]] patrols the perimeter incessantly doing their best to curb the spread of the Vale’s seeping rot. Still the darkness encroaches,
gaining inches every year. Unless powerful magic is developed to contain it, it will eventually cover the face of [[Argonnessen]].
!! Features
The [[overlord]]'s fall shook the earth, and now a bleak
wasteland riddled with dark canyons and sulfur-spewing
caves lies where its blood desecrated the soil. The scarred
ribs of Yad-Raghesh, twisted spires of pure evil, reach
high into the black-clouded sky above.
The land here seeps hate. Those who trespass within the Vale find themselves filled with rage over the slightest affront. In addition, the corrupting power of Yad-Raghesh erodes the morals of any who stay among his remains. The canyons themselves betray travelers, shifting to befuddle attempts to navigate them.
By far the most insidious threat of the Vale, and
the primary concern of the [[Light of Siberys]], is the
place’s strange power over memory. Every day, a creature that has seen the Vale must resist its fiendish power or forget everything it knows of the place, even the location’s very existence. This curse allows bands of [[fiend]]s to wander out of the Vale uncontested as patrols of the Light simply forget their mission and
find themselves faced with a sprawling, unfamiliar
wasteland. Patrols are constantly rotated to avoid
lapses in containment, but fiends invariably escape,
and the Vale continues to encroach upon the surrounding countryside.
The "Womb" of Yad-Raghesh, a foul crevice ever shrouded in supernatural darkness, is where the fallen overlord's sinister energies pulse strongest. Here the [[Talons of Tiamat]] place eggs (their own, or those stolen from other dragons) to be tainted with
Yad-Raghesh’s unholy power. Eggs hatched in this womb nearly always yield [[abishai]].
A widespread [[cult of the Dragon Below|Cults of the Dragon Below]] can be found across the west coast of [[Khorvaire]], from the [[Shadow Marches]] to the [[Demon Wastes]]. Cultists believe that there is a paradise within [[Khyber]]: the Vale of the Inner Sun, a place free from suffering and death. To earn passage to the Vale, a champion must defeat a host of worthy foes, dedicating their souls to the "Gatekeeper" (not to be confused with [[Gatekeeper druids|Gatekeepers]]. Cults vary on the criteria for “worthy foe”—while some cultists are serial killers, others only consider monsters or evildoers as qualifying for their passage.
The Vale of the Inner Sun does exist, and it has the //Stillness of Flesh// property of [[Risia]] and the //Light of Life// property of [[Irian]]. However, there is a price to this immortality; creatures who dwell in the Vale for an extended time become slowly mutated,
eventually turning into unique [[aberration]]s. The inhabitants of
the Vale—some of whom have been there for centuries—have
no love of outsiders, and visitors must prove their worth to
bathe in the prismatic light of the Inner Sun.
The [[Knights of Thrane]] [[militia]] in [[Stormreach]] are led by Valen Vanatar, the grandson of one of the original knights. Vanatar is a passionate man, easily stirred to action by perceived injustice or a threat to [[Embers]]. He believes the [[Blood of Vol]] and worship of the [[Dark Six]] pose a threat to the stability of Embers and acts accordingly.
Valen's Isle is a large island in [[Aeren's Sound]] off the northeastern coast of [[Aerenal]].
''Capital:'' [[Taer Valaestas]]<br/>
''Hallmarks:'' Elves, horses, mercenaries
In the midst of the [[Last War]], an army of [[Tairnadal]] warrior [[elves|elf]] from [[Aerenal]] seized this region from [[Cyre]],
invoking a claim to the land from long before [[humanity|human]]'s
arrival on the continent. The elves of Valenar devote
themselves to the arts of war. Their cavalry has no equal
in [[Khorvaire]], and they combine a talent for magic with
stealth and swordplay. Cyre employed the Valenar as
mercenaries until the elves betrayed Cyre and took a
corner of the nation for themselves. These lands escaped the destruction visited upon the rest of [[Cyre]]. After
the [[Mourning]], no one wanted to challenge the Valenar's
claim to the land they had taken; in the interests of
peace, the [[Treaty of Thronehold]] recognized the new elf
kingdom of Valenar.
Valenar [[elves|elf]] spend little time at rest, operating in
small units called warbands. Those who aren't patrolling the kingdom travel abroad seeking adventure.
[[Half-elves|half-elf]] handle the civic administration. Some of
these are the children of Valenar elves, but most are immigrants who've come from elsewhere in [[Khorvaire]] in
search of opportunity. Cyran [[human]]s still occupying the
region fall below them in rank. Once citizens of [[Cyre]],
now they're citizens of Valenar. Little has changed for
the commoners, most of whom don't care who wears
the crown.
The harsh sands of the [[Blade Desert]] cover northern
Valenar and serve as a natural barrier between this land
and the rest of [[Khorvaire]]. Beyond the desert, Valenar
transitions from rolling steppes to fertile plains. The
desert can be deadly, but the Valenar elves pose the
greatest risk for adventurers. The elves won't interfere
with peaceful caravans, but a well-armed group of travelers invites challenges.
!! Interesting Things About {{!!article}}{{!!title}}
* The [[dragonmarked|dragonmarked house]] House [[Lyrandar]] helped the Valenar [[elves|elf]] build the infrastructure of their kingdom. The [[half-elves|half-elf]] have no homeland, but House Lyrandar hopes to make Valenar a haven for its people.
* The ancestors of the elves fought [[goblin]]s for control of this region many thousands of years ago. Relics of that struggle are still scattered across Valenar and the [[Blade Desert]]: ruins, haunted fortresses, and battlefields that have slipped out of alignment with time.
* Valenar warbands include [[druid]]s (the [[Siyal Marrain]]) and rangers, and [[druidic magic|primal magic]] bolsters the military arsenal of the elves. Walls of thorns surround elven fortresses, and beasts fight alongside the elves. [[Valenar horses|Valenar beast]] are known for being as fearless and stubborn as the elves who ride them.
!! Valenar Characters
When creating a Valenar character or NPC, consider the following:
* ''Martial Role.'' Valenar was forged in war. As an [[elf]], consider your role in a warband. Are you a simple soldier, an acolyte devoted to the elven ancestors, or a sage familiar with your Valenar history? As a [[half-elf]], you might be an entertainer, a sailor, or a guild artisan working to support the elf army, or you might be a charlatan seeking opportunities. As a [[human]] from Valenar, you could be an urchin born in [[Taer Valaestas]], or a folk hero fighting for the common people.
* ''Dreams.'' Have you left Valenar behind, or are your aspirations tied to the new kingdom? As a [[half-elf]] with Valenar blood, do you want to be recognized as a true Valenar—granted a bond to a [[patron ancestor|Spirits of the Past]] and a chance at immortality—or are you more interested in building a homeland for your people? As a [[human]] whose land the elves reclaimed, do you want to work with the elves or do you want to drive them out—and if so, who do you want to replace them?
* ''Animal Companions.'' Feytouched beasts play an important role in Valenar society. The Valenar are known for their steeds, but a wide range of [[Valenar beast]]s bond with non-elves. As a starting character, you might not have established a connection to a Valenar beast. If you return to Valenar later in your adventuring career, perhaps you will find your bondmate.
!! Cities and Sites
Most of the communities of Valenar consist of farming villages, with fortress towers scattered across the plains as military outposts.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
There's a popular saying in [[Taer Valaestas]]: "The
shadow of war hangs long over Valenar." War defines
Valenar culture. The [[Treaty of Thronehold]] recognized
Valenar as a sovereign nation, but the elves are already
pushing the limits of the treaty. Some venture into the
[[Mournland]] or the untamed jungles of [[Q'barra]], and Valenar warbands have launched raids into [[Darguun]] and
[[Karrnath]]. High King [[Shaeras Vadallia]] has promised to
rein in his warriors, but many believe that the elves will
continue their provocation. Their main interest is conflict with a worthy foe—and they might want Darguun or Karrnath to declare war.
Because of this, the nation remains on a war footing. Villages find it challenging to produce the supplies required to maintain the elf army. Still, the Valenar are rarely cruel overlords. As long as a village can meet its
quotas, the elves leave it alone, though villages that fall
below expectations are more likely to receive assistance
from [[druid]]ic advisors than punishment.
The [[elves|Tairnadal]] of [[Valenar]] say that when their ancestors fought the [[giant]]s of [[Xen'drik]], elf [[druid]]s known as the [[Gyrderi]] took the forms of animals on the battlefield. The cruel and mighty Emperor [[Cul'sir]] of the giants laid a curse upon the druids and trapped them in the forms of animals. Just as the ancestors of the Valenar guide their warriors in battle, the spirits of these druids can awaken power in an animal to create a companion worthy of a champion.
Valenar beasts are awakened to advanced intelligence and power by the touch of an ancestral spirit. Traditionally, Valenar animals choose Valenar elves as companions, reflecting a bond between the ancestors of elf and animal. To be chosen by a Valenar beast is a great honor, and any such elf is treated with respect and reverence. Still, on the rare occasions when a Valenar animal chooses an adventurer of a different ancestry as a companion, it is universally accepted.
The Valenar horse is the most commonly known example, but the ancestral spirits can take on many animal—hawk, hound, or others. These beasts are tended by the [[druid]]s of the [[Valaes Tairn]]: the [[Siyal Marrain]].
The Valley of Shadows is a hidden pocket of jungle located between the [[Fangs of Argarak]] and the [[Ash Cauldrons]] in [[Xen'drik]]. The valley is so full of the webs of monstrous spiders that it appears shrouded in fog at a distance.
This is the primary shrine of the draconic religion [[Thir]]. Statues of the [[Dragon Gods]] are arranged in a circle. Each is ten times the size of a colossal [[dragon]], and each
is inlaid with enough gemstones and precious metals to beggar a kingdom. Smaller statues of the fifteen [[Sovereigns|Sovereign Host]] stand at the feet of the greater deities. No
images of the [[Progenitors|Progenitor Dragons]] are present. If questioned, a follower of [[Thir]] would be surprised. “[[Eberron]] is at your feet, [[Siberys]] above us, [[Khyber]] far below; what would be the point of trying to capture them in stone?”
Although [[dragon]]s worship in their
own way, dragon priests of the [[Thousand]]
spend a great deal of time at the Valley of the Three. Some of the greatest priests
of the past have actually merged with the
landscape, becoming immortal guardians of this place. Young dragons who
wish to learn the mysteries of the divine often come to the Valley to study with the elders.
''District Type:'' Average residential <br/>
''Buildings:'' Upscale residences (40), average residences
(280), poor residences (40)<br/>
''First Impression:'' Orderly collections of townhouses ring the towers of this quiet district. Children play in the streets, couples stroll arm in arm.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Myshan Gardens]] (northeast); [[Granite Halls]] (south); [[Ashblack]] (below); [[Dava Gate]] (above)
Vallia Towers is very similar to [[Myshan Gardens]]. Its population includes an unusually high concentration of [[half-elves|half-elf]], but otherwise features the same hodgepodge of artists, revolutionaries, and nonconformists.
All but unknown in the [[Five Nations]], the Valraea
are a [[line|Aereni noble line]] of [[sea elves|sea elf]]. Their ancestors were [[magebred|magebreeding]] and charged to guard and govern the coastline of [[Aerenal]], forming the [[Valraean Protectorate]]. While rare, Valraea can be encountered in any of the port cities of Aerenal and are represented in the [[Undying Court]]. Valraea typically dress in leather and are comfortable with casual nudity; they fashion masks from shell and bone.
Long ago, the waters along the western coast of [[Aerenal]] were
inhabited by peaceful [[locathah]]. The [[sahuagin]] of Sha’argon’s Kingdom—a predecessor to the [[Eternal Dominion]]—steadily
advanced toward Aerenal, conquering and assimilating the
locathah. Concerned by the obvious aggression of the sahuagin,
the [[Sibling Kings]] acted to secure the waters around Aerenal,
establishing a buffer zone that would ensure that Sha’argon’s
Kingdom posed no direct threat. The [[line|Aereni noble line]] of [[Valraea]] was
chosen, and through the power of the [[Undying Court]], its nobles
were physically transformed into [[sea elves|sea elf]], gaining iridescent
skin and the ability to breathe beneath the water.
Initially, the line of [[Valraea]] served as protectors and
advisors, organizing the [[locathah]] and helping them construct
superior defenses. Then the attacks began. The conflict slowly
escalated; the harder the locathah fought, the more it drove
[[sahuagin]] determination to claim the region. Valraean priests
brought the full power of the [[Undying Court]] to bear against
the attackers, and Sha’argon’s Kingdom couldn’t match their
transcendent might. A generation later the [[sahuagin]] returned,
and the elves retaliated, using the divine power of the Undying
Court to seize the Sha’argon border fortresses. It was at this
time—when the region claimed included both sahuagin and
locathah lands—that the elves officially declared it the Valraean
Protectorate. According to the proclamation, the Undying
Court would protect all peoples of the Protectorate and the line
of Valraea would provide them with guidance and security...
all of which was a gentle way of saying that the people were
now under Aereni rule and would be forced to embrace Aereni
customs. While this decision was driven in part by a desire to
ensure the island’s security, it may have also been tied to the
discovery of [[dragonshard]] deposits along the seabed—both
fallen Siberys shards and indications of deep Khyber shards.
The next thousand years brought chaos, as the [[sahuagin]]—first Sha’argon’s Kingdom, then the [[Eternal Dominion]]—continued to attack and the Valraean [[elves|elf]] continued to retaliate by conquering additional [[sahuagin]] territories. But the power of the [[Undying Court]] is geographically limited. While [[cleric]]s can draw on the power of the Court to cast spells anywhere in the world, the transcendent might that can repel
[[dragon]]s or defeat [[sahuagin]] armies has a limited range. When
the elves pressed beyond that, they suffered terrible losses;
and yet, the Dominion couldn’t challenge the elves within the
Court’s sphere of influence. This began a long stalemate that
continues to this day. The [[Eternal Dominion]] has launched
numerous attacks over the last few centuries, testing the power
of the [[Undying Court]], but thus far, the might of the [[deathless]]
has been sufficient to repel every [[sahuagin]] assault.
!! Culture
Most subjects of the Valraean Protectorate are [[locathah]]
and [[sahuagin]]; despite this, the Protectorate is modeled
after [[Aereni]] society in many ways. In [[Aerenal]], any [[elf]] can
prove themselves worthy of joining the [[noble line|Aereni noble line]]. In the
Protectorate, subjects likewise strive to prove their worth—but in this case, they seek to be worthy of //serving// the elves of the noble line. Valraean subjects are raised to believe that all elves are semidivine beings. They’re ancient and wise,
masters of powerful magic and remarkable skills...and most
importantly, only elves can ascend to join the [[Undying Court]].
The sea elves of the line of [[Valraea]] live in the midst of this
enforced adulation. They’re idolized and adored from birth, and
have been playing the role of divine guardians and guides for so
long that many have come to believe it: they //were// shaped by the
[[Undying Court]] to be the guardians of the sea, and they do stand
above their adoring subjects. But while the Valraean [[sea elves|sea elf]]
are often arrogant and overconfident, they generally strive to
live up to that vision, to protect anyone in their charge, to be the
noble and gracious rulers that (most of) their subjects imagine
them to be. They aren’t petty tyrants; they believe in ensuring the
safety and security of their people—but they also feel no qualms
about the fact that their subjects are ultimately trapped in their
lives, with all positions of power held by sea elves. They consider
their privilege logical and natural; and so do the overwhelming
majority of Valraean subjects, who believe the elves, with their
long lives and [[deathless]] ancestors, are more capable than other
mortals could ever be with their fleeting lifespans.
Meanwhile, Valraean subjects believe they too are elevated
above all outsiders, lower than the elves, but still blessed to
receive the guidance of the elves and the living (or rather,
[[deathless]]) gods of the [[Undying Court]]. And most subjects strive
to prove themselves worthy of this blessing. All subjects of the
Protectorate receive an education and learn trades. Its people
engage in simple industry that no [[Aereni]] elf wants to dirty their
hands with, as well as laboring to provide an important source
of [[dragonshard]]s for the mainland. In all of this, Valraeans are
generally honest and industrious, trying to emulate the Aereni
and perfect their skills; but they’re taught that they’ll never be
as gifted as elves, since an Aereni [[elf]] spends an entire [[locathah]]
lifetime in just their initial studies. This reflects the cornerstone
of Valraean culture, which is, boiled down, that //elves are glorious and better at everything than you//. As a Valraean, you’re just lucky to be near elves, to have their guidance and protection. It’s your duty to honor the [[Undying Court]], because
without it, you would be torn apart by the vicious [[sahuagin]] in
the cruel world outside the Protectorate. And while no non-elf
has ever proven worthy to join the Undying Court—how could
they, with a paltry century to perfect their skills—maybe, just
maybe, if you keep working hard enough and become the best
person you can be, you might be the first.
While many members of the line of [[Valraea]] believe their
own propaganda, the simple truth is that the benevolent
Protectorate is an oppressive regime, sometimes brutally so. The line of Valraea has long worked to stamp out all traces of the native cultures, replacing the local languages with Elvish and eliminating the [[locathah]] religion. Few subjects publicly
challenge elven rule, but those who do are quickly silenced. But
despite these efforts, there are those among the masses who
resist the Valraean propaganda and seek to reclaim and preserve
their ancient traditions. Rebel [[sahuagin]] may work with [[malenti]]
and support Dominion espionage. The [[locathah]] have a more
difficult path, as for their kind, life in the [[Eternal Dominion]] would be
even worse than in the Protectorate. But the locathah resistance
still clings to hope, believing that as long as they are free in their
hearts, they may yet find a way to overthrow all of the tyrants.
Valraean subjects are split into houses, each of which includes
members of multiple species; this, in part, serves to deemphasize
the importance of direct family. Each house has a patron in the
[[Undying Court]]. They are taught to idolize this patron and believe
that it personally protects them; in some cases this may actually
be true, though many [[deathless]] councilors pay no attention to
their Valraean devotees. Regardless, the Valraeans’ ongoing
adoration of the Undying Court provides a valuable source of
positive energy for the Court itself.
Valraean fashion largely mirrors that of [[Aerenal]], though
using different materials. Fine leather takes the place of
cloth, and Valraeans generally wear less clothing than their
counterparts on the surface. Coral, ivory, and vines of aquatic [[livewood]] are often used as ornaments. As in [[Aerenal]], masks are important accessories;
elves wear full face masks, while accomplished non-elves
generally wear masks that cover their lower faces.
All subjects of the Protectorate speak Elvish. This replaces
Aquan among [[locathah]] and Sahuagin among [[sahuagin]]. Those
who dream of resistance work to preserve their ancestral
languages, but they’re not spoken where elves can overhear them.
!! Territory
The Valrean Protectorate extends approximately 150 miles from
the coast of [[Aerenal]]. Within this radius, the [[Undying Court]]
wields great power; it can control the weather and produce other
dramatic environmental effects. As a result, the Protectorate
truly seems a blessed land; the waters are peaceful and the
weather is beautiful. The Protectorate includes settlements
along the shelf in the upper water and on the ocean floor.
The Protectorate has fought many wars with the [[Eternal Dominion]] and its predecessors. Ultimately, the transcendental power of the [[Undying Court]] holds enemies at bay, but over thousands of years, the Protectorate has developed and fortified defenses on the border of their territory. A series of [[bone-coral]] towers stand along the front, connected by rune-lines—glowing patterns engraved in the sea-bed that help focus and channel the power of the Court when it is needed. The region contains
//spirit mines//—floating ivory spheres that conjure angry [[ghost]]s
into any ship that comes too close—and other defenses. All
shipping is wise to follow the sanctioned routes for entry.
The [[manifest zone]]s in this region are mostly tied to [[Irian]]
and [[Mabar]]. However, there are a few manifest zones tied to
[[Lamannia]], and those in the upper waters are prone to the
violent surges seen in zones across the sea. While the [[Undying Court]] can contain these surges, this is an expenditure of energy on their part; as a result, the Valraeans welcome the [[merfolk]] of [[Karakala]], whose rituals stabilize the zones.
!! Tools and Traditions
Valraeans of all species practice the same traditions as
the [[elves|Aereni]] of [[Aerenal]]. Though magic is widespread in the
Protectorate, Valraean subjects aren’t taught the higher arts,
so the overall level of common magic is more on par with the
[[Five Nations]], with greater wonders seen in the coral palaces of
the line of [[Valraea]]. The common populace of the Protectorate includes [[magewright]]s and adepts, with a handful of gifted [[wizard]]s. While all subjects are taught to worship the [[Undying Court]], the actual priests are [[sea elves|sea elf]].
Sea elf spellcasters of the line of [[Valraea]] typically focus on [[divine|divine magic]]
or [[arcane magic]]. The sea elves are encouraged to think of
themselves as divine champions, and many do become [[cleric]]s
or [[paladin]]s. Arcane spellcasters are typically [[wizard]]s, and the
strengths of the Protectorate are [[divination]], [[abjuration]], and
[[necromancy]]. There are also a handful of [[artificer]]s among the
line. While the power of the [[Undying Court]] defends the region, the line of Valraea maintains the many wards and monitors the seas for [[sahuagin]] activity, or any other threat that might arise.
The artisans of the Protectorate work with the exotic woods
of [[Aerenal]], but they use other exotic materials as well. Leather
is the primary material used in clothing, both fine, thin leather
for simple fashions, and tougher hides for armor. [[Bone-coral|bone-coral]]
is a form of coral that is artificially grown and hardened using
arcane techniques, used for everything from buildings to
ornaments. An aquatic form of Aereni [[livewood]] is also used;
the vines draw sustenance from any creature in contact with them
(though not so much as to be noticeable in any way) and thus
remain alive, even when shaped into ornaments or armor.
The [[artificer]]s of the [[line|Aereni noble line]] of [[Valraea]] are curious about the
arcane potential of [[kar'lassa]] biomatter—the foundation of
[[Dominion|Eternal Dominion]] [[arcane magic]]—and are always eager to acquire it.
Valraean [[sahuagin]] don’t have access to the [[magebreeding]] and
[[alchemical|alchemist]] techniques of the Eternal Dominion; as a result, they
develop as any other creatures would, instead of being guided
down a particular path. This also means the Protectorate
doesn’t have any of the secondary mutants—such as barons,
[[malenti]], and [[Claws of Sha'argon|Claw of Sha'argon]]—found in the Dominion.
!! Foreign Relations
The Valraean Protectorate is an extension of [[Aerenal]], and
diplomacy with surface nations is conducted by the [[elves|elf]] of the
islands. Generally, the only time surface-dwellers encounter
[[sea elves|sea elf]] or Valraean subjects is at customs checkpoints when
approaching Aerenal; thus, sailors may be familiar with them,
but most people of the [[Five Nations]] have never seen a sea elf
or a [[locathah]]. Aerenal takes the security of its coastal waters
seriously, and ships must adhere to specific shipping lanes or
risk running afoul of spirit mines and other traps.
Today, the Valraean Protectorate remains at a chilly impasse
with the [[Eternal Dominion]] of the [[sahuagin]], as [[Valraea]]
strengthes its defenses and the Dominion works to place ever
more [[malenti]] agents within the Protectorate. Both refused
to engage in direct commerce or diplomacy with each other,
though the Dominion allows Aereni vessels to use their shipping
lanes (at a price). [[Karakala]] serves as an intermediary between
the two, carrying messages and conducting simple trade.
!! Valraean Adventurers
Elves of the line of [[Valraea]] rarely leave the Protectorate. They
have important duties to tend to, and issues in the surface world
are generally dealt with by the elves of the island. However,
the line of Valraea is devoted to the [[Undying Court]], and an
adventurer could be following a direct mandate either from the
court itself or from a specific [[deathless]] [[sea elf]]. Such a character could be a [[cleric]] or [[paladin]], and would likely be proud; in your eyes, you’re a celestial in the service of the divine.
Or you might be a sea elf who questions the traditions of the Protectorate. Perhaps you feel that the Protectorate—and Aerenal as a whole—should be emulating the spirit of
innovation of the [[Five Nations]] rather than just holding to
Aereni arcane traditions. As an [[artificer]] or [[wizard]], you could
be determined to study as many other systems of magic as
possible; you don’t believe that the defenses of the Protectorate
will hold forever, and you want to develop something new.
Alternatively, you could play a [[locathah]] from the Valraean
Protectorate. Locathah are all but unknown on [[Khorvaire]]. As a
Valraean locathah, you have the benefits of [[Aereni]] education,
and may have adopted many [[elf]] mannerisms. Are you a proud champion of your nation and a loyal servant of the [[Undying Court]]? Or were you exiled after you opposed the Aereni oppression of your people? If so, are you acting in the interests
of Valraean locathah now? Do you want to find a way for your people to develop their own [[deathless]]? Or are you following your own path in the world, leaving the Protectorate in your wake?
!! Story Hooks
The Valraean Protectorate is an isolated part of a hidden nation.
What could bring it into a story? Consider the following ideas.
//''The Cold War.''// Whether on land or sea, adventurers
could stumble into a [[Dominion|Eternal Dominion]] plot to wreak havoc in the
Protectorate. Thousands of innocents will die if they do
nothing; what’ll they do?
//''Fish Farm.''// The adventurers are on a ship that is drawn off
course (by hijackers? a freak occurrence?) and runs afoul of
Valraean defenses, crippling the vessel. The characters are
rescued by a group of Valraean [[locathah]] who maintain a farm
on the edge of a small island. While waiting for someone to
retrieve them, the adventurers get to know these locathah... and
perhaps discover a dangerous secret hidden on the tiny island.
//''Deathless for the People.''// Some remarkable [[locathah]] and even [[sahuagin]] have been preserved as [[spirit idol]]s, and these are held up as paragons to
the common people; //this is immortality you can attain!// While
the hope that a non-[[elf]] could become [[deathless]] has long been
dangled in front of the people, it’s never been done, and isn’t
something any elf believes is possible.
A group of Valraean visionaries—locathah, [[sahuagin]], and sympathetic [[sea elves|sea elf]]—are determined to develop sahuagin or locathah [[deathless]], their first step to
establishing equality within the region. These revolutionaries
are searching out scattered tombs that tie to the creation of
deathless, along with artifacts that channel the power of [[Irian]].
Are their methods peaceful or violent? Will the adventurers
assist them or oppose them?
//''Dead or Alive?''// To strengthen their support among the
common people, the line of [[Valraea]] proclaims that a [[locathah]]
hero has been raised to the [[Undying Court]]—the first non-elf to be
admitted. But is this true, or is it a lie to placate the masses? The adventurers are hired to investigate, and if it’s a hoax, to expose
it. Are their patrons members of the locathah resistance, or
might they be unknowingly working for the [[Eternal Dominion]]?
//''The Quest for Hal'thela''//. The Protectorate is eager to tap
the power and the potential of the [[kar'lassa]], and the best
candidate is [[Hal'thela]]—the kar’lassa bound to [[Thelanis]]. But the
kar’lassa is deep behind enemy lines. Can the adventurers help
find its location and lead a team there? Why do the [[sahuagin]]
shun it? Is it simply that they can’t control the capricious [[fey]]?
Or is the entire region touched by a fey curse—something that
must be lifted before anyone can explore it safely?
Awakened to an endless night, vampires hunger for the life they have lost and sate that hunger by drinking the blood of the living. Vampires abhor sunlight, for its touch burns them. They never cast shadows or reflections, and any vampire wishing to move unnoticed among the living keeps to the darkness and far from reflective surfaces.
Most of a vampire's victims become //vampire spawn//—ravenous creatures ([[tier 2|creature tier]]) with a vampire's hunger for blood, but under the control of the vampire that created them. If a true vampire allows a spawn to draw blood from its own body, the spawn transforms into a true vampire no longer under its master's control. Few vampires are willing to relinquish their control in this manner. Vampire spawn become free-willed when their creator dies.
Lord [[Darro|Darro ir'Lain]]’s favorite uncle,
this elderly [[Aundair]]ian noble has called [[Stormreach]] home
for nearly a hundred years. The half-elf was born
to a Lain baron of [[Aundair]] and his [[elf]] mistress in
the [[Eldeen Reaches]] when the region was still under
Aundairian control, and at the height of paranoia
during the [[Silver Crusade]]. Vanson killed his
first [[shifter]] at the tender age of twelve and hunted
them with his father for decades—long after the purge
was called to a halt. After he murdered a family of
[[shifter]]s in the summer of 960 YK, two years after the
[[Eldeen Reaches]] declared independence, the [[Aundair]]ian crown exiled Vanson to deflect an international scandal and avoid rekindling the
skirmishes along their new-formed border with the
Reaches. Vanson claims to have recanted his murderous racism, and if confronted with his crimes he blithely dismisses them, saying that he “was born in different times.” Though he now hunts far more fearsome prey than defenseless communities of [[shifter]]s, rumor holds that he still keeps an extensive collection of shrunken shifter heads—grisly trophies collected in his “misspent and wild youth.”
Vanson is a tall [[half-elf]] with distinguished silver hair and an ugly claw scar on
the right side of his neck. Though Vanson appears aged, he is remarkably spry and a hawk-eyed marksman with a longbow.
The [[Lassite family]]’s current head is Varen Lassite, a handsome man just reaching his middle years. Of all the [[Storm Lords]] of [[Stormreach]], Lord Varen is the only one who is
beloved by his subjects. He has a reputation for generosity, and though he cannot always supply justice, he will buy a drink for anyone who suffers misfortune in the Marketplace. He is the epitome of the dashing swashbuckler—romantic, witty, with a fine eye
for beauty and an appreciation for skilled swordplay.
Beyond this, he is a clever and careful negotiator,
capable of manipulating stronger enemies into battling
one another.
By far the largest city in the [[Eldeen Reaches]] (population: 40,000), Varna serves as the gateway for commerce with the world beyond. Reacher merchants come from far and wide to sell their goods in the markets of Varna. All the [[dragonmarked house]]s have
outposts in Varna, but as the ancestral seat of House
[[Vadalis]] it houses their largest [[enclave]], [[Foalswood]]. Varna has also become home to the excesses of all larger centers, particularly a thriving black market where
poachers and trappers smuggle rare plants and animals into [[Aundair]] and beyond.
A notable feature of the
city is Hunter’s Grove, an enormous temple dedicated
to the Sovereign Lord [[Balinor]], the patron deity of
House [[Vadalis]]. Just outside Varna is the [[Vadalis]]-run Willowhaven Ranch, the largest dairy farm in the [[Five Nations]].
The [[Grim Lord|Grim Lords]] Varonaean is an ancient [[lich]] of [[Farlnen]]. Also known as "the Gardener of Farlnen", he is the botanist who designed many plants that thrive in shadows rather than sunlight, and can therefore survive on the stony [[Mabar]]-touched island. The fruits of his labors can be seen today: [[ebon sedge]] and a darkness-drinking form of [[darkwood]] trees are only a few of his inventions. Varonaen has continued his work over the course of generations, and the merchants of Farlnen trade spices and wines that cannot be produced anywhere else in the world.
Varuz Bay lies off the coast of [[Adar]] and the [[Corvagura]] province of [[Riedra]]. It is part of the [[Barren Sea]].
In Draconic, this territory is called //Dja’Valarach//. In
Common, it is typically translated as “the Vast,” interpreted as a great void or open space. But to a [[dragon]],
the word holds far deeper meaning. It is the space
around a dragon in flight. It is the freedom to move
in any direction. It hints at the infinite possibilities
of the future, unbound and vast. That is what the Vast
represents to the dragons of [[Argonnessen]]—freedom and uncertainty. It is a land without rules, where dragons are free to exult in their power and might,
to match wits with other dragons and to rule over lesser creatures.
First and foremost, the Vast is a proving ground. When a [[dragon]] of the [[Thousand]] becomes a young adult, it is given the choice to serve the [[Light of Siberys]] or to find its own way in the Vast. Those who go to the Vast must remain there for at least fifty years; those who survive to become adults might return to the [[Thousand]] and claim a lair within the dominion of their flight. However, some choose to remain in the Vast. These dragons prefer the challenge and uncertainty of life in this land. Life in the Thousand is stable, but stagnant. In the Vast, a dragon can be a conqueror, a tyrant, or a defender of the innocent. Every day could end in a life-or-death struggle, and for many dragons, that thrill is worth the risk.
!! Industries
Although no industries span the territory, many
dominion lords (see Government and Politics, below)
force their subjects to mine for ores and precious
gems, and to produce goods worthy of a [[dragon]]’s
hoard. A dominion lord might use these goods to
barter with other dragons, potentially trading treasure for slaves as a [[human]] might purchase livestock, or offering tribute in exchange for a temporary alliance against another dragon.
The Vast also trades in nondragons. In addition to
“importing” creatures from other continents, dragons
of the Vast are the primary source for the nondragons
found in other territories. A dragon who returns to
the [[Thousand]] could bring retainers with him, while a
dragon of the [[Tapestry]] might recruit research assistants
from [[Io'lokar]].
!! Life and Society
The [[dragon]]s of the Vast are free to do whatever they want.
Life is a deadly game, with living creatures as the pawns.
A dragon can take any land that he can hold, and any
other dragon can try to take it from him. Gold, treasure,
slaves—all these are part of the game of power, the never-ending struggle for status. Some dragons revel in the violence and spend their days hunting the most challenging
prey that they can find. Some live in hedonistic splendor
among nondragons who worship them. A few actually
enjoy protecting lesser creatures; they take pleasure in
defending their subjects from the depredations of cruel
ravagers and rulers.
The [[dragon]]s of the Vast relish their conflicts with
other dragons. These contests can be drawn out over
months or years. A victorious dragon often spares his
victim in their first battle, to give the loser time to
contemplate the loss and prepare for his final defeat.
Although some ravagers thrive on blood and rage, for most dragons, the game is more satisfying than the actual victory. The conflict, not the resolution, is the event to be savored.
!! Government and Politics
A [[dragon]] who establishes and holds a significant area in the Vast is known as a dominion lord. His status in the eyes of the other lords is based on the size of his domain, his hoard, the number of [[dragonborn]] or other nondragons he commands,
and the number and nature of dragons he has defeated.
Though age is typically a factor, achievement is just as
important in the Vast; if a young dragon can consistently
defeat his elders, he will gain respect... and become a
target for others.
Many dragons leave the Vast after becoming adults.
Many more don’t survive to adulthood. But some
remain in the Vast for their entire lives. These elder
dominion lords rarely challenge the young; slaying a
young adult black dragon provides little challenge or
satisfaction for a gold great wyrm. These elders continue to play their games with others of similar age, but they also work to maintain the Vast. They import
new monsters to replace those slain in battle. They do
what is necessary to keep the nondragon population
within manageable levels, and restock the supplies if
the population falls too low. And they represent the
Vast in the [[Conclave]] of [[Argonnessen]]. They rarely speak
with one voice, but they defend their way of life and the
importance of this free realm.
!! Nondragons in the Vast
The Vast has the highest nondragon population of any
of the territories. These lesser races have been brought
to [[Argonnessen]] over the course of a hundred thousand
years. [[Hobgoblin|hobgoblin]]s, whose ancestors were saved from the downfall of the Empire of [[Dhakaan]], still sing the songs of the duur’kala—the Dhakaani [[dirge singer]]s. [[Elves|elf]], whose ancestors were brought from the shores of
[[Xen'drik]] long before the [[elf–giant wars|Age of Giants]], know nothing
of the [[Undying Court]] or the [[Tairnadal]]. There are nondragons never seen in [[Khorvaire]], members of races that were exterminated by the [[giant]]s or the [[daelkyr]]. Other races, such as the [[dragonborn]], originated on [[Argonnessen]] and dwell in city-states throughout the Vast. The range of communities that can be found are dizzying. Some are metropolitan, with members of a dozen races
living under one roof. Other communities are racially
isolated, steadfastly preserving secrets of their forgotten cultures.
Of course, all these creatures have one aspect in common: They live beneath the shadow of the [[dragon]] lords. To a dominion lord, nondragons are an extension of his hoard. Other dragons might try to steal creatures from his domain, or just slaughter his subjects; life is always uncertain, and an attack could come at any time. Two dominion lords could have completely different styles of rule. Some make frequent shows of force and often require living sacrifices. A few demand worship, and in some cases, their subjects truly believe that these dragons are deities; a few of the oldest dominion lords have developed cadres of fanatical soldiers ready to die for their dragon masters. Life in the Vast can be brutal and short, but the people of this land know little else.
!! Important Sites
[[Argonnessen]] adventurers are most familiar with the Vast. Although few people have entered Argonnessen and returned to speak of it, many have heard tales of [[Totem Beach]] and the mountains of the [[Great Barrier|Great Barrier Mountains]]. A few have even heard tales of [[Io'lokar]], the legendary City of Knowledge.
!!! Cities and Ruins
<<list-links-article "[tag{!!title}tag[city]] [tag{!!title}tag[ruin]] +[sort[title]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}!tag[city]!tag[ruin]sort[title]]:filter[get[text]length[]compare:integer:gt[200]]">>
!! Adventure Seeds
The Vast is a dangerous land. Its founders have populated it with vicious monsters from across [[Eberron]], creatures intended to pose a threat to dragons. Thus, almost any beast imaginable could be encountered in the Vast. Furthermore, the dominion lords are always looking for a new challenge, and a party of adventurers makes excellent sport. That said, the Vast is actually one of the best areas for adventurers to explore. Because of the large nondragon population, PCs might be able to blend in with the locals, or find temporary shelter. The constant struggle between dragons also provides adventurers with an opportunity to gain dragon allies—although they have to be careful not to draw down the wrath of the elder dominion lords.
''Ultimate Hunt:'' After being drugged or incapacitated by magical means, the PCs wake in the domain of a powerful [[dragon]]. This [[stalking wyrm]] seeks challenging prey, and the adventurers’ reputation has earned them this dubious honor. If they can survive for 24 hours, they will be rewarded and sent home. Let the game begin!
''Hidden Seer:'' The conflict between the warring [[Heirs of Dhakaan]] is at a critical point. [[Tuura Dhakaan|Kech Volaar]] contacts the adventurers. If they help her take the throne, she swears to keep the Dhakaani from threatening the [[Five Nations]]. To complete the ritual of coronation, she needs to be blessed by a Dhakaani crown seer. Only one is left in the world, and she lives in the city of [[Io'lokar]]. Can the party reach her and convince her to return to the land of her ancestors?
''Lost Village:'' Rumors suggest that a village was taken from [[Cyre]] just before the Day of [[Mourning]], that elders of the Vast transported the entire village to [[Argonnessen]]. Perhaps the village held secrets of House [[Cannith]]. Or maybe Queen [[Dannel|Dannel ir'Wynarn]] herself was passing through the village on the day she was thought lost. Is the Queen of Cyre still alive, trapped in servitude in the land of the dragons?
The town of
Vathirond, situated on the southern banks of the [[Brey River]], serves as a watch-post and trading center. It sits
across the border from the nation of [[Thrane]], and near
the line that once separated [[Breland]] from [[Cyre]].
Throughout the [[Last War]], this town was beset by armies
from [[Thrane]], [[Cyre]], and [[Karrnath]]. Vathirond's residents
still hold grudges against these close foreign neighbors.
However, their attention of late has been focused on the
[[Mournland]]. Nameless horrors have begun to slip into
[[Breland]] from the east at an alarming rate, and Brelish
soldiers and adventurers stationed in Vathirond are usually the first to contend with these threats.
The [[Brey River]] provides the main transportation
into and out of Vathirond, though an [[Orien]] trade road
connects the town with [[Starilaskur]] to the west. The
eastern end of the road stretches into the [[Mournland]],
disappearing beyond the mist as though beckoning travelers to visit the ruins and wreckage of [[Cyre]]. While the
mist has not moved any closer since the [[Mourning]], the presence of the dead nation eats away
at the inhabitants of Vathirond. The town has lost more
than a quarter of its population to disease, rampaging
horrors, or because the people have fled to find safer,
less desolate ground elsewhere in the kingdom. Since the
death of Cyre and the birth of the Mournland, Vathirond’s population has dwindled from more than twenty thousand to its present level of just over fifteen thousand.
King [[Boranel|Boranel ir'Wynarn]] sees this development as a trend he must
find a way to change before this strategic location turns
into a ghost town.
The Royal Treasury of [[Galifar]], located in [[Metrol]], [[Cyre]], was commonly known as the Vault. While there were reserves hidden around the kingdom,
the Vault included both the mint, Cyre’s primary reserves
of currencies and precious metals, and important cultural
artifacts deemed too valuable to be displayed. Salvagers have
dreamed of finding this “Golden Palace,” but there are some
stories saying that the Vault no longer remains where it was
built, but is actually missing. The [[Mourning]] had strange effects
on Metrol, and it’s possible the Vault was simply physically
displaced, or it could have fallen into another [[plane]].
The heart of [[Dolurrh]] is the Vault of Memories. This tower,
carved up through gray stone, is larger than any of the great
towers of [[Sharn]]. The lowest levels hold the Vault's library;
here, the spirit known as the ''Librarian'' interviews each
shade and makes a record of its life. His power is such that
an entire life can be confined to a single large page. Every
sigil inscribed holds a crucial memory, and if a creature is
proficient in arcana, they can read the symbol to experience
that memory. The many floors of the library hold countless
books of preserved lives, carefully tended by [[shadar-kai]]
scribes. The Librarian himself is a massive hooded figure—his books are likewise enormous. It's said that he can be many places at once, allowing him to speak to every shade, capturing the story of its life, before it fades.
In the halls above the library, the [[Queen of the Dead]] keeps
her many treasures. What seem to be obsidian statues are
actually [[shade]]s, crystallized to prevent them from being
entrapped and lost in Dolurrh. Paintings and crystals contain
memories that the Queen has chosen to isolate. Beyond these
are countless trinkets and oddities, items collected by her
shadar-kai over the vast scope of history. And higher still are
the chambers of the Queen herself, where she usually sits in
silent contemplation, listening to the whispers of the countless
shades in her domain.
The lowest levels of the [[Kundarak Bank|Kundarak Bank of Sharn]] are known as the Vaults, and are almost a
separate business entity from the bank proper. House
[[Kundarak]] offers storage space for small- to medium-sized items of great value with the highest possible
security, at a cost of 3c per month (which includes
insurance against theft). These are for long-term
storage, not for short-term like the safe-deposit vaults, and thus can't
be collected magically from other sites.
Count Vedim ir'Omik is the Minister of the Dead for the nation of [[Karrnath]]. The commander of the [[Corpse Collectors]], the [[Kind]], reports directly to the Minister. Count ir'Omik is also cousin to King [[Kaius|Kaius ir'Wynarn III]].
After the signing of the [[Treaty of Thronehold]] that ended the [[Last War]], King [[Kaius ir'Wynarn III]] of [[Karrnath]] withdrew [[undead soldiers|Karrnathi undead]] from his active legions as a gesture of good will in securing the peace. But undead and the business of making them remain central to [[Karrnath]]’s military strength. Kaius commanded
the Minister of the Dead to maintain operations and readiness should hostilities
resume, but to keep a low profile. The count follows these orders to the letter, creating and equipping large numbers of [[undead]] soldiers in highly secretive operations in [[Fort Zombie]] and [[Fort Bones]]. The people of [[Vedykar]] and [[Vulyar]] have learned not to ask too many questions about where the bodies of their dead are taken.
Count ir'Omik is a skilled [[necromancer|necromancy]] and is fascinated with [[undeath|undead]]. Unbeknownst to the King, he has recently directed the [[Kind]] to develop new experimental types of [[Karrnathi undead]] by collecting bodies from specific bloodlines, and to "field test" these new creations beyond [[Karrnath]]'s borders. The [[elves|elf]] of [[Valenar]] have clashed with [[ghoul]]s and [[vampire spawn|vampire]] in the [[Talenta Plains]]; they naturally suspect Karrnath, but don't have proof.
Vedykar is a city in south-central [[Karrnath]]. The [[Vedykar Enclave]] is the headquarters of House [[Jorasco]].
Baron [[Ulara d'Jorasco]] rules House [[Jorasco]] from a walled neighborhood in the
[[Karrnath]]i city of [[Vedykar]]. She rarely leaves her villa
except when her expertise is required, but she’s far
from a recluse. Advisors and functionaries come
in and out of her villa in a continuous stream from
sunup to sundown.
The rest of the Vedykar [[enclave]] is a series of buildings devoted to particular ailments (one for wasting illnesses, one for trauma, a well-guarded one for madness and other afflictions of mind and spirit, and so on). In the middle of the enclave is a small lake that
is one of House Jorasco’s greatest attractions. Anyone
who bathes in the lake at dawn experiences almost complete
amnesia, remembering only their name and
basic life skills such as eating, walking, and speaking.
The spot is popular among veterans of the [[Last War]]
who experienced horrors they wish to forget,
and House [[Jorasco]] commands a high
price for the privilege of bathing in the
lake’s waters.
<<list-links-article "[tag{!!title}sort[title]]">>
This is a studio for [[Aereni|Aerenal]] body
art, including traditional tattoos, [[cosmetic transmutation]], and the [[elven|elf]]
techniques that give the living the appearance of
death. Depending on the purse and the desires of
the client, the effects of either procedure can be
permanent or temporary.
Vel Dajar, a river in [[Aerenal]], flows from the [[Jungle of Daggers|Dajar Orioth]] into the [[Gates of Sorrow]].
Vel Jaelarthal, a river in [[Aerenal]], flows from the [[Moonsword Jungle|Jaelarthal Orioth]] into the [[Gates of Sorrow]].
Vel Kathur flows south from the hills of [[North Aerenal]], past the western edge of the [[Madwood]], and into the [[Madwood Gulf]].
Vel Kos, the "river of grief", flows from the hills near [[Shae Mordai]] into the [[Gates of Sorrow]].
Vel Maelia, a river in [[North Aerenal]], flows into the [[Thunder Sea]].
Vel Shazol, a river in [[Aerenal]], flows from the [[Moonsword Jungle|Jaelarthal Orioth]] near the capital of [[Shae Cairdal]] into the [[Gulf of the Moon]].
Vel Silaes, a river network in [[North Aerenal]], flows into the [[Thunder Sea]].
Velderan is one of the three clans of the [[dragonmarked house]] [[Tharashk]]. This clan has the highest concentration of [[human]]s among the three clans, and many "[[half-orc]]" Velderans who have enough [[orc]] ancestry to manifest a [[Mark of Finding]] can easily pass as human. Among the families of the [[Shadow Marches]], the Velderan clan is known for its altruism—a statement that would sound absurd to anyone familiar with Lord [[Khalar Velderan]] of [[Q'barra]].
!! Members of the Velderan clan
<<list-links-article "[tag{!!title}category[person]sort[title]]">>
The twin rivers of Veln Melaesol flow from the [[Sundering Peaks]] in the south of [[Aerenal]] into the [[Blackwood Bay]]. Lacedons (aquatic [[ghoul]]s) and other [[undead]] lurk in these waters.
This luxurious inn specializes in fulfilling fantasies. While companions of all races and
genders can be found here (though most are in fact [[changeling]]s), a client can enjoy
the company of anyone he or she desires. A portrait
is preferred, but the [[changeling]] Velvet can pluck images from the mind of a
client, drawing out appearance, mannerisms, and
other desired traits. The appearance of rooms can be
adjusted to fulfill a specific scenario.
While companionship is certainly sold at Velvet's, it is not always what
people want. A client may want to practice a wedding
proposal. A barrister may go to Velvet's to relive a
glorious triumph in the courtroom. A lonely traveler
may want to spend one night at home with his wife and
family, even if they are only facsimiles. Velvet's can
make all of these happen. The cost of such elaborate
scenarios is considerably higher than a standard inn
or brothel, but Velvet's does provide an experience
that cannot be found anywhere else in [[Sharn]].
Ven ir'Kesslan was a duke of [[Cyre]] who founded the kingdom of [[New Galifar]] in [[Q'barra]] in 928 YK. He was the grandfather of King [[Sebastes ir'Kesslan]] who rules New Galifar today.
The [[Last War]] shattered the existing order in [[Galifar]], setting the [[human]] nations
of [[Khorvaire]] against each other. However, a good number of [[Galifar]] nationalists refused to embrace what they saw as the petty grasping for power of royal scions. Rather than join in the conflict, these patriots sought refuge outside their broken kingdom.
One such idealist was Duke Ven ir’Kesslan, who petitioned his monarch—King Connos of [[Cyre]]—to grant him the right to settle the lands east of the [[Endworld Mountains]]. In the territory the [[Lhazaar|Lhazaar Principalities]] corsairs called “cursed [[Q'barra]],” he would found a new kingdom based on the ideals of fallen Galifar.
Under the watch of the Cyran military, ir’Kesslan and thousands of like-minded folk set out in a colonial fleet. Though a third of his ships were lost to pirates, war, and weather, those colonists who made landfall did so near [[Adder Bay]], founding a settlement
at what is now [[Adderport]].
As they tried to raise their new home within the jungle, the settlers inadvertently disturbed numerous sites holy to the native [[lizardfolk]], [[dragonborn]], and [[kobold]]s. Such actions sparked intermittent hostilities that the settlers typically won. The dragonborn pressed the colonists hardest, but through diplomacy, ir’Kesslan managed to secure a tenuous peace.
This city-state in the west of [[Droaam]], hidden by powerful illusions, is ruled by families of [[tiefling]] [[warlock]]s and [[wizard]]s who wield powerful magic and craft dark wonders. These Venom Lords are led by Lord Bal Molesh. The fiefdom has had no significant contact with the [[Five Nations]] and few know it exists.
The tiefling and [[human]] inhabitants of the Venomous Demesne descend from [[Sarlona]]n mages who bargained with dark powers. With the fall of [[Ohr Kaluun]], the refugees founded this sanctuary in what is now Droaam, and its four ruling families possess great knowledge and vast arcane power.
While the demesne's nobles are tieflings, humans are a significant part of the population, and Demesne humans can be found serving as [[magewright]]s in other cities. The humans of the Venomous Demesne have little in common with the people of the East and feel no kinship to the Five Nations.
This retired [[human]] artisan arrived in the city only four years ago, and he now spends his days walking the streets and engaging city folk and strangers alike in polite conversation. Though Veoddyn never speaks of his past life, the aged [[Khorvairian|Khorvaire]] is actually an exile who has a dark secret. The DM should
choose a significant campaign-hook back story to play
off Veoddyn’s true identity—a notorious war criminal
long thought dead, a [[Cannith]] [[artificer]] who knows what
happened on the Day of [[Mourning]], or perhaps even the
real [[Kaius III|Kaius ir'Wynarn III]].
Seven spires rise up from [[Metrol]], a natural (or supernatural)
wonder. These plateaus held the ancestral homes of the noble
lines of old Metrol with the Royal Vermishard, the seat of the [[Cyran|Cyre]]
crown. However, over centuries, other powers—such as House
[[Cannith]] and House [[Phiarlan]]—made their way to the Vermishards
as well. Cannith and Phiarlan worked together with Cyran
[[magewright]]s to embed illusory lighting into the Vermishards, their
glittering spires becoming a remarkable part of the Metrol skyline. The finest warriors of [[Galifar]] served in the Vermishard Guard; after the onset of the [[Last War]], these soldiers formed the core of [[Cyre]]'s new military academy.
The Vermishards, and the rest of [[Cyre]], have lain in ruin since the [[Mourning]]. Today, they are inhabited by the self-styled ruler of the ruins of Metrol, "Empress" [[Donata]].
The Mountain of Victory is the primary fortress of the [[Light of Siberys]]. [[Giants|giant]] and [[dwarves|dwarf]] toil ceaselessly in the forges, while [[dragon]]s
study the arts of war. Individual lairs scattered across
the mountain provide dragons with an opportunity for
solitude, but in times of danger, the fortress supports
hundreds of dragons. [[Eldritch machine|eldritch machine]]s produce endless food and water, and the fortress walls are hardened against attack and shielded against [[scrying]]. This fortress is the work of one hundred thousand years of constant innovation; if the DM can think of an interesting defense, the dragons have surely already added it to Verthicha’vivex.
Near the [[Keep of the Silver Flame]], Vestrii’s Arms caters
to the customer who wants a weapon but doesn’t want to
show it. The shop makes a variety of concealable weapons, particularly ones that a performer might want: juggling balls or clubs that sprout blades, iron-bound flutes, sword canes, and the like.
When you grasp this walking cane and speak the command word, it transforms into an ordinary longsword and ceases to be magical.
The Vigilant Eye is a cult devoted to [[Belashyrra]], which they call the All-Seer. Cult members develop an alien eye on the palm of their non-dominant hand.
When they view the world through this eye, members can see “secrets” about the world around them that feel true—such as seeing certain people are possessed by [[demon]]s or about to commit murder. Members take vigilante action to eliminate the threats “revealed” by their eyes. This cult often takes root in House [[Deneith]] [[enclave]]s or city watch units.
The Vile Marsh is a large region of wetland in eastern [[Shadow Marches]] and western [[Droaam]], stretching from [[Blackwater Lake]] to the [[Azure Bay]].
This incredibly light armor is woven from layers and layers of moss and plant fiber. In the sun, the armor grows lush with greenery and flowers, granting the user a higher defense bonus. In darkness, the armor wilts slightly.
This armor must be watered on a weekly basis.
Virtues are a higher order of [[Syrania]]n [[angel]], with names and broad
[[domain|Syranian domain]]s—//Hazari, Virtue of Nature.// They act as assistants and
emissaries of the [[dominion]]s. Virtues spend much of their time
contemplating their domain, but they also gather information
for their dominions—either by fetching existing records
within Syrania, talking with creatures who visit the plane,
or by venturing beyond Syrania and discretely observing. A
dominion is always aware of everything that happens to its
virtues and immediately knows all information they collect.
Virtues typically have power equal to [[deva]]s, and they
change their forms to conceal their presence while gathering
intelligence. They can commune with their dominion to answer questions tied to their domain, and can cast [[plane shift]] once per day, but only when acting in
the direct service of a dominion.
You point at a location within 150 feet, and a glowing 1-foot-diameter ball of emerald acid streaks there and explodes in a 20-foot-radius sphere. Each creature in that area is drenched in acid.
The line of Vol was a [[noble line|Aereni noble line]] of [[Aerenal]] with a long tradition of [[necromancy]] tracing its roots back to the [[Qabalrin]] of ancient [[Xen'drik]]. When members of the line of Vol developed the [[dragonmark]] known as the [[Mark of Death]], they undertook a risky series of experiments designed to unlock its full powers, fusing [[elf]] with [[dragon]] imbued with the power of [[Mabar]].
When this knowledge was revealed, the [[Sibling Kings]] proclaimed that the house would be exterminated to the
last member, because a single drop of its blood could
destroy all living things. In an unprecedented alliance, the [[Undying Court]] and the [[dragon]]s of [[Argonnessen]] joined forces to eradicate the bloodlines that carried the [[Mark of Death]].
The war was bitter, but its result was never in
doubt. The line of Vol was utterly exterminated. Confirmed by repeated [[divination]]s, no living members of the line of Vol and no living bearers of the [[Mark of Death]] persist to this day. However, [[Lady Illmarrow]] isn't //technically// living...
In the aftermath of this brutal purge, those [[elves|elf]] who had supported Vol but didn't bear its blood were given the choice of exile or swearing fealty to the [[Sibling Kings]] of [[Aerenal]]. Even those who hadn't supported Vol chose to flee; some of
those who bore the [[Mark of Shadow]] feared that they would be next in this pogrom, while others believed that the spilling of elf blood by elf hands tainted [[Aerenal]]. This resulted in a wave of exiled elves settling in the [[Lhazaar Principalities]] and spreading west into the lands that are now [[Karrnath]]. They brought with them beliefs and practices that would merge with local [[human]] traditions and give birth to the religion known as the [[Blood of Vol]].
Most assume that the elves feared the power of the
[[Mark of Death]]. But a close study of the records challenges this assumption. If the mark was so deadly, how was the house defeated? In fact, elf and dragon
didn’t fear what the line of Vol was; they were afraid
of what it might become. In the mingling of elf and
dragon, there was the potential to create something
new—a being who could become the avatar of death
itself.
See also [[Uruvai family]].
This small carved stone is typically bound to a leather strap worn
around the wrist or neck. Designed by the [[Dhakaan|Heirs of Dhakaan]]i [[dirge singer]]s,
the vola'khesh facilitates communication between elite units.
They are created in linked sets; up to ten stones can be bound
together, and once established, this link cannot be changed.
At present, the vola'khesh are only used by the [[Kech Dhakaan|Heirs of Dhakaan]]
and are unknown to the people of the [[Five Nations]]. If the
enchantments were replicated, these tools could be put into use
by spies and law enforcement agencies of the Five Nations.
While wearing a vola'khesh, you can whisper a message that is heard by all creatures
within 120 feet wearing a linked vola'khesh. Magical silence,
1 foot of stone, 1 inch of common metal, or 3 feet of wood will
block this effect, but the magic doesn't have to follow a straight
line and can travel freely around corners or through openings.
Volaar Draal, the stronghold of the [[Kech Volaar]] clan, is hidden deep
beneath the peaks and crags of the [[Seawall Mountains]]. The Kech Volaar include the best masons and combat engineers in [[Khorvaire]]. Blunt and functional where it stands carved into the mountainside, this [[Dhakaani|Heirs of Dhakaan]] fortress is said to be impregnable—a claim that has been put to the test on numerous
occasions.
Foreigners are allowed to enter Volaar Draal only when invited by a trusted member of the Kech Volaar. The subterranean citadel is a grim place,
filled with troops undertaking combat drills and the
echoing songs of the [[duur'kala|dirge singer]]. Its vast underhalls contain
fungus fields that produce food for the city, forges for
armorers, libraries and vaults to house the relics of the
[[empire|Dhakaan]], and a great cavern in which Kech Volaar troops
perform battle drills.
Volaar Draal is a primary source for Dhakaani arms and armor, and its
vaults hold thousands of scrolls and tomes detailing
the [[Age of Monsters]], as well as artifacts from the war
against the [[daelkyr]].
High in the [[Argarak|Fangs of Argarak]] and [[Ash Cauldron|Ash Cauldrons]] mountains of [[Xen'drik]], magma boils to the
surface and toxic gases hang in the searing air. [[Fire giant|fire giant]]s
and other creatures native to such hostile environments
once made their homes here. Today, ancient ruins lie scattered across the fields of magma on islands of solid rock,
some connected by bridges, others isolated and crumbling.
Creatures of fire and magma roost in these forgotten places,
squatting in what was once a [[Sulat League]] palace.
These searing fields are [[manifest zone]]s to the fiery [[plane]] of [[Fernia]]. Groups of [[Sulatar]] [[drow]] dwell in the basalt flats that surround the lakes of magma.
Volen Lassite is Lord [[Varen|Varen Lassite]]’s uncle, the former lord of the [[Marketplace]],
and the current manager of [[Molou's Distillery]]. This
position is a family tradition; when age starts to catch
up with the Lassite [[Storm Lord|Storm Lords]], they pass the
title to a younger family member, chosen for wit and
charisma. Volen continues to advise his nephew, and
he remains a tremendously popular man. He holds
monthly parties at the [[Lassite|Lassite family]] manor in [[Stormhaven]]
and always invites a few lucky people chosen by whim;
if a party of adventurers catches his eye, his invitation offers a chance to mingle with the city’s wealthy
and powerful.
The best-known antiquities dealer in [[Stormreach]], Valexa Von Ruthvek ([[gnome]] [[magewright]]) is an expert on the city’s past and its surroundings. Her shop is like a museum, with a wide array of [[magic item]]s and other curiosities. She sponsors occasional expeditions into [[Xen'drik]]’s interior and has begun to receive funding from a group of anonymous benefactors, whom she only knows through intermediaries. The one condition put on the funds is that each expedition must go deeper into the wilds
than the ones before it.
Valexa has a somewhat random selection of magic items in stock. She can cast [[identify]] for a price, or [[remove curse]] for favored clients.
Near the center of the [[Tapestry]] of [[Argonnessen]] is Vorel'arux, the Valley of Beauty. In this haven of intelligence and free thought, [[dragon]]s of all colors intermix to share their ideas and conduct research. Vorel’arux is aesthetically pleasing, but
its true beauty comes from its community of cooperation
and tolerance.
A 60-foot-tall white stone wall circles Vorel’arux. Dragons fly over the wall with ease, but landbound creatures find it contains no doors or openings of any kind. Although it is
not a permanent residence, at least a dozen dragons can be found in the Valley. The sun reflects off their scales, bouncing multicolored patches onto the wall and buildings of Vorel’arux.
A maelstrom of awesome power rages eternal in the
center of the [[Dragonreach]] Sea, north of [[Argonnessen]].
Most sea captains call her the Dragon’s Mistress, but a
few know the truth about this mighty tempest. Far below
her turbulent waters, poised between [[Seren]] and the
hostile shores of Aerenal, lies the [[dragon]]s’ underwater
stronghold—the Vortex.
The [[Eyes of Chronepsis]] watch every corner of [[Eberron]], including the murky depths of the ocean floor. [[Aboleth|aboleth]]s and other demonic creatures lurk in the lightless depths, hatching insidious schemes to restore their [[dark masters|overlord]]. In the Vortex,
the Eyes remain vigilant against these fiendish aquatic threats. Also, within this sheltered stronghold [[Soldiers of the Light|Light of Siberys]] prepare to stage their first strike on the
[[Undying Court]], if old hostilities commence anew. Surrounded by a magical ring of violently spinning currents and bastions of jagged coral, the dragons watch and wait.
Vrakor Cinderheart, a [[red|red dragon]] [[rogue dragon]] in [[Xen'drik]], comes from a long line of highly respected red dragons. His family’s prestige saved him from a swift
death when evidence of his involvement with the [[Talons of Tiamat]] came to light. Leniency left him languishing in southern [[Xen'drik]]. Vrakor continues his dark service
to the Talons from afar, keeping tabs on fiendish hot spots such as [[Darkfire Crater]]. When the time is right, he can be a powerful ally to servants of the [[Lords of Dust]] hiding on Xen’drik.
This city is [[Droaam]]'s only port, located near the mouth of the [[Scar River]] on the shores of [[Manta Bay]]. It is part of the fiefdom of the [[fire giant]] [[warlord]] [[Gorodan Ashlord]].
Gorodan allows anyone to
make port in Vralkek as long as the proper fees are
paid. To protect commerce and travel, the fire giant
keeps strict laws enforced by his [[goblin]] and [[ogre]] militia. These laws favor the wealthy, the powerful, and those creatures that are willing to pay the steep trade taxes that Gorodan levies. Vralkek’s semblance of order is not sufficient to conceal the wickedness that thrives there, from black markets to the temples of malevolent gods.
The strong and well connected prosper in Vralkek,
but only as long as their goals support the Ashlord’s.
[[Gorodan|Gorodan Ashlord]] has no love for the [[Daughters of Sora Kell]] or their other [[warlord]]s, and he works against them if doing so furthers his own ends.
A majority of the [[drow]] in [[Xen'drik]] pay homage to Vulkoor, believed by some scholars to be an aspect of the [[Mockery]]. Pictured as a massive scorpion or as a handsome, well-toned male [[scorrow]], Vulkoor is often shown hunting, fighting against [[giant]]s, or bearing an entire drow village on his back as a scorpion carries its young. The faith of Vulkoor takes on many forms, varying from tribe to tribe. Three common types of worship exist in Xen’drik, although others are certainly practiced.
Regard less of how Vulkoor is viewed or worshiped,
[[cleric]]s of the scorpion god have access to the same
domains as those granted by the [[Mockery]], and often wield [[scorpion chain]]s.
!!! Vulkoor the Hunter
The most common form of
worship presents Vulkoor as the [[drow]] ideal—a skilled and
crafty hunter, fearless in the face of any challenge, and
protective of the drow people. Like their deity, tribes
who revere the hunter are self-sufficient. They are often
nomadic, relying on their hunting skills to keep them
fed. These drow pay homage to Vulkoor by their actions,
as well as through lengthy recitations of the deeds of the
god and the heroes who follow him.
!!! Vulkoor the Wrathful
Although their numbers are fewer than those who worship Vulkoor the hunter,
those who revere the deity’s wrath are far more dangerous to any explorers who cross their path. These [[drow]] are fearful of their god and seek constantly to
appease him. They attribute the fall of the [[giant]]s to his actions and wish to avoid similar retribution. Their prayers to Vulkoor are often accompanied by
living sacrifice—ideally of those explorers who dare
trespass in the god’s holy lands. Thankfully, these drow
are less nomadic than most, and their territories can
be avoided.
!!! Vulkoor the Cunning
Some [[drow]] view the entire continent of [[Xen'drik]] as their inheritance, believing
that Vulkoor guides their endeavors to reclaim its glory.
These drow are universally xenophobic, since Vulkoor’s
worship teaches that all foreigners enter Xen’drik to rob
the drow of their destiny. Unlike other tribes, these drow
do not shy away from the wonders of the past but uncover
and learn to use ancient magic and relics.
This headdress is worn by the most powerful shamans of [[Vulkoor]], the [[drow]] scorpion
deity, and the rituals used for creating it are a closely guarded secret. On the rare
occasions when nondrow have come to possess this gift of Vulkoor, drow have been known to kill them on sight.
The headdress consists of a crude bronze crown topped by the
preserved exoskeleton of a monstrous scorpion, with the tail and stinger
poised above the wearer’s brow and blood-red gemstones in place of its eyes. Long,
beaded strands of semiprecious stones dangle from the crown around the back of the
wearer’s head.
The wearer of the headdress can channel its power to detect nearby creatures by their ground vibrations. They can poison any creature they touch at will. And rarely, the wearer can summon a large [[fiend]]ish scorpion that obeys their commands.
Vulpana Falls is a river in [[Sarlona]] that forms part of the border between [[Riedra]] and [[Adar]]. It empties into [[Varuz Bay]].
''Color:'' Pockmarked steel gray<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Warding|Mark of Warding]]<br/>
''Associated Plane:'' [[Shavarath]]
Vult is the farthest [[moon]] from Eberron, and some legends say that it holds back forces that lurk out within the stars. The [[druid]]s say that children of Vult are practical, careful folk who generally plan ahead and prepare for the worst; when disaster strikes, the children of Vult hold civilization together. In his study of the [[Seren]]s, the sage Galeoin reported that the barbarians believe that Vult "devours" the spirits of deceased great wyrms that fail to attain godhood.
Vulyar is a large town in [[Karrnath]], on the [[lightning rail]] line beween [[Vedykar]] and [[Irontown]]. It has a large [[Cannith]] East [[enclave]].
[[Vundry]] runs a shop in the [[Bazaar]] of [[Dura]]. On the surface,
appears to be a pawnshop and curio store. Behind
this façade, Vundry is one of the most reliable and
well-connected fences in Sharn. When dealing with
a friend (especially [[gnome]]s and allies of the [[Boromar Clan]]), Vundry can turn up almost any item within a week (within her 5000 crown limit).
Normally, Vundry buys any legal item for 45%
of its value, up to a limit of 2000c. Her shop is
full of odds and ends of all sorts—pottery shards
from [[Xen'drik]], a masterwork broadsword, a [[Riedran|Riedra]]
spice rack. For her friends, Vundry raises her limit
to 6000c and pays 55% of the value of items that
she buys. Vundry also fences illegal goods, charging
20% of the value of the item. She usually drops this
fee by 1% every subsequent time she does business
with the same character, to a minimum of 10%. It can
be expensive establishing credentials with Vundry,
but over time it is worth the expense.
Vvaraak, also known as the Ebon Mother and the Scaled Apostate, was a [[black dragon]] who taught the secrets of [[primal magic]] to the [[Gatekeeper|Gatekeepers]] [[druid]]s over fifteen thousand years ago. Locations in western [[Khorvaire]] where she dwelled and taught ([[Vvaraak's Cave]] and the [[Mystic Glade]], respectively) still bear lingering magic from her presence, but are shielded from all [[divination]] magic, and their precise locations are unknown.
!! Vvaraak's Betrayal
Throughout time, [[rogue dragon]]s have pursued their own agendas and dreams. Still, in the aftermath of [[Aureon's Folly|Age of Giants]] and the destruction of [[Xen'drik]], few dared to share the secrets of [[Argonnessen]] with lesser creatures. One such rebel was was Vvaraak, the [[black dragon]] who trained the first [[Gatekeepers]], and brought the secrets of [[druidic magic|primal magic]] to [[Khorvaire]]. A true [[child of Eberron]], Vvaraak foresaw a disaster that would wound the world itself. The [[Conclave]] had no interest in this struggle; just as the [[dragon]]s had stood aside while the [[giant]]s of [[Xen'drik]] battled [[Dal Quor]], the elders of the Conclave told Vvaraak that they
would act when a clear threat to [[Argonnessen]] existed, and not before.
Frustrated, Vvaraak abandoned her elders and her flight, traveled across the world, and began training [[humanoid]]s and other creatures in the use of natural magic. Although she is best known for teaching the [[orc]]s of the [[west coast|Shadow Marches]] of [[Khorvaire]], Vvaraak had other students. Some [[Seren]] [[druid]]s attribute their skill to
the teachings of the Ebon Mother, and [[lizardfolk]] in [[Xen'drik]] boast traditions akin to the [[Gatekeepers]]. Vvaraak stayed in the [[Shadow Marches]] for less than a century, and her final fate is unknown. Perhaps she lived out her final
days in [[humanoid]] form, moving among her students
and hiding from the angry [[Eyes of Chronepsis]]. Perhaps she descended into [[Khyber]] to teach the denizens of the deep. Some say that she returned to [[Argonnessen]], that her act of rebellion was actually a carefully calculated move on behalf of the [[Conclave]]. If so, it could be that the dragons subtly planned and implemented both the destruction of the [[Dhakaan]]i Empire and the defeat of the [[daelkyr]].
Of course, it’s possible that the [[Xoriat]] incursion was
not the threat Vvaraak foresaw. If this is the case, what
monumental danger still lies ahead?
The [[black dragon]] [[Vvaraak]] is said to have taught the
secrets of [[druidic magic|primal magic]] to the first [[Gatekeepers]] thousands of years ago. Though Vvaraak is long dead, rumors say that her hidden lair holds secrets tied to the
[[Draconic Prophecy]] and the mysteries of druidic magic.
//“Certainly, at first examination, your interpretation appears correct. When you take into account the assassination attempt on the king eighteen years ago and the fact that the innkeeper’s daughter spilled a pail of milk this morning, though... surely you see the implications?”//
<div align="right">—Vyssilthar the Shadow-Seer</div>
Dragons note the passage of decades as the lesser races
do days, but the last few thousand years have passed
even more swiftly for the [[black dragon]] Vyssilthar the
Shadow-Seer.
Three thousand years ago, she looked over her shoulder for a last glimpse of her mate, [[Qataakhast]]. Then [[Sarlona]] passed from sight, and Vyssilthar turned her attention to the new continent across the [[Sea of Rage]].
Vyssilthar had known for some time that her destiny waited in [[Khorvaire]]. Interpreting the [[Draconic Prophecy]] is an art, and Vyssilthar is an artist. She gained the title
“Shadow-Seer” from her uncanny ability to reveal the hidden nuances of the Prophecy and see accurately into the shadows of the future.
When it came time for the expedition to leave, Vyssilthar asked [[Qataakhast]] to accompany her across the sea. Qataakhast had to refuse, for he was serving a penance that required him to remain in exile on [[Sarlona]]. Although she knew what Qataakhast’s answer would be, Vyssilthar felt compelled to ask—possibly the only time she tried to deny the power of the Prophecy.
Over the weeks of sea travel in [[half-elf]] guise, Vyssilthar forged an unexpected friendship with [[Lhazaar]], the captain of the expedition. She found the [[human]] to
be both intelligent and clever, as brave as practical. Vyssilthar read the [[Prophecy|Draconic Prophecy]] in the stars and the movement of the waves and decided to stay with Lhazaar—the future showed much chaos and pain if the pirate queen followed one path over another.
After Lhazaar’s death, Vyssilthar discerned from her studies that she was required to be active and relatively young at a period roughly three thousand years in the future. She cultivated an isolated clan of Lhazaar’s descendants and granted them a birthright. The oldest member of this clan petrified the dragon and secured the “half-elf” statue in a specially prepared chamber along with a carefully wrapped magic scroll that could reverse the effect. According to tradition, passed down from clan elder to
clan elder, the scroll was to be read only when the stars were right, “during an age when [[Khorvaire]] is bathed in blood.” Crafting such a plan required a monumental
leap of faith on Vyssilthar’s part, but she was certain that Prophecy would provide. And so it did.
Awakened roughly 50 years ago, Vyssilthar has remained in the area now called the [[Lhazaar Principalities]]. She soon discovered and informed a local [[Chamber]] agent of her existence and talents. Now the [[black dragon]] acts as a consultant for Chamber agents from time to time, but she is a solitary creature and is more concerned with her own destiny than the future of all reality.
Vyssilthar’s main interest is interpreting the fragments of [[Prophecy|Draconic Prophecy]] with which she comes into direct contact. She is convinced the Prophecy guides her actions and puts her where she needs to be. She still mourns [[Lhazaar]]’s death and misses [[Qataakhast]]—their loss is still recent for her. Sometimes Vyssilthar thinks of returning to her mate, until she remembers that he might no longer be alive; even if he is, he is now far older than she and likely has no use for her. Vyssilthar has accepted that, for now, her place is in [[Khorvaire]], but she holds out hope that she might yet speak with Qataakhast one day.
!! Description
In [[dragon]] form, Vyssilthar is a magnificent sable in color.
[[Qataakhast]] often likened Vyssilthar’s hide to a sunset;
violet crest, indigo body, and pitch-black claws, tail, and
wings. Silver horns curve down over Vyssilthar’s face.
Milky white eyes make the dragon appear blind, but she
sees as well as any dragon.
When in disguise, Vyssilthar favors the form of a [[half-elf]] woman with black, gray, or silver hair. In either form, she always wears a bronze ring that [[Qataakhast]] gave
her the ring shortly after they first met. Vyssilthar had the trinket ensorcelled, and now it automatically resizes with her as she changes shape.
Vyssilthar maintains various guises and uses them to recruit aid when necessary.
The first mate of a ship in Prince [[Ryger|Ryger ir'Wynarn]]’s [[Seadragons]] sells naval charts and reports of sea activity to a cartographer in [[Regalport]]. A House [[Thuranni]] spy sometimes trades information with a scribe who works for noble
houses, a mutually satisfactory transaction. A House [[Lyrandar]] shipwright discusses the affairs of the day and the finer points of [[airship]] design with an amateur carpenter over a mug of ale in [[Port Verge]] once a week. The cartographer, scribe, and carpenter are all Vyssilthar in disguise.
You create a wall of fire on a solid surface within 120 feet. You can make the wall up to 60 feet long, 20 feet high, and 1 foot thick, or a ringed wall up to 20 feet in diameter, 20 feet high, and 1 foot thick. The wall is opaque and lasts for the up to 1 minute, or until your concentration is broken.
When the wall appears, each creature within its area is scorched.
One side of the wall, selected by you when you cast this spell, deals fire damage to each creature that stands within 10 feet of that side. A creature also suffers fire damage when it enters the wall. The other side of the wall deals no damage.
An invisible wall of force springs into existence at a point you choose within 120 feet. The wall appears in any orientation you choose, as a horizontal or vertical barrier or at an angle. It can be free floating or resting on a solid surface. You can form it into a hemispherical dome or a sphere with a radius of up to 10 feet, or you can shape a flat surface made up of ten 10-foot-by-10-foot panels. Each panel must be contiguous with another panel. In any form, the wall is 1/4 inch thick. It lasts for up to 10 minutes, or until your concentration is broken. If the wall cuts through a creature's space when it appears, the creature is pushed to one side of the wall (your choice which side).
Nothing can physically pass through the wall. It is immune to all damage and can't be dispelled by [[dispel magic]]. A [[disintegrate]] spell destroys the wall instantly, however. The wall also extends into the space between planes, blocking teleportation through the wall.
You create a wall of ice on a solid surface within 120 feet. You can form it into a hemispherical dome or a sphere with a radius of up to 10 feet, or you can shape a flat surface made up of ten 10-foot-square panels. Each panel must be contiguous with another panel. In any form, the wall is 1 foot thick and lasts for up to 10 minutes.
If the wall cuts through a creature's space when it appears, the creature within its area is pushed to one side of the wall and suffers significant cold damage.
The wall is an object that can be damaged and thus breached. Destroying a section of wall leaves behind a sheet of frigid air in the space the wall occupied. A creature moving through the sheet of frigid air suffers a blast of cold damage.
You create a wall of swirling sand on the ground at a point you can see within 90 feet. You can make the wall up to 30 feet long, 10 feet high, and 10 feet thick, and it vanishes when the spell ends up to 10 minutes later (or when your concentration is broken). It blocks line of sight but not movement. A creature is blinded while within the wall, and their walking speed is reduced to at least a third of their normal speed.
This ammunition packs a wallop. A creature hit by the ammunition must resist the explosion of force or be knocked prone.
If you are a spellcaster, you can cast [[hold]] while attuned to this wand. You also gain an additional spellcasting stress box.
This wand has 3 charges. While holding it, you can expend 1 of its charges and cause one object you can see within 30 feet of you to become the color of your choice. The object must be no larger than a 5-foot cube. This change lasts one hour.
The wand regains all expended charges daily at dawn. If you expend the wand's last charge, the [[consequence]] of a [[failed roll|bad outcome]] or [[partial success]] may result in the wand erupting in a harmless, multicolored flash and crumbling to ashes.
If you are a spellcaster, you can cast [[fireball]] while attuned to this wand. You also gain an additional spellcasting stress box.
If you are a spellcaster, you can cast [[lightning bolt]] while attuned to this wand. You also gain an additional spellcasting stress box.
You can cast [[magic missile]] while attuned to this wand, ''even if you aren't a spellcaster.''
If you are a spellcaster, you can cast magic missile as a [[rare-tier|spell tier]] [[spell]] (5-7 missiles).
If you are a spellcaster, you can cast [[polymorph]] while attuned to this wand. You also gain an additional spellcasting stress box.
While holding this wand, you can create a harmless burst of multicolored light at a point you can see up to 60 feet away. The burst of light is accompanied by a crackling noise that can be heard up to 300 feet away. The light is as bright as a torch flame but lasts only a second. You can do this seven times each day.
This wand has 3 charges. While holding it, you can expend 1 of its charges and target a [[humanoid]] you can see within 30 feet of you. The target must resist the magic or be forced to scowl for 1 minute.
The wand regains all expended charges daily at dawn. If you expend the wand's last charge, the [[consequence]] of a [[failed roll|bad outcome]] or [[partial success]] transforms the wand into a [[wand of smiles]].
This wand has 3 charges. While holding it, you can expend 1 of its charges and target a [[humanoid]] you can see within 30 feet of you. The target must resist the magic or be forced to smile for 1 minute.
The wand regains all expended charges daily at dawn. If you expend the wand's last charge, the [[consequence]] of a [[failed roll|bad outcome]] or [[partial success]] transforms the wand into a [[wand of scowls]].
This wand has 3 charges. While holding it, you can expend 1 of its charges and cause plants in a 30-foot radius, centered on yourself, to sway as if in the wind.
The wand regains all expended charges daily at dawn. If you expend the wand's last charge, the [[consequence]] of a [[failed roll|bad outcome]] or [[partial success]] may result in the wand crumbling to ashes.
This wand slightly enhances your offensive spells. In addition, your spells are not impeded when cast on a target taking partial cover.
If you are a spellcaster, you can cast [[web]] while attuned to this wand.
This wand looks and feels like an icicle.
You can cast [[ray of frost]] while attuned to this wand, ''even if you aren't a spellcaster.''
If you are a spellcaster, you can also cast [[ice storm]] using this wand.
A wand sheath clamps onto a [[warforged]]'s arm and allows them to retract or extend a wand in less than a second. While extended, the wand is usable by the warforged, but their hand remains free.
This disturbing [[daelkyr]]-made [[symbiont]] is a leathery tentacle
with one end terminating in a single bulbous eye, and the other
sporting a barb designed to burrow into flesh. When you attune
to the wandering eye, it burrows into one of your shoulders, then
rises up from it, studying the world and projecting insights into
your mind. The wandering eye may occasionally take an interest
in some random element of your current environment; in this
case, the DM may draw your attention to this object or person.
While the eye is uncovered, you gain the following benefits.
//''Third Eye.''// When you make an attempt to perceive or investigate using sight, gain an advantage.
//''Periscopic Vision.''// The eye can stretch up to 18 inches
and can be used to peer around corners or over cover.
//''Always Vigilant.''// The eye remains watchful while you sleep. If the eye spots danger,
it sends you a mental alarm in the form of a nightmare that
immediately wakes you up.
If the eye is knocked unconscious, it will awake after an hour or two.
Aside from [[Gatherhold]], the Wandering Inn is House [[Ghallanda]]’s most significant
presence in the [[Talenta Plains]], providing entertainment and
shelter to any fortunate enough to cross its path. When
times are dark and travelers are weary, one can always
hope that the Wandering Inn is just beyond the horizon.
The Inn is a traveling fair and trading post that makes a regular circuit across the Plains, setting up its colorful stalls and tents
as a gathering place for halfling tribes in the area.
The caravans of the Wandering Inn provide a place of
refuge and healing for the nomadic tribes, and even
those [[halfling]]s who resent [[Ghallanda]]’s movement out
of the plains and into the wider world embrace the
spirit of fellowship that the Wandering Inn represents.
Magic evolves. When [[Galifar I|Galifar ir'Wynarn]] forged his [[kingdom|Galifar]], his [[wizard]]s
hadn't mastered [[fire bolt]] or [[ray of frost]]. The development of the
[[cantrip|spell]]—casual spells that can be used at will—took centuries,
as the [[Arcane Congress]] studied [[Aereni|Aerenal]] techniques and the
powers of [[sorcery|sorcerer]]. The soldiers of the united kingdom relied
on sword and bow. But as the [[Last War]] began, [[Aundair]] took
stock of its resources. Thanks to the presence of the Arcane Congress, Aundair led Galifar in mystical education. Assembling
the first regiment of arcane dragoons, Aundair developed the
[[war staff]] and [[battle rod]]. Over the course of the Last War, these
techniques spread across the [[Five Nations]] and beyond. Today
it's no surprise to see a tough [[inquisitive]] or a [[Sentinel Marshal|Sentinel Marshals]]
with a sword in one hand and a wand in the other. But no one
calls these people “arcane dragoons.” If you fight your battles
with [[fire bolt]] or [[sacred flame]], you're known as a “wandslinger.”
!! What is a Wandslinger?
At its simplest level, a wandslinger is any individual capable
of casting a destructive cantrip. Beyond that, it's about
how you present yourself to the world. If you know the [[fire bolt]]
cantrip, you could be a wandslinger. Do you
carry an arcane focus? If so, do you display it prominently? Do
you carry your [[wand of Fernian ash|imbued wood focus]] with pride, twirling it and
doing flame tricks? If so, you're a wandslinger. By contrast, if
you're a scholarly [[wizard]] who despises conflict and prefers
not to use an arcane focus, you're not a wandslinger, even
though you are just as capable at magical combat. As much
as anything, it's about attitude.
!! Example NPC Wandslingers
* ''Aundairian Dragoon.'' Cantrips known: [[force blast]], [[shocking grasp]]. Spells known: [[concussive burst]] (1/day).
* ''Brelish Firebrand.'' Cantrips known: [[fire bolt]], [[light]]. Spells known: [[burning hands]] (1/day).
* ''Cyran Phantasm.'' Cantrips known: [[force blast]], [[lesser illusion]]. Spells known: [[shield]] (1/day).
* ''Karrnathi Ghoul.'' Cantrips known: [[chill touch]], [[poison spray]]. Spells known: [[cause fear]] (1/day).
* ''Thrane Beacon.'' Cantrips known: [[sacred flame]], [[spare the dying]]. Spells known: [[guiding bolt]] (1/day).
The War of the Mark, a terrible and bloody conflict fifteen hundred years ago, changed the face of [[Khorvaire]], firmly establishing the [[dragonmarked families|dragonmarked house]] that hold power to this day. The
war began about five hundred years before the establishment of [[Galifar]], when the dragonmarked houses launched a sort of inquisition to put an end to the proliferation of
[[aberrant dragonmark]]s. The houses had the advantage
of greater numbers, but the aberrant marks of the time
carried tremendous destructive power.
In the third year of the war, Lord [[Halas Tarkanan]] began
organizing his aberrant kindred into a proper military force
to oppose the dragonmarked houses. Tarkanan, known as
“The Earthshaker,” carried an [[aberrant mark|aberrant dragonmark]] that gave him
great influence over the elemental forces of earth and fire,
but his strategic brilliance was even more important to the
course of the war. His consort was an enigmatic woman
called the [[Lady of the Plague]]. Though she is commonly seen
as a monster, the records of the war suggest that she was
loath to use her power unless forced to, and might even
have despised the aberrant mark she carried.
Though Tarkanan's efforts extended the conflict, the
aberrants fell in the end. Tarkanan himself was trapped
in the siege of [[Sharn]], which he had made his stronghold
and base of operations. When it became clear that he and
his followers were doomed, he and the [[Lady of the Plague]]
unleashed the full power of their marks—power sufficient
to destroy the city. Terrible quakes caused parts of the
city to collapse, and rivers of lava flowed up from the fiery
lake deep below. Swarms of vermin and deadly plagues
ravaged the invaders and defenders alike. Some claim that
the Lady of the Plague's death-curse still lingers in the depths
of [[Old Sharn]].
The War of the Mark ultimately solidified the position
of the [[dragonmarked house]]s in [[Khorvaire]], and it laid the
foundation for the prominent place of both House [[Cannith]]
and House [[Deneith]], which played central roles in the war.
It led to the foundation of the [[Twelve]] as an avenue for the
houses to cooperate toward common aims.
This massive silver kite shield emits a powerful divine aura that repels all [[Mabar]]an [[undead]] that draw near.
[[Aundair]] developed the //war staff// to help [[wandslinger]]s match the range of [[Thranish|Thrane]] archers, but it quickly spread across [[Khorvaire]]. This spellcasting focus enables the wielder to cast cantrips at up to four times the normal range.
See also [[battle rod]].
This House [[Deneith]] prison was used
during the height of the kingdom of [[Galifar]] to contain
some of the worst criminals given over to the care of the
[[Defenders Guild]]. Converted into a fortress during the
[[Last War]], the place was used by the [[Cyran|Cyre]] army up until
the [[Darguun]] revolt. The keep, still largely intact, became
a tomb for the Cyran forces when [[Haruuc|Haruuc Shaarat'kor]] and his forces
laid siege to the place. The Cyrans refused to surrender or
flee, and so were surrounded and cut off from supplies and
outside aid. The two thousand troops died slowly of starvation and growing illness as Haruuc simply ordered his
troops to watch and wait. Today, the [[goblinoid]]s shun the
keep, believing it to be [[haunted|ghost]] by the last Cyran troops to
fill its ancient battlements.
''District Type:'' Garrison<br/>
''Buildings:'' Garrison building, temple ([[Dol Dorn]]),
average lodging (20), poor lodging (4), upscale
food (8), average food (15), poor food (15), upscale
trades (15), average trades (33), poor trades (28),
average services (40), average residences (160), poor
residences (40)<br/>
''First Impression:'' Some guards of the Watch march
to and fro in groups, while others stand at attention,
and still others drill for combat. Shouted commands
and marching songs fill the air.<br/>
''Social Class:'' Middle class<br/>
''Neighbors:'' [[Everbright]] (southeast); [[Cassan Bridge]] (south); [[Rattlestone]] (bridge, southwest); [[Stormhold]] (bridge, northwest); [[Dragon Towers]] (bridge, north); [[Forgelight Towers]] (below); [[Ivy Towers]] (above)
Warden Towers is the home of [[Menthis Plateau]]'s
Watch garrison, which includes 450 guards responsible for keeping order in the whole plateau. It also
houses a small community of [[Lhazaar|Lhazaar Principalities]] immigrants,
many of whom have joined the [[Watch|Sharn Watch]]. This community also spills into [[Forgelight Towers]] and [[Downstairs]], both in [[Lower Menthis]].
!! Noteworthy Locations
* [[Thuranne d'Velderan's Investigative Services]]. An [[inquisitive]] agency specializing in criminal investigation.
* The [[Broken Anchor]]. A tavern catering to Lhazaar travelers.
//We, the Wardens of the Wood, protect all the children of Eberron, from the beasts of the wild to the people of the cities. We preserve the balance between nature and civilization and help each understand the other. //
The largest of the [[druid]]ic sects of the [[Eldeen Reaches]]
is the Wardens of the Woods. With thousands
of active members, the sect’s primary purpose
is to protect the innocent, whether creatures of
civilization or of wood and wild. The Wardens
ensure that the dangers of the [[Towering Wood]]
don’t spill out into the farmlands of the Eldeen Reaches, while also dealing with brigands,
poachers, and other interlopers from the
civilized world.
Although most Wardens live on the fringes of
civilization within the communities of their sect,
every [[Eldeen|Eldeen Reaches]] village has a single Warden advisor
who seeks to peacefully resolve disputes within
their village or with other communities. These
advisors travel the nearby farms to ensure the
farmers of the Reaches work peacefully with the
land, nurturing it with each harvest, instead of
doing harm.
Under a different capacity, Wardens serve as
the militia of the [[Eldeen Reaches]]. While they
are the largest sect, most of their members are
hunters or advisors.
The Warders were a group of a dozen [[dragon]]s dedicated to improving the lot of
[[Argonnessen]]’s lesser (non-dragon) races. They established the city of [[Io'vakas]] in the [[Vast]] as a sort of walled garden to empower and cultivate [[humanoid]]s, [[giant]]s, and other creatures. When Io'vakas was destroyed 1200 years ago, one of the twelve Warders, [[Arnaarlasha]], was able to save a few of the refugees and founded the neighboring city of [[Io'lokar]] in the doomed city's ashes. The rest of the original Warders disbanded, but today, [[dragon]]s sympathetic to the cause of the lesser races continue to protect and guide the inhabitants of Io'lokar.
To use this brooch's effect, you must have the [[Mark of Warding]].
While wearing this brooch, you are more resistant to magical force (e.g. [[force blast]], [[concussive burst]]), and you are immune to damage from the [[magic missile]] spell.
The Warding Guild of [[Kundarak]] is best known as the licensing authority for locksmiths, but it also includes magical warders and some security guards. House
[[Kundarak]] and House [[Deneith]] have a tacit agreement:
Guarding //things// is the domain of House Kundarak,
and guarding //people// is that of House Deneith.
!! The Golden Door
This division of the Warding Guild is responsible for
elaborate security devices, such as
complex locks and magic wards.
Affordable only by the very rich,
most of its work is performed on
behalf of Kundarak itself or other
[[dragonmarked house]]s.
!! The Iron Gate
Also part of the Warding Guild, the Iron Gate (not to be confused with the [[Iron Gate]] of the [[Unity]] of [[Riedra]]) supplies guards to augment the security devices of the Golden Door. Members of the Iron Gate keep a low profile and are rarely seen beyond the locations they guard. Although they avoid taking jobs for which House [[Deneith]]’s [[Defenders Guild]] is better suited, they do provide bodyguards for most of the important clan lords of the [[Mror Holds]].
[[Sharn]] is a vertical city, and elevation is an indicator of
status and wealth. Each quarter is roughly divided into
three levels, and the combination of quarter and level
defines a ward. Thus, wards have names such as [[Lower Dura]], [[Upper Central]], and [[Middle Menthis]].
Upper wards are the domain of the rich and powerful.
Here you'll find the finest goods and the most expensive
services. Only those who maintain a wealthy or aristocratic lifestyle can easily afford the prices for meals
and lodging, and adventurers who maintain a squalid or
wretched lifestyle might be treated with disdain (suffering disadvantage on Charisma checks).
Violence is rare in any of the upper wards, and the
[[Sharn Watch]] actively patrols these areas. Although
the guards here might be corrupt just as in a middle or
lower ward, they're already being well paid by powerful
nobles and criminal organizations, and they work efficiently in the service of these forces.
Middle wards are home to the middle classes. Here
you'll find bustling markets and taverns, along with a
wide range of entertainment and housing. Most goods
and services are affordable by those of a modest or
comfortable lifestyle, with a few higher-priced options
tucked away. The Sharn Watch has a presence, but not
as strong as in the upper wards.
Lower wards house the hard-working laborers, along
with the destitute and the desperate, including refugees
who lost everything in the war and orphans who never
had anything to begin with. Services priced for a modest lifestyle can be found, but overall the lower wards are
home to those who have no better than a poor lifestyle;
a visitor who displays signs of a wealthy or aristocratic
lifestyle might attract unwanted attention. The watch
pays little attention to the lower districts, making them a
haven for criminals and gangs.
These are stereotypes that don't apply to all wards.
Dura is a particularly poor quarter, meaning that Upper Dura is effectively a middle ward in economic terms;
similarly, because Central Plateau is a hub of wealth
and power, Lower Central is effectively a middle ward.
Each ward is further subdivided into districts, which
are neighborhoods defined by an economic role, a separate culture, or both. For example, [[Lower Northedge]]
includes the districts of [[Stoneyard]], [[Longstairs]], and
[[North Market]]. It's generally true that the combination of
a district's ward and quarter will give you a broad idea
of what to expect there. A district in [[Upper Central]] will
typically be well kept and swarming with guards, while
a district in [[Lower Dura]] will be squalid and dangerous.
!! Getting Around
Sharn is an enormous city, and traveling on foot from
one side of the city to the other can be time-consuming.
Here are some travel-time guidelines:
* It takes at least 30 minutes to cross a ward.
* If you're traveling between wards, add 30 minutes for each ward you pass through.
* [[Dura]] and [[Tavick's Landing]] are especially large; double the time it takes to move through one of them.
For instance, traveling from [[Lower Menthis]] to [[Upper Central]] involves passing through three wards (taking a bridge from Lower Menthis to [[Lower Central]], then
ascending two levels) and can take 90 minutes or longer.
Not all the quarters are linked to one another by
bridges. The connections that do exist include these:
* [[Central Plateau]] has bridges that lead to [[Northedge]] and [[Menthis|Menthis Plateau]].
* [[Dura]] is connected to [[Tavick's Landing]] and Menthis.
* Tavick's Landing is connected to Dura, Menthis, and [[Northedge]].
* Menthis is connected to Tavick's Landing, Dura, and Central.
* Northedge is connected to Central and Tavick's Landing.
Traveling from district to district involves the use of
bridges and ramps, along with magic lifts—vast floating
disks that slowly ascend and descend along threads of
mystical energy. Lifts are mainly used to move cargo
and can be up to 30 feet in diameter. Most lifts have rails
but aren't fully enclosed; if combatants fight on a lift,
someone falling or being pushed off the edge is always a
possibility.
<<<
Alternative walking travel time guideline: 15 minutes per district, including ones connected by bridge.
Example: [[Clifftop]] to [[Deathsgate]].
:''Path 1:'' [[Clifftop]] → [[Hope's Peak]] → [[Redstone]] → [[Daggerwatch]] → [[Highhold]] → [[Sunrise]] → [[Ocean View]] → [[Dalan's Refuge]] →(down)→ [[Deathsgate]] (8 districts, 8*15=120 minutes)
:''Path 2:'' [[Clifftop]] → [[Hope's Peak]] → [[Redstone]] → [[Daggerwatch]] →(bridge)→ [[Ivy Towers]] → [[University District]] → [[Platinate]] →(bridge)→ [[Dalan's Refuge]] →(down)→ [[Deathsgate]] (8 districts, 8*15=120 minutes)
<<<
For a speedier journey through the streets, House [[Orien]] manages a system of carriages for hire. Taking an Orien carriage cuts travel time in half and costs a negligible fee (0.02c) per district. Flight is, of course, the fastest way to get around in Sharn, cutting travel time down to one-sixth of the walking pace (2.5 minutes per district). It's also more expensive, at 0.05c per district, and each mount can hold only one person, as opposed to four in a carriage (not including the driver). The most common form of aerial transport is the [[skycoach]], but many flying mounts, including [[hippogriff]]s, [[griffon]]s, [[glidewing]]s,
and [[giant owl]]s, can be found for hire around the city.
!! Important Districts
|! |![[Central Plateau]] |![[Dura]] |![[Menthis Plateau]] |![[Northedge]] |![[Tavick's Landing]] |
|![[Upper|upper ward]] |[[Highest Towers]], [[Korranath]], [[Mithral Tower]], [[Platinum Heights]], [[Skysedge Park]] |[[Clifftop]], [[Daggerwatch]], [[Highhold]], [[Highwater]], [[Hope's Peak]], [[Overlook]] |[[Den'iyas]], [[Ivy Towers]], [[Seventh Tower]], [[University District]] |[[Crystal Bridge]], [[Oak Towers]], [[Shae Lias]] |[[Copper Arch]], [[Ocean View]], [[Silvergate]], [[Sunrise]], [[Twelve Pillars]] |
|![[Middle|middle ward]] |[[Ambassador Towers]], [[Dragon Towers]], [[Sovereign Towers]], [[Sword Point]], [[Tradefair]] |[[The Bazaar|Bazaar]], [[Broken Arch]], [[Hareth's Folly]], [[Rattlestone]], [[Stormhold]], [[Tumbledown]], [[Underlook]] |[[Cassan Bridge]], [[Everbright]], [[Little Plains]], [[Smoky Towers]], [[Warden Towers]] |[[High Hope]], [[Holdfast]] |[[Cornerstone]], [[Deathsgate]], [[Grawand]], [[Tavick's Market]] |
|![[Lower|lower ward]] |[[Boldrei's Hearth]], [[Olladra's Kitchen]] |[[Callestan]], [[Fallen]], [[Gate of Gold]], [[Malleon's Gate]], [[Oldkeep]], [[Precarious]], [[The Stores|Stores]] |[[Downstairs]], [[Firelight]], [[Torchfire]] |[[Longstairs]], [[North Market]], [[Stoneyard]] |[[Black Arch]], [[Cogsgate]], [[Dragoneyes]], [[High Walls]], [[Terminus]], [[Wroann's Gate]] |
|!The [[Cogs]] |[[Ashblack]], [[Blackbones]], [[Khyber's Gate]] |<|<|<|<|
Above the city: [[Skyway]]<br/>
[[Cliffside]] (on the banks of the [[Dagger|Dagger River]], bordering [[Dura]]): [[Grayflood]], [[Mud Caves]], [[Sharn's Welcome]], [[Ship's Towers]]
To see all locations in Sharn in a complete bulleted list, see [[Locations in Sharn]].
!! Dungeons of Sharn
[[Sharn]] boasts countless opportunities for adventurers.
You can get caught up in espionage in [[Upper Central]] or
drawn into a crime war in [[Lower Dura]]. Aside from the
intrigues and politics of the city, Sharn has a wide range
of cursed ruins, haunted slums, shunned catacombs,
and other dangerous places. Wise folk avoid these areas, but those whose hunger for adventure outweighs
their good sense might do the opposite.
* The [[City of the Dead]]
* [[Old Sharn]]
* [[Fallen]]
* [[Khyber's Gate]]
* The [[Sewers|Sewers of Sharn]]
//"Pierce was built by design, while you were built by accident," Lakashtai said. "The soul is what matters, not the shape of the vessel."//
//"What makes you think he has a soul?" Gerrion said.//
//"What makes you think you do?"//
<div align="right">—Keith Baker, //The Shattered Land//</div>
The warforged are [[construct]]s built to fight in the [[Last War]]. While
the first warforged were mindless automatons, House
[[Cannith]] devoted vast resources to improving these steel
soldiers. An unexpected breakthrough produced sapient
soldiers, giving rise to what some have only grudgingly
accepted as a new species. Warforged are made from
wood and metal, but they can feel pain and emotion.
Built as weapons, they must now find a purpose beyond
war. A warforged can be a steadfast ally, a cold-hearted
killer, or a visionary in search of meaning.
!! Living Steel and Stone
Warforged are formed from a blend of organic and inorganic materials. Root-like cords infused with alchemical
fluids serve as their muscles, wrapped around a framework of steel, darkwood, or stone. Armored plates form
a protective outer shell and reinforce joints. Warforged
share a common facial design, with a hinged jaw and
crystal eyes embedded beneath a reinforced brow ridge.
Beyond these common elements of warforged design,
the precise materials and build of a warforged vary
based on the purpose for which it was designed.
Although they were manufactured, warforged are
living [[humanoid]]s. Resting, healing magic, and medicinal skill all provide the same benefits to warforged that they do to other humanoids.
!! Warforged Personality
The warforged were built to serve and to fight. For most
of their existence, warforged had a clearly defined function and were encouraged to focus purely on that role.
The [[Treaty of Thronehold]] gave them freedom, but many
still struggle both to find a place in the post-war world
and to relate to the creatures who created them.
The typical warforged shows little emotion. Many
warforged embrace a concrete purpose—such as
protecting allies, completing a contract, or exploring
a land—and embrace this task as they once did war.
However, there are warforged who delight in exploring
their feelings, their freedom, and their relationships
with others. Most warforged have no interest in religion, but some embrace faith and mysticism, seeking higher purpose and deeper meaning.
The typical warforged has a sexless body shape. Some warforged ignore the concept of gender entirely, while others adopt a gender identity.
The more a warforged develops its individuality, the more likely it is to modify its body, seeking out an [[artificer]] to customize the look of its face, limbs, and plating.
!! Quirks
Warforged often display an odd personality trait or two,
given how new they are to the world. The table below contains example quirks.
| !<<dr d8>> |!Warforged Quirk |
| 1 |You analyze—out loud—the potential threat posed by every creature you meet. |
| 2 |You often misread emotional cues. |
| 3 |You are fiercely protective of your friends. |
| 4 |You try to apply wartime discipline to every situation. |
| 5 |You don't know how to filter your feelings and are prone to dramatic emotional outbursts. |
| 6 |You don't understand clothing beyond its utility and assume it denotes a person's function. |
| 7 |You are obsessed with your appearance and constantly polish and buff yourself. |
| 8 |War is the only thing that makes sense to you, and you're always looking for a fight. |
!! Warforged Names
Most warforged were assigned numerical designations
for use in military service. Many of them adopted nicknames, often given to them by their comrades. As independent individuals, some have chosen new names as
a way to express their path in life. A few take on [[human]]
names, often the name of a fallen friend or mentor.
//''Warforged Names:''// Anchor, Banner, Bastion, Blade,
Blue, Bow, Cart, Church, Crunch, Crystal, Dagger,
Dent, Five, Glaive, Hammer, Iron, Lucky, Mace, Oak,
Onyx, Pants, Pierce, Red, Rod, Rusty, Scout, Seven,
Shield, Slash, Smith, Spike, Temple, Vault, Wall
!! Warforged Traits
Most warforged are about the size of an athletic human, but weigh around 300 lbs. They can come in a variety of subtypes, including [[envoy]], [[skirmisher]], and [[juggernaut]].
Warforged were created to have
remarkable fortitude, granting them resistance to poison, immunity to disease, and no need to eat, drink, or breathe. Rather than sleeping, warforged spend at least six hours in an inactive, motionless state.
In this state, they appear inert, but they are not unconscious, and can see and hear as normal.
A variety of [[magic item]]s have been designed to work exclusively for warforged, including [[docent]]s and [[armblade]]s.
A typical warforged is between two and thirty
years old. The maximum warforged lifespan remains
a mystery; so far, warforged have shown no signs of
deterioration due to age.
In the final days of the [[Last War]], House [[Cannith]] unleashed its mightiest creations: the [[warforged]] colossi. These enormous mechanical warriors thundered across [[Cyre]], crushing everything in their paths and leaving ruin behind them. Meant to end the war decisively, the colossi pulverized hundreds of soldiers beneath their feet and incinerated whole legions with beams of fiery light that shot from their mouths. This rampage was cut short on the Day of [[Mourning]]. The arcane cataclysm that engulfed Cyre destroyed most of the warforged colossi, causing them to collapse into lifeless heaps.
//''Colossal Survivors.''// Some warforged colossi survived the Day of Mourning more or less intact and are thought to only be in stasis, waiting to be awakened. Cannith [[artificer]]s are eager to track them down and determine whether they can be awakened or, at the very least, salvaged for [[docent]]s and other magic items. Here are locations where operational warforged colossi are rumored to dwell:
* "Arkus" (Colossus WX-11) lies prone at the bottom of the [[Glowing Chasm]] in the northern part of the [[Mournland]], with one of its arms torn off.
* "Artorok" (Colossus WX-73) sits at the bottom of [[Lake Cyre]] amid the scaffolding of a sunken House [[Cannith]] workshop, flooded but otherwise intact.
* "Hanamar" (Colossus WX-42) stands at the bottom of [[Kraken Bay]], near the coast of [[Valenar]], buried up to its knees in sand and flooded, but it is otherwise intact.
* "Karrnslayer" (Colossus WX-31) lost its legs but crawls through the [[Mournland]], using its arms to drag its great bulk across the ground.
* "Landro" (Colossus WX-33) is partially phased into a mountainside on the border of [[Cyre]] and [[Breland]], but still explorable and potentially salvageable.
* "Norr" (Colossus WX-5) is slumped amid the ruins of [[Metrol]], the former capital of Cyre.
* "Tymber" (Colossus WX-12) squats in the [[Crawling Swamp]], in the northwest corner of the [[Shadow Marches]]. How it got there, no one knows.
//''Hollow Structure.''// Although it can operate without a crew, a warforged colossus is built to carry [[wizard]]s, [[artificer]]s, [[magewright]]s, and elite troops. For this reason, these [[construct]]s are largely hollow on the inside, with tunnels, ladders, storage areas, and observation decks.
A colossus might be filled with monsters and secrets, in addition to the corpses of those who died inside it.
A warforged item is any [[magic item]] that can only be used by [[warforged]].
<<list-links-article "[tag{!!title}sort[title]]">>
Before the fall of the [[giant]]s, clans of renegade [[drow]] learned
the secrets of creating [[construct]]s in the ruined [[creation forge]]s the [[quori]] left behind (see [[quorcraft]]). In these forges they built the first [[warforged]] scorpions in homage to their god [[Vulkoor]]. The drow deployed these monstrous 10-foot-long constructs, barbed tails dripping with caustic slime, against their renegade [[elf]] kin and their [[giant]] masters alike. Sent into battle as fast as they could be constructed, the warforged scorpions were instrumental in allowing the drow to establish a foothold of control in [[Xen'drik]] as the empire of the giants fell.
Today, a small group of [[drow]] maintains the secret of
creating these powerful constructs and have a number
of warforged scorpions in their service. However, the
majority of warforged scorpions are now free-willed,
wandering the jungles since the demise of their original
masters in ages past. These construct predators hunt the
unwary, sometimes responding to the remnants of their
original instructions in unexpected ways.
Warforged titans are hulking bipedal [[construct]]s built to wreak paths of destruction through enemy armies. Some of the most feared combatants of the [[Last War]], warforged titans are barely sentient, with just enough intelligence to follow commands. They served as a technological precursor to [[warforged]], and were based on ancient designs created by [[giant]] [[artificer]]s during the [[Age of Giants]].
Throughout the Last War, [[Cyre]] poured gold into House
[[Cannith]]'s coffers, urging them to develop ever-deadlier
weapons. In 959 YK, Cannith presented Queen Dannel with
the first warforged titans. For a time, this gave Cyre an edge—
but as always, Cannith began selling these creations to other
nations, as well as selling [[blast disk]]s and [[siege staff]]s to those
who needed to fight titans.
During the Last War, the warforged titan served a number of
critical roles. The mere presence of an imposing titan provided
a defensive bulwark for infantry, as enemy infantry could rarely
afford to engage a titan without [[artillery|arcane artillery]] or magical support. Titans
are tireless, surprisingly swift, and capable of crossing almost
any terrain. They are also devastatingly effective against fortifications and siege engines.
A titan has two platforms in its chassis, each designed to hold one humanoid-sized or smaller creature. Typically, these platforms hold archers, providing the warforged
with some minimal ranged support to complement its powerful
melee attacks. However, specialized crew can dramatically
increase the capabilities of a titan: an [[evoker|evocation]] can provide strong
ranged attacks, while an [[abjurer|abjuration]] can stand ready to counter or
dispel enemy magic, and an onboard [[artificer]] can keep the titan
operational. Sending your titan against [[Karrnathi undead]]? An
exorcist can be a boon for dealing with [[undead]]. Alternatively,
a titan could simply serve as a battering ram, carrying two
spies or commandos ready to leap off and blend into an enemy
community as soon as the titan breaches a defensive wall.
Standard warforged titans do not have articulated hands at the ends of their arms, but rather gigantic embedded weapons (typically a hammer on one limb, an axe on the other). Some titans instead have a self-loading integrated ballista in place of one of their melee weapons. Late in the war, [[Cannith]] developed titans that had only one platform, with a [[long rod]] integrated in place of the other platform. Other titan variations and enhancements exist, such as elemental shielding.
!! Titan Consciousness
While called “[[warforged]],” the titans are quite different from the
truly living constructs that came after them. Titans have limited
sentience. They imprint on their commanders, and to a lesser
degree, on the uniforms of their allies. They can follow orders
and general instructions such as “protect allies” or “engage
enemies.” But as a rule, titans don't feel emotion, reflected by
the fact that they're immune to being charmed or frightened.
Today, most remaining titans are simply waiting in storage,
content to remain motionless until it's time to serve again.
Yet there are stories of titans who've developed full
consciousness. If the tales are true, this could be the result of
rogue [[artificer]]s (possibly cultists of the [[Traveler]] hidden within
House [[Cannith]]), or it could be a random spark of evolution—
suggesting that the potential for sentience lies within all titans.
Warlocks are seekers of the knowledge that lies
hidden in the fabric of the multiverse. Through pacts
made with mysterious beings of supernatural power,
warlocks unlock magical effects both subtle and
spectacular. Drawing on the ancient knowledge of
beings such as [[archfey]], [[overlord]]s, [[daelkyr]], the [[Undying Court]], or powerful [[immortal]] spirits from other [[plane]]s, warlocks piece together
arcane secrets to bolster their own power.
The magic warlocks cast is considered [[arcane|arcane magic]], due to the predictable and orderly nature of a pact. However, the line is blurred when making a pact with a [[celestial]] or [[fiend]], which may add a dash of faith-based [[divine magic]] into their spellcasting; or making a pact with a [[quori]], which might be considered [[psionic|psionics]] in nature.
A decade removed from anarchy, [[Droaam]] now follows a form of despotic feudalism. The different
regions of the nation are dominated by warlords that
impose their rule over lesser creatures. Some reign by
sheer force; others, such as the charismatic [[Queen of Stone]], have a more subtle hand. All warlords owe
fealty to the [[Daughters of Sora Kell]] and provide the
[[hag]]s with tribute—either material goods or the services of troops and laborers.
Although the rule of the hags is ultimately based
on fear, the warlords recognize that the Daughters of
Sora Kell are shaping Droaam into a powerful nation.
As a result, it is rare for a warlord to challenge the
hags. However, between the lords themselves, feuds,
power struggles, and assassination are a part of day-to-day life.
See also [[Culture of Droaam]].
!! The Warlords of Droaam
<<list-links-article "[tag{!!title}sort[title]]">>
Bodyguards, [[inquisitive]]s, and
sentries across Khorvaire either are members of
the [[Warning Guild]] or pay dues to obtain certification from House [[Medani]]. There’s some conflict with House [[Deneith]] over the market in bodyguards, but
House Medani is small and subtle enough that it
hasn’t caused a major rift yet. In general, people hire
a House Deneith bodyguard when they expect to be
attacked, and they hire a House Medani bodyguard
when they suspect someone might be plotting against
them, but they aren’t sure who.
The Warning Guild also provides some intelligence
functions to the House [[Medani]] leadership (and, by
extension, to [[Breland]]). But the members of this guild
aren’t spies—they’re the people who catch spies. Their
information is often better at explaining the motives
behind another nation’s actions than it is at predicting and countering what that nation will do. After all, when Medani learns what a captured spy was trying
to find out, that knowledge reveals a lot about what
the spy’s masters don’t know yet but would like to.
At first glance, this [[layer]] of [[Shavarath]] looks like the blasted land between the
trenches of [[Nullius Terram]]. It's home to a number of warring
cities, but they aren't static settlements. Rather, some are
floating fortresses that dwarf the [[Argonth]] of [[Breland]], and others
walk on two legs.
The Wasting Plain is a desert in [[Xen'drik]] that spans between the [[Sun Pillars]] and the [[Phoenix Basin]].
The Watching Wood is a forest in western [[Droaam]]. It is the prime hunting ground of the [[Dark Pack]], the band of [[lycanthrope]]s and [[worg]]s, and is also home to a variety of dark [[fey]]. The [[warlord]] [[Tzaryan Rrac]] claims the southern portion of this wood as part of his fiefdom.
The special forces of the
[[Harmonious Shield]] of [[Riedra]], most water soldiers are particularly skilled in stealth and perception, as well as the ability to move and react swiftly. A water soldier's
gear depends on
the soldier's specialties and the
assignment. Water
soldiers work independent of the other
units, in small squads.
Although they're occasionally sent into [[Adar]],
water soldiers are typically used in
strikes against dissident groups.
This pair of soldier's greaves are magically waterproof, allowing the user to wade through waist-high water without getting wet.
Looming over the mouth of the [[Koronoo River]] that
flows into the [[Stormreach]] [[Harbor]], the Waterworks are a mix of
ancient sewerage and more recent pipes, the largest of which dumps effluent into the harbor. Behind the pipes and steam vents stand sealed iron doors, which
lead into the [[kobold]]-infested sewers.
The [[giant]]s built everything big, and the vaulted
sewer system is no exception. As one travels deeper
and deeper into it, it gets older and, eventually, ties
into the buried buildings of the [[old city|Undercity]]. The deepest
tunnels are home to things more dangerous, and more
disturbing, than [[kobold]]s.
You conjure up a sphere of water with a 5-foot radius at a point you can see within 90 feet. The sphere can hover but no more than 10 feet off the ground. The sphere remains for the spell's duration of 1 minute, or until your concentration breaks.
Any creature in the sphere's space is either ejected from that space (especially if it is larger than the sphere) or is restrained by the sphere as it is engulfed by the water.
The sphere can restrain as many as four human-sized or smaller creatures. If the sphere restrains a creature that causes it to exceed this capacity, a random creature that was already restrained by the sphere gets ejected.
You can move the sphere as long as the spell is in effect. If it moves over a pit, a cliff, or other drop-off, it safely descends until it is hovering 10 feet above the ground. Any creature restrained by the sphere moves with it. You can ram the sphere into creatures and attempt to engulf them.
When the spell ends, the sphere falls to the ground and extinguishes all normal flames within 30 feet of it. Any creature restrained by the sphere is knocked prone in the space where it falls. The water then vanishes.
Despite no longer being at sea, Sigmund Bauerson runs
a tight ship at the Wavecrest Tavern. The Wavecrest is,
unusually for the [[area|Harbor]], a drinking hole of good repute
and some class, despite being a little rough around the
edges. The inn hosts a popular [[arm wrestling tournament|tournament of might]] each week. [[Aida]] is the tavern's most popular employee. [[Gimcrack the Sly]] is a regular.
The Wavecrest was built atop caves beneath the
current waterline, and someone listening at the floorboards can hear the water surging beneath. A short while ago, a cave-in cut off the inn’s cellar from these
caves, but it is only a matter of time before subsidence
opens them up again.
This wax seal is carved with arcane sigils and is often used by the [[Notaries Guild]] of House [[Sivis]]. When used to seal a letter, that letter cannot be opened by anyone but the
addressed recipient, as if you had cast the [[arcane lock]]
spell on it.
Once you have used the seal, it can't be used
again until the next dawn.
Probably the most central and unifying code of [[Tashana shifter culture|Culture of the Tashana shifters]], the Way of the Brothers is based on an
ancient myth. While the details of the myth vary from
nation to nation, and even from tribe to tribe, the essential story is always the same. Soon after the dawning of
creation, the first [[shifter]]s were tricked by [[demon]]s into
fighting one another in a devastating civil war. Three
great nations fought until the snows of the Tundra had
melted away from the heat of spilled shifter blood.
Gravely wounded and near death, a sole surviving
Warrior of the first nation walked the carnage of the
battlefield. He presently came to an ancient glacial slab
of rock, where a Shaman from the second nation lay
unconscious and dying. Exhausted and weary of death,
the Warrior put away his knife and instead cleaned and
dressed the wounds of his enemy.
To his surprise, the Shaman awoke the next morning
to find his wounds tended and a pack containing meat and
water lying nearby. The Shaman set off for the horizon and
came across another ancient rock. Upon the rock, an Elder
from the third nation lay dying. The Shaman wordlessly
tended to the Elder, and resumed his wandering.
The Elder in turn awoke to find meat and water laid
aside, and set off for the horizon. He too came upon a
glacial rock, upon which the Warrior of the first nation
had finally succumbed to cold and hunger. And so the
Elder tended to the Warrior.
Thus began the Great Healing of the Tribes. The
spell of the demons had been broken, and the shifters
of the [[Tashana Tundra]] lay down their spears and sheathed their
claws. When the tribes finally united in a summit, the
Warrior, the Shaman, and the Elder met upon a great
glacial stone and realized that each had circled back to
the same place in his delirium. The three embraced
one another as true brothers, and brought peace to the
Tashana people.
Founded by a renowned hunter
and explorer, Lord [[Boroman ir'Dayne]], the Wayfinder
Foundation is an exclusive adventurers' guild that
welcomes only experienced and renowned members.
Dayne suffers from a wasting curse that prevents him
from undertaking further adventures of his own, so he
has put his considerable fortune to use in sponsoring
great expeditions. The Wayfinder Foundation has an
unusually wide reach for an adventurers' guild, with
guildhalls found across [[Khorvaire]] as well as in the
city of [[Stormreach]], in [[Xen'drik]] (see the [[Nest]]). Its [[Headquarters|Wayfinder Foundation Headquarters]], and
the residence of its wealthy patron, is in [[Fairhaven]].
The Wayfinder Foundation is an exclusive organization. Membership is by invitation only, and offers are extended only to renowned adventurers and explorers.
The Wayfinder Conclave manages the affairs of the
Foundation. The conclave meets in the foundation [[Headquarters|Wayfinder Foundation Headquarters]], and all decisions are resolved by a majority vote. As long as he still
lives, Lord [[Boroman ir'Dayne]] has the final say on all expenditures of foundation funds, even overriding decisions of the conclave.
The [[Wayfinder Foundation]] has a relatively small office in [[Sharn]], but it is a
vitally important one for many of the adventurers who
operate in Sharn's depths and [[Xen'drik]]. The Foundation liaison in Sharn is [[Hendra ir'Kavay]], a wealthy socialite whose
interest in ancient history is largely financial.
The headquarters of the [[Wayfinder Foundation]] is a four-story building on Wrogar Street in [[Fairhaven]]. [[Lightning rail|lightning rail]] passengers with a layover often walk to the Foundation Museum, which occupies the first two floors of the headquarters. There, they can view dioramas recreating the exploits of the Foundation’s greatest explorers, hear illusory reproductions of the shrieks and bellows of a [[Xen'drik jungle|Jungles of Xen'drik]] at night, and examine the stuffed figures of [[owlbear]]s, [[displacer beast]]s, [[behir]]s, and more. A course of [[Xen'drik]] jungle branches and vines allows visitors to test their skills at brachiation. Above the museum, the trustees of the Wayfinder Conclave maintain individual offices on the third floor. The fourth floor contains a grand meeting hall and lecture chamber.
The Wayfinder Conclave manages the affairs of the [[Foundation|Wayfinder Foundation]]. The conclave meets at the Headquarters, and all decisions are resolved by a majority vote. As long as he still lives, Lord [[Boroman ir'Dayne]] has the final say on all expenditures of foundation funds, even overriding decisions of the conclave. Despite his skills, Dayne has been crippled by the wasting curse and rarely leaves the Headquarters.
On the south side of the [[Koronoo River]], not far from
the [[Waterworks]], the Wayward Lobster is a carousing
place for those who fancy themselves scoundrels. The
tavern’s clientele—pickpockets, smugglers, burglars, and
people who plan crime but never commit it—is afflicted
with delusions of grandeur. Under the influence of
gin, they devise elaborate schemes, only to forget them
the next morning. Still, a few actual crimes have been
hatched in the tavern.
[[Baudry Cartamon]] and "Lord" [[Gerald Goodblade]] are regulars of the Wayward Lobster.
<<list-links-article "[tag{!!title}sort[title]]">>
You conjure a mass of thick, sticky, flammable webbing at a point of your choice within 60 feet. The webs fill a 20-foot cube from that point for up to 1 hour. The webbing must be anchored between two solid masses or layered across a solid surface or the conjured web will collapse on itself.
The Webs of [[Zarash'ak]] stretch beneath and around the outer edge of the city, in
the cramped space between the surface of the [[Glum River]]
and the lowest platforms of the [[Ring]]. The structures
here are canopies supported by ropes anchored to the
platforms above and the stilts. All of these structures
are temporary by design, because when flooding is
bad, the lowest canopies can be swept away. Here the
poor and the mad mingle with those who enjoy the
freedom of a hidden life in the shadows. If you know
your way around, the Webs can be the fastest means
of moving about Zarash’ak, but running the ropes is
dangerous for anyone who has poor balance or enemies in the deeps.
Beneath [[Shae Mordai]] is the
deepest catacomb in [[Aerenal]]. It houses death records,
countless interred remains, and hundreds of [[spirit idol]]s—each one preserving the sleeping soul of an [[elf]]. A ritual caster can awaken one of
these souls, and ask it questions on subjects it knew about in life.
House [[Sivis]]'s legal services in [[Stormreach]]'s [[Citadel of the Twelve]] are overseen by barrister Wernor Lyrriman, an elderly but experienced attorney who specialized in international law in his youth and who is today the leading expert on the bureaucratic system of the [[Storm Lords]] (especially as it pertains to the workings of the [[dragonmarked house]]s).
When mounted at the helm of an [[elemental galleon]] or [[airship]], this wheel allows a creature that possesses the [[Mark of Storm]] to telepathically control the [[elemental]] bound inside the vessel. While a //wheel of wind and water// typically looks like a classic ship's wheel, the pilot doesn't actually steer by turning it; instead, the pilot enters into a trancelike state in which they commune with the [[elemental]] and the wind wards on the [[vessel|elemental vessel]].
If a //wheel of wind and water// is mounted on a mundane sailing ship, a creature with the Mark of Storm who is using the wheel can create an area of ideal conditions around the vessel, increasing its speed considerably. In this sense, the wheel can act as a sort of [[magical implement]] for focusing the weather-controlling powers of a [[Mark of Storm]].
The metal weights of this weapon are inscribed with spiraling sigils of the wind. If a creature's legs have been tangled with this weapon, you may say a command word. When commanded, the weights of the bolas begin to spin, creating a vortex of wind around the target. The vortex lifts the target 30 feet into the air, then releases it. The whirlwind bolas then return to the thrower.
The [[Shrouds]] in [[Stormreach]] are run by an unusually tall [[elf]]
woman who calls herself Whisper. Nearly seven feet
in height and incredibly long-limbed, Whisper is an
imposing figure draped in perfumed shrouds. She is
a priest of the [[Keeper]], and her talents at intimidation
are nearly as impressive as her deadly touch and
ability to animate the dead. If it serves the needs
of the story, Whisper could be considerably more
powerful—especially if she is the emissary of an ancient
[[undead]] court below [[Stormreach]].
Until recently, Whisper was inseparable from her brother, Rashade. A clash left him dead, but recently he was seen at his sister’s side again, this time fully shrouded in veils. They say his gaze alone strikes foes dead now. (See [[bodak]].)
Dark shapes and strange sounds fill the
woods known as Whisper, located in the northern reaches of
[[Aundair]]. Monsters still roam this cold and forlorn forest,
and few dare venture too deeply into its ancient recesses.
The Whisper Woods have a
reputation for sinister creatures and grave dangers,
but nothing compares to the sheer strangeness of the
Whisper Rock. This ancient monolith, raised long
before humanity came to [[Khorvaire]], exudes a corrupting influence, warping trees and animals and
causing shadows to bend and twist. Winds swirl and
issue a chilling susurrus, which gives the rock and
the forest their name. Some believe the whispers
contain prophetic fragments—prompting some fools,
seers, and apocalyptic doomsayers to make the hazardous journey through the woods and congregate
around the stone, straining to make sense of the
weird voices in the wind.
This cult represents an ancient tradition found across the [[Shadow Marches]]. Whisperers have a strange bond with [[gibbering mouther]]s, and a Whisperer family will keep a mouther somewhere in their home. When a family member reaches a certain age, they are fed to the mouther; the Whisperers believe that the soul of the departed lives forever in the mouther and can be heard in the gibbering. The name “Whisperer” comes from their tradition of prayer, a sort of ecstatic murmuring that mimics the chaotic gibbering of the mouther.
The Whispering Flame is a transactional [[cult|Cults of the Dragon Below]] hidden within the Church of the [[Silver Flame]]—a secret order of priests and templars who do [[Bel Shalor]]'s bidding in exchange for power and influence. The
greatest agents of the Whispering Flame rarely perform obvious
acts of [[corruption|Silver Flame Heresy and Corruption]] themselves; instead, they subtly encourage others to compromise their principles or succumb to their fears. Cultists work to trick truly virtuous members of the church, convincing good templars to persecute innocent people in pursuit of imaginary threats. This situation—good people
harming good people—delights Bel Shalor.
Important members of the Whispering Flame often
receive a [[ring of mind shielding]], and may use [[eyes of charming]]
to influence others. Such items are typically made by the [[Lords of Dust]], though they can be ancient relics or items infused with the power of the Shadow in the Flame.
The smallest and most animalistic of the dragons, white dragons dwell in frigid climes, favoring arctic areas or icy mountains. Their bestial nature and mastery of their environments make them keen hunters.
A white dragon has feral eyes, a sleek profile, and a spined crest. The scales of a wyrmling white dragon glisten pure white. As the dragon ages, its sheen disappears and some of its scales begin to darken, so that by the time it is old, it is mottled by patches of pale blue and light gray. This patterning helps the dragon blend into the realms of ice and stone in which it hunts, and to fade from view when it soars across a cloud-filled sky.
!! Magic and Breath Weapon
The white dragon can exhale a powerful icy blast. As innate spellcasters, adult white dragons can cast spells such as [[ice storm]] and [[fog cloud]], but are generally less magically gifted than other true dragons. Ancient white dragons can cast spells such as [[wall of ice]].
{{DragonAgeCategories}}
The closest thing the Order of the [[Emerald Claw]] has to a single leader in [[Stormreach]]
is a notorious figure known on the streets as the White Raven. The name comes from the pet bird that’s almost always seen perched on or near its
master, and which is sometimes sent to either presage its owner’s arrival or pass along a silent message.
In truth, the White Raven is just a person with a real
name (“Dedrick Beynar”), but to call him ordinary
would be overstating the case. Beynar is a shrewd and
experienced arcane investigator sworn to the service of
[[Lady Illmarrow]] herself. Beyond this, he is a master swordsman and
his notoriety in certain circles is due in no small part to
the infamy he’s garnered through the growing account
of his many successful duels. Once he has accepted and begun a duel, nothing short of a direct command from Illmarrow will make him stand down or offer mercy to his
opponent. Beynar looks older than he is, having gone
prematurely gray, and he prefers to accentuate both his
maturity and notoriety by dressing in hand-tailored
suits of white linen stitched with [[darkweave]].
Beynar might be the boss where the rank and
file of the [[Emerald Claw]] are concerned, but even the
White Raven does the bidding of another. He carries with him an amulet given to him by [[Lady Illmarrow]] herself, and it acts as both a focus for her [[scrying]] magic and
a means by which she can communicate with him
over great distances. He doesn’t know that Illmarrow has
provided Lady [[Miravella|Miravella Uruvai d'Thuranni]], the head of the local House
[[Thuranni]] [[enclave|Shadows]], with the means to make use of the
amulet as well. The [[elf]] keeps tabs on Beynar’s activities without his knowledge, though she does not abuse the privilege.
The White Sea extends north from [[Sarlona]]’s coast to
the edge of the [[Frostfell]]. It combines the worst qualities of
the [[Bitter Sea]] and the [[Sea of Rage]]—often frozen or choked
with icebergs, even as it is prone to freakish weather and
bizarre happenings. The sailors of [[Khorvaire]] avoid it at all
costs, preferring to chart a course for [[Varuz Bay]] on the rare
occasions they sail to [[Sarlona]].
The White Wanderers are a [[Seren]] tribe founded by a [[white dragon]]. They are a nomadic tribe charged to protect a series of shrines. They believe in the power of knowledge and magic, and have a high percentage of literacy and dragonspeakers. Explorers and outsiders looking for Serens to deal with would do well to focus on this tribe. White Wanderers have a "cold" demeanor, and never let their emotions show.
Whitecliff is a prospecting town in [[Q'barra]] in the foothills of the [[Endworld Mountains]]. It is located across the [[Adder River]] from the largest [[Tharashk]] [[dragonshard]] mine in [[Q'barra]], the ''Dragon's Maw''. This mine has an [[airship]] docking tower of its own.
Although the pit is beginning to run dry, the Maw serves as a hub for [[Tharashk]] caravans and is a thriving community in its own right. Far from [[Newthrone]], Whitecliff serves as a base of operations for Lord [[Khalar Velderan]]’s covert schemes, and when Khalar isn’t lobbying in Newthrone, he stays here. Khalar is considering establishing a full refinery here to keep the Maw running when the shards finally run dry.
Thirty miles inside the [[Mournland]],
100 miles south of the Saerun Road, is a mineshaft into
a low hill. The only sign on the entrance is a [[Cannith]] seal, marking the secret facility below as that house’s
property. Although Whitehearth was well known
during and before the war as an ancestral Cannith
forgehold and weapon research laboratory, few know
what wonders and horrors this place holds.
[[Merrix d'Cannith]] of [[Sharn]] has information
indicating that Whitehearth’s [[artificer]]s enjoyed a
breakthrough just before the [[Mourning]]. He has dispatched teams to locate Whitehearth and recover its contents. So far, none have returned.
Inside [[Cyre]], Whitehearth might be one of the
oldest and most well known of [[Cannith]] forgeholds,
but it is not unique. Several more Cannith facilities
still exist in and under the [[Mournland]]. Their purposes might be different from Whitehearth’s, but their treasures still await liberation.
The Whitehorn Wood (also known as Ranruunwood) is a forest in [[Breland]], just south of [[Silver Lake]].
The Whitepine Forest is a large forest in the mainland [[Lhazaar Principalities]]. It contains the [[feyspire]] [[Taer Lian Doresh]].
Escalating trade has brought bustling commerce and
growth in the unlikeliest of places—the wild and rugged
coastline of the [[Tashana Tundra]]. The port communities
of Whitetooth and [[Winterstead]] are two of the strangest settlements in all of [[Eberron]], a mix of [[shifter]] and [[maenad]], with pirates, smugglers, and other unsavory elements from [[Khorvaire]] added to the mix.
Whitetooth, at the mouth of the [[Tiiki River]], has
been a permanent [[shifter]] village for time out of mind.
The tribes have long held the spot communally as a
place to facilitate trade from the coast and inward along
the river. When [[Lhazaar|Lhazaar Principalities]] sea merchants discovered the
medicinal and magical properties of the various [[Tashana lichens|Tashana lichen paste]]—especially the potent [[icewild]]—intercontinental
trade found a new foothold on the continent of [[Sarlona]].
In recent years, a small but very lucrative demand for
authentic [[shifter art|Culture of the Tashana shifters]] has opened new avenues of commerce for the elite treasure hunter.
Merchants in both
Whitetooth and [[Winterstead]] are actively recruiting for
help in acquiring and transporting Tashanan lichen
harvests. Some expeditions are simply looking for protection as they move inland to barter with the shifter
tribes. Others might be looking for a small team to make
contact with remote tribes and discover new sources and
suppliers. High-end art dealers are also operating in
both settlements, paying handsomely for any authentic
shifter art that can be acquired—no questions asked.
[[Clovis Forlaine]] is a [[changeling]] pirate and fence in Whitetooth.
Whitewash in [[Stormreach]] is home to [[Aundair]]ian expatriates, who
have a reputation for aloofness and one-upmanship.
They certainly do take pride in their ward. Over the
centuries, a considerable amount of magic has been
woven into it. More [[everbright lantern]]s flicker here than
anywhere else in the city, and the district takes its
name from a centrally located magic fountain that
allows people to instantly clean clothes there. A team
of [[magewright]]s use a form of [[prestidigitation]] to keep the district
itself clean. The Aundairians are largely peaceful, but
if pressed, they will not hesitate to call on [[Jorian Thiel]]
and the [[Ninth Wands]].
[[Surrinek Riverboats]] is a river taxi business in Whitewash.
The Whitewater in [[Syrkarn]] sits at the corner of the provinces of [[Mae-Kree]], [[Sunyagir]], and [[Khunan]], where the [[Xofre|Xofre River]] and [[Kushtuar|Kushtuar River]] rivers meet. This crystal-clear lake is believed to
mark a [[manifest zone]] linked to [[Lamannia]]. The rocky land surrounding the area remains wet and cool year-round, even as the sands that give the lake its name burn
white beneath the equatorial sun.
The word "wight" meant "person" in days of yore, but the name now refers to evil [[undead]] who were once mortals driven by dark desire and great vanity. When death stills such a creature's heart and snuffs its living breath, its spirit cries out to the [[Bone King]] or some other vile entity of [[Mabar]] for a reprieve: undeath in return for eternal war on the living. If a [[Dark Power]] answers the call, the spirit is granted undeath so that it can pursue its own malevolent agenda.
Wights possess the memories and drives of their formerly living selves. They will heed the call of whatever dark entity transformed them into undead, swearing oaths to appease their new lord while retaining their autonomy. Never tiring, a wight can pursue its goals relentlessly and without distraction.
//''Life Eaters.''// Neither dead nor alive, a wight exists in a transitional state between one world and the next. The bright spark it possessed in life is gone, and in its place is a yearning to consume that spark in all living things. When a wight attacks, this life essence glows like white-hot embers to its dark eyes, and the wight's cold touch can drain the spark through flesh, clothing, and armor.
//''Shadow of the Grave.''// Wights flee from the world by day, away from the light of the sun, which they hate. They retreat to barrow mounds, crypts, and tombs where they dwell. Their lairs are silent, desolate places, surrounded by dead plants, noticeably blackened, and avoided by bird and beast.
[[Humanoids|humanoid]] slain by a wight can rise as [[zombie]]s under its control. Motivated by hunger for living souls and driven by the same desire for power that awakened them in undeath, some wights serve as shock troops for evil leaders, including [[wraith]]s. As soldiers, they are able to plan but seldom do so, relying on their hunger for destruction to overwhelm any creature that stands before them.
[[Planar|plane]] energy bathes [[Sarlona]] like no other place on [[Eberron]]. This energy results in roaming [[reality storm]]s in the [[Tashana Tundra]]. In other areas, the [[manifest zone]]s do not move, but they are far larger and stronger. A wild zone represents a true blending of the planes involved. The results are never uniform, but they are always dramatic and often deadly.
A number of rules apply to all wild zones. The [[plane]] linked to the wild zone is always considered to be coterminous within the region, and it is considered to be a [[manifest zone]]. Furthermore, the region is considered to be an extension of the intruding plane and adopts the traits of that plane, with the exception of morphic and
time-altering traits. Outsiders from the linked plane cannot be magically banished to their home plane while in a wild zone. Any [[spell]] that involves summoning a creature from the linked plane is extended.
Wild zones often include breaches between the worlds,
cracks through which creatures can pass without the use
of magic. These breaches take many forms and are rarely
obvious; a tranquil pond could be a portal to [[Lamannia]].
To recognize a wild zone or a breach, a character may need prior knowledge of nature and the [[plane]]s. Of course, a character can pass through a breach without being aware of its nature. Although many intelligent outsiders
have little interest in visiting the Sarlonan wilderness,
less intelligent creatures ([[fiend]]ish or [[celestial]] animals,
for example) are often found in these regions. Denizens
of these planes that come to Eberron through a breach
cannot leave the wild zone, either physically, by teleportation, or through any other method. The zone is an extension of the intruding plane, but natives of that plane
cannot enter Eberron itself.
The energy of a wild zone has a powerful transforming effect on plants and animals. This effect can result in the appearance of creatures using any sort of appropriate mutation, or it can be the source of entirely new monsters—beings born from the fusion of the worlds. It's possible that [[lycanthropy|lycanthrope]] began when a group of
humans settled in a wild zone linked to [[Lamannia]], and
the forces of [[primal|primal magic]] nature infected them. Effects can be
psychological as well as physical; a creature that spends an
extended period of time in a [[Shavarath]] wild zone could be
overcome by a savage thirst for battle, potentially falling
into a permanent state of frenzy.
No two wild zones are alike, either in appearance
or effect. Although two zones linked to [[Mabar]] share the
same foundation, one might cause the dead to rise, while
the other could be filled with hungry trees seeking the
blood of the living. In general, a wild zone appears as a
fusion of the [[plane]] and the natural surroundings. A zone
linked to [[Fernia]] is not a sheet of fire and lava, but it might
include pools of lava welling up from the ground, balls
of fire floating through the air, or trees that are eternally
burning yet never consumed (unless removed from the
zone). See also [[reality storm]] for more ideas.
When possible, the [[Edgewalkers]] create buffer
regions a mile wide marking the edge of wild zones—slashing and burning any vegetation to provide a clear view. Depending on the danger presented by the zone,
watchtowers or fortresses might be erected. In a few
cases, entire zones have been surrounded with high
walls. Edgewalkers have also been experimenting with
fields of [[psionic|psionics]] aversion; this work is still in development, and the power requirements would necessitate the presence of a [[hanbalani|hanbalani alta]] to
maintain the field.
A wilder is someone who spontaneously develops [[psionic power|psionics]], much as a [[sorcerer]] spontaneously develops [[arcane power|arcane magic]]. Though well-trained savants may scoff at the crudeness of the wilders' techniques, they are well aware of how powerful an unleashed mind brimming with psionic energy can be.
Wilders can manifest almost any of the powers of a [[psion]] or [[ardent]], but they are most potent when they harness "psychic surges", brief flashes of psionic energy that ripple through their minds and temporarily heighten their abilities. However, all too often an untrained wilder loses control of a power barely held in check, with disastrous consequences.
Wildhunt [[shifter]]s are sharp and insightful. Many are
constantly alert, ever wary for possible threats. Others
focus on their intuition, searching within. Wildhunt
shifters are excellent hunters, and they also tend to become the spiritual leaders of shifter communities.
''Date: '' [[18-19 Sypheros|Khorvaire calendar]]
Supposedly the [[Fury]], the god of Passion and Revenge,
reaches the height of her power on this night. Emotions
run high, and impulse control runs low. Shy and superstitious folk stay indoors, while others see it as a time to
cast aside inhibitions. The streets fill with revelry that
lasts well into the night.
While holding this fan, you can wave it to create a powerful gust of wind. Once used, the fan shouldn't be used again until the next dawn. Each time it is used again before then, it has an increasing chance of not working and tearing into useless, nonmagical tatters.
Wind stones come in pairs, with each smooth stone carved to match the other so the pairing is easily recognized. While you touch one stone, if you have the [[Mark of Scribing]], you can cast the [[sending]] spell from it. The target is the bearer of the other stone. If no creature bears the other stone, you know that fact as soon as you use the stone and don't cast the spell.
Once sending is cast through the stones, they can't be used again until the next dawn. If one of the stones in a pair is destroyed, the other one becomes nonmagical.
<<<
!! Sending
{{sending}}
<<<
After the destruction of the [[line|Aereni noble line]] of [[Vol]], not all of the [[Aereni]] refugees sought shelter in the shadow of the [[Fingerbones|Farlnen]]. Some fully embraced [[Lhazaar|Lhazaar Principalities]] culture, mingling with [[human]]s and creating a significant population of [[half-elves|half-elf]], particularly on the island of [[Orthoss]]. While some of these Khoravar carried the [[Mark of Storm]], they held no principality of their own until a decade ago when Prince [[Koulton Brightwind]] stole an early [[airship]] from House [[Lyrandar]], flew it to [[Orthoss]] and recruited a crew out of [[Blackrock]], which quickly grew into the Wind Whisperer principality of today.
Members of this small principality are as wild and unpredictable as the wind itself. They often help travelers in distress, but are known for raiding or otherwise interfering with [[Lyrandar]] vessels. Many of those who develop the [[Mark of Storm]] outside of House Lyrandar find their way to the Wind Whisperers.
The Wind Whisperers have seven ships, including Koulton's stolen [[airship]] and two [[elemental galleon]]s. The remaining four ships are small and fast, and not as powerful as [[Bloodsail|Bloodsails]] or [[Seadragon|Seadragons]] warships.
This item appears to be a small brass dome with a winding key on the side. You can turn the key and set the beacon on the ground; when you do so, the beacon emits a 100-foot tall pillar of light for 10 minutes, or until the beacon is moved.
The base of the beacon emits bright light in a 20-foot
radius, and dim light for an additional 20 feet. The pillar of
light can be seen from up to 1 mile away.
This gallery showcases the
work of over a dozen [[elf]] artisans. Much of the work in
the Winding Root is wooden sculpture, but the gallery also sells tapestries, jewelry, and even clothing.
The goods sold at the Winding Root are of the highest
quality, often representing years or even decades of
work, and the prices reflect their perfection. When
someone needs to find a gown or suit to wear to the
[[Brelish|Breland]] Court, the Winding Root is a great place to
visit—but the prices keep the gallery out of reach of
all but the wealthiest citizens of [[Sharn]].
If someone wants to sell her work in the Winding
Root, she must speak to the owner, Jhaia Thesaelia. Jhaia is only interested
in the work of elven artisans, and items must have been produced with an extremely high degree of craftsmanship. Her initial attitude is indifferent, and at this level she charges a 20% commission to sell an item.
If she is friendly toward the artist, she drops her
commission to 15%; if helpful, the cost is reduced
to 10%.
Windlost is an island in the [[Lhazaar Principalities]].
Most of House [[Lyrandar]]’s
members work with the Windwrights Guild, which
provides crews, dockside support, stevedoring, and
repairs for seafaring and airborne ships. Any job on
an [[elemental galleon]] or an elemental [[airship]] is prized
over one at the dry docks or in the warehouses.
The Windwrights Guild also allows independent
shipping concerns to pay for the right to fly the House
[[Lyrandar]] flag and to get shipping contracts directly
from the Windwrights. Most independent ship captains consider the Lyrandar flag to be a deterrent to pirates. Some think that it wards off bad weather, too.
While you wear these boots, you can fly as fast as you can run. You can use the boots to fly for up to 2 hours, all at once or in several shorter flights, each one using a minimum of 1 minute from the duration. If you are flying when the duration expires, you descend at a rate of 5 feet per second until you land.
The boots regain 1 hour of flying capability for every 12 hours they aren't in use.
The Winter Bay lies off the coast of the [[Tashana Tundra]] in [[Sarlona]]. It is part of the [[Sea of Rage]] and is fed by the [[Tiiki River]] and [[Qonama River]].
Escalating trade has brought bustling commerce and
growth in the unlikeliest of places—the wild and rugged
coastline of the [[Tashana Tundra]]. The port communities
of [[Whitetooth]] and Winterstead are two of the strangest settlements in all of [[Eberron]], a mix of [[shifter]] and [[maenad]], with pirates, smugglers, and other unsavory
elements from [[Khorvaire]] added to the mix.
The predominantly [[maenad]] village of Winterstead on the shore of the [[Qonama River]] has seen growth similar to [[Whitetooth]], but to a lesser extent. When [[Lhazaar|Lhazaar Principalities]] sea merchants discovered the
medicinal and magical properties of the various [[Tashana lichens|Tashana lichen paste]]—especially the potent [[icewild]]—intercontinental
trade found a new foothold on the continent of [[Sarlona]].
Merchants in both
[[Whitetooth]] and Winterstead are actively recruiting for
help in acquiring and transporting Tashanan lichen
harvests. Some expeditions are simply looking for protection as they move inland to barter with the shifter
tribes. Others might be looking for a small team to make
contact with remote tribes and discover new sources and
suppliers. High-end art dealers are also operating in
both settlements, paying handsomely for any authentic
shifter art that can be acquired—no questions asked.
Wish is the mightiest [[spell]] a mortal creature can cast. By simply speaking aloud, you can alter the very foundations of reality in accord with your desires.
The basic use of this spell is to duplicate any other spell that is legendary-tier or lower. Alternatively, you can achieve an endless variety of other effects, including:
* Create one object of up to 5000c in value, no more than 300 feet in any dimension.
* Fully heal up to twenty creatures that you can see.
* Grant up to ten creatures that you can see resistance to a specific magical effect.
* Undo a single event within the last minute. Reality reshapes itself to accommodate the new result.
...Or something beyond the scope of the above examples. State your wish to the DM as precisely as possible. The DM has great latitude in ruling what occurs in such an instance; the greater the wish, the greater the likelihood that something goes wrong. This spell might simply fail, the effect you desire might only be partly achieved, or you might suffer some unforeseen consequence as a result of how you worded the wish. For example, wishing that a villain were dead might propel you forward in time to a period when that villain is no longer alive, effectively removing you from the game. Similarly, wishing for a legendary [[magic item]] or artifact might instantly transport you to the presence of the item's current owner.
The stress of casting this spell to produce any effect other than duplicating another spell weakens you. After enduring that stress, you suffer harm when casting spells for one day, and suffer fatigue, weakness and body aches that persist for <<dr 2d4>> days. Finally, there is a small chance that you are unable to cast wish ever again if you suffer this stress.
Wizards are supreme magic-users, defined and united
as a class by the spells they cast. Drawing on the subtle
weave of [[arcane magic]] that permeates the cosmos, wizards cast
spells of explosive fire, arcing lightning, subtle deception,
and brute-force mind control. Their magic conjures
monsters from other [[plane]]s of existence, glimpses the
future, or turns slain foes into [[zombie]]s. Their mightiest
spells change one substance into another, call meteors
down from the sky, or open portals to other worlds.
Wizards stand apart from the legions of others who dabble in the arcane arts on the magically charged world of [[Eberron]]: They alone are willing to devote their lives to the daunting work of arcane study. Wizards are distinguished from [[sorcerer]]s and [[warlock]]s by their incredible versatility—an accomplished wizard can prepare any of a hundred different spells as the situation requires.
!! Institutions of Magic on [[Khorvaire]]
* the [[Twelve]]
* the [[Arcane Congress]] ([[Arcanix]])
* the [[Esoteric Order of Aureon]]
* the [[Guild of Starlight and Shadows]]
* the [[Closed Circle]]
* [[University of Wynarn]]
* [[Morgrave University]]
The farming community of Wolf’s Paw, located in the northeastern farmland of the [[Eldeen Reaches]], is one of the relatively few permanent
[[shifter]] communities in the Reaches. Most shifters either
live among other [[humanoid]]s in their communities or
wander in small nomadic tribes in the [[Towering Wood]].
The leader of this shifter farming community is Slara, a ranger who founded the thorp a decade ago. Spiritual guidance comes from the [[druid]] Lorgan, whose ties
to the [[Wardens of the Wood]] have proved beneficial to the
community on more than one occasion.
In addition to farming, the townsfolk make periodic
trips into the [[Wolfwood]] near [[Havenglen]] to hunt for meat. These
hunts have an almost religious significance for the community, and many traditions and ceremonies dating back
to their time as a nomadic pack find outlets in the forest.
The community also possesses a secret that no one outside
its ranks is aware of. Slara’s grandsire, the ancient Thorntuft, is actually a [[werewolf|lycanthrope]] in hiding. Thorntuft rarely ventures far
from Slara’s homestead; he is content to sit in the sun and
enjoy his role as historian and advisor to the community.
Only occasionally does he desire to shift and do a little hunting of his own—always being
careful not to spread the curse during his hunts.
The Wolfwood is a small forest in the [[Eldeen Reaches]], near the towns of [[Wolf's Paw]] and [[Havenglen]].
This small logging village in [[Breland]] is located in the [[Dragonwood]] forest near the mouth of the [[Dagger River]]. Trees felled here are sent down the river to [[Galethspyre]] where they are milled or carved.
A worg is a type of magical [[monstrosity]] that resembles a large fiendish wolf with glowing eyes. An adult worg stands about three feet high, five feet long and weighs about 300 pounds. These creatures were likely [[magebred|magebreeding]] by [[Kech Ruuska]] during the Empire of [[Dhakaan]] from [[dire wolf]] and [[death dog]] stock, to serve as guard beasts and mounts. Cunning and malevolent, worgs typically can speak Goblin as well as a few words in Common
Today, worgs are primarily found among the [[Dark Pack]] in the [[Watching Wood]] in [[Droaam]] as well as parts of the [[Towering Wood]]. They can also be found among the [[Heirs of Dhakaan]], particularly the [[Taarka'khesh|Khesh'dar]].
A mighty conjurer created this underground workshop in order
to carry out his experiments without placing the city
at risk. He was eventually killed by a [[rakshasa]] that
escaped its bonds, and ever since then his workshop
has been a fortress of the [[Lords of Dust]]. Currently, the rakshasas [[Zathara]] and [[Nethatar]] reside in this dungeon keep.
The Wormwood is a forest in the [[Nulakesh]] province of [[Riedra]]. It links the [[Kethuun Forests]] to the [[Forest of Lurking Shadows]].
This shop is located in a small side tunnel behind [[Shamukaar]]. It has no
windows, and the door is locked with a simple [[abjuration]] spell.
The only indication of its purpose is a small sign
above the door, showing a stylized dragon with an
injured leg; a few drops of blood fall from its raised
foreleg. This is the abode of [[Cask]], a [[changeling]] [[artificer]] allied with
[[Daask]]. Cask prepares [[dragon's blood]] in his alchemy lab using smuggled ingredients and sells it from his shop.
A wraith is malice incarnate, concentrated into an incorporeal form that seeks to quench all life. The creature is suffused with negative energy, and its mere passage through the world leaves nearby plants blackened and withered. Animals flee from its presence. Even small fires can be extinguished by the sucking oblivion of the wraith's horrifying existence.
//''Vile Oblivion.''// When a mortal [[humanoid]] lives a debased life or enters into a pact with a [[Dark Power]], its soul can become so suffused with negative energy from [[Mabar]] that it collapses in on itself and becomes a malevolent wraith. Almost nothing of the wraith's former existence is preserved; in this new form, it exists only to annihilate other life.
//''Bereft of Body.''// A wraith can move through solid creatures and objects as easily as a mortal creature moves through fog.
A wraith might retain a few memories of its mortal life as shadowy echoes. However, even the strongest events and emotions become little more than faint impressions, fleeting as half-remembered dreams. A wraith might pause to stare at something that fascinated it in life, or it might curb its wrath in acknowledgment of a past friendship. Such moments come rarely, however, because most wraiths despise what they were as a reminder of what they have become.
Wrath, also known as wrathweed, is a narcotic that evokes strong aggression when consumed. When taken in large enough quantities, it can send a creature into a berserk fury, not unlike a barbarian's rage. Wrath is also a powerful painkiller and can be habit-forming.
During the reign of [[Galifar]]’s last king, Wroann
ir’Wynarn governed the nation of [[Breland]]. King [[Jarot|Jarot ir'Wynarn]]’s youngest
daughter, Wroann was the exact opposite of her twin
brother, [[Wrogar|Wrogar ir'Wynarn]] of [[Aundair]]. She was thin and agile, serious,
and a lover of the finer things in life. She also cherished
freedom above all things, and promised to make Breland
a place where people would be judged by word and deed
instead of social class.
When Jarot died, Wroann broke with her twin regarding the line of succession. Instead of supporting [[Mishann|Mishann ir'Wynarn]] of [[Cyre]]’s claim to the throne, Wroann gathered her vassals and declared her own intention to rule the kingdom.
Ironically, the freedom-loving nation of [[Breland]] was one
of the key instigators of the [[Last War]], for her leader wanted
to spread her ideas of liberty and increased democracy to
all by force and sword.
''District Type:'' Caravan district<br/>
''Buildings:'' Temple (2), average lodging (20), poor
lodging (60), average food (38), poor food (120),
average trades (40), poor trades (60), average services (40), poor services (60)<br/>
''First Impression:'' Hordes of people stream through
the enormous gate of [[Sharn]]. A continuous flood of
traffic and noise fills the streets, and [[skycoach]]es fill
the air.<br/>
''Social Class:'' Lower class<br/>
''Neighbors:'' [[Terminus]] (west); [[Cogsgate]] (south); [[North Market]] (bridge, northwest); [[Blackbones]] (below); [[Cornerstone]] (above)
When people come to [[Sharn]] by the Old Road, they
come to Wroann's Gate. Originally, the district was
known as the Gate of Galifar, but when the [[Last War]]
began the people chose to show their support for
their first queen. It is an awesome site—a massive
arch opening into an enormous tower, topped by a
titanic statue of Queen [[Wroann|Wroann ir'Wynarn]] holding a scepter in
one hand and a sword above her head.
Compared to [[Terminus]], Wroann's Gate sees far
more local traffic—farmers from the surrounding
areas bringing their goods to market, lords returning from [[Wroat]], merchant caravans, and messengers and travelers of all description. Otherwise, the two
districts are very similar, and House [[Sivis]], House
[[Deneith]], and House [[Vadalis]] all offer the same services here that they do in [[Terminus]].
Built on both sides of the [[Howling River]] at a point
where the river widens, the ancestral seat of the rulers
of [[Breland]] seduces visitors with its tree-lined avenues,
elegant drawbridges, cleanliness, and laid-back atmosphere. Perched on a rocky island in the middle of the
river, surrounded by military docks and barracks, is
[[Brokenblade Castle]], the [[king|Boranel ir'Wynarn]]'s stern fortress.
In contrast to its welcoming countenance, Wroat casts
dark shadows, and much goes on quietly behind closed
doors. The absence of beggars and riffraff in the streets
might also raise suspicion that Wroat is putting on appearances. The [[King's Dark Lanterns]] are ever vigilant
here, and newcomers who aim to misbehave tend to disappear quickly and without so much as a whisper.
"Wroat" is also the name of the pre-[[Galifar]] nation that spanned territory now part of [[Breland]].
!! The Shape of Wroat
The second largest city in [[Breland]] (population 404,350), Wroat serves as the Brelish capital and a center of trade and commerce. Not as densely populated
or as overwhelming as [[Sharn]], Wroat nevertheless holds
its own as one of the great cities of [[Khorvaire]]. A steep wall encircles the city,
wrapping around and crossing over the slow-moving
[[Howling River]] as they wend westward to join the [[Dagger River]].
[[Human|human]]s and [[gnome]]s live here in the greatest
numbers, along with significant populations of [[elves|elf]] and [[Khoravar|half-elf]]. All [[dragonmarked house]]s have emporiums in the city, and House [[Medani]] runs its entire industry from the [[Tower of Inquisition]]. The house’s [[leader|Trelib d'Medani]] has a long and well-known friendship with the [[king|Boranel ir'Wynarn]] and lends
his house’s service to protect the crown from spies
and assassins.
Two large temples—one dedicated to
the [[Sovereign Host]], the other to the [[Silver Flame]]—dominate the Street of Worship. Other impressive structures include [[Brokenblade Castle]], [[Parliament Hall]], the
[[Citadel|King's Citadel]], the Wroat campus of [[Morgrave University]], and
the [[Galifar Museum]].
As the nation’s capital, Wroat is a hotbed of political activity. The aristocracy and the elected members of
[[parliament|Breland Parliament]] spend most of their time here, debating the issues
of the day and keeping the wheels of government turning. Diplomats from all over the world maintain lodgings
and embassies in the city’s Foreign District. The crown
operates out of [[Brokenblade Castle]], where King [[Boranel|Boranel ir'Wynarn]]
and his family live and work for a sizable portion of the
year. The heads of all the royal agencies also operate out
of Wroat, where they can be close to both the king and the
parliamentary leaders.
Boranel’s court travels with the king, but it displays
all of its grandeur and majesty here in the capital city.
Keeping most of the traditions of ancient [[Galifar]] alive, the
court conducts business, plans festivities, engages entertainment, and otherwise handles the duties of serving the
crown and king. The Brelish court is known far and wide
for the lavish celebrations it holds, as well as for the fair
and just treatment it dispenses to its subjects.
During the reign of [[Galifar]]’s last king, Wrogar ir'Wynarn governed
the nation of [[Aundair]]. King [[Jarot|Jarot ir'Wynarn]]’s fourth child, Wrogar was a huge bear of a man who enjoyed the rugged lifestyle of Aundair’s countryside as much as he loved poring through the libraries and
other depositories for books of history and religion. When
Jarot died, Wrogar initially supported his sister [[Mishann|Mishann ir'Wynarn]]’s
claim to the throne (Mishann ruled [[Cyre]] at the time), but
that wasn’t enough to keep the kingdom together. Soon, the
[[Last War]] touched even distant Aundair.
''Founder:'' [[Jolan Wylkes]].<br/>
''Current Leader:'' [[Jonas Wylkes]].<br/>
''Primary Sphere of Influence:'' Shipping.<br/>
''Family Business:'' The docks and tariffs in the harbor.<br/>
''District:'' [[Harbor]].<br/>
''Allies:'' House [[Lyrandar]], the [[Golden Lions]], the [[Aurum]].<br/>
''Enemy:'' [[Yorrick Amanatu]].
The inclusion of the Wylkes family among the [[Storm Lords]] was a concession to [[Galifar]]. Although many in the city despised the privateer [[Jolan Wylkes]], they respected his prowess at sea and the talents of the Wylkes shipwrights. It was clear that Jolan’s presence was a necessary evil. He was made the fifth Storm Lord, but he was not a lord of the [[city|Stormreach]]. In a compromise
between the demands of Galifar and the distaste
that the others felt for Wylkes, he was declared the
[[Harbor]] Lord—the gatekeeper of the city but always
on the outside.
Despite this disdain, the Harbor Lord wielded
considerable power. [[Stormreach]] was a city based on
sea trade, and he held the keys, controlling the city’s
docks. By the terms of the compact, the Wylkes family
has the right to levy docking fees and other tariffs, and
the family prospered. This power was vested in a series
of capable lords, clever men who knew how to squeeze
every coin out of their holdings. Over the years, the
Harbor Lords fought off the machinations of the jealous Coin Lords and won vital concessions from [[dragonmarked house]]s and foreign nations alike.
And then disaster struck.
The death of Graden Wylkes, the previous
Harbor Lord, remains a mystery. The Wylkes family
takes great precautions to protect against poisoning
and other forms of assassination, and it’s possible
that Graden simply died of a heart attack. But most
assume that someone managed to have him killed,
and these suspicions are fueled by the incompetence
of his successor, Lord [[Jonas Wylkes]], the youngest and least effective ever to hold the position. In the meantime, the edifice carefully built
by his predecessors is beginning to crumble. House
[[Lyrandar]] is already working on renegotiating its
arrangements with the city, and others are following
suit.
[[Sorcery|sorcerer]] is strong in the Wylkes bloodline, and family tradition holds that the lordship passes to the oldest male sorcerer.
The royal family of the now fractured kingdom of [[Galifar]], the Wynarns are the descendants of the [[Galifar I|Galifar ir'Wynarn]].
<<list-links-article "[tag{!!title}category[person]sort[title]]">>
The Wynarn Institute, located in [[Metrol]], [[Cyre]], was both one of the foremost academies of magic in [[Khorvaire]] and one of its most amazing museums,
exploring the artistic potential of the [[arcane|arcane magic]]. Treasures of the
pre-[[Galifar]] kingdoms were displayed here along with modern
works of art. In addition to purely artistic exhibits, the Hall of Kings allowed visitors to converse with illusory replicas of the past rulers of Galifar. Though some cultures preserve their rulers so they can advise successors—such as the [[Aereni]] [[elves|elf]] and the [[medusa]]s of [[Cazhaak Draal]]—the [[illusion]]s of the Hall of Kings were merely a tourist attraction.
The Wynarn River, named after the [[royal family|Wynarn family]] of [[Khorvaire]], flows from [[Lake Galifar]] to the [[Eldeen Bay]]. It forms the natural border between the nations of [[Aundair]] and the [[Eldeen Reaches]].
Wyr is a small town in [[Aundair]], located on the [[Wynarn River]] and overlooking the [[Eldeen Reaches]] to the west.
Wyredd is a respected importer of fine wines and exotic spirits. Wyredd's has the finest selection in [[Sharn]], but his prices are high.
Some of the best recent [[Aundair]] vintages Wyredd's has available include ''fireburst wine'' from the vineyards of [[Arcanix]], dark ''Orla-un wine'' known for its fruity
sweetness, and ''Windshire rainbow wine'', a type of
mursi (red wine) that changes color and flavor as one
consumes a glass.
''Sovereigns:'' [[Dol Dorn]], the [[Mockery]]
What combatant can match the deadly power of the [[dragon]]? Wyrms of war are living engines of destruction, capable of scattering armies with ease. The wyrm of war devotes their existence to honing their martial prowess, becoming the ultimate expression of battle.
Wyrms of war follow two paths. The pure warrior focuses solely on his martial strength and skill. The traitor’s path encourages the use of deception and trickery in battle, wielding cunning as a weapon.
The Wyrmsfang Jungle is a forest at the northernmost tip of [[Argonnessen]]. Far above the jungle's highest summit floats the Cloud Citadel of [[Zenobaal]].
The Wyrmsperch Mountains on the west coast of [[Argonnessen]] look out across the [[Dragonreach]].
A thriving prospecting town and the largest settlement in [[Hope]], Wyrmwatch was
established by [[Cyran|Cyre]] refugees only three years ago. Although far smaller
than [[New Cyre]] in [[Breland]], its people are proud of what
they have built.
Walled in stone on the rocky hills above a fertile plain, the settlement has endured
attack from [[Valenar]] [[elves|elf]], [[kobold]]s, and hostile [[dragonborn]], even as it continues to grow on the strength of local mining and agriculture. Wyrmwatch is populated by settlers who prefer the frontier life to the ideals of [[New Galifar]], as well as by folk displaced by the destruction of smaller settlements.
Wyrmwatch is a theocracy—a bastion of radical [[Silver Flame]] practitioners within [[Q'barra]]. The town’s leader is Elder Wedon Nevillom, a zealot and
veteran of the [[Last War]]. Nevillom's courage and passionate sermons help sustain the people of Wyrmwatch in difficult times. He and his followers hold to a somewhat puritanical and xenophobic interpretation of the Church's values. As such, no [[lizardfolk]] are allowed in Wyrmwatch, and [[dragonborn]] are treated with suspicion.
Travelers in the wild sometimes look to the skies to see the dark-winged shape of a wyvern carrying its prey. These cousins to the great [[dragon]]s hunt the same tangled forests and caverns as their kin. Their appearance sends ripples of alarm through the borderlands of civilization.
A wyvern has two scaly legs, leathery wings, and a sinewy tail topped with its most potent weapon: a poison stinger. The poison in a wyvern's stinger can kill a creature in seconds. Extremely potent, [[wyvern poison]] burns through its victim's bloodstream, disintegrating veins and arteries on its way to the heart. As deadly as wyverns can be, however, hunters and adventurers often track them to claim the venom, which is used in alchemical compounds and to coat weapons.
//''Aerial Hunters.''// A wyvern doesn't fight on the ground unless it can't reach its prey by any other means, or if it has been fooled into a position from which aerial combat isn't an option. If forced into a confrontation on the ground, a wyvern crouches low, keeping its stinger poised above its head as it hisses and growls.
//''Aggressive and Reckless.''// A wyvern intent on its prey backs down only if it sustains serious injury, or if its prey eludes it long enough for another easier potential meal to wander along. If it corners a fleeing creature in an enclosure too small to enter, a wyvern guards where the quarry hides, lashing with its stinger whenever opportunity allows.
Although they possess more cunning than ordinary beasts, wyverns lack the intelligence of their [[draconic|dragon]] cousins. As such, creatures that maintain their composure as a wyvern hunts them from the air can often elude or trick it. Wyverns follow a direct path to their prey, with no thought given to possible ambushes.
//''Tamed Wyverns.''// A wyvern can be tamed for use as a mount, but doing so presents a difficult and deadly challenge. Raising one as a hatchling offers the best results. However, a wyvern's violent temperament has cost the life of many a would-be master.
This poison must be harvested from a dead or incapacitated [[wyvern]] and distilled into a high-potency poison. A creature injured by a weapon coated with this poison and can't resist its effects suffers extreme poison damage.
A port town
at the mouth of the [[Torlaac River]], Wyvernskull sits on
the edge of the [[Khraal]] rainforest. This haven in the
midst of the wilderness provides an important entryway
into the kingdom for the few traders that approach [[Darguun]] from the southern seas. If trade ever increases,
this town would blossom. Until then, its inhabitants
eke out an existence as they wait for the infrequent but
necessary trader visits.
If you're a [[Ghaal'dar]] sailor or guild artisan, Wyvernskull could be your home.
The [[goblinoid]]s who live here are a sociable, rowdy lot
who are also, by and large, friendly toward strangers.
The modern city of Xandrar, built on the eastern bank
of the [[Silver River]] where the waters of [[Silver Lake]] pour
into [[Lake Galifar]], takes its name from the much older
[[Dhakaan]]i city of Xandrar, whose ruins occupy the
western riverbank and several miles of the lakeshore.
The thriving city is Breland’s gateway for trade with
the [[Eldeen Reaches]], and small barges ply the lake,
providing ties to [[Aundair]] as well. Since Eldeen and
Aundair were openly at war for most of the last century, Xandrar became a key link for what little trade the two nations could not avoid.
Mayor Garrit Tomraan governs the city, but the Countess [[Yassiv ir'Oeskai]] provides the city watch and administers the surrounding lands. She and Garrit hold wildly different opinions on the “[[Swords of Liberty]] problem” that has infested the region in recent months, but generally manage to work together to keep the city from being burned to the ground.
The Liberty Palace, the headquarters of the [[Swords of Liberty]] leader Red Owl spoken of in whispers throughout the region, is said to be located in Xandrar. This is nearly true; the rebel hideout is concealed within Old Xandrar, hidden among the ruins and well sheltered from magical [[scrying]].
Less than a day away from the city of [[Stormreach]] as the dragon flies, a single sandstone spire on a dusty windblown plateau reaches high into an ever-raging tempest. This is the den of Xarkon, also called the Stormheart, a mighty [[blue dragon]] who glares toward the city of Stormreach with fierce hate festering in his soul.
Xarkon’s father Xakolondar was a member of a draconic sect that demanded the destruction of humanity as a solution to the uncertain threat of the
[[dragonmark]]s. When the other [[dragon]]s disagreed,
Xakolondar abandoned [[Argonnessen]] and made a
new home in [[Xen'drik]]. Shortly after [[human]] pirates
made their beachhead at the [[giant]] ruins, Xakolondar took it upon himself to scour them from the face of his home. Captain [[Delera Omaren]], pirate
queen and soon to be [[Storm Lord|Storm Lords]] of [[Stormreach]], felled
the [[blue dragon]]; Lady [[Paulo Omaren]] has long
sought to learn how her ancestor accomplished such
an epic task.
Xarkon was younger then and untested, but he
has grown older and more powerful with each passing
century. Now the dragon is in his prime, and his rage
smolders toward the teeming city built by his father’s
murderer. Xarkon has yet to mount a full attack on
[[Stormreach]], but more than a few raids by [[giant]]s and
[[wyvern]]s are attributed to his influence. The dragon is
a grave threat, but his force of [[stone giant]]s, wyverns,
and [[manticore]]s makes Stormheart an even more dire
menace to the city.
The Xaryai River in [[Adar]] flows into the [[Jathara Bay]]. Upstream is the hidden settlement of [[Xephanan]].
In {{!!title}}, you could...
* Seek to destroy an ancient mystical weapon before it falls into the hands of villains.
* Battle savage [[giant]]s in the ruins of their ancient cities.
* Match wits with cunning [[drow]] in the depths of a primordial [[jungle|Jungles of Xen'drik]].
Any follower of the [[Sovereign Host]] knows this story
about Xen'drik. In the dawn of time, the Sovereigns
bound the fiendish [[overlord]]s and freed the world from
chaos. The mighty [[giant]]s had fought alongside the Sovereigns, and in gratitude [[Aureon]] granted them dominion over the continent of Xen'drik. Aureon taught
giants the secrets of wizardry, and they grew powerful.
The giants built towers that touched the sky and seemingly endless cities.
The mightiest among the giants was the titan [[Cul'sir]].
His power was so great that he pulled the [[thirteenth moon|Crya]] from the sky and crushed it in a fit of anger. The giants ruled many lesser races, and eventually the [[elves|elf]] rose up against them. Cul'sir unleashed plagues upon
the rebellious elves. He made assassins of elven shadows and turned them back against their owners. Still the rebels persisted. In his anger, Cul'sir prepared to
pull down the rest of the moons to hurl them at his enemies, even though he'd destroy the world in doing it. But
the giants had gone too far, and [[Aureon]] set the [[dragon]]s
of [[Argonnessen]] upon them. The dragons destroyed the
vast cities and leveled the towers. [[Cul'sir]] was slain and
his people scattered.
The [[Sovereigns|Sovereign Host]] and [[Six|Dark Six]] each laid a curse upon the
land. [[Aureon]] decreed that the creatures of Xen'drik
would have no knowledge of law, and [[Boldrei]] proclaimed that no city would stand. The [[Traveler]] distorted
the land so that no path followed twice. The [[Devourer]]
unleashed fire and storm. And so Xen'drik remains a
land of mystery, a realm that cannot be mapped, a place
that holds secrets that could shatter the world.
This story bears at least some truth. The [[elves|elf]] were
once slaves of the ancient [[giant]]s, and the [[dragon]]s did
eradicate the civilizations of Xen'drik. Great magic has
warped the land. The [[environments of Xen'drik|shifting zone]] are extreme and unpredictable, and travelers might find a glacial expanse in the midst of a vast desert. Tens of thousands of years have passed, yet no civilization has risen
to the heights of the fallen giants; some believe that
[[Aureon]]'s and [[Boldrei]]'s curses ensure that any city that
grows too large collapses into madness. The [[Traveler's Curse]] twists space, and explorers might follow the same
path twice only to end up in entirely different locations.
Xen'drik is a continent that defies control. Expeditions
have unearthed artifacts of immense power, as well as
fields of [[Siberys]] [[dragonshard]]s, but once
you leave a site, you might never find it again.
Giants still roam Xen'drik, but these creatures have
never regained the glory of their [[ancestors|Age of Giants]]. Tribes of
[[drow]]—said to be the shadow-assassins created by the
Emperor [[Cul'sir]]—linger in the darkness. These represent just a few of the threats in this vast land.
!! Notable Locations
Many ports dot the coast of Xen'drik. In addition to the
treasures of the giants, Xen'drik is a source of Siberys
[[dragonshard]]s and other exotic resources. Scholars and
merchants come to Xen'drik on business, smugglers seek to make extra gold, and pirates prey on everyone.
Ports come and go, falling prey to monsters or natural
disasters. But two harbors have stood the test of time.
* [[Stormreach]]
* [[Dar Qat]]
!!! Smaller Settlements
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[380]]">>
!!! Generating Random Ruins
Part of the fun of Xen'drik is the chance to discover ancient
ruins. Between exploration, research, bardic knowledge,
and [[divination]] spells, PCs might learn about dozens of
sites during their stay on the mysterious continent. All
these ruins need impressive names; click the button below for
quick use or inspiration.
<$button>
<$action-chooserandom $dataTiddler="ThirtyAncientRuins" $field="var"/>
Generate Ancient Ruin Name
</$button>
<<<
''Ruin Name: ''{{!!var}}
<<<
!! {{!!title}}'s Influence in Khorvaire
In [[Khorvaire]], you might...
* Befriend a [[drow]] making their way in the new world.
* Stop the [[Emerald Claw]] from using a [[giant]] artifact to destroy a city.
* Aid a scholar in deciphering a book of prophecy found in the heart of Xen'drik and brought to [[Stormreach]].
The tremendous diversity of the people of Xen'drik
means that no single trait defines objects and artifacts
from this land. The primitive [[drow]] make armor comparable to studded leather using the chitin of giant scorpions. Rumors abound of more advanced drow civilizations in the layers of [[Khyber]] that lie beneath Xen'drik.
The [[elves|elf]] lived and fought in Xen'drik before the exodus
that took them to [[Aerenal]], and elven artifacts remain
scattered across the region. And the grandest treasures
include the work of the [[giant]]s—which can often be difficult to use because of their size. The spellbook of a giant
wizard might hold priceless secrets, but the bulky tome
can be quite awkward for smaller folk.
!!! Trinkets from {{!!title}}
| !<<dr d8>> |!Trinket |
| 1 |A punched ticket for a voyage from [[Sharn]] to [[Stormreach]] |
| 2 |A scorpion's barb engraved with a single Elvish letter |
| 3 |A copper coin so big you could use it as a dinner plate |
| 4 |An image of an [[elf]] warrior engraved on a [[giant]]'s tooth |
| 5 |A single page from a giant wizard's spellbook, bearing an incomplete [[spell]] |
| 6 |A scrap of parchment, part of a map of [[Stormreach]] |
| 7 |A small book titled //Feersome Beests of Zendrik// |
| 8 |A scrimshaw carving of a [[sahuagin]] |
Xephs are a strange breed native to [[Adar]] and
possibly a product of the peculiar planar forces that exist
in the land of refuge. Agile and psychically able, xephs
are renowned for their fine crafts. Their hair is usually
worn either short or shaved but for a single long braid. Adaran xephs seem
extremely lighthearted compared to the typical [[Adaran|Adarans]],
but the xeph homeland has never known war or significant internal strife. All xephs consider themselves soldiers in the defense of Adar, however, and they're worthy
partners in this role.
Xephs are human-like with a few notable differences: namely, a dark yellow freckled complexion, pointed ears, and among [[psionically-gifted|psionics]] xeph, eyes that glow bright green. Outsiders who encounter both xeph and [[gith]] may notice some similarities in the two species. Could it be possible that xeph are a hybrid of gith and [[human]]?
!!! Xeph Lands
Xephs originated and still live in rift
valleys in the southwestern portion of [[Adar]]. Their home
is a peaceful and concealed one in a cavernous canyon on
a river they name the [[Xaryai|Xaryai River]]. [[Xephanan]], their largest
city, is deep within the canyon.
Deep in the awe-inspiring canyons where the
impassable [[Xaryai River]] in [[Adar]] flows, a forest occupies the
chasm's floor. The river has cut a wider opening through
softer stone, creating a shaded valley and revealing luminescent crystal that bathes the area in almost eternal twilight. In this weird jungle of crystal and trees live the
[[xeph]]s. Xephs have long been accepted among [[Adarans]].
The largest concentration of xephs in the Xaryai Coulee,
as the xephs name the valley, is in a settlement of graceful
buildings melding stone, tree, and crystal. Xephs call it
Xephanan. From Xephanan, xephs travel all over [[Adar]];
many are integrated into Adaran society and involved in
the war against the [[Inspired]]. A few bold xeph merchants
run trading vessels from the port at [[Dvaarnava]], where
they also work with the [[Summit Road]].
The Xofre Bay lies off the coast of [[Syrkarn]] between the provinces of [[Mae-Kree]] and [[Khunan]]. It is part of the [[Sea of Rage]] and is fed by the [[Xofre River]].
The Xofre River in [[Syrkarn]] flows through the [[Whitewater]] into the [[Xofre Bay]] in the [[Sea of Rage]]. It forms most of the border between the province of [[Mae-Kree]] and its neighbors [[Khunan]] and [[Sunyagir]].
The touch of Xoriat will warp your flesh and corrupt your mind. The inhabitants of this alien realm seek to transform or destroy all that is natural, and even the slightest contact with it is dangerous.
At least, that's the popular opinion—but it's not entirely true. The plane's title, “Realm of Madness,” is a label applied by the people of [[Eberron]] based on the
perception that close interaction with
Xoriat can interfere with your ability
to process reality. But [[illithid|mind flayer]]s call Xoriat
the Realm of Revelations... and this may be more accurate.
Where [[Lamannia]] embodies the natural world, Xoriat instead
embodies the unnatural. It's a window into the workings
of reality that mortals normally don't see, ones they're ill-equipped to handle. It suggests that time and space, order and chaos, war and peace—all of these are inventions.
They're the foundations mortal lives are built on... but what
lies //under// those foundations? What was there before the
house was built, and what will come after? Xoriat holds the
answers to those questions, and infinitely more as well.
Though the fact is often overlooked, all mortals have a
connection to Xoriat. Mortals are influenced by all of the [[plane]]s,
and the influence of Xoriat drives the desire to question
reality. It can be a source of inspiration, especially for artists;
it helps people challenge their assumptions and see things in
an entirely new way. But Xoriat's also the sun that melts the
wings of any who draw too close. From a distance, its influence
can be a positive force, but mortals who gaze too deeply into
Xoriat can lose touch with their native reality, losing the ability
to navigate the natural world. So Xoriat is a deeply dangerous
place, but the plane itself isn't evil or destructive. It's part of the
universal balance, as important as any of the other concepts
of the planes. [[Irian]] brings life, [[Lamannia]] is the blueprint for
nature, [[Daanvi]] provides guiding order. Xoriat is a glimpse at
what lies behind and beyond, of the other ways reality could
have been—and of the unseen ways it //is//.
!! Universal Properties
To mortal eyes, Xoriat may seem more chaotic than [[Kythri]].
However, it's not defined by the idea of chaos; rather, mortals
don't understand the logic that guides its changes. Additionally,
Kythri's constant change is still always natural: fire and
lightning, stone and water. On the other hand, in Xoriat, a
tornado might be composed of ink. Each grain in a sandstorm
could be a miniature bust of Queen [[Aurala|Aurala ir'Wynarn]] of [[Aundair]], or a
tiny beating heart. It's not simply chaotic; it's unnatural.
* //''Unpredictable Magic.''// Immediately after a creature casts a spell of common [[tier|spell tier]] or higher, generate a [[random magical effect]].
* //''Dangerous Revelations.''// Whenever a creature rests, or is incapacitated, it must resist the energy of the plane or else be afflicted with a random form of [[short-term madness]]. Each time a creature is subjected to this effect, its previous madness effect is replaced with a new one.
* //''Time Is an Illusion.''// More than any other [[plane]], time is unreliable in Xoriat. Adventurers could be trapped in the Realm of Madness for what feels like a lifetime, then find only a moment has passed on Eberron. It's even possible for them to return to Eberron before they left, potentially becoming stranded in another time, as discussed in the next section.
* //''Strange Reality.''// The things adventurers rely on—gravity, time, their identity itself—aren't always reliable in Xoriat. When characters enter a new [[layer]], the DM can choose a property from the Properties of Xoriat table below. This property could apply the entire time the adventurers are on that layer, or it could change when combat begins, whenever a creature rolls a 1, or at any other time the DM chooses. There is no resisting these effects, and an effect impacts all creatures in the layer until the DM replaces that property with a new one. Each effect reflects a strange new property of reality in this layer.
| !<<dr d13>> |!Properties of Xoriat |
| 1 |Creatures can walk on any surface—walls, floors, ceilings. If a creature falls, it does so in a random direction, not necessarily toward the floor. |
| 2 |The local flow of time slows considerably. |
| 3 |The air within the region takes on a fluidic quality. There's no risk of drowning, but creatures must move by swimming. |
| 4 |The local flow of time speeds up considerably. |
| 5 |Creatures are under the effects of the [[mirror image]] spell, and destroyed duplicates do not reappear. |
| 6 |Whenever a creature is hit with an attack, it becomes invisible until the start of its next turn. |
| 7 |Creatures can teleport at will up to 30 feet to an unoccupied space they can see. |
| 8 |Creatures can hear the thoughts of others flowing like music all around them, and if they concentrate on a single creature, they can translate the meaning of the melody. |
| 9 |Creatures are under the effects of the [[gaseous form]] spell, becoming misty clouds of thought energy. Creatures can speak (forming sounds with their thoughts) in this form. |
| 10 |Creatures take on the appearance of a random creature in the region. This has no effect on abilities, and size remains unchanged (so if a [[halfling]] takes on the appearance of an [[ogre]], they are a small ogre). |
| 11 |Creatures gain [[truesight]] with a range of 60 feet. |
| 12 |Creatures are vulnerable to psychic damage, even creatures that are normally immune to it. |
| 13 |Size depends on perspective—is the mountain on the horizon enormous, or can you reach out and hold it in your hand? All creatures are randomly enlarged or shrunk. |
!! Xoriat and the Maze of Reality
There's a logic to the structure of the [[plane]]s. [[Irian]] is the
beginning, where new seeds are born. [[Mabar]] is the end,
consuming all things. Time sometimes moves at different
rates in different planes, but it always moves forward...
except in Xoriat.
Imagine time as a maze and the Material Plane as a rat
moving through it, with the other planes worn as a crown.
This is how the [[Draconic Prophecy]] works. It doesn't tell you
what will happen, because that hasn't been decided yet. It's a
roadmap to the maze, revealing that if you take a left turn at
“Queen Aurala is assassinated” and then turn right at “[[Breland]] becomes a democracy,” you'll reach “[[Sul Khatesh]] is released
from her prison.” The Prophecy shows the path you need to
take to achieve the outcome you desire—a map to the many
possibilities of the future.
But Xoriat isn't bound to the rat. It hovers above the maze. And adventurers could return to the wrong time when they leave it, falling farther back in the maze. They could find themselves in the Empire of [[Dhakaan]], or in the midst of the [[War of the Mark]]. And in the process, they could change the future. Perhaps they help [[Halas Tarkanan]] win the War of the Mark; the [[dragonmarked house]]s are broken and scattered before they ever achieve their current glory, and people with [[aberrant dragonmark]]s thrive. With these changes, modern [[Khorvaire]] would be a very different place. In doing this, the adventurers have dropped a new rat in the maze. This new rat becomes the Prime Material Plane. It snatches the old rat's crown of planes, becoming the reality where all the planes converge and where time moves forward. But the other rat is still out there—forgotten and lost, huddled in a corner, but still alive. And it's possible that if the adventurers return to Xoriat, they could change their mind; they could find their way back to that original rat, returning it to its role as the Prime Material Plane. So Xoriat gives the possibility for dramatic change—but it's always possible to restore a forgotten past.
This view is critical to understanding the [[daelkyr]]. They stand above the maze, but they can also descend into it. They experiment on the rat, changing it. What happens if they make too many changes? It's possible the rat might crawl into a corner to die and a new rat be released: perhaps the old Prime is lost and a new world moves forward. This is what the [[gith]] believe happened with their world. The gith lived on a world that was once the Prime Material Plane. Now it may just be another rat lost and forgotten in the maze. Should the daelkyr rise and complete their work, it's possible the current Eberron could be torn away from the planes; it would still exist, but as a forgotten shadow of the new central reality that takes its place.
If this doesn't entirely make sense, that's appropriate. Most
scholars in [[Khorvaire]] would call this theory madness, and
so Xoriat receives its name. But others might say that this
is in keeping with the myth of the [[Progenitors|Progenitor Dragons]]. [[Irian]] is the
beginning, [[Mabar]] is the end—and Xoriat could be the point
that stands above the journey, the high perch from which the
Progenitors could study their work. Xoriat isn't bound by the
laws that bind the rest of the planes, and it holds all the ideas
that were discarded. Perhaps the [[Sovereigns|Sovereign Host]] didn't entirely
build reality, but rather, they sculpted it—chipping things away
and dropping them into Xoriat.
This is a metaphysical discussion that most adventurers
will never need to worry about. There are three things to
take away from it. Xoriat is a point from which history and
reality itself can be changed. The [[daelkyr]] have changed it
an unknown number of times. And from Xoriat, it's possible
for adventurers to either change it themselves—or to undo
damage they might have done.
!! Denizens
In Xoriat, there are masses of swirling colors, hues never
seen on [[Eberron]]. There are ripples in space that disrupt
time in their wake. There are bursts of powerful emotion
that drift across [[layer]]s. These may well be alive in some
way—but there's no way to communicate with them. This
section discusses some of the creatures most relevant to
adventurers. While the plane might hold other forces that
could be considered alive, their thought processes would
almost certainly be fundamentally inhuman, and they
wouldn't recognize organic beings as life.
!!! The Daelkyr
The [[daelkyr]] came to Eberron to corrupt it and transform its
people, and they crippled the [[Dhakaan]]i Empire before being
bound in [[Khyber]]. Six are known by name, but there are surely
others. They remain trapped in Khyber to this day, waiting
for the chance to rise and finish the work they began... and
perhaps to pave the way for a new reality.
There are no known accounts of mortals traveling to
Xoriat—at least, none who returned—so adventurers who
do so are likely undertaking a historic journey. And in that
journey, they may make a shocking discovery—though the
daelkyr may be bound in Khyber, they are also //still in Xoriat//.
[[Dyrrn]] the Corruptor, [[Valaara]], [[Belashyrra]]—each dwells in
a domain in Xoriat, attended by their servants and their
armies. This ties to Xoriat's uncanny relationship with time.
The daelkyr may be in Xoriat because they haven't left yet,
or they might've already been released from their prisons
and returned to Xoriat. Again, if time is a maze, the daelkyr
stand above it looking down—but at the same time, they are
also running in the maze. They can't return to Eberron now,
because they're already there; but this may be why they seem
unconcerned with their long imprisonment, because they're
also watching it all unfold from above. So adventurers could
interact with any of the daelkyr in Xoriat, but fighting them
there won't impact their actions on Eberron. However, it
could help adventurers learn about the weaknesses of the
daelkyr, or perhaps obtain tools or weapons to use against
them in the future.
!!! Aberrations
The natural inhabitants of the plane are often so alien that
mortals don't even recognize them as living things. Most of
the [[aberration]]s that people are familiar with on [[Eberron]]
aren't creations of Xoriat itself. Rather, the [[daelkyr]], powers
designed to interact with the Material Plane and its mortals,
created these aberrations as their servants, soldiers, and
mementos of past conquests. In Eberron, most daelkyr have
mixed forces; [[mind flayer]]s could be found serving any of the
great lords. In Xoriat, they're more segregated; [[beholder]]s
dwell in the domain of [[Belashyrra]], and [[mind flayer]]s in the
realm of [[Dyrrn]].
What other terrors do the daelkyr have in Xoriat that they've
never unleashed in Eberron? This depends in part on how many
other realities the daelkyr have transformed; the mind flayers
are relics of the destruction of the [[gith]], just as the [[dolgrim]]s
and [[dolgaunt]]s are souvenirs of the downfall of [[Dhakaan]].
While aberrations created by the daelkyr are usually dangerous, there are also aberrations generated by the layers themselves. These planar creatures are alien and disturbing, but aren't threatening unless provoked. A few examples of native aberrations are listed below.
* The //Varr// are kind, generous, telepathic [[halfling]]s. But they're not quite like their Eberron cousins—they have compound eyes, barbed tongues, and they spit acid on food to digest it.
* The //Craiss// are tiny insectoid creatures that inherently know the language of creatures they speak to. They've always had a really bad day and they won't stop complaining about it.
* The //((scent of onions))// is a sentient ooze that can assume a [[humanoid]] shape. It can produce sounds, but communicates with its own kind using smell, touch, and taste.
* The //Cya// are invisible, incorporeal beings who are only able to communicate by animating the reflections of other creatures.
* The //((pleasure of seeing of a familiar friend))// are a race of empathic plants. They communicate not through speech, but through projecting emotions.
* The //Xaelin// appear identical to [[human]]s, except for their smooth, featureless faces without eyes, ears, or nose. They possess [[truesight]] with a range of 60 feet, but can't see, hear, or otherwise perceive anything beyond that range. The Xaelin claim to know nothing about Eberron—but despite this, their customs and fashions emulate cultures from throughout Eberron's history.
!!! Powers of the Void
The [[daelkyr]] aren't the most powerful forces in Xoriat. There
are greater powers in the void, spirits so vast and alien that
they can only be perceived by the ripples they create in reality.
Both the [[Unseen Citadel]] and [[Belashyrra]] are ideas in the mind
of something greater. Do these powers slumber? Do they
consciously adjust the rules of their [[layer]]s? Or are they simply
ideas cast aside by the [[Progenitors|Progenitor Dragons]], models of reality that
were ultimately abandoned? If Xoriat is the realm of discarded
concepts, this could be the drive behind the daelkyr's endless
quest to disfigure—or perfect—reality.
!! Layers
Xoriat is a void lacking not only matter, but also space and time,
and a mortal creature that enters it effectively ceases to exist.
But there are powers in this void, and the layers of Xoriat reflect
their thoughts. Each of the [[daelkyr]] dwells in a layer, the place
that spawned that daelkyr; this layer usually reflects the daelkyr
in tone, and it can use its lair actions anywhere in its layer.
However, not all of Xoriat's layers can support mortal life; there's
a layer where intense gravity crushes any physical creature, and
a layer where all matter is transformed into pure thought.
Adventurers need to find portals to move from [[layer]] to layer. Portals are unique based on the layer's properties of each layer, and using a portal always has a price. Sometimes the price is paid in memories; the DM sets the emotional tone of the memory (joy, sorrow, anger), then each player describes the memory their character has lost. With other portals, the price may be knowledge, but this isn't taken from the adventurers—rather, when they pass through the portal, they learn a secret they might have rather not known.
In exploring the layers of Xoriat, it's important to highlight the fundamentally unnatural flavor of the plane. In addition to the Properties of Xoriat table provided earlier with shifting effects that have an impact on gameplay, the Alien Attributes of Xoriat table below presents examples of cosmetic details that can be distinctive features of a layer. Beyond that, the layers of Xoriat contain revelations; these can be truths about the adventurers that they don't want to know, or secrets about reality itself. This is discussed in more detail in the section on Xorian Artifacts.
<<list-links-article "[tag{!!title}tag[layer]sort[title]]">>
| !<<dr d12>> |!Alien Attributes of Xoriat |
| 1 |[[Undead|undead]] creatures are considered living creatures, and living creatures are considered to be undead. |
| 2 |You can tell time by the shifting focus of gravity. If you're walking on the ceiling, it's midday. By evening you'll be back on the ground. |
| 3 |Everything in this layer—food, buildings, even the air itself—is alive. |
| 4 |There's no sound in this layer, but speech manifests as glowing words that circle the speaker. Music and verbal spell components manifest as patterns of light. |
| 5 |Any attack or effect that normally deals damage instead restores health; anything that would normally restore hit points deals necrotic damage instead. |
| 6 |This layer is filled with bright light, but all light sources work in reverse. Any light source that would usually create bright light instead creates darkness, and anything that would usually create dim light instead reduces the light level to dim light. |
| 7 |While within this layer, creatures lose their sense of sight, but aren't considered blinded, as they can perceive their surroundings through heightened senses of smell and taste. |
| 8 |The layer is a series of floating platforms. Rivers flow through empty air. |
| 9 |The inorganic matter of this realm—including all buildings and tools—is invisible. |
| 10 |There are many reflective surfaces, but the reflections don't match the actions of the creatures shown in them. |
| 11 |Instead of soil, the surface of the land is made of chitin. The chittering of insects fills the air. |
| 12 |Rivers and pools are made of living protoplasm, which reaches out toward passersby. |
!!! Other Layers
Every daelkyr has a home layer, but there are endless layers of
Xoriat, each reflecting a discarded idea or a maddening truth.
Consider the following examples.
//''A House Built from Hate.''// Each character sees the house's
form slightly differently, but they all feel the hate in the walls.
Mirrors reflect images of things the viewer hates, and books in
the house chronicle the hateful deeds committed by everyone
the adventurers know—including each other. The longer the
adventurers stay in the houses, the easier it becomes to hate
each other... or themselves.
//''Empty White Space.''// There's seemingly no end to this
endless void of bleak solitude. To proceed, the characters must
act out their travel—pretending to travel just as they pretend
there is meaning in their lives. If they can keep up the charade,
the world they imagine will take shape around them.
//''A Lush Orchard.''// The trees grow secrets, while more
buzz around in the air like tiny birds. Some of them may be
secrets of the adventurers, or those of their enemies. Others
are secrets of strangers and secrets about reality. Do the
adventurers block their ears, or do they try to listen?
!! Planar Manifestations
The [[seals|dimensional seal]] of the [[Gatekeepers]] block travel to Xoriat, but there
are still many ways the Realm of Madness can affect the world.
!!! Manifest Zones
Manifest zones tied to Xoriat are common in the [[Shadow Marches]], but rare elsewhere. The effects of a Xorian manifest zone are rarely as dramatic as the alien attributes of the plane itself. However, manifest zones may convey one or more of
the universal properties of the plane. The most common is
the //Dangerous Revelations// property. People who linger in
a Xorian zone often find alien concepts creeping into their
brains, instilling strange beliefs, or twisting their sense of
reality. These zones can easily produce [[Cults of the Dragon Below]]; in the Shadow Marches, the Gatekeepers struggle
to keep people out of these zones, while Marcher cultists
consider them to be sacred sites.
//Unpredictable Magic// is another common property; such
zones often have unnatural flora or fauna, but these effects are
unreliable and change with each generation. The properties
of //Time Is an Illusion// and //Strange Reality// are rare in manifest
zones, and may not be active all the time; these effects might
only become active when [[Lharvion]] is full, or when disturbing
rituals are performed.
!!! Coterminous and Remote
The last time Xoriat was coterminous, the [[daelkyr]] brought their
armies through the walls of reality and laid waste to the Empire
of [[Dhakaan]]. The seals crafted long ago by the [[Gatekeeper|Gatekeepers]] [[druid]]s
keep the daelkyr bound in [[Khyber]], but they also keep Xoriat from
becoming coterminous. Xoriat's remote phases have no known
effect, and like [[Kythri]], they're unpredictable, though the phases
tend to come and go far more slowly than Kythri's do. There are
no recorded instances of citizens of the [[Five Nations]] visiting Xoriat; most scholars believe that the Gatekeeper seals prevent all planar travel... though someone may have secretly built an [[eldritch machine]] in a [[manifest zone]], perhaps incorporating
[[illithid|mind flayer]] brains or the position of the moon [[Lharvion]]. What would
happen if the adventurers stumbled on a cult of the Dragon Below just as the cult completes its sinister rituals?
!!! Xorian Artifacts
The most common artifacts of Xoriat are the [[symbiont]] items
created by the [[daelkyr]]. However, adventurers could
stumble on artifacts brought to [[Eberron]] by the daelkyr in their
great incursion—or relics even more ancient. One effect of
Xorian items could be to twist time. On a minor level, this could
explain the powers of a [[cloak of displacement]]; it always shows
you a few seconds ahead of your current position. A more
powerful artifact could allow travel through time, or reset time
in a small region. Does the time tunnel allow a return trip, or
are those who use it trapped on the other side?
Xoriat is also known for granting maddening knowledge
and physical transformation. Here are a few examples:
* The character's blood is replaced with a sentient protoplasm that whispers to them while they sleep. The character heals from injuries twice as fast.
* The character gains +1 to the Study action, but they also learn that any time they cast a [[spell]], something dies. When they cast a cantrip, it might be a rodent or a bird. The more powerful the spell, the more significant the death. The caster will likely never see this effect occur, but they know that someone somewhere is paying the price for their magic... and worse, this might be true of all spellcasters.
* The character gains the ability to summon spirit warriors to fight with them every seven days. The spirit warriors summoned are friends of the caster, plucked from the future; the character may not have met all of them yet, but they're people who the character knows or will know. They're returned to the future in an hour or when they are incapacitated... in which case they may die upon being returned to their own time.
!! Xorian Stories
The seals of the [[Gatekeepers]] make Xoriat one of the more
difficult planes for adventurers to reach. However, a trip to
Xoriat would be a revelatory adventure. Interactions with
the denizens of Xoriat are largely limited to the [[Cults of the Dragon Below]] and the servants of the [[daelkyr]]. However, there are a few ways the plane could spawn adventures.
//''Planar Patron.''// A [[warlock]] could say that their patron isn't simply a [[daelkyr]]; rather, it's one of the Powers of the Void within Xoriat itself. Such contact
is unprecedented—what is the nature of this connection? It
may be that the Power doesn't converse with the warlock,
but rather downloads knowledge directly into its mind. A
disturbing possibility is that the warlock isn't supposed to
be receiving this information; the knowledge stream could
be intended for a powerful [[mind flayer]], but the warlock has
become linked to this psychic channel. This could provide
information about the plans of the illithid's cult, but can the
warlock do anything about it?
//''A Glimpse of the Future.''// When the adventurers interfere
with a ritual of a [[cult of the Dragon Below|Cults of the Dragon Below]], they find
themselves three years in the future... and something has
gone terribly wrong. Perhaps the [[Mourning]] has spread and
consumed [[Breland]]. Maybe the [[overlord]] [[Sul Khatesh]] has
broken her bonds; under her rule, the warlock-knights of
[[Aundair]] are conquering the [[Five Nations]]. The adventurers
must find a way back to their own time—after they learn how
to keep this future from coming to pass.
//''Whispers in the Woods.''// While the adventurers are in a
Xorian [[manifest zone]] fighting a cult of the Dragon Below, one
of the characters receives a revelation: [[Merrix d'Cannith]] will
destroy the world in two years. Does it provide any additional
information or just this one absolute fact? The character knows
that this is the truth... but is this an actual glimpse of the
future, or is it luring the character down a dark path?
His wild eyes peering out from his tangled hair and beard, Yannick Drumdoom lingers near the [[Old Catacombs]] in [[Stormreach]]. Smeared with ashes, Yannick has devoted
himself to the [[Keeper]], god of death, and beats his drum day and night, reciting the names of the dead and collecting tokens from tombs to keep their spirits closer to this world. He is clearly insane and makes passersby uncomfortable.
Viceroy [[Korbek Ghedin d'Kundarak]] is almost never encountered without his bodyguard Yarik, a hulking brick of a [[dwarf]] clad in [[mithral]] plate. Nobody knows just what
Yarik’s title or role is (aside from guarding Korbek), but some dwarves whisper of his connection to House [[Kundarak]]’s paramilitary arm, the [[Ghorad'din]].
Countess [[Yassiv ir'Oeskai]] provides the city watch for [[Xandrar]] and administers the surrounding lands. The countess spends most of her time at her mansion within the city rather than at [[Drum Keep]], the primary garrison of her holdings. She and Mayor Garrit of [[Xandrar]] hold wildly different opinions on the “[[Swords of Liberty]] problem” that has infested the region in recent months, but generally manage to work together to keep the city from being burned to the ground.
Yassiv has some sympathy for the pro-democracy goals of the [[Swords of Liberty]], and rumors persist that she once adventured with Red Owl, the legendary leader of the area’s Swords of Liberty cell. Garrit, meanwhile, has no patience for the destructive tactics of the Swords and the suffering Red Owl has personally brought to innocents while
trying to strike out against the monarchy.
Yerod Toothdiver gained his sobriquet when he dove off
a ship into [[Shargon's Teeth]] to battle [[sahuagin]], buying
his crew enough time to sail safely through the strait.
His men mourned him as lost, but six days later Yerod
washed up on the shore of [[Stormreach]], battered and
waterlogged but alive.
From that day forth, Yerod’s reputation as a thunder guide was sealed. Over the next few years, he traveled through many continents. Eleven months ago, he
declared he would explore [[Argonnessen]].
Despite his preparations, Yerod and his men found
the dangers of the [[dragon]] continent overwhelming.
Only a few weeks after they set foot on Argonnessen,
a nasty [[bronze dragon]] enslaved the [[gnoll]]s. For several
months, Yerod and his companions played the part of mindless minions, all the while plotting their escape. Finally the day came, and the gnolls fled. Now they race
across the Vast, desperate to find the coastline and somehow escape Argonnessen before their former master finds them.
A yeti's windborne howl sounds out across remote mountains, striking fear into the hearts of the scattered miners and herders that dwell there. These hulking creatures stalk alpine peaks in a ceaseless hunt for food. Their snow-white fur lets them move like ghosts against the frozen landscape. A yeti's icy simian eyes can freeze its prey in place.
Yetis are found in the mountains of the northern continent of [[Frostfell]], and have very rarely been encountered by the [[humanoid]]s of Eberron. A small population of yetis also lives in the frozen peaks of the [[Frostmantle]] in the icy [[plane]] of [[Risia]].
Yoren d'Ghallanda is the baron of House [[Ghallanda]]. He has delegated
responsibility for the [[Hostelers|Hostelers Guild]] and [[Dragontail|Dragontail Guild]] guilds
to regional councils of viceroys, and he spends much
of his time on diplomatic missions to ensure the
continued independence of the Ghallanda [[enclave]]s.
An elderly [[halfling]], Yoren is increasingly interested
in the [[Draconic Prophecy]] and has given one of his
trusted heirs, [[Chervina|Chervina d'Ghallanda]], free rein to establish new
enclaves in accordance with the Prophecy.
Lord Yorrick [[Amanatu|Amanatu family]] was one of the original five [[Storm Lords]] who formed the Stormreach Compact with [[Galifar]] over two centuries ago, and remains a Storm Lord to this day—the sole survivor of the founders. Now 260 years
old, he relies on [[magic item]]s to offset the ravages of time. He believes in the Stormreach Compact, but he also knows that the only way to hold the city together is through personal power. In the past, other lords sought to take control of the city, and it was the strength and cunning of Amanatu that crushed this treachery. To this day, Lord Yorrick searches for ways to expand his personal power, always believing he has the best interests of the city and the other lords at heart.
Many of the chief recruiters and most capable officers of the [[Stormreach Guard]] are Lord Yorrick’s children. If the day ever came for a civil war between the [[Storm Lords]], most of the Guard would follow his lead. Over the years, Lord Yorrick has also developed a strong bond with House [[Kundarak]]. He negotiated the sale of the [[Coasthold]] ward when Kundarak settled in the region and helped place the [[Citadel of the Twelve]] there, and he frequently uses the [[Stormreach Guard]] to serve the interests of Kundarak. In return, Lord Yorrick receives considerable wealth, a side benefit to the greater stability that he believes he’s brought to the city.
Even though Yorrick recognizes the vital role House [[Lyrandar]] plays in bringing the shipping trade to [[Stormreach]], he was born a pirate and a [[Cloudreaver|Cloudreavers]], and he still remembers the bitter battles against [[half-elf]] privateers. Quite a few Lyrandar captains hold ancestral grudges against the old pirate. So far, Lord Yorrick hasn’t let this situation interfere with his vital work, but he maintains a cold demeanor when dealing with half-elves of all stripes, and he prefers to let the [[Lassite|Lassite family]] and [[Wylkes|Wylkes family]] families negotiate with the House of Storms.
Despite his age, Lord Yorrick is an imposing
figure. He shaves and oils his head, and he wears
his black and silver beard in long braids. He always
appears ready for battle; he typically wears a [[mithral]]
chain shirt and carries a heavy mace engraved with
silver. Little escapes his keen eyes.
Yrlag is a large town on the shores of the [[Grithic River]] in the [[Shadow Marches]]. It regularly provides supplies to the [[Tharashk]] port town of [[Blood Crescent]] across [[Crescent Bay]] in the [[Demon Wastes]].
Yrlag is home to a small community of [[forlarren]] that were cast out from the nearby [[Twilight Demesne]] in the [[Towering Wood]].
The [[oni]] [[sorcerer]] Yrnuxi is the actual power in [[Mokush]]; she and a small subsection of the village are members of the [[Horned Shadow]].
She masquerades as the [[Chosen]] lady [[Galshani]], who
seems to be a healthier and more spry of late, despite
her advancing years. The real Galshani spends a lot of
time sleeping, and is under Yrnuxi's power, but not in
such a way that the oni could easily be given away
if Galshani were to be possessed by a [[quori]] (which hasn't
happened in over a decade). Most of Mokush's [[ogre]]s know
Yrnuxi as a harsh and influential reeve, unusual for an
ogre mage, and nothing more.
Ystravnil is a [[green|green dragon]] [[rogue dragon]] in [[Khorvaire]]. Personality conflicts drove this dragon from [[Argonnessen]]. Ystravnil can’t understand why the other [[dragon]]s don’t recognize her superior intelligence and grant her the respect she deserves. From her lair in [[Khorvaire]] she builds up wealth and power, determined
to make a name for herself and show those fools on
Argonnessen.
//The priestess is a tall, stern woman who wears full plate armor as part of her mostly ceremonial vestments. Her silvery-gray hair surrounds an unlined face and her eyes still shine bright with the zeal of youth.//
The Archierophant of [[Sharn]] and the surrounding region, Ythana Morr leads extravagant [[Silver Flame]] services at the [[Cathedral of the Cleansing Flame]]. While many of her clergy and staff simply covet privilege, power, and material wealth, Ythana actively fosters the corruption of her diocese. She secretly cooperates with the [[rakshasa]] [[Zathara]], who lives in the [[Cogs]] district of [[Khyber's Gate]].
Yuan-ti are devious [[psionic|psionics]] serpent folk devoid of compassion. A yuan-ti views the world and the events of its own life with such extreme pragmatism that it is nearly impossible to manipulate, influence, or control by nonmagical means, even as it seeks to control other creatures through terror, pleasure, and awe.
No two yuan-ti look exactly the same. Both the snakelike and the humanlike portions of a yuan-ti's anatomy exhibit a wide variety of shapes and colorations. Because a yuan-ti's appearance is mostly inherited, in small settlements all the yuan-ti look somewhat alike, while larger settlements see more intermixing, which produces a wider range of results.
The yuan-ti arose in [[Sarlona]], rising from the blasted ruins of once-great [[Khunan]] and naming their new land "[[Syrkarn]]". Some sages posit that the creation of the yuan-ti was tied to the near-release of a bound [[overlord]] in Syrkarn over twelve hundred years ago. However, the supposition that the yuan-ti might be [[shulassakar]] tainted by exposure to [[fiend]]ish magic remains little more than a guess.
Driven from [[Sarlona]] by the [[Inspired]] during the [[Sundering]], the yuan-ti were given shelter in [[Argonnessen]]. There, some took up residence in the city [[Io'vakas]], where at least one sect began practicing forbidden [[arcane arts|arcane magic]], and claimed direct worship of the [[Dragon|dragon]] Gods of [[Thir]] for themselves. When the dragons discovered this blasphemy, they razed the city and killed nearly the entire population. They continue to hunt the yuan-ti on the shores of Argonnessen to this day.
The surviving yuan-ti exiles escaped to the continent of [[Xen'drik]]. Proud and
spiteful, the yuan-ti intend to wreak vengeance on all who have ever crossed them, from the [[dragon]]s of [[Argonnessen]] to the humans whose ancestors drove them from [[Sarlona]]. Deep in the jungles, many worship the [[Devourer]] in the form of a great serpent that will one day consume the world.
One mighty serpentine [[wizard]] has been developing an [[eldritch machine]] capable of transforming [[humanoid]]s into reptilian creatures, wretches conditioned to be innately subservient to the yuan-ti. For the moment this work is still theoretical, and the
wizard is testing elixirs and spells on captured travelers. If the machine is completed, [[Stormreach]] would make a tempting target; adventurers sailing into the
harbor could find a city of bloodthirsty snakefolk.
On a smaller scale, the yuan-ti are always looking
for ways to turn the great powers of Eberron against
one another, and they are especially eager to hurt the
dragons of Argonnessen. The yuan-ti haven’t established a major presence in [[Stormreach]], but it would be a simple matter for a [[pureblood|yuan-ti pureblood]] to build a cult on [[Temple Row]], or to start a new gang to compete with
the [[Bilge Rats]]. In the rough-and-tumble streets of the
[[Harbor]] district, these “Gutter Snakes” could easily
glide beneath the public eye. Or they could go deeper
still and lay claim to one of the dungeons below the
city... though in doing so, they might risk waking a
force even more ancient and evil than the yuan-ti.
!! Evil by Nature?
The [[Sarlona]]ns claimed that the yuan-ti were shaped by one of the ancient [[overlord]]s of the [[Age of Demons]]. If this is true, then it’s possible that as the yuan-ti traveled from continent to continent, they passed over the tombs of additional demon lords, and each of these further infected the spirit of the race. In [[Argonnessen]], [[Tiamat]] sunk her claws into the serpentfolk. In [[Xen'drik]], they have been touched by the [[Scar that Abides|Sakinnirot]]. If this is true, then the evil nature of the yuan-ti is in essence a curse—the touch of mighty [[fiend]]s stretching back through the ages.
The yuan-ti care nothing for these theories. They have no loyalty to the [[Lords of Dust]] or their masters, and they show equal disdain for the aberrations that flock to the banner of the [[Dragon Below|Cults of the Dragon Below]].
!! Types of Yuan-ti
<<list-links-article "[tag{!!title}sort[title]]">>
Monstrous serpents with burly [[humanoid]] torsos and arms, abominations form the highest caste of [[yuan-ti]] society. They mastermind elaborate schemes and perform dark rites in the hope of one day ruling the world.
Abominations can shapeshift into snakes at will, and are able to communicate with snakes freely. Some abominations are able to secrete an acidic slime, camouflage themselves with chameleon-like skin, shed their skin to avoid being restrained, [[polymorph]] their enemies into snakes, or other unique mutations.
<<<
''Generate Abomination Appearance''
<$button>
<$action-chooserandom $dataTiddler="$:/YTSnakeBodyShape" $field="y_sbshape2"/>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc7"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp7"/>
<$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue7"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye7"/>
<$action-chooserandom $dataTiddler="$:/YTHeadShape" $field="y_headshape2"/>
Generate
</$button>
''Abomination:'' The yuan-ti is a monstrous {{!!y_sbshape2}} serpent with a burly humanoid torso and arms and a {{!!y_headshape2}} head. It has {{!!y_sp7}} {{!!y_sc7}} scales, {{!!y_eye7}} serpentine eyes and {{!!y_tongue7}} forked tongue.
<<<
A [[yuan-ti]] malison is a hideous blend of human and serpentine features. Five different types of malisons are known to exist, and other types are possible. Malisons form the middle caste of yuan-ti society and hunt with arrows tipped with their own venom. They use their magical powers of suggestion to force their enemies' surrender.
Malisons can shapeshift into snakes at will, and are able to communicate with snakes freely. Some malisons are able to secrete an acidic slime, camouflage themselves with chameleon-like skin, shed their skin to avoid being restrained, [[polymorph]] their enemies into snakes, or other unique mutations.
<<<
''Generate Malison Appearance''
Choose malison type: <$select tiddler="$:/config/YTMalisonType" default=""><$list filter="[range[5]]" variable="type"><option value=<<type>>>Type <$text text=<<type>>/></option></$list></$select>
<$reveal type="match" state="$:/config/YTMalisonType" text="1">
<$button>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc2"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp2"/>
<$action-chooserandom $dataTiddler="$:/YTHumanSkinColor" $field="y_hskin2"/>
<$action-chooserandom $dataTiddler="$:/YTHeadShape" $field="y_headshape1"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye2"/>
<$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue2"/>
Generate
</$button>
''Malison Type 1:'' The yuan-ti has the body of a human with {{!!y_hskin2}} skin, and the {{!!y_headshape1}} head of a snake with {{!!y_sp2}} {{!!y_sc2}} scales. The creature's serpentine eyes are {{!!y_eye2}}, and it has {{!!y_tongue2}} forked tongue.
</$reveal><$reveal type="match" state="$:/config/YTMalisonType" text="2">
<$button>
<$action-chooserandom $dataTiddler="$:/YTHumanSkinColor" $field="y_hskin3"/><$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue3"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye3"/>
<$action-chooserandom $dataTiddler="$:/YT2Arms" $field="y_2arm1"/>
<$action-chooserandom $dataTiddler="$:/YT2Arms" $field="y_2arm2"/>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc3"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp3"/>
Generate
</$button>
''Malison Type 2:'' The yuan-ti has the head and body of a human with {{!!y_hskin3}} skin, {{!!y_eye3}} eyes, and {{!!y_tongue3}} tongue, but its arms are serpentine. <$list filter="[[Yuan-ti]!y_2arm1{Yuan-ti!!y_2arm2}]" emptyMessage="Each of the arms is" variable="noop">The left arm is a {{!!y_2arm1}}, and the right is</$list> a {{!!y_2arm2}}. The arms have {{!!y_sp3}} {{!!y_sc3}} scales.
</$reveal><$reveal type="match" state="$:/config/YTMalisonType" text="3">
<$button>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc4"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp4"/>
<$action-chooserandom $dataTiddler="$:/YTHumanSkinColor" $field="y_hskin4"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye4"/>
<$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue4"/>
<$action-chooserandom $dataTiddler="$:/YTSnakeBodyShape" $field="y_sbshape1"/>
Generate
</$button>
''Malison Type 3:'' The yuan-ti has the head and upper body of a human with {{!!y_hskin4}} skin, {{!!y_eye4}} eyes, and {{!!y_tongue4}} tongue, but from the waist down, the creature has a {{!!y_sbshape1}} serpentine body with {{!!y_sp4}} {{!!y_sc4}} scales.
</$reveal><$reveal type="match" state="$:/config/YTMalisonType" text="4">
<$button>
<$action-chooserandom $dataTiddler="$:/YTHumanSkinColor" $field="y_hskin5"/>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc5"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp5"/>
<$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue5"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye5"/>
<$action-chooserandom $dataTiddler="$:/YT4LowerBody" $field="y_4lb"/>
Generate
</$button>
''Malison Type 4:'' The yuan-ti looks nearly entirely human in form, with humanoid arms and legs, {{!!y_hskin5}} skin, {{!!y_eye5}} eyes, and {{!!y_tongue5}} tongue, but it has {{!!y_4lb}} with {{!!y_sp5}} {{!!y_sc5}} scales.
</$reveal><$reveal type="match" state="$:/config/YTMalisonType" text="5">
<$button>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc6"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp6"/>
<$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue6"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye6"/>
Generate
</$button>
''Malison Type 5:'' The yuan-ti would closely resemble a human if it weren't covered in {{!!y_sp6}} {{!!y_sc6}} scales. The creature also has {{!!y_eye6}} eyes and {{!!y_tongue6}} tongue.
</$reveal>
<<<
Purebloods form the lowest caste of [[yuan-ti]] society. They closely resemble humans, yet a pureblood can't pass for human under close scrutiny because there's always some hint of its true nature, such as scaly patches of skin, serpentine eyes, pointed teeth, or a forked tongue. Wearing cloaks and cowls, they masquerade as humans and infiltrate civilized lands to gather information, kidnap prisoners for interrogation and sacrifice, and trade with anyone who has something that can further their myriad plots.
Purebloods are able to communicate with snakes at will, and many are capable of casting [[suggestion]] up to three times per day.
<<<
''Generate Pureblood Appearance''
<$button>
<$action-chooserandom $dataTiddler="$:/YTHumanSkinColor" $field="y_hskin1"/><$action-chooserandom $dataTiddler="$:/YTTongueColor" $field="y_tongue1"/>
<$action-chooserandom $dataTiddler="$:/YTEyeColor" $field="y_eye1"/>
<$action-chooserandom $filter="[range[6]]" $field="y_pure" $number="2" $opt="none"/>
<$action-chooserandom $filter="[range[7]]" $field="y_puredouble"/>
<$action-chooserandom $dataTiddler="$:/YTScaleColor" $field="y_sc1"/>
<$action-chooserandom $dataTiddler="$:/YTScalePattern" $field="y_sp1"/>
Generate
</$button>
''Pureblood:'' The yuan-ti closely resembles a human with {{!!y_hskin1}} skin, {{!!y_tongue1}} <$list filter="[all[current]get[y_pure]split[ ]nth[1]search[2]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[2]]" variable="noop">forked </$list>tongue<$list filter="[all[current]get[y_pure]split[ ]nth[1]search[1]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[1]]" variable="noop"> behind snakelike fangs</$list>, and <$list filter="[all[current]get[y_pure]split[ ]nth[1]search[3]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[3]]" variable="noop">serpentine </$list>{{!!y_eye1}} eyes. <$list filter="[subfilter{!!y_pure_scaly}nth[1]]" variable="noop">Despite otherwise smooth human-like skin, the yuan-ti also has patches of {{!!y_sp1}} {{!!y_sc1}} scales on its<$list filter="[all[current]get[y_pure]split[ ]nth[1]search[5]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[5]]" variable="noop"> face<$list filter="[all[current]get[y_pure]split[ ]nth[1]search[4]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[4]]" variable="noop">,</$list><$list filter="[all[current]get[y_pure]split[ ]nth[1]search[6]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[6]]" variable="noop"> and</$list></$list><$list filter="[all[current]get[y_pure]split[ ]nth[1]search[6]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[6]]" variable="noop"> torso<$list filter="[all[current]get[y_pure]split[ ]nth[1]search[4]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[4]]" variable="noop">,</$list></$list><$list filter="[all[current]get[y_pure]split[ ]nth[1]search[4]] [all[current]search:y_puredouble[7]get[y_pure]split[ ]nth[2]search[4]]" emptyMessage="." variable="noop"> arms and hands.</$list></$list>
<<<
Yugoloths are fickle [[fiend]]s native to [[Mabar]], the Endless Night. They are embodiments of hunger, despair, and death, and lie somewhere between [[demon]]s and [[devil]]s in temperament; unlike demons, yugoloths can be reasoned with, but unlike devils, they are rarely true to their word. A yugoloth army is more organized than a ravening horde of demons, but far less orderly and regimented than a legion of devils.
Yugoloths dwell in the layers of [[Mabar]] tormenting the inhabitants of the planar fragments of the [[Hinterlands]] or cultivating the [[shadow]]s of mortals, driving them down dark paths.
According to a legend known only to those deeply acquainted with dark arcana, a coven of [[night hag]]s created four magic tomes called the //Books of Keeping// and recorded the true names of nearly every yugoloth in existence. Knowing a yugoloth's true name grants complete power over it, and the hags used the books to summon the fiends and ensure their loyalty. But this sisterhood of hags eventually dissolved over endless bickering and jealousies, and the //Books of Keeping// were lost or stolen.
!! Types of Yugoloth
<<list-links-article "[tag{!!title}category[creature]sort[title]]">>
Yulgrin is a [[brass|brass dragon]] [[rogue dragon]] in [[Xen'drik]]. Yulgrin’s
mother was driven insane in a cursed [[Age of Giants]] ruin, slew his father, then abandoned the wyrmling brass dragon. Yulgrin fends for himself among the dangerous predators of [[Menechtarun|Menechtarun Desert]], doing his best to guard his parents’ other five eggs. It is only a matter of time before [[Shendroa]] discovers the nest and devours Yulgrin’s unborn siblings.
Yuzdeep is the youngest son of [[Raadu|Raadu Xeel]] and the only surviving member of the Xeel family since its exile from [[Kasshta Keep]] and all of [[Adar]]'s monastery-fortresses.
An [[Endseeker|Endseekers]] cult raised Yuzdeep from a young age.
Thoroughly indoctrinated, Yuzdeep has a deep hatred
for the monastic orders of [[Adar]] and for [[Riedrans]]. He is a psychopath who wants nothing more than to see the word returned to its primordial state, but his plotting
is careful, and he works to remain unknown or to seem
friendly. Currently, he and his followers have designs on
the chaotic scar of [[Uutkleza]], but Yuzdeep hopes to find
the key to awakening [[Ran Iishiv]]. The calculating [[warlock]] has already uncovered hints at the true
contents of [[Korrandar]].
Yuzdeep's followers and cohorts include powerful [[fiend]] binders and [[sorcerer]]s, and form a fanatical inner circle of his Endseeker cult.
Zaeran, an [[elf]] [[werewolf|lycanthrope]], is a recent arrival to [[Sharn]]. He's one of the sons of the [[Droaam]]ish warlord [[Zaeurl]]. Zaeran has come to the city with a small group of wererats and werewolves, assisting the operations of [[Daask]], and has an agenda known only to himself and [[Sora Katra]].
Zaeurl is an [[elven|elf]] [[werewolf|lycanthrope]] and leader and founder of the [[Dark Pack]], the alliance of [[lycanthrope]]s in [[Droaam]]. She was a survivor of the [[Silver Crusade]] over 160 years ago, in which she witnessed the massacre of her own family at the hands of templars of the [[Silver Flame]]. She spent more than a century seeking revenge, hunting down and killing templars and friars, before retreating to the [[Watching Wood]] in what is now [[Droaam]] and founding the [[Dark Pack]]. When the [[Daughters of Sora Kell]] came to power, they granted Zaeurl the status of [[warlord]]. Zaeurl is fiercely loyal to the Daughters.
Zantashk is a far outpost of House [[Tharashk]], placed to provide shelter and
supplies for house prospectors traveling out in search of
[[dragonshard]]s and other riches. Though a farming community, Zantashk isn’t far from a rich dragonshard field. The local reeve is Duuth [[Velderan]], a cunning opportunist who won’t help anyone unless he sees gold in it. Adventurers not belonging to
House Tharashk would be wise to sleep with one eye open
if they take shelter in Zantashk.
''Color:'' Pearly white<br/>
''Associated [[Dragonmark|dragonmark]]:'' [[Storm|Mark of Storm]]<br/>
''Associated Plane:'' [[Kythri]]
Zarantyr is the closest moon to Eberron, and it has the greatest effect on the planet's tides. Superstition holds that there is a far greater chance of being struck by lightning when Zarantyr is full, and that bolts can fall from a clear sky. According to some [[druid]]s, those born in the month of Zarantyr have a wild and tempestuous nature. Sometimes this translates to aggression, but it can also manifest as pure, unbridled energy; barbarians and [[sorcerer]]s may feel a bond with the Storm moon.
The Zarash Bay lies off the coast of the [[Shadow Marches]], and is fed by the [[Glum River]]. Any traveler entering [[Zarash'ak]] must pass through this bay.
Zarash’ak is the only city of any size in the [[Shadow Marches]] (population 29,800), and its existence is a recent development. Because overland travel through [[Droaam]] or the [[Eldeen Reaches]] can be extremely dangerous, most people who
need to do business in the [[Marches|Shadow Marches]] travel by ship to the
port city of Zarash'ak. Built on stilts and known for its
cuisine and music, Zarash'ak offers the rare exports of
the land without the difficulty of navigating the swamps.
Ocean-going vessels anchor in the [[Zarash Bay]], sending trade
goods up the [[Glum River]] on skiffs and barges, then awaiting the
return of [[dragonshard]] shipments the same way.
House [[Tharashk]] oversees the City of Stilts, but Marcher
clans and tribes come here to sell crafts and other goods
or to celebrate religious rituals.
!! History of Zarash'ak
No [[lightning rail]] crosses the [[Shadow Marches]], and
House [[Orien]] won’t risk its caravans in the treacherous marshlands. No trade roads connect the
scattered villages. For generations, the Marcher
clans were virtually independent kingdoms, battling
all challengers to maintain their dominions in the
darkness.
This situation changed with the rise of House
[[Tharashk]] and the demand for [[dragonshard]]s. [[Galifar]]’s hunger for the mystic crystals was a source of wealth and influence for the heirs of Tharashk,
provided they could process the crystals and move
them to the markets of the east. The three dominant
Tharashk clans were quick to establish refineries, but
their ancestral homes were too deep in the Marches
to facilitate easy trade with Galifar. The leaders of
the clans came together to build the largest city
the Marches had ever seen—a port that could carry
shards and services to the wider world.
It proved impossible to erect a city on the shores of the [[Zarash Bay]], so architects made their way up the [[Glum River]] until they found a region that was stable enough. Even then, building the port was no simple task. The Glum is unpredictable and prone to floods, and the only way to secure a foundation was to raise the city above the river. This style of building is common throughout the Marches, but no construction on this scale had ever been attempted. The creation of Zarash’ak took a decade and the
resources of all three great clans. The [[Torrn]] [[druid]]s raised mighty murk oaks from the depths of the Glum. Aided by the brute strength of [[Aashta]] laborers, clever [[Velderan]] architects built a foundation of interlocking platforms using the trees as supports. Additional piles and pillars were dropped into the Glum, and in time Zarash’ak was born.
Today Zarash’ak is known across [[Khorvaire]] as
the seat of House [[Tharashk]] and the gateway to the
[[Shadow Marches]]. Those who wish to deal with the
leadership of the House of [[Finding|Mark of Finding]] or venture into the
depths of the Marches likely find their way to the City
of Stilts.
!! Traveling to Zarash'ak
No secure overland route to Zarash’ak exists. In
recent years House [[Lyrandar]] has established an [[airship]] docking tower in the City of Stilts, and airships
remain the swiftest and safest way to reach Zarash’ak.
However, many captains refuse to risk their vessels in
the skies of [[Droaam]] or the wild [[Marches|Shadow Marches]]. As a result,
most visitors come to Zarash’ak across the water,
laying anchor in [[Zarash Bay]] and taking ferries up the
[[Glum River]]. Typically, the journey costs 1c per
traveler, but no standards are enforced; ferry operators might charge more for wealthy passengers. The threat of [[Tharashk]] bounty hunters generally deters
piracy along the Glum, but the river’s dangers include [[chuul]]s, mad cultists, and strange horrors of the [[daelkyr]] that have risen from the depths.
Rope ladders and lifts carry new arrivals from
the Glum to the platforms of Zarash’ak. [[Tharashk]]
recently installed a single levitating lift for the
heaviest loads, but most of the cranes and elevators
are powered by [[orc]] muscle or [[ogre]] laborers from
[[Droaam]].
The primary docks are beneath the [[Heart]], the
original core of the city. Those who enter through
the docks are evaluated by the [[Liondrake|Liondrake's Roar]] guards of
House [[Tharashk]]. These minders care little for identification papers or nationality, but they have a good nose for visitors with trouble on their minds, and a person who offends the Liondrakes might be pushed off a platform into the river. The easiest way to avoid
the scrutiny of the guards is to arrive in the company
of a Tharashk heir who can dismiss them. Another
option is to work with the heirs of Clan [[Orgaal]], who
bring goods into Zarash’ak on the wings of [[wyvern]]s.
An Orgaal camp sits north of Zarash’ak, and sufficient gold or other interesting offers can purchase a means of entry into the City of Stilts.
!! The Sights and Smells of Zarash'ak
Citizens of the [[Five Nations]] often find their first visit
to Zarash’ak a disturbing experience. The stench
of the city’s waste mixes with the naturally foul
waters of the [[Glum|Glum River]], and Marchers have different
attitudes toward body odor than do the people of the
east. These factors inspired the poet [[Kessler]] to call
Zarash’ak “the city of a thousand stinks.” Amid the
squalor, the magic of the [[Torrn]] [[druid]]s ensures that
the residents have pure water for drinking.
* the [[Heart]]
* the [[Ring]]
* the [[Webs]]
The City of Stilts has no streets as such, and directions are typically based on the names of buildings, the presence of certain people, or strong scents. For
example, a traveler might be told to “follow the scent of the midden heap on the North Ring, and look for Torgaan’s black door.”
!! Life in the City of Stilts
For a city of its small size, Zarash’ak is a thriving
community. In addition to the blood heirs of [[Tharashk]], the City of Stilts draws people from across the
[[Marches|Shadow Marches]]. Despite Tharashk’s growing influence, most
of the [[dragonmarked house]]s prefer to deal with the
[[Finders Guild]] in a more stable location, and many of
the services that travelers are accustomed to buying
from the dragonmarked must be purchased through
locals. A single [[Sivis]] [[message station|speaking stone]] exists in the
[[Heart]], along with the [[Lyrandar]] Tower and a lone
[[Gold Dragon Inn]]; healing services are provided by
leech-wielding novice [[druid]]s instead of the heirs of
House [[Jorasco]].
The [[Shadow Marches]] aren’t a recognized nation.
The Marches didn’t sign the [[Treaty of Thronehold]]
and aren’t bound by the [[Code of Galifar]]. What order
exists is imposed by House [[Tharashk]]; enforcement
and execution are in the hands of the elite [[Liondrake|Liondrake's Roar]]
soldiers and [[inquisitive]]s. Crimes that occur outside
the [[Heart]] are largely ignored unless they threaten
the house or the city, but anyone who tries to rob the
[[Velderan]] vaults or disrupt the [[Sivis]] [[message station|speaking stone]]
is hunted down with ruthless efficiency. In general, Marchers are expected to handle their own problems, whether that means defending themselves, hiring [[ogre]]s as guards, or having a clan of vengeful relatives willing to pursue offenders.
[[Human|human]]s, [[orc]]s, and [[half-orc]]s make up the bulk of
the population in Zarash’ak. A few hundred [[goblin]]s
live in the [[Webs]], along with a number of [[gnome]]s,
[[halfling]]s, and [[half-elves|half-elf]]. Traffic with [[Droaam]] has
brought monstrous creatures to the city; [[ogre]]s and
[[gargoyle]]s work across Zarash’ak, and each of the
[[Tharashk triumvirs|Tharashk triumvirate]] has a [[medusa]] bodyguard. The
Common tongue remains the standard language
in the [[Heart]], but many in the [[Ring]] and the [[Webs]] speak only Goblin. A significant number of residents speak a language they call Azhani, a blend of the Old Common of [[Sarlona]] and Goblin. People who speak Riedran or Goblin can communicate with those who speak Azhani, but nuances can be lost.
Traffic with the east has brought the coins of
[[Galifar]] and [[Riedra]] to the city, and they are used
interchangeably in Zarash’ak. Some merchants prefer
to barter for goods, and many citizens use raw [[dragonshard]] crystals as a form of currency.
!! Forces to be Reckoned With
The greatest power in Zarash’ak is House [[Tharashk]].
The house is divided into a number of factions, each
with its own interests, and the [[Liondrakes|Liondrake's Roar]] are a proud
unit that often pursues its own goals.
* The [[Cults of the Dragon Below]] are driven by wildly divergent agendas.
** [[Aashta]] cultists
** the [[Family Finch]]
** the [[Vigilant Eye]]
** [[Jhugaar]]
* The [[Gatekeepers]] have strong ties to Clan [[Torrn]] of [[Tharashk]], and Torrn employs [[primal magic]] to sustain the city.
* The scheming Clan [[Orgaal]] is a branch of the ambitious ruling Clan [[Velderan]].
* House [[Deneith]] has no strong presence in Zarash'ak, but a rivalry is growing between the Sentinels and the Finders.
* Lord [[Toka Threefangs]], ambassador of the [[warlord]] [[Kethelrax the Cunning]].
* The [[Riedra]]n outpost in the [[Heart]]. Is Ambassador Sosharani an agent of the [[Dreaming Dark]]?
Deep in the fetid [[jungles|Jungles of Xen'drik]] between the eastern head of
the [[Hydra|Hydra River]] and the ruins of [[Bazek Mohl]] lies the domain
of the Green Watcher. Since the [[fall of their empire|Age of Giants]],
the [[giant]]s have struggled to rise from the ashes and
regain their lost glory. The [[Eyes of Chronepsis]] have
no wish to see the [[dragon]]s’ greatest folly once again
grow mighty. This guardian keeps close eye on the
giant rabble should the powerful [[Du'rashka Tul]] curse
falter, and monitors the incursions of those who probe
the forsaken continent’s ruins in search of artifacts of
fell power.
The post of the Green Watcher has passed from
[[dragon]] to [[dragon]] for thousands of years, usually from
old bloodlines of [[green dragon]]s. Being chosen to take
up the mantle of the Watcher is a great honor to some; to
others, it is a tedious task of lonesome exile. Many have
shirked their duties in the past, but the current Watcher
is the laziest yet.
Zartarxis quickly grew to despise his post. The jungle environs are vermin-infested and uncomfortable. The dismal ruins of the [[giant]]s remind him of his race’s fallibility and emphasize his solitude. To make matters worse, the dragon finds it nigh-impossible to locate worthy servants. The jumpy denizens of the forsaken continent either flee at his approach or savagely attack, forcing him to reduce the insolent creatures to splotches
of acid-ruined flesh.
After a few decades of trying to make the best of his
situation, Zartarxis succumbed to utter ennui. He has
since given sloth a new name. The green dragon rarely
leaves the comfort of his lair, forcing his minions to
bring him meals, freshen up the scented leaves of his den,
and occasionally even turn him on his hoard.
The reclamation efforts of the [[Dominion of Purity]] and the [[Scriveners of the Sky]] have made frightening advances on Zartarxis’s watch, to say nothing of the
increase in [[giant]] relics garnered by [[Khorvairian|Khorvaire]] expeditions launched from [[Stormreach]]. In fact, Stormreach itself sneaked up on Zartarxis. The [[green dragon]] doesn’t remember it being there when he took up his post, and he was shocked when news of this teeming city and the many explorers now surveying giant ruins pierced his
sleep-addled brain.
Zartarxis is not the only one shocked at the severity of his negligence. Several among the [[Eyes of Chronepsis]], upon learning of his lassitude, grew unsettled and paid him a visit. Roused now by shame and fear of the repercussions the Eyes promised if his torpor
continues, Zartarxis has resumed his neglected duties. The numbers of missing expeditions are on the rise in recent months—all victims of the Green Watcher’s
rekindled purpose.
!! Description
Centuries of inactivity have left their mark on Zartarxis.
Years of gorging himself on meals delivered right to
his maw have fattened him to a state of obesity nearly
beyond belief. Zartarxis’s green scales stretch taut over
his girth, and stumpy limbs peek out from his plump
body. The dragon’s face droops, and his lidded eyes
are little more than slits, lending him an air of perpetual sleepiness.
Zartarxis rarely bothers to clean his scales or even order his minions to do so. Muck, leaves, and the rotting remains of crushed enemies settle in hard-to-reach places. In flight, his wings beat fiercely to keep his girth aloft.
!! Minions
In the first few decades of his stay, Zartarxis managed
to subjugate a tribe of [[troll]]s who now worship him,
calling the [[dragon]] the Great Green God. The tribe’s
leader, the God’s Huntmaster, is named Maarg'jarth. The Huntmaster is a towering specimen with mottled skin, whose drooping nose dangles far past his chin. Maarg'jarth is responsible for capturing meals of appropriate size to satisfy his master’s immense appetite. When he fails to do so (which is often), Zartarxis eats one of Maarg’jarth’s limbs, then watches the troll writhe in anguish as he painfully regenerates it.
Zarzalia Shol d'[[Phiarlan]] is the manager of the [[Livewood Theater]] in the [[Temple District]] of [[Stormreach]].
Zathara is a [[rakshasa]] residing in the [[Workshop of Tyrial Dashar]] in [[Khyber's Gate]] deep below the city of [[Sharn]]. Along with his companion [[Nethatar]], Zathara plots on behalf of the [[Lords of Dust]], working with [[Silver Flame]] Archierophant [[Ythana Morr]], and sometimes posing as [[Helais ir’Lantar|Aundair Embassy (Sharn)]], [[Aundair]] ambassador to [[Sharn]].
The commander of [[Dreadhold]] is Lord Warden Zaxon d'[[Kundarak]], who has held this post for over a hundred years. Many of his subordinates refer to him as “the Old Rock,” saying he is as cold and hard as the people he transforms into statues. While he rarely lets his emotions slip, he is a good judge of character and little escapes his notice.
Zaxon has developed a permanent [[truesight]] effect over the years, and has a permanent telepathic bond to his two subordinates [[Oralys|Oralys d'Kundarak]] and [[Darunthar|Darunthar d'Kundarak]], the [[Sivis]] [[gnome]] in charge of the [[Dreadhold]] [[stonespeaker|speaking stone]] corps (Lady Tyrin Torralyn d'Sivis), and Baron [[Morrikan d'Kundarak]].
Zeed is a [[changeling]] who runs [[Cragwar]]'s limited criminal underworld, and acts as an information broker and arms dealer. Zeed’s ambitions to start a war, with the goal of eventually securing southern [[Thrane]] for the [[Aurum]], are an audacious attempt to elevate himself to the Platinum Concord, and do not have the full support of the [[Shadow Cabinet|Aurum]], which generally prefers more cautious advances. Zeed’s activities have also attracted the attention of the [[King's Citadel]], which is
currently considering sending in new agents or even a
few trusted outsiders who would be unknown to Zeed
and his minions.
//“I was like you once—craving understanding, fruitlessly chasing every clue to the Prophecy in hopes of mastering it. I too wanted to avert disaster, bring enlightenment to the world. The Prophecy is a cruel mistress, young one. I have seen all there is to see. I know the stars. The future thunders in my heart. You should thank me for destroying you now, before it comes to pass.”//
<div align="right">—Zenobaal, Prophecy Incarnate</div>
Few [[dragon]]s alive today comprehend the [[Draconic Prophecy]] as
well as Zenobaal. Devoted to study as a youth, Zenobaal mastered potent magic to create a wondrous [[planar orrery|planar observatory]] among the clouds, so close to the sky he could almost reach out and touch those burning
spheres of Prophecy above. As an adult, Zenobaal did
great works. He shared his awe-inspiring insights into
the Prophecy with other dragons, and he sought to use
his understanding to better the world for all the races
that shared it.
Whether the inevitability of the Prophecy slowly rotted away his ideals, or one dread discovery suddenly broke his spirit is unknown, but as a wyrm, Zenobaal withdrew from the world. The great [[silver dragon]] sequestered himself in his remote cloud citadel above [[Wyrmsfang Jungle]], repelling all visitors. Rumors claim he even rebuked an offer to join the [[Eyes of Chronepsis]], the first to do so in ten thousand years. For a millennia no soul laid eyes on him. He remained locked within his orrery day and night. When
Zenobaal finally emerged, he sealed the orrery with wards so potent they say even he cannot breach them. Many believed then that Zenobaal turned his back on the [[Draconic Prophecy]], but the staggering truth of his motivations became apparent when the silver dragon began carving elaborate Prophecy marks deep into his own hide. His
markings are indecipherable even to experienced sages, and many would like to think of the marks as meaningless self-mutilation. Still, it is clear that they grant him tremendous power.
Zenobaal’s mind bears scars of the Prophecy as well. Now in his citadel among the clouds, he obsessively watches other [[dragon]]s for signs of those who seek
to unravel the Prophecy’s threads as he once did. When someone comes too close for comfort to whatever fell discoveries he protects, Zenobaal sees to their swift demise.
In his heart, the Prophecy can be mastered by none other than himself. Zenobaal believes he is the Prophecy’s physical incarnation on [[Eberron]], he claims he is
descended from the [[Progenitors|Progenitor Dragons]], and he believes that
one day the world shall end and he will see it reborn from his own flesh. Many lesser dragons scoff at his doomsday predictions, mocking the “mad, scarred dragon whose
brain flew to the clouds and never came back.” Other, older dragons remember the Zenobaal they knew a few thousand years ago—a peerless scholar of the Prophecy
whose insights were as terrifying as they were wondrous. His contemporaries grow uneasy at Zenobaal’s mention now, half saddened by the great scholar’s descent into
mad ravings of apocalypse, half afraid he sees a truth beyond their own grasp.
!! Description
Zenobaal is a wonder to behold. A mountain of strength, his gigantic silver-scaled form is covered neck to tail in markings whose puzzling mazelike intricacies befuddle
lesser beings. Resembling [[dragonmark]]s, the markings shed a purplish glow whose obvious power can be felt thundering in any who stand too close. The rare few who have gazed upon his marks swear to have seen terrifying visions of a dread reckoning within. They say his markings show the continents plunged below boiling seas as swirling black
tempests rain green flame down from above. Much like
the inconstant clouds in which he lairs, Zenobaal’s markings swirl, shift, meld and dissipate, making them utterly
impossible to study or understand.
Still, the liquid marks of power are not Zenobaal’s most impressive feature. The dragon’s eyes pierce the soul, and those who dare meet his gaze see swirling clusters of distant stars and nebulas not visible in the night sky. The untold mysteries in his eyes offer the briefest glimpse into the heart of the Prophecy, just enough to teach any who see them how little they comprehend the universe.
!! Allies and Enemies
Zenobaal cultivates a dangerous following of assassins and brutal killers who never stray from his commands and their immediate fulfillment. His servants include [[efreet|efreeti]] and [[sphinx]]es, all who worship Zeonbaal as a god on earth, seemingly compelled by divine hand.
Zenobaal’s enemies might be numerous, but they are largely unaware. The [[Eyes of Chronepsis]] do their best to keep tabs on the mad Prophet, but many of them grew up with Zenobaal, or studied his brilliant theories on the [[Draconic Prophecy]]. More than a few of the Eyes once counted Zenobaal among their closest friends, or looked up to him as a doting mentor in the years before his strangeness overtook him. Most of the Eyes hold Zenobaal in such high respect that they find the idea of his descent into evil as unlikely as it is distasteful. Zenobaal is a master of manipulating his past relationships to keep the Eyes ever one step behind his evil conspiracies of murder. Few suspect he is behind the dozens of [[dragon]] deaths that occur each year, and fewer still dare accuse the mighty prophet in open forum.
The [[Chamber]] is Zenobaal’s most reviled foe. He views these young idealists with a malignant mixture of sorrow and contempt. The promising among the Chamber’s members remind Zenobaal of himself in his youth before he realized the unspeakable doom that awaits the world. Some days he swears to himself it is his duty to destroy these upstarts before they see the horror that lurks in the murky shadows of the future. Other days, jealousy at the Chamber’s progress drives him to order the execution of their finest. Few members of the Chamber suspect Zenobaal is behind the death of their order’s best and brightest. Part of Zenobaal’s ability to avoid detection is the unfathomable randomness with which he strikes. Seemingly gigantic leaps in understanding the Prophecy often do not trouble the sage, while uncovering an obscure morsel of information provokes his immediate and lethal response.
Zertherun IV is one of the monastery vessels of the [[githzerai|gith]], floating in the [[Sea of Chaos]] in [[Kythri]].
It's under the guidance of the Serene Azera, whose mental
discipline maintains the stability of the ship. The Alazerth
Elemon is a senior monk charged with dealing with outsiders,
which is sometimes a matter of diplomatic negotiations, and
other times, rallying zerths (monks who exemplify the teachings of Zerthimon) to defend the vessel from attack. Like most githzerai, Elemon isn't inherently hostile toward
outsiders, but has no great love for them; his reaction is
based entirely on the actions and approach of the visitors.
[[Kythri]]'s //Broken Rhythms// property doesn't apply in a githzerai monastery, and while //Constant Change// exists, its effects are minimized. Zertherun IV maintains
capacitors for change, such as gardens of small stones and
engraved wheels with shifting patterns, which absorb the
energies of change and prevent it from transforming the vessel.
Zhrenir'rynai, the "Flowing Lakes", is a chain of three massive lakes connected by rivers in the heart of [[Argonnessen]]. The body of water forms a natural barrier between the [[Vast]], the [[Light of Siberys|Light of Siberys (region)]], and the [[Thousand]].
Under [[Malshashar]] in [[Adar]], [[dromite]]s have lived for millennia—their ancient city-hive Zi'til'natek is often thought to be the cradle of dromite civilization in [[Sarlona]]. Deep in its halls, the dromites hide from the [[Inspired]] and aid the [[Adarans]],
though it was not always so. Dromites have battled humans
for much of Sarlona's tumultuous history, and it was only
through the intervention of the [[kalashtar]] that the dromites
of Zi'til'natek came to work with Adarans. Now the [[Summit Road]] operates through Zi'til'natek and many goods reach [[Adar]] that would otherwise be impossible to get. The city is a center of trade, but it is only accessible through [[psionic|psionics]] portals or the deep caverns under Malshashar. Should [[Riedra]] ever threaten Malshashar, the dromites of Zi'til'natek would provide a considerable reserve force. Even so, some dromites
within the city-hive harbor their race's traditional grudge
against surface dwellers.
The Ziggurat of the [[Twelve]] is a
mighty floating citadel in [[Korth]], casting its shadow over the Commerce ward's Wollvern Park below. The fortress has thirteen tiers,
one for each of the [[dragonmark]]s. The highest tier is
empty, set aside to honor the lost [[Mark of Death]].
Zilan's Breath is a pair of islands off the southern coast of the [[Thousand]] in [[Argonnessen]].
''Capital:'' [[Trolanport]]<br/>
''Hallmarks:'' [[Alchemy|alchemist]], education, [[elemental binding]], entertainment, gnomes, precious stones
At first glance, the homeland of the [[gnome]]s appears
to be a paradise. City streets are bright and clean, the
universities and libraries are the finest in [[Khorvaire]],
everyone seems happy and helpful, and crime is all but
unheard of. But Zil society teems with layers of intrigue
and blackmail invisible to human eyes. The [[Trust]],
a ruthless secret police force, eliminates any threat
to society.
Zilargo isn't a tyranny. Each major city has a democratically elected ruling council and a seat on the [[Triumvirate]] that governs the nation; the [[Trust]] reports to
the Triumvirate. The Zil [[gnome]]s built this system, and they are quite happy with it. Their streets are safe, and as long as you play by the rules of the game, the Trust ignores you. Outsiders find this casual acceptance of preemptive assassination to be terrifying, but the Zil genuinely trust the Trust.
Zil [[gnome]]s live within a web of intrigues. The [[Trust]]
condones their actions, as long as they break no laws
and don't threaten the state or the status quo. A gnome
charlatan can connive to steal a jewel mine from another gnome—as long as the charlatan accomplishes the deed through cunning, negotiation, or deception rather
than violence or outright theft, and as long as the mine
stays in Zil hands. The same applies to adventurers
planning schemes in Zilargo. Violence draws attention
and deadly consequences from the Trust, but intrigue is
perfectly acceptable.
The [[Trust]] is a network of spies and assassins. Most
agents of the Trust simply pass information through
dead drops; some estimate that a third of the nation
works for the Trust in this capacity. When the Trust
identifies a threat, it acts preemptively. Trust agents
prefer to solve a problem without violence—by sharing a
piece of information or a whispered warning sent via a
message spell. But the Trust won't hesitate to eliminate
a threat, whether with [[poison]], [[spell]], or blade. Typically,
a target never sees the agent of their demise.
!! Interesting Things About {{!!article}}{{!!title}}
* Most consider the [[Library of Korranberg]] the finest repository of knowledge in [[Khorvaire]].
* The [[Korranberg Chronicle]] is the leading source of news in Khorvaire. Gnome chroniclers travel across Khorvaire in search of stories.
* The major cities of Zilargo maintain temples and shrines dedicated to every religion. Most Zil explore a few faiths before settling on one; others practice multiple religions.
!! Zil Characters
As you develop a Zil character, consider the following factors:
* ''Family Ties.'' In a nation shaped by intrigue, you need someone you can rely on. For the Zil, that's family. Unless you're an orphan, discuss your family with your DM. What's their business? Who's your favorite relative? Are you currently involved in any family schemes? Family members might call on you for help over the course of your adventurers, but they can also be a resource for you.
* ''Knowledge and Power.'' The Zil prize knowledge above all else. Sage is a suitable background for any Zil; charlatan and spy are also appropriate, reflecting their love of intrigue. Classes that specialize in melee combat are rare among the Zil. The soldiers of Zilargo include rogues, [[bard]]s, [[wizard]]s, and [[artificer]]s.
* ''The Trust.'' In creating a Zil character, consider whether you have any ties to the [[Trust]]. A vast number of [[gnome]]s serve as the eyes and ears of the Trust, reporting interesting information to a Trust handler. As an active agent, you could receive missions tied to your current adventures. If you and your companions are fighting the [[Emerald Claw]], you might have a secondary assignment to eliminate a specific Claw agent or acquire a particular object from their base. While the spy background is a logical choice for a Trust agent, the agency recruits characters of every class and background. Your class abilities reflect specialized training and granted abilities—the magical equivalent of spy gadgets!
!! Cities and Sites
The [[gnome]]s of Zilargo place a high value on appearances. They design beauty into their architecture,
featuring delicate carvings, elaborate railings and balconies, and lavish gardens. Every community contains
murals and statues scattered throughout. Most fixtures
and buildings are designed for those of small stature,
but buildings constructed for taller folk also exist. The
Zil have a talent for [[illusion]] and for [[binding elementals|elemental binding]],
and they incorporate both of these forms of magic into
everyday life.
!!! Cities
<<list-links-article "[tag{!!title}category[location]tag[city]sort[title]]">>
!!! Towns
<<list-links-article "[tag{!!title}category[location]tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!!! Other Sites
<<list-links-article "[tag{!!title}category[location]!tag[province]!tag[city]!tag[town]sort[title]]:filter[get[text]length[]compare:integer:gt[350]]">>
!! Aftermath of the Last War
Walking the streets of [[Korranberg]], one might never
know that the war occurred. Zilargo avoided most of
the violence of the [[Last War]], and cosmetic magic and
[[illusion]]s were employed to repair the few cities that
suffered damage. Many Zil prefer to ignore the war completely, referring to it as "that unpleasantness to the north." Nonetheless, Zilargo was a staunch ally of
[[Breland]] during the war, providing the nation with ships,
intelligence, and [[elemental]] weaponry. This aid left the
nation with enemies. The Order of the [[Emerald Claw]]
has launched attacks on Zil communities, and certain
cells of Breland's [[Swords of Liberty]] accuse the Zil of
manipulating [[Breland]]. The [[Trust]] has contained these
attacks, but it always anticipates more trouble ahead.
The jewel miners of eastern Zilargo often clash with
the [[goblin]]s of [[Darguun]] and the [[kobold]]s that live in [[Seawall Mountains]]. These skirmishes could expand into
wider conflicts.
Overall, however, little has changed in Zilargo because the [[Trust]] keeps the nation on a steady path. Adventurers who travel through Zilargo would be wise to
avoid causing trouble or drawing the Trust's attention.
The [[Zilargo]] embassy in [[Sharn]] was built long before the [[Last War]], to facilitate trade between Zilargo and [[Galifar]].
Zilargo remained one of [[Breland]]’s closest allies
throughout the [[Last War]], and that alliance is still
strong today. Zil [[artificer]]s and engineers produce
many of their wares in the great factories of Breland,
and the Brelish refineries sell much of their ore to
Zilargo. Most of the time, the [[gnome]]s pay for these
services with gold, jewels, or ships. But the gnomes
are also masters of intrigue, and throughout the war
the intelligence gathered by Zil spies was invaluable
to the Brelish war effort.
Today, Khorvaire is at peace. But the [[Trust]]
intends to be prepared for the next war long before
it occurs. The embassy of Zilargo is a labyrinth of
intrigue; almost everyone who works in the embassy
has a secret secondary role, from the ambassador to
the lowliest servant. A few of the more notable members of the embassy staff are described below, but it is always possible that there are other gnomes who
are equally skilled—or even more skilled—hidden
among the embassy staff. With the gnomes of Zilargo,
nothing can truly be trusted.
The embassy staff includes the following remarkable individuals:
* [[Tasho Mol Doras]]
* [[Doran Del Doras]]
* [[Madra Sil Sarin]]
* [[Cassia Lyrriman Dal]]
In recent months, [[kraken]] activity has increased
in the [[Thunder Sea]]. The [[sahuagin]] who deal with the
sailors of [[Stormreach]] say that this is the work of Zlortharkis, an aquatic [[fiend]]-touched kraken of tremendous cunning and might. A number of ships have fallen to
the mighty tentacles of the King beneath the Waves,
but the kraken has never struck a [[Lyrandar]] vessel. This fact might simply be coincidence, but a myth within the house claims that the first Lyrandar lords live on as krakens in the depths (see [[Storm Front]]). If there is any truth
to this legend, the kraken Zlortharkis could be Lyran
himself, and its actions could be the beginning of
a new campaign to ensure that his children have
supreme dominion over the waves.
Whether Zlortharkis has the mind of a [[fiend]] or a
[[Lyrandar]] patriarch, it is a threat to the [[sahuagin]] of
the region and the people of [[Stormreach]]. It might
seek to subjugate the sahuagin or demand tribute
from the [[Storm Lords]]. A quest to defeat the King beneath the Waves could lead to an alliance with the [[Eternal Dominion]], as adventurers from the surface world join
forces with the heroes of the deeps to hunt down this
mighty beast.
Along with [[Stonejaw Keep]], Znir is the heart of the
[[gnoll]] territories in [[Droaam]]. Although the permanent
population of the village is relatively small, thousands of gnolls gather here once a year to honor their ancestors and hear clan leaders renew the [[Znir Pact]].
The village features the remains of a colossal statue
of an [[archfiend|overlord]] the gnolls call "Yeenoghu", originally hundreds of
feet tall. Though the statue has fallen, some say that
a malevolent force lingers within its rubble, and
that other remnants of the [[Age of Demons]] might be
hidden here.
There have always been [[gnoll]] clans in the Barrens of [[Breland]] (what would eventually become [[Droaam]]), though the
[[Dhakaan]]i [[goblin|goblinoid]]s ruthlessly exterminated gnolls in imperial
territories, driving them back into the wilds. But their story starts
long before. In the dawn of time, during the [[Age of Demons]], [[Eberron]] was the domain of the [[fiend]]ish [[overlord]]s. This was an age of chaos, as the
overlords constantly clashed with one another. [[Rak Tulkhesh]],
the Rage of War, commanded armies of fiends, while the [[Wild Heart]] raised hordes of ravenous beasts. In the struggles between the two, the Wild Heart bred [[dire|dire beast]] hyenas with the ability to consume the immortal essences of the [[Zakya|rakshasa]] warriors of Rak
Tulkhesh. But the Wild Heart failed to anticipate how consuming
fiends would affect its creations. Twisted from within by the
immortal essence of the [[demon]]s they'd devoured, the hyenas
were warped into something entirely new, something that was
neither beast nor demon: and so the first gnolls were born.
Formed from both War and the Wild, [[gnoll]]s were recruited
and bred by both [[Rak Tulkhesh]] and the [[Wild Heart]]. As foot
soldiers of the overlords, they fought against [[orc]]s and other
early [[humanoid]]s, as well as battling the gnoll clans of other
overlords. Even after the overlords were defeated and bound
by the [[Silver Flame]], gnolls continued to be their pawns. The
fiendish spark burned within them, and when they weren't
directly serving the [[Lords of Dust]], most engaged in vicious acts
of brutality. The Rage of War seeks endless battle, and when
there is no greater conflict, it delights in setting its minions
against one another. For countless generations, gnolls fought
[[troll]], [[ogre]], and other gnolls seeking blood for their hungry idols.
Then, centuries ago, two gnolls from rival clans faced one
another on a battlefield soaked in the blood of their kin—then
questioned the path that had led them there. The two urged
others to deny the voice that called for endless war, to refuse
to chase death in the service of a [[fiend]]. Two became four, then
eight, until entire clans heeded the call. Clan leaders dragged
their idols to the place now known as [[Znir]]—a word that
simply means “stone”—and there, they shattered the images
of the fiends they once served. Together, the gathered hunters,
shamans, and warriors swore an oath: They might be many
clans, but from this day forward, they would be one pack.
They would allow no one—not chib (chieftain), god, or demon—to hold
dominion over them.
This was easier said than done. Fighting the fiendish
influence within was challenging enough, but the Barrens were
a chaotic tapestry of battling forces. The leaders of the newly
forged Znir Pact had no desire to rule over other creatures,
but even just holding territory could invite attack. And so they
developed the path that has carried them forward to this day:
the road of the mercenary. The gnolls would claim no territory
beyond the lands around Znir. They would fight for any who
would pay a fair price. But if anyone sought to enslave a gnoll,
or to strike against Znir itself, they would face the wrath of all
of the united clans. This was a lesson that had to be taught
many times, but after a century or so, the point was made.
To those who paid them, the gnolls were as reliable as stone.
Those who betrayed them or who picked a fight would fall
before the might of the full Pact.
Some scholars of the [[Five Nations]] find it strange that
the Znir Pact never took the path of conquest. There
was no parallel to the united force of the Pact within
the region, and they could have defeated the various
chibs and warlords they served. But the [[gnoll]]s have
never had a desire to rule other creatures; they love
the hunt and the thrill of battle. The path of the Pact
allows them to do what comes naturally—to stalk and
kill, to fight endless battles—but they do so together.
They choose the paths they follow and the battles they
fight. One could look at the Pact and say that they serve
many masters. But the Znir gnoll would respond that
they serve only themselves: that they choose
who they fight for, they set the terms of their
service.
!! Znir Clans
The Znir [[gnoll]]s include a dozen different
clans, each of which holds distinct traditions.
Once the clans were devoted to different faces
of the [[overlord]]s, but when they shattered their
statues, each clan chose one of the moons. All
gnolls skillfully hunt and fight, but the Barrakas
are known to be the finest trackers of the Pact;
the Aryth, the deadliest archers; the Olarune,
the strongest warriors and most forceful in
the vanguard. Typically, mercenary units are
comprised of gnolls of a single clan, assigned based
on the nature of the task that lies ahead, and contracts
are usually negotiated for a period based on cycles of
the clan's moon.
The clans maintain distinct territories within the Znir
region, but all gnolls are welcome around the hearth of any
clan; the Znir take pains to crush any tension that arises
between the clans. Shamans and leaders from each clan
maintain a council at the Znir, around the broken idols. Here
they mediate disputes, assign contracts to clans, and allocate
funds and equipment. The Eyre clan has honed their skills as
smiths and tanners, and they craft much of the equipment used
by the Znir gnolls—though there is still a strong tradition of
scavenging among the Znir, and warriors often claim trophies
from fallen foes.
!! The Demon Within
The Znir defied the [[overlord]]s when they shattered their
statues, but there's still a spark of a [[fiend]] in the blood of
each [[gnoll]]. Znir simply refuse to allow the [[demon]] within to
hold dominion over them. Young gnolls learn how to resist
this influence—to channel the strength of the fiend without
giving it power over them. For most gnolls, this is a matter
of discipline; Znir gnolls are known for remaining calm in
the face of provocation, and having learned to fight their own
demons, they aren't easily manipulated by mortals. However,
some gnolls learn to draw on their unnatural heritage and to
channel this power in useful ways. Znir gnolls have their own
equivalents of rangers and barbarians; the ranger's primal
magic draws on the [[Wild Heart]], while the barbarian channels
the fury of the [[Rage of War|Rak Tulkhesh]]. Znir shamans are similar to
[[warlock]]s, typically following the path of the Fiend. However,
in all of these examples, the Znir don't serve the dark power.
Rather, they can be seen as stealing their strength from it;
learning to draw on it without giving anything in return.
In their determination not to let fiendish forces hold
dominion over their people, the Znir gnolls have also developed
their own techniques for fighting supernatural threats.
Champions trained to face [[fiend]]s and [[undead]] are known as //hwyri//—Gnoll for “warden”—and wield powers similar to
those of //paladin//s in other lands. However, hwyri don't worship
any divine power. Their abilities come from training and
understanding of the demon within; they aren't crusaders,
they're mercenary demon hunters. Most hwyri come from the
Vult clan, and in a land that shuns the [[Silver Flame]], these
gnolls can be the best hope for people facing fiendish threats.
There has been some tension between the Vult and the
[[lycanthrope]]s of the [[Dark Pack]]; the Vult shamans suspect that
the Pack is vulnerable to the influence of the [[Wild Heart]].
So as a gnoll, there is a spark of demonic influence within
you. The Znir learn to control this at an early age. But how
does it manifest in you? Do you suppress it completely, or do
you channel it in some way—possibly reflected by your class
abilities? Are you a hwyri who seeks to fight supernatural
threats, or are you not concerned with such things?
!! Gnoll vs. Gnoll
[[Droaam]] is a small place, and the Znir serve any who will pay a
fair price. This inevitably leads to conflict between Znir gnolls
fighting for two opposing sides. In such situations, Znir fight
one another with all their skill, but they strike to wound, not
kill. A gnoll wounded by another gnoll immediately withdraws
from battle, no matter how superficial the wound. While some
clients take umbrage at this—“You can still fight! Get back out
there!”—this is an absolute rule of all Znir contracts, and gnolls
who defy this are punished by the united clans.
!! Mercenary Service
While [[Droaam]] has risen around them, the Znir Pact
continues as it always has. They don't work for shelter and
[[grist]], and expect to be paid for their service. This is perfectly
acceptable to the [[Daughters of Sora Kell]], who have placed a
full half of the Pact forces on extended retainer. Most large
communities have a Znir garrison employed by the Daughters.
These troops are present to protect the region from brigands
or invaders, and to help maintain order. But they serve the
Daughters, not the local chib; it's understood that if the chib
or their warlord turns against the Daughters, the local Znir
will act against them. The remainder of the Pact serves other
masters, and many warlords of chibs employ Znir gnolls as
bodyguards, enforcers, or hunters.
The Znir take their contracts seriously. If the client breaks
the terms of the agreement, the contract immediately ends;
but as long as terms are met, Znir will face any danger and
never betray a client. They have earned this reputation over the
course of centuries, and this gives them a place much like the
[[Sentinel Marshals]] of House [[Deneith]] in [[Khorvaire]]; everyone
knows that the word of the Znir is as unbreakable as stone.
House [[Tharashk]] has begun brokering the services of
Znir gnolls within the [[Five Nations]], but the Pact leaders
are cautious about this arrangement. Within [[Droaam]], Znir
customs are known and respected, and the Znir can unite
against anyone who defies them. The Znir recognize that they
don't hold such power over the rulers of the Five Nations,
and are concerned about serving so far from their stones.
In addition to those who serve through House Tharashk or
[[Daask]], a number of Znir have been sent east to study the Five
Nations, gathering knowledge of its people and customs so
the Znir council can determine how to engage with the wider
world. This scouting role is a reasonable path for a gnoll player
character; it's their job to travel the world beyond and learn its
ways, and to make friends and allies.
Hidden high in the [[Seawall Mountains]], Zolanberg lies
at the heart of a network of jewel mines. These mines
face attacks by [[kobold]]s living in the mountains, as well
as [[goblin]] raiders from [[Darguun]]. [[Gnomes|gnome]] and [[dwarves|dwarf]]
inhabit the city. House [[Kundarak]] maintains a great vault
here. House [[Tharashk]] has
long sought prospecting rights along the Seawalls, but
the gnomes have fiercely refused.
From somewhere in the darkness, a gurgling moan is heard. A form lurches into view, dragging one foot as it raises bloated arms and broken hands. The zombie advances, driven to kill anyone too slow to escape its grasp.
//''Dark Servants. ''//Sinister [[necromantic|necromancy]] magic infuses the remains of the dead, causing them to rise as zombies that do their creator's bidding without fear or hesitation. They move with a jerky, uneven gait, clad in the moldering apparel they wore when put to rest, and carrying the stench of decay.
Most zombies are made from [[humanoid]] remains, though the flesh and bones of any formerly living creature can be imbued with a semblance of life. Necromantic magic, usually from [[spell]]s, animates a zombie. Some zombies rise spontaneously when dark magic saturates an area. Once turned into a zombie, a creature can't be restored to life except by powerful magic, such as a [[resurrection]] spell.
A zombie retains no vestiges of its former self, its mind devoid of thought and imagination. A zombie left without orders simply stands in place and rots unless something comes along that it can kill. The magic animating a zombie imbues it with evil, so left without purpose, it attacks any living creature it encounters.
//''Hideous Forms.''// Zombies appear as they did in life, showing the wounds that killed them. However, the magic that creates these vile creatures often takes time to run its course. Dead warriors might rise from a battlefield, eviscerated and bloated after days in the sun. The muddy cadaver of a peasant could claw its way from the ground, riddled with maggots and worms. A zombie might wash ashore or rise from a marsh, swollen and reeking after weeks in the water.
//''Mindless Soldiers.''// Zombies take the most direct route to any foe, unable to comprehend obstacles, tactics, or dangerous terrain. A zombie might stumble into a fast-flowing river to reach foes on a far shore, clawing at the surface as it is battered against rocks and destroyed. To reach a foe below it, a zombie might step out of an open window. Zombies stumble through roaring infernos, into pools of acid, and across fields littered with caltrops without hesitation.
A zombie can follow simple orders and distinguish friends from foes, but its ability to reason is limited to shambling in whatever direction it is pointed, pummeling any enemy in its path. A zombie armed with a weapon uses it, but the zombie won't retrieve a dropped weapon or other tool until told to do so.
You create a magical zone that guards against deception in a 15-foot-radius sphere centered on a point of your choice within 60 feet. Until the spell ends up to 10 minutes later, a creature that can't resist the enchantment can't speak a deliberate lie while in the spell's area. You know whether each creature succeeds or fails in resisting the spell.
An affected creature is aware of the spell and can thus avoid answering questions to which it would normally respond with a lie. Such a creature can be evasive in its answers as long as it remains within the boundaries of the truth.
Lord Zoratesh is the commander and high minister of the [[Harmonious Shield]], and coordinates the movements of its divisions. While unified in spirit with the other [[quori]] in their task to prevent the turn of the age in [[Dal Quor]], Zoratesh questions the methods of the [[Devourer of Dreams]]. He has no patience
for the slow manipulation of the [[Dreaming Dark]], and
he wants to launch an invasion of [[Khorvaire]]. In such a scenario, psionic [[teleportation circle]]s would be used to launch
sudden and decisive strikes against the capitals of [[Khorvaire]], seeking to eliminate nobles, [[dragonmarked|dragonmarked house]] barons,
and other threats. Both the [[Devourer|Devourer of Dreams]] and [[Sharadhuna]]
believe that this event would be disastrous, providing a
common enemy to unite the people of [[Khorvaire]], destabilizing [[Riedra]], and risking the ire of the [[dragon]]s, the [[Lords of Dust]], and other conspiracies currently watching from
the shadows. Zoratesh currently lacks the support required
to pursue war, but if an [[Inspired]] invasion of Khorvaire
were to happen, Zoratesh would be the one to lead it.
''Getting the PCs Involved:'' A war between [[Khorvaire]] and [[Riedra]] would be a devastating conflict, with the widespread magic of Khorvaire
and the [[dragonmarked house]]s matched against the devastating [[psionic|psionics]] power of the [[Inspired]] and their willingness
to sacrifice their fanatical troops. Even if the Riedrans
won the conflict, the Khorvairians wouldn't accept defeat
easily. The unity of Riedra succeeds because the people
believe that the Inspired are saviors, not conquerors.
However, a band of adventurers struggling to raise a
resistance movement in the wake of a Riedran conquest
can form the basis for an interesting campaign, whether
it's set in Khorvaire, [[Syrkarn]], or the [[Tashana Tundra]].
From House [[Cannith]]’s [[enclave|Korth Enclave]] in
[[Karrnath]], Zorlan schemes against both [[Merrix|Merrix d'Cannith]] and
[[Jorlanna|Jorlanna d'Cannith]]. Zorlan’s mother was [[Starrin d'Cannith]]’s cousin, and
when he was young, Zorlan was one of Starrin’s chief
financial advisors. But he is as dry and calculating
as the ledgers he pores over, say his enemies. Others
decry his worship of the [[Blood of Vol]]; although the
faith is common in Karrnath, it is less so within the
ranks of House [[Cannith]]. Zorlan finds inspiration
in the teachings of the Blood of Vol, however, and
many of the best minds in the house are working on
developing the [[necromantic|necromancy]] creations that Zorlan first
conceived.